[PEDA] Python Exploit Development Assistence para GDB

Iniciado por MagoAstral, Diciembre 23, 2015, 03:15:27 PM

Tema anterior - Siguiente tema

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

Hola a tod@s, soy MagoAstral y en esta ocasión vengo con una herramienta, concretando un asistente para el desarrollo de exploits en python y para uno de nuestros depuradores favoritos GDB!!  8)
Para los que no sepan que es un depurador les recomendaría este enlace (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta), una vez tengamos claro el concepto anterior simplemente decir que GDB  (GNU Debugger), es un proyecto creado Richard Stallman y el cual podemos descargar desde el siguiente enlace (No tienes permitido ver los links. Registrarse o Entrar a mi cuenta).
Ahora que tenemos los conceptos necesarios o al menos sabemos de que va el tema procedamos a hablar sobre PEDA.
¿Qué nos proporciona? La respuesta es sencilla una mejora visual que la verdad se agradece; colorea y muestra códigos desensamblados, registros e información de la memoria durante el proceso de depuración. Pero no solo eso también nos proporciona diferentes funcionalidades que nos ayudarán a agilizar el proceso...

Algunos comandos:

  • aslr: Muestra o fija los ajustes de la ASLR de GDB
  • checksec: Comprueba varias opciones de seguridad del binario (stack canaries, NX, etc...)
  • dumpargs: Muesta los argumentos pasados a una función cuando paramos en una instrucción de llamada
  • dumprop: Hace un volcado a todos los ROP gadgets en un rango de memoria específico
  • elfheader: Obtiene información de las cabeceras de un archivo ELF depurado
  • elfsymbol: Obtiene non-debugging symbol de un archivo ELF
  • lookup: Busca todas las direcciones/referencias de una dirección que pertenece a un rango de la memoria.
  • patch: Parchea el inicio de la memoria en una dirección con una cadena, cadena hexadecimal o entero
  • pattern: Genera, busca o escribe un patrón cíclico en la memoria.
  • procinfo: Muestra información variada desde /proc/pid
  • pshow: Muestra opciones y ajustes de PEDA
  • pset: Ajusta y configura PEDA
  • readelf: Obtiene información de un archivo ELF
  • ropgadget Obtiene los ROP gadgets comunes de un binario o una librería
  • ropsearch: Busca ROP gadgets en la memoria
  • searchmem|find: Busca un patrón en la memoria y soporta búsquedas de expresiones regulares
  • shellcode: Genera o descarga los shellcodes comunes
  • skeleton: Genera una plantilla en python para un exploit
  • vmmap: Obtiene los rangos de un mapa virtual de una dirección, de una sección o secciones de un proceso depurado
  • xormem: Aplica XOR a una región de la memoria con una clave
Para una lista completa de los comandos se debería utilizar:
Código: text
peda help


Instalación:
Para instalar PEDA la sintaxis sería la siguiente:
Código: bash
git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit

De esta manera hemos clonado el repositorio y añadido PEDA a la configuración de inicio del depurador (GDB), ahora cada vez que iniciemos GDB se cargará PEDA!  ;)

Una imagen de PEDA en acción:


Personalmente os lo recomiendo y más si hacéis uso de GDB comúnmente bien en el arte de la explotación o bien en el arte de la ingeniería inversa, os hará muchísimo más sencilla la vida ami me encanta.
PD: Este material es único para Underc0de cualquiera que dese compartirlo le pido que respete los créditos del autor (yo) y del respectivo foro (underc0de)
Un saludo,
MagoAstral
Lo que sabemos es una gota de agua; lo que ignoramos es el océano.


Gracias por el aporte @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Funciona con todas las versiones de Python?

Gabi
Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.

El proyecto inicialmente fue desarrollado en python 2.7 y dicha versión forma parte de los requisitos, teóricamente debería funcionar en cualquier versión pero no lo he comprobado.
Un saludo,
MagoAstral
Lo que sabemos es una gota de agua; lo que ignoramos es el océano.

Gracias por el aporte, se ve genial!! Precisamente estoy aprendiendo un poco de ingenieria inversa y le dare buen uso  ;D

Saludos