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 ...





























1 comentario: