• Indetectar malware

  • Soluciona aquí tus preguntas frecuentes. Temas recomendados antes de preguntar.
Soluciona aquí tus preguntas frecuentes. Temas recomendados antes de preguntar.
 #281242  por DSR!
 28 Mar 2011, 04:32
Indetectar malware


¿Que es un malware 'indetectable?
La mayoría de estas excepciones son el resultado de leves alteraciones en el cuerpo del virus producto de patrones aleatorios que estos incorporan para
evadir los antivirus, pero aun mejor estos patrones de cambio son escogidos cuidadosamente de acuerdo al antivirus que se desee violentar dado que
no todos los antivirus se pueden evadir con la misma técnica.

¿Como convertir un malware en 'indetectable'?
Para alterar un virus de tal modo que sea indetectable al control del antivirus, se deben modificar unos cuantos bits en el archivo de tal modo que la firma que se genera del archivo difiera de las firmas que poseen los antivirus, pero la parte fundamental para que esta alteración sea optima y permita que el archivo sea funcional e indetectable posterior al cambio es saber en que offset’s se debe inyectar la modificación, solo basta con cambiar algunos bits de posición si así se requiere y la tarea quedaría cumplida. En otras palabras y siendo mas idealista se podría afirmar que la ley matemática para la suma y multiplicación la cual reza que:
"El orden de los factores no altera el producto" no es aplicable para la suma, multiplicación o cualquier operación algorítmica entre bits que generen un hash o firma como es el caso de la identificación de virus, dado que con unos cuantos movimientos posiciónales de bits el resultado no es el mismo, la firma de identificación del virus es alterada, y el producto podría llegar a ser la contaminación total del sistema.

Vale la pena reforzar que no en cualquier segmento del archivo virus se puede realizar la alteración de los bits o bytes si se trabaja en hexa, dado que si se realizará el cambio en los offset’s vitales del archivo, este quedaría inservible y si por el contrario se realizara la alteración en algún offset que no fuera parte de la firma o del patrón de identificación, el archivo simplemente quedaría modificado pero aun seguiría siendo detectable para los antivirus. Lo ideal es conseguir que el archivo sea sutil y eficazmente alterado sin afectar su estabilidad.

