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

  • 5 Respuestas
  • 1480 Vistas

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

Desconectado strel0k

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
El programa en cuestión ejecuta una shell, quiero traducir las instrucciones del mismo a código hexadecimal para hacer un payload.
« Última modificación: Julio 18, 2019, 11:14:55 pm por strel0k »

Desconectado WHK

  • *
  • Underc0der
  • Mensajes: 119
  • Actividad:
    0%
  • Reputación 10
  • The Hacktivism is not a crime
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
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:

https://www.blackhat.com/presentations/bh-usa-07/Harbour/Whitepaper/bh-usa-07-harbour-WP.pdf
https://www.researchgate.net/publication/322052383_Address_Manipulation_To_Inject_Binary_code_Shellcode_in_an_Application_Correlation_With_C_Pointer_And_Third_Party_Editors

Creo que @ksha te puede ayudar mejor en este asunto.

Saludos.


Desconectado animanegra

  • *
  • Moderator
  • Mensajes: 323
  • Actividad:
    10%
  • Country: 00
  • Reputación 12
    • Ver Perfil
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.

Desconectado strel0k

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
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:

https://www.blackhat.com/presentations/bh-usa-07/Harbour/Whitepaper/bh-usa-07-harbour-WP.pdf
https://www.researchgate.net/publication/322052383_Address_Manipulation_To_Inject_Binary_code_Shellcode_in_an_Application_Correlation_With_C_Pointer_And_Third_Party_Editors

Creo que @ksha 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.
« Última modificación: Julio 20, 2019, 08:34:22 pm por strel0k »

Desconectado strel0k

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
Utiliza rags2 y recuerda que no puedes utilizar dependencias a librerías que no sean del sistema
Lo tendré en cuenta, gracias.

Desconectado animanegra

  • *
  • Moderator
  • Mensajes: 323
  • Actividad:
    10%
  • Country: 00
  • Reputación 12
    • Ver Perfil

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