Como traduzco un programa en C a codigo hexadecimal en cadena?

Iniciado por strel0k, Julio 18, 2019, 08:30:17 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 18, 2019, 08:30:17 PM Ultima modificación: Julio 18, 2019, 11:14:55 PM por strel0k
El programa en cuestión ejecuta una shell, quiero traducir las instrucciones del mismo a código hexadecimal para hacer un payload.

Hola, me costó bastante entender lo que necesitas, pero creo saber que quieres hacer que una shellcode ejecute un binario directo a la memoria no?, pues para lograr eso debes modificar la shellcode primero y mover el punto de ejecución hacia tu payload donde tu payload es el binario de tu ejecutable. Debes tener en cuenta que hay distintas maneras de llamar al binario pero hay algunos métodos que son detectados muy facilmente por los antivirus, por ejemplo una manera es inyectando el código a la memoria y haciendo que se ejecute de manera directa sin pasar por el filesystem, otra manera es guardar el binario en el filesystem y despues ejecutar una shell bash o cmd que apunte hacia el binario. Recuerda que no puedes llegar y embeber cualquier tipo de binario y ejecutarlo en memoria, dependerá del sistema operativo y la arquitectura, así mismo para la shellcode.

Mira, dale un vistazo a esto:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Creo que @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta te puede ayudar mejor en este asunto.

Saludos.

- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Utiliza rags2 y recuerda que no puedes utilizar dependencias a librerías que no sean del sistema

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.

Julio 20, 2019, 04:13:07 AM #3 Ultima modificación: Julio 20, 2019, 08:34:22 PM por strel0k
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola, me costó bastante entender lo que necesitas, pero creo saber que quieres hacer que una shellcode ejecute un binario directo a la memoria no?, pues para lograr eso debes modificar la shellcode primero y mover el punto de ejecución hacia tu payload donde tu payload es el binario de tu ejecutable. Debes tener en cuenta que hay distintas maneras de llamar al binario pero hay algunos métodos que son detectados muy facilmente por los antivirus, por ejemplo una manera es inyectando el código a la memoria y haciendo que se ejecute de manera directa sin pasar por el filesystem, otra manera es guardar el binario en el filesystem y despues ejecutar una shell bash o cmd que apunte hacia el binario. Recuerda que no puedes llegar y embeber cualquier tipo de binario y ejecutarlo en memoria, dependerá del sistema operativo y la arquitectura, así mismo para la shellcode.

Mira, dale un vistazo a esto:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Creo que @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta te puede ayudar mejor en este asunto.

Saludos.
Gracias, aprecio que te hayas tomado el tiempo de responder. No lo aclare lo suficiente, lo siento.
Sobre el tema, básicamente busco sobrescribir el registro IP de la pila, stackoverflow en términos generales, en un programa vulnerable(con fines didácticos, el programa es una simulación) escrito en C, aclaro el programa pide parámetros por la función main. Inyectando un shellcode en Perl que almacena el binario o codigo hexadecimal del programa que ejecuta bin/sh en un buffer, luego se concatena con el resto de caracteres para cubrir los 32 bytes del buffer y sobrescribir la dirección del mismo, activando una shell con permisos root. Claro todo esto en el hipotético caso de que el bit setuid este activado, y el propietario del programa tenga permisos de root, como ya te dije es una prueba, y esto esta previamente determinado.Seguramente gran parte de lo que he interpretado esta mal, haceme saber en ese caso, soy novato. El problema en cuestión es, como ya mencione quiero almacenar el binario en un buffer, pero no se como obtener ese binario, por lo que entiendo hay una utilidad "objdump", para ver direcciones de memoria y traducciones a lenguaje maquina de programas, bueno esta aplicación te ofrece ese "binario" un formato hexadecimal, pero no estoy muy seguro en como usarla. Como logro obtener las instrucciones de ese programa en hexadecimal, para crear esa inyección Perl? En fin, si ves que esta muy enmarañada la cosa, no te molestes en atar cabos. Decime que información debería consultar antes de seguir con este tema. Gracias de antemano :D.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Utiliza rags2 y recuerda que no puedes utilizar dependencias a librerías que no sean del sistema
Lo tendré en cuenta, gracias.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.