Mostrando entradas con la etiqueta troyano. Mostrar todas las entradas
Mostrando entradas con la etiqueta troyano. Mostrar todas las entradas

miércoles, 31 de octubre de 2012

Charla en la NcN2K12

Este sábado 3 de noviembre, nuestro compañero Abraham Pasamar dará la charla titulada "Evadiendo Antivirus: uso de Crypters" en la edición de este año de la conferencia No cON Name. ¡Os esperamos!

martes, 27 de marzo de 2012

lunes, 19 de marzo de 2012

Nociones básicas de detección de software malicioso. Análisis malware (I)

Éste es el primero de una serie de artículos relacionados con el análisis de malware (software malicioso), en esta primera entrega trataremos la detección de malware a nivel básico, sin utilizar herramientas externas, contaremos tan solo con las que proporciona el sistema operativo. En posteriores entregas iremos introduciendo diversas herramientas especializadas, con las que veremos cómo determinar si en nuestros equipos se ha colado algún intruso. Iremos también combinando estos artículos con casos reales que hemos analizado en nuestro laboratorio.

Algunos usos del malware

Antes de abordar el análisis, mucha gente se estará preguntando, pero ¿para qué querría alguien colarme un malware a mi, si yo no tengo nada en el ordenador? Todos tenemos algo útil en el ordenador que los amigos de lo ajeno pueden codiciar. Pongamos algunos ejemplos:
  • La lista de contactos de la agenda, del messenger, de tu cuenta de gmail, etc.
  • Las credenciales (usuario y contraseña) de tu cuenta de correo, twitter, facebook, etc.
  • Credenciales de cuentas bancarias
  • Datos de las tarjetas de crédito
  • Fotos o vídeos personales
¿Y para qué quieren esa información? En el mundo de cyberdelincuentes hay todo un business que explotar. En base a los datos que hemos mencionado, podrían darles salida del siguiente modo:
  • Envío de SPAM a cuenta de correo
  • Utilización de las credenciales de las cuentas de correo para enviar desde ellas SPAM
  • Realizar transferencias bancarias a cuentas de mulas, personas intermediarias que a través de sus cuentas bancarias facilitan el movimiento del dinero y se quedan una comisión
  • Compras, generalmente por internet, mediante los datos de las tarjetas de crédito sustraídos
  • Extorsionar o difamar o mediante la amenaza o publicación de imágenes o vídeo personales
A quien digas tu secreto siempre estarás sujeto

Además de estos motivos, que estarían relacionados con grupos, más o menos organizados de delincuentes habituales o mafias, hay otro uso o motivación por la que alguien puede querer introducirnos algún tipo de malware, y este es sencillo: conocer nuestros secretos. Leer nuestro correo, ver nuestras fotos, conocer nuestro planes e intenciones. Por lo tanto, pareja, amigos, vecinos, voyeurs, enemigos o la mismísima competencia pueden utilizar algún tipo de malware para obtener tan codiciada información.

Análisis de malware

Si tenemos alguna sospecha de que podemos estar siendo víctimas de dicho espionaje o hemos observado algo extraño en nuestros equipos, o simplemente porque más vale prevenir que curar, podemos echar un vistazo a nuestro equipo en busca de alguna pista que indique que tenemos algún tipo malware.

¿No es suficiente con tener un antivirus o anti-malware?

Es condición necesaria para estar protegido disponer de estas ayudas, pero no es suficiente, básicamente porque no todo el malware es detectado por los antivirus o anti-malware. Te recomiendo la lectura de un artículo anterior para profundizar en este aspecto: Malware y Antivirus.

Vale, ¿cómo miramos si tenemos algún software malicioso en el ordenador?

En este artículo vamos a ver cómo podemos hacer un simple análisis sin contar con más herramientas que las que nos proporciona el sistema.

Para empezar, debemos cerrar todos los navegadores y programas conocidos que sepamos que se conectan a Internet. Una vez hemos minimizado este ruido, podemos utilizar el comando netstat -an para ver de forma rápida las conexiones activas, por ejemplo:




Podemos ver que hay una conexión establecida (ESTABLISHED) con la IP 83.X.X.X al puerto 443. Bueno puede tratarse de una conexión https legítima o puede que no. Veamos como podemos averiguarlo.

En primer lugar, podemos ver que PID y proceso es el responsable de esa conexión. Extendamos nuestro netstat y lancemos el clásico: netstat -nabo para que nos añada esta información:



