Buenas Underc0ders,
En esta ocasión vengo a presentar una herramienta que me ha parecido bastante interesante. Se trata de Shellten (https://github.com/merrychap/shellen)
Tal como indica su descripción es un entorno para facilitar el desarrollo de shellcode.
Actualmente cuenta con las siguientes caracteristicas:
Assembling
Disassembling
Syscalls lists
Database of common shellcodes
Tras instalarlo siguiendo las instrucciones del repo de github, nos encontramos con una aplicacion de consola.
(https://i.imgur.com/i7qthJG.png)
El prompt que nos devuelve por defecto es L:asm:x86_32
L - Linux
asm - Modo de ensamblado
x86_32 - Arquitectura
Podemos ver que arquitecturas soporta la herramienta con el comando archs
(https://i.imgur.com/g9CkY7t.png)
Otra opcion interesante, es que permite usar la API de shell storm para buscar shellcodes, por ejemplo
(https://i.imgur.com/WkgKKQ0.png)
Ahora probaremos a construir un shellcode de ejemplo (inventado) en arm_x32
mov r2, #75;
add r3, r2;
sub r3, r2, #1;
mov r4, r3;
Primero cambiamos el modo de shellten a linux:asm:arm32
(https://i.imgur.com/PiCTiga.png)
Introducimos las instrucciones para que nos lo codifique:
(https://i.imgur.com/tYXgF9m.png)
Si ahora cambiamos el modo de asm a dsm con el comando dsm y la arquitectura de nuevo a arm32
(https://i.imgur.com/29rV9J6.png)
(https://i.imgur.com/7rMA7Xt.png)
e introducimos lo que nos ha devuelto antes, nos lo pasa a instrucciones correctamente
(https://i.imgur.com/CDwAOHU.png)
Si ahora probamos a generar shellcode con las instrucciones
mov r2, #75;
add r3, r2;
sub r3, r2, #0000;
mov r4, r3;
nos avisa que nuestra shellcode contiene bytes nulos y nos los remarca
(https://i.imgur.com/UrcWLqa.png)
Otro gran punto a favor de shellten es que nos da la informacion de uso de las llamadas al sistema con el comando sys +palabra_clave, por ejemplo
(https://i.imgur.com/htZBuKa.png)
Hasta la proxima :D