Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Melkor_ELF_Fuzzer — Melkor es un fuzzer del formato de archivo ELF muy intuitivo y fácil de usar para encontrar errores funcionales y de seguridad en los parsers de ELF. | Kitploit
Herramientas/GitHubGitHub/ioactive/melkor_elf_fuzzer
Análisis de VulnerabilidadesFuzzingAnálisis de Binarios
GitHubioactive/melkor_elf_fuzzer

Melkor_ELF_Fuzzer

Melkor es un fuzzer del formato de archivo ELF muy intuitivo y fácil de usar para encontrar errores funcionales y de seguridad en los parsers de ELF.

Ver Repositorio
154513hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

--------------------------------~ | -- DESCRIPCIÓN -- | --------------------------------~

Melkor - Un fuzzer del formato de archivo ELF

Melkor, un personaje ficticio del legendarium de la Tierra Media de J. R. R. Tolkien, fue el primer Señor Oscuro y maestro de Sauron. Se le menciona brevemente en El Señor de los Anillos y es conocido por:

"... Melkor había capturado a varios ELFOS antes de que los Valar lo atacaran, y los torturó y corrompió, criando a los primeros Orcos." (http://en.wikipedia.org/wiki/Morgoth)

"... Melkor era astuto y estaba más lleno de malicia que nunca. Al ver la dicha de los ELFOS y recordar que fue por ellos que fue derrocado, Melkor deseaba por encima de todo corromperlos." (http://lotr.wikia.com/wiki/Melkor)

"Orcos...Así ha sido desde el día en que fueron criados por Melkor a partir de ELFOS corruptos, torturados y mutilados, que también pueden haber sido obligados a aparearse con otras abominaciones antinaturales bajo el dominio de los Poderes Oscuros." (http://lotr.wikia.com/wiki/Orcs)

Para honrar su nombre, este fragmento de código toma un ELF, lo corrompe y crea tantos Orcos como quieras.

Melkor es un fuzzer híbrido (basado en mutación y en generación). Muta los datos existentes en una muestra ELF proporcionada para crear orcos (ELF malformados); sin embargo, no cambia los valores de forma aleatoria (fuzzing ciego), sino que fuzzea ciertos metadatos con valores semiválidos mediante el uso de reglas de fuzzing (base de conocimiento). Escrito en C, Melkor es un fuzzer muy intuitivo y fácil de usar para encontrar errores funcionales (y de seguridad) en los parsers de ELF.

Las reglas de fuzzing se diseñaron teniendo en cuenta las siguientes fuentes:

  • Violaciones de la especificación ELF
    • TIS ELF Specification 1.2 (mayo de 1995)
    • ELF-64 Object File Format 1.5 (mayo de 1998)
  • Ideas y consideraciones varias
  • Patrones de parseo en software ELF

Encontrarás las reglas de fuzzing en detalle y algunos otros esquemas en el directorio docs/.

--------------------------------~ | -- REQUISITOS -- | --------------------------------~

  • make
  • gcc

--------------------------------~ | -- COMPILACIÓN Y USO -- | --------------------------------~ La compilación es muy sencilla, solo tienes que escribir: $make

Creará el archivo 'melkor', que es el propio fuzzer, y algunos otros archivos ELF dentro de la carpeta templates/, incluidos archivos ELF normales, como un ejecutable ELF normal, algunas bibliotecas compartidas, un ELF estático (ejecutable independiente) y algunos otros.

Al ejecutar melkor, se mostrará una lista de opciones y te darás cuenta de que es muy intuitivo y fácil de usar. Todo lo que tienes que proporcionar es el nombre de un ELF para usar como plantilla, que puede ser cualquiera de los que se encuentran dentro del directorio templates/.

Dependiendo del tipo de software que quieras probar, tienes que elegir qué metadatos quieres fuzzear. Por ejemplo, si quieres probar un cargador de SO, probablemente querrás fuzzear solo la Tabla de Cabeceras de Programa (-P) y/o la Sección Dinámica (-D). Por otro lado, quizás quieras fuzzear la Tabla de Cabeceras de Sección y la Cabecera ELF para probar algún motor antivirus o depurador. Fuzzear las Tablas de Símbolos (-s) y/o las Tablas de Reubicaciones (-R) en archivos reubicables (.o) o bibliotecas compartidas (.so) para probar compiladores y/o enlazadores. Las Tablas de Cadenas también se pueden fuzzear (-Z). Depende de ti decidir cuánto quieres corromper un ELF }:-)

Una vez que los orcos se han creado dentro del directorio orcs_*/, es hora de probarlos con la ayuda de test_fuzzed.sh, donde puedes simplemente especificar el nombre de la carpeta con los orcos que se ejecutarán (pruebas del cargador de SO) o agregar un parámetro extra para especificar qué programa (y sus parámetros) te gustaría probar contra cada ELF malformado dentro de la carpeta de orcos. Este script tiene la opción de fuzzear algunas variables de entorno (definidas también como reglas de fuzzing). Mostrar los logs con #dmesg después de ejecutar el script puede ser útil para identificar qué programa/biblioteca falló y dónde ocurrió ese fallo. Se muestran algunos ejemplos al ejecutar el script sin parámetros.

Si quieres probar los ELF malformados (orcos) automáticamente en un entorno Windows, se incluye un script por lotes (win_test_fuzzed.bat) con casi la misma funcionalidad que el script para *NIX.

¡Feliz fuzzing!

--------------------------------~ | -- DIRECTORIOS -- | --------------------------------~

  • docs/ Contiene la documentación relacionada, como la lista detallada de reglas de fuzzing, así como la lista de dependencias de los metadatos ELF.

  • templates/ Contiene algunos archivos ELF compilados al mismo tiempo que melkor y que pueden usarse para alimentar a melkor: foo.c -> foo.o (objeto ELF)-> foo (ejecutable ELF) foo.c -> foo_static (ejecutable ELF estático) libfoo.c -> libfoo.so (objeto compartido ELF) y algunos otros. Escribe "$make templ" para ver en detalle qué otras plantillas ELF se crean.

  • orcs_*/ Contendrá los archivos ELF malformados (basados en el archivo de plantilla proporcionado) creados después del proceso de fuzzing.

  • src/ Código fuente de Melkor.

--------------------------------~ | -- ERRORES -- | --------------------------------~

Por favor, lee BUGS.txt

--------------------------------~ | -- CONTACTO -- | --------------------------------~

Nombre: Alejandro Hernandez H. [nitr0us] Twitter: http://twitter.com/nitr0usmx Email: nitrousenador [at] gmail [dot] com Web: http://www.brainoverflow.org Blog: http://chatsubo-labs.blogspot.com

--------------------------------~ | -- EN MEMORIA -- | --------------------------------~

Este proyecto está dedicado a la memoria de uno de mis mejores amigos, Aaron Alba.

--------------------------------~ | -- LICENCIA -- | --------------------------------~

Melkor - Un fuzzer del formato de archivo ELF Copyright (C) 2014 Alejandro Hernandez H. (nitr0us)

Este programa es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a tu elección) cualquier versión posterior.

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulta la Licencia Pública General GNU para obtener más detalles.

Deberías haber recibido una copia de la Licencia Pública General GNU junto con este programa. Si no es así, consulta http://www.gnu.org/licenses/.

Descargar herramienta