Bien, parece coherente, el responsable de esa conexión aparentemente es el chrome, a pesar de que hemos cerrado el navegador, pero bueno, siempre hay procesos por ahí corriendo en segundo plano ... o no...

Podemos ver si esa dirección IP es algo conocido, vamos a usar una web, que por experiencia da muy buenos resultados, que nos dirá quién es esa IP con buena precisión geográfica. Nos vamos a http://www.utrace.de:


Bueno, es extraño que un proceso de chrome (a pesar de tener el chrome cerrado) esté conectado a una dirección IP de telefónica de Barcelona, por el puerto 443, que según nslookup es una IP dinámica: dynamicIP.rima-tde.net. Raro es, pero no imposible. Vamos a indagar un poco más.

La resolución inversa de la IP nos da una clásica resolución de IP dinámica de telefónica, pero vamos a ver si hay algún dominio que apunte a dicha IP. Para ello, vamos a usar ipconfig /displaydns que nos proporcionará las resoluciones DNS cacheadas en nuestra máquina. En caso de querer limpiar la caché podemos forzarlo con ipconfig /flushdns.






Interesante, un subdominio de hopto.org que apunta a una IP dinámica de Telefónica. ¿Qué es hopto.org?


Según domaintools.com u otro Whois cualquiera es un dominio de no-ip.com. Bien, la cosa se pone fea. No-IP dispone de un servicio gratuito de gestión dinámica de DNS que permite la creación de hosts que apunten a direcciones IP dinámicas. No hace falta decir que gran cantidad de malware se intenta conectar a diversos dominios de no-ip que apuntan a direcciones IP dinámicas.

Conclusión por el momento, puede que nuestro ordenador esté comprometido y alguien desde una IP dinámica de Telefónica que GeoPosiciona en Barcelona, nos esté siguiendo los pasos.

Si tratamos de analizar el proceso desde el administrador de tareas (crtl+alt+supr) no llegamos a ningún lado, en este caso, ya que el proceso que vemos corresponde a chrome, señal de que es posible de que el malware se haya inyectado en el proceso. En este momento, podríamos, mediante algún debugger (IDA, Olly dbg, Immunity debugger, etc) analizar al proceso y estudiarlo, pero eso será para algún post futuro porque por el momento hemos dicho que no vamos a usar herramientas externas, solo las del sistema.

Una cosa que podemos hacer es intentar matarlo, y ver si se vuelve a crear, señal generalmente de que es un software malicioso que trata de de asegurar su ejecución por todos los medios (persistencia). Podemos también reiniciar y ver si persiste tras el arranque.

Es hora de estudiar el registro para ver si vemos allí algo raro que asegure el arranque del malware con la máquina o sesión. Para ello, podemos usar msconfig. 

Este no es un trabajo sencillo, y va a implicar verificar las rutas y ejecutables que allí encontremos, una por una. Generalmente, podemos recurrir a google para ver si son programas conocidos, pero deberemos prestar mucha atención por si han usado un nombre similar, o incluso el mismo que uno real. En el caso que nos ocupa, encontramos una clave que nos resulta sospechosa, que podemos chequear en la ruta del registro y que es la siguiente:



Google está plagado de referencias de malware con archivos que se llaman así y no parece haber un archivo legítimo de Adobe que se llame de esta forma.

Vamos a analizar algunos datos del binario. Vamos a dicha carpeta con el explorer:


Un binario, sin icono de adobe, no firmado, de 298 KB y de fecha 8/12/2005. Muy antiguo, que extraño que un posible actualizador de Adobe use un binario de 2005, cuando la carpeta de software de Adobe del sistema se creo en 2010. Esto cada vez pinta peor.

Vamos a escanear el archivo, para ello podemos enviarlo por ejemplo a Virustotal:



Bingo, 21 de 43 detecciones de lo que parece ser un troyano. El AntiVirus que tiene la máquina en la que está corriendo es un Avast actualizado y no lo detecta, como hay otros tantos AntiVirus que tampoco. Sin embargo, aunque no hubiese salido ninguna detección (o muy pocas), no hay que descartarlo, ya que si el troyano es muy reciente o está protegido con un Crypter FUD (Full UnDetectable) sería igual de troyano aunque ningún AntiVirus lo detectase.

Vamos a dejar aquí este artículo y seguiremos explicando más cositas en próximas ediciones.


martes, 8 de noviembre de 2011

Malware y Antivirus

Una gran parte de los ordenadores del mundo está infectado con malware. Estamos hablando de cifras muy altas, en torno a un 50-70% y sin exagerar un ápice. Podéis consultar estadísticas,  aquí os dejo una estadística del INTECO (2010-11):