Estos patrones de bits, firmas o offsets que lee el antivirus se le denominan Patrones Heuristicos:
Los Patrones Heuristicos son Técnicas que se emplean para reconocer códigos maliciosos (malware) que no se encuentren en la base de datos del antivirus (ya sea porque son nuevos, o porque no son muy divulgados. Estas tecnicas usadas por el antivirus son:
Recreacion del codigo compilado
Desensamblado
Firmas genericas
Desempaquetamiento

Indetección en scan-time y run-time
Un archivo puede pasar como indetectable al antivirus en dos fases, una al momento de residir en el disco y ser escaneado, y la otra al momento de ejecutarse y lanzar el codigo.
SCANTIME: Un archivo que no posea patrones heuristicos visibles al Antivirus puede pasar como scantime.
RUNTIME: Un archivo que ademas de no poseer patrones heuristicos, proteja en memoria sus llamadas y procedimientos, los virtualize o los inyecte, podria pasar a ser indetectado en tiempo de ejecucion.

Modificando el malware
Identificando Offsets detectados en la aplicación:
Para identificar que fimas, offsets o secciones hexadecimales puedan ser leidas en un archivo, debemos de leerlo linea por linea para identificar luego que sectores son los que sirven de guia para que el AV detecte el archivo.

Podemos valernos de Herramientas de detección de offsets automatizadas como lo son el AVfucker, Signature Zero, AAVTools, etc. Dichas herramientas recorren offset por offset la aplicación creando varias versiones. Estos resultados pueden ser pasados por un AV para ver que offsets son los detectados y saber en que zonas se presenta la detección.

[img]./imagenes/szero.jpg[/img]

Usando metodo RIT:
[ Debe registrarse para ver este enlace ]
El metodo RIT consiste en mover la firma o offset que es detectado por el Antivirus y crear un salto en el programa, para que cuando el antivirus busque los patrones heurísticos que definan a la aplicación como malware, salte en la memoria a otra dirección y luego retorne para asi cambiar el resultado de la firma leida.

[img]./imagenes/mrit.jpg[/img]

Metodo Meepa
[ Debe registrarse para ver este enlace ]

La ventaja que aporta este método respecto al rit de hackxcrack es que no representa ningún problema que la firma esté en una parte encriptada del código, o en alguna parte en la que introducir código directamente represente un problema para el funcionamiento del programa. Además a diferencia del rit al no tener que interpretar la instrucción correspondiente a cierto punto de la firma se puede automatizar fácilmente.
El metodo consiste en las siguientes modificaciónes a la aplicación:

1- Modificar un byte de la firma en disco para que el antivirus no detecte el troyano.
2- Crear espacio en el exe para introducir nuestro código.
3- Cambiar el punto de entrada del exe para que inicialmente se ejecute nuestro código.
4- Cambiar EN MEMORIA el byte que habíamos modificado por su valor original.
5- Saltar desde nuestro código al punto de entrada real del programa.

Esto lo hacemos para que se nos permita cuando este el programa cargado en memoria escribir en el
punto modificado de la firma su valor real, lo que nos permite modificar cualquier offset sin petar la aplicación y reconstruirlo en memoria cuando se ejecute la aplicación.

[img]/imagenes/mrit.jpg[/img]

Modificación de Offsets generica:
Para efectos de la práctica esta actividad se desarrolla apoyado en la herramienta Cactus Methamorph

[img]/imagenes/metamorph.jpg[/img]

Esta herramienta provee la facilidad de elegir el modo en que se desea alterar los offset’s del archivo, permitiendo asi alterar la forma o estructura del programa sin modificar el tamaño original (ni aumentan ni disminuyen los bytes finales).

[ Debe registrarse para ver este enlace ] ... 1.zip.html
[+] Modo diccionario y modo clonación:
El modo diccionario permite alterar bits de manera aleatoria en los offset’s o secciones que la aplicación determine, se proponen tres tipos de diccionario, entre mas grande sea el diccionario mayor será la alteración en el archivo.
El modo clonación permite alterar bits en los offset’s seleccionados con fragmentos de bits o código de otra aplicación benigna, buscando evadir así algunos antivirus. Para el caso de este ejemplo se escoge la opción de alteración por clonación.

Ofuzcación de offsets y manejo de secciones adicionales:
La aplicación incorpora otras funcionalidades como el nivel de ofuscación que es útil para evaluar que tan alterado va a quedar el archivo,de igualforma permite adicionar segmentos de código u offset’s adicionales para aumentar el tamaño del archivo.

[img]/imagenes/ofuzcacion.jpg[/img]

Para el caso de este ejemplo el nivel de ofuscación será de 12 en una escala de 1 a 20 siendo 1 el valor mas bajo de ofuscación y 20 elmas alto, no se adicionaran offset’s para aumentar el tamaño de archivo.
En el caso de añadir nuevas imágenes, se utiliza el EOF del archivo (End Of File o Fin del archivo) para añadir una nueva sección rellena de 00 que se pueda usar para hacer saltos en el codigo o simplemente para aumentar el peso (basura) en la aplicación.

Identificar cambios al modificar offsets:
Definido el archivo virus ha alterar y el archivo que proporcionará los segmentos de offset’s para ofuscar el contenido del virus, se procede ha ejecutar la tarea de modificaciónAlterado ya el archivo se puede evidenciar el cambio mediante el mapa genérico de código. Las zonas de color rojo son aquellas que han sido modificadas producto de la clonación con otro archivo. El total de offset’s modificados en el archivo fueron 589, esta información se almacena en un log que genera la aplicación posterior al cambio.

Análisis del cambio mediante un editor hexadecimal:
Para evidenciar el cambio realizado en los offset’s, se compara el archivo ejecutable alterado con el archivo original mediante el editor hexadecimal De los 589 Offset’s modificados se tomaron dos segmentos que mejor ejemplificaran el cambio en referencia.
El primer segmento comprendido entre el Offset 0x1C61 hasta el Offset 0x1CB7. En este caso se evidencia una inserción de 86 bytes en el segmento. Si notan, en el archivo original antes en esta zona estaba como firma una dirección IP (192.168.1.101), lo cual seria un patron heuristico que identificaria a la aplicación como malware.

/imagenes/eHex.jpg

Alterado el archivo de la forma como se ejemplificó, el virus esta listo para ser evaluado por los antivirus y posiblemente esta amenaza se materializará si el antivirus no tiene patrones de detección robustos que no solo se guíen en la firma sino que adicional incorporen patrones de detección heurísticos y realicen comprobaciones en memoria.

Usando algoritmos de encriptación:
Las herramientas llamadas 'crypters' que usan un algoritmo en especifico realizan funciones de alteración en el cuerpo del archivo, pero ahora siguiendo un patrón definido según el algoritmo de cifrado seleccionado. El cifrado realizado a los diferentes segmentos de offset`s en el cuerpo del archivo es de doble via, de tal modo
que al momento de ser revisado por el antivirus este no detecte el contenido malicioso que lleva inmerso, pero cuando este se ejecute en memoria, realice proceso de descifrado y ejecute correctamente la lógica embebida en el mismo.
Usaremos como herramienta crypter uno llamado Nhaalclkiemr Crypter, los algoritmos de encriptacion que nos ofrece son los siguientes: Rijndael, Blowfish, Des, Gost, Skipjack, Tea, Twofish, Xor, Eqv, Not. Cada uno tiene resultados diferentes modificando la estructura de la aplicación.

[img]/imagenes/algoritmo.jpg[/img]

Usando protectores, packers, binders, virtualizadores
Al hacer cambios en la aplicación para que su ejecución varie, tambien varia entonces su estructura interna y de paso podria ser menos detectada. El uso de herramientas como empaquetadores, binders, protectores o virtualizadores, o todos los mismos juntos se le denomina coctel.
Se puede jugar con la estructura de forma tal como para combinar varias de estas protecciónes y hacer un archivo indetectable ya sea en scantime o runtime, pero al igual que otros metodos para modificar el programa, este puede dañarse y quedar obsoleto al ejecutarse.

Indetectando el malware teniendo el source:
Se puede recurrir a hacer menos comprensible el codigo ofuzcandolo, creando procedimientos basura, timers o formas de evadir la lectura directa del Antivirus sobre lo que hace la aplicación, sus llamadas a memoria (IAT) y demas elementos que la puedan identificar como malware. Como ejemplo miremos la aplicación
Ucode para indetectar sources en Delphi:
Esta aplicación permite crear nombres aleatorios para las variables y funciones del programa que podrian terminar siendo detectadas como patrones heuristicos, ademas permite añadir funciones 'basura' que dificultan la lectura heuristica y encriptar las strings que esten en la aplicación para dejar menos claro su contenido si se le intentase hacer reversing.

[img]/imagenes/ucode.jpg[/img]