Generalmente este malware consiste en troyanos (bancarios especialmente), gusanos, virus y adware.  Además, estas estadísticas corresponden al malware que "puede verse".

Pero, ¿cómo es posible tanta infección si un gran porcentaje de estos equipos tiene instalado un antivirus y lo actualiza con frecuencia?

Bien, la cruda realidad es que en la batalla entre los chicos malos "ocultadores" de malware y las chicos de los AntiVirus, ganan los primeros. Y no es que los antivirus no sirvan o lo hagan mal, todo lo contrario, algunos lo hacen pero que muy bien, pero no pueden con todo ese malware que está ahí fuera. Es decir, los antivirus buenos acaban pillando casi todo el malware, pero durante una cierto de tiempo, suficiente para que el malware "in the wild" cumpla con su cometido, éste disfruta de invisibilidad a los antivirus y se dedica a capturar usuarios/passwords, accesos a cuentas bancarias, números de tarjetas de crédito o simplemente a permanecer a la espera de ordenes concretas (ordenadores zombi de una botnet).

Ocultación de malware (troyanos básicamente)

Pero, ¿cómo se ocultan estos códigos maliciosos de los antivirus? La respuesta es sencilla, se cifran, generalmente con algoritmos estándar de cifrado, XOR, RC4, etc. En general, el malware "nuevo", puede no ser detectado, aunque casi siempre hay que andar retocando el código para que no salten los Antivirus. Por lo general, el malware existente, los "troyanos de toda la vida", en sus estado natural (sin proteger), son detectados por la mayor parte de los antivirus y necesitan ser protegidos (cifrados) para no ser detectados.



Crypters y stubs

Básicamente, la clave de la cuestión son dos piezas de software denominadas Crypter y Stub. El crypter es programa encargado de "cifrar" el código del software malicioso y crear un ejecutable nuevo que contiene el stub y, a continuación, el código cifrado.

Cryter (malware) = Stub+[malware cifrado]



La clave de cifrado se guarda dentro del stub, y es la encargada de descifrar el código del malware.

ScanTime y RunTime

Existen dos tipos de crypters los denominados ScanTime y RunTime. A día de hoy, salvo casos excepcionales, los scantime no tienen mucho sentido, ya que son detectados rápidamente.

Cuando se ejecuta un malware protegido por un crypter, el stub es lo primero que se ejecuta, y lo que hace básicamente es descifrar el código del malware oculto. Si el resultado de este proceso de descifrado se copia al disco duro, estamos ante un crypter scantime. En general, si aparece un archivo nuevo en el sistema (en el disco duro mejor dicho) y éste es un malware detectable "descifrado", el antivirus lo detectará de inmediato, ya que generalmente los antivirus llevan activado el escaneo en tiempo real por defecto. Y si lo desactivamos, el antivirus hará lo imposible para recordarnos que corremos mucho peligro y volver a activarse. Es por esta razón que los scantime no son muy efectivos. Funcionan cuando el escaneo en tiempo real está desactivado o no hay antivirus instalado :)

Los crypters runtime, funcionan de forma diferente, cuando el stub se ejecuta lo que lleva a cabo es el descifrado del malware en memoria y posteriormente la ejecución directa del éste sin tocar el disco duro. De este modo, se carga y ejecuta en memoria el "malware descifrado" y el antivirus no se percata de su presencia. 




Escaneo de memoria

Mmmmm ..... ¿pero los antivirus no escanean la memoria?  NO ! y he ahí el quid de la cuestión. El escaneo en memoria parece ser una labor realmente compleja para los antivirus, ya que según parece penaliza el rendimiento de forma dramática, así que, hasta donde alcanza mi conocimiento, ningún antivirus escanea la memoria. 

Ja! pues te equivocas porque el mío al arrancar o instalarse dice "Escaneando la memoria". Bien, cierto, lo dice, pero no lo hace. O mejor dicho, no hacen eso exactamente. Lo que hacen los antivirus es ver que procesos hay en ejecución e irse a buscar los ejecutables en disco que han generado dichos procesos y los escanean (en disco). Por tanto, cuando un antivirus ve un proceso X que corresponde a un malware (descifrado en memoria) se va a buscar al ejecutable que lo ha lanzado y escanea un archivo consistente en un stub y el malware cifrado, resultado: indetectado.

Bueno, pero el stub no está cifrado, ¿no? Efectivamente, y por tanto, detectar stubs es el caballo de batalla  de los chicos de los antivirus. Y hacer stubs indetectables es el caballo de batalla de los chicos malos.

Cómo detectan malware los AntiVirus

Los antivirus, utilizan básicamente dos técnicas: firmas y heurística.

Las firmas son secuencias de bytes, que los antivirus escogen, ya que según su criterio esas secuencias caracterizan a un determinado ejecutable malicioso. Deben elegirlas bien, ya que si los antivirus escogen como firma de un malware una secuencia de bytes que exista a su vez en un software legítimo, puede pasar algo que les haga quedar muy mal.

Ésta es la técnica basica y fundamental usada por todos los antivirus. El trabajo de los técnicos de antivirus consiste en determinar si un determinado software en malware (análisis de su comportamiento) y a continuación localizar secuencias de bytes únicas que caractericen a dicho malware y elegirlas adecuadamente, básicamente para evitar que con simples modificaciones de dichas instrucciones del software los chicos malos consigan hacerlo indetectable de nuevo, preferentemente FUD, como les gusta llamarlo (Full Un-Detectable), que significa indetectable a los 30-40 antivirus más comunes.

Las detecciones heurísticas no son todavía la panacea. Ayudan mucho a la detección de malware pero, en mi opinión, no son lo que parecen. No detectan el comportamiento en memoria, sino en disco. Es decir, las detecciones heurísticas se basan en detectar en el archivo (en el stub realmente) comportamientos típicos de un stub: secuencias de cifrado, carga en memoria y ejecución, etc. No funcionan del mismo  modo que las firmas estáticas, pero son parecidas. Se trata de localizar pedazos de código sospechosos y decidir con un algoritmo si se marca como malware el código. En definitiva, si se consigue alterar suficientemente el stub, como para que no se detecten patrones típicos, el malware quedará indetectable.



Los chicos de los antivirus se lo curran y consiguen introducir firmas múltiples realmente complicadas que desesperan a los chicos malos, pero tarde o temprano, se consigue un stub indetectable a "todos" los antivirus. 

Un malware protegido con un cifrado y con un stub como el descrito, no será detectado en mucho tiempo, dependerá, eso sí, de lo prudentes que sean los chicos malos. Si se hace una campaña masiva con cientos de páginas encargadas de introducir dicho malware, seguro que en algún momento alguien sospechará o se percatará de lo que son. Estudiará el malware que se pretende introducir, enviará muestras a las empresas de antivirus que paulatinamente introducirán las firmas en sus bases de datos y dicho malware será detectable. Cuando los chicos malos se den cuenta de que eso ocurre, usarán un nuevo stub indetectable y vuelta a empezar. Si por el contrario, el stub se usa prudentemente, su detección, si se produce, puede llevar desde semanas a meses o más.



¿Qué técnicas utilizan los chicos malos para indetectar sus stubs? Sin entrar en detalles, son técnicas que generalmente se aplican sobre el archivo ejecutable (aunque en ocasiones se trabaja también desde el código fuente) y que se resumen dos pasos fundamentales, en primer lugar, localizar la secuencia de bytes que conforma la firma o firmas del antivirus, y en segundo lugar, usar diferentes técnicas para variar esa secuencia de bytes, haciéndolo indetectable al antivirus de nuevo, sin que el comportamiento del stub se altere.



¿Debo tirar mi antivirus a la basura? ni mucho menos, debes conservarlo y mantenerlo actualizado. De este modo estarás a salvo de la mayor parte del malware detectable, que es mucho. Esto tienes que verlo un poco como la gripe, casi todo el mundo pilla la última cepa mutante de las narices, pero sin vacunas y sin nuestro sistema inmune, lo pillaríamos todo y sería un sinvivir.

La culpa fue del chachachá

Por último, no debemos olvidar que el eslabón débil del proceso de infección, como dice la canción de Mocedades, "Eeeereeeees Túuuuu":
  • Tú, que NO abres archivos adjuntos de mails en cadena
  • Tú, que NO te bajas aplicaciones y todo tipo ponzoña del P2P
  • Tú, que desesperado por instalar una aplicación NO te la bajas de de lugares que están más infectados que Raccoon City 
  • Tú, que te encuentras un Pendrive y lo primero que haces NO es cotillear los archivos que contiene
  • Tú, que te pasan por el Messenger un enlace de un juego en flash que es el último grito y NO lo ejecutas
  • Tú, que NO visitas páginas pornográficas
  • etc ...