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
SHGenOb — Herramienta basada en Python para generar Shellcode desde PIC C | Kitploit
Herramientas/GitHubGitHub/oldboy21/shgenob
Herramientas de Cifrado/DescifradoGeneración de PayloadsExplotaciónShellcodeAnálisis de MalwareAnálisis de BinariosAprendizaje y EducaciónGeneración de Shellcode
GitHuboldboy21/shgenob

SHGenOb

Herramienta basada en Python para generar Shellcode desde PIC C

Ver Repositorio
435hace 9 mesesRevisado 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

SHGenOB: Generador de Shellcode a partir de Código C PIC

Introducción

SHGenOB es una herramienta basada en Python diseñada para generar shellcode a partir de Código Independiente de Posición (PIC) escrito en C. Automatiza el proceso de compilar código C, extraer la sección .text y, opcionalmente, cifrar el shellcode resultante mediante cifrado XOR.

Este proyecto se basa enteramente en este de hasherezade.

Código Independiente de Posición (PIC)

Nota importante para los usuarios de SHGenOB: Para que esta herramienta de generación de shellcode funcione correctamente, el código C del archivo de entrada debe estar escrito como Código Independiente de Posición (PIC). La herramienta asume que el código proporcionado cumple con los principios y características de PIC que se describen a continuación.

El Código Independiente de Posición (PIC) es un tipo de código máquina que puede ejecutarse independientemente de su dirección de memoria absoluta. Esta característica hace que el PIC sea especialmente útil para crear shellcode, bibliotecas compartidas y ciertos tipos de malware. Las características clave del PIC incluyen:

  • Independencia de dirección: El PIC puede ejecutarse correctamente sin importar dónde esté cargado en memoria.
  • Sin referencias de memoria fijas: Evita el uso de direcciones absolutas, basándose en su lugar en direccionamiento relativo u otras técnicas para referenciar ubicaciones de memoria.
  • Autocontenido: El PIC generalmente incluye todos los datos necesarios dentro del propio código, reduciendo las dependencias externas.
  • Cadenas en la pila (Stack-Strings): Declarar cadenas como un array de caracteres obliga al compilador a colocarlas en la pila y no en la sección .data o .pdata del archivo PE.
  • Sin reubicaciones: No requiere que el cargador realice reubicaciones, lo que hace que sea más rápido de cargar y ejecutar.
  • Menor tamaño: El PIC suele dar como resultado binarios de menor tamaño en comparación con el código dependiente de la posición.
  • Direccionamiento relativo a registros: Con frecuencia utiliza direccionamiento relativo a registros para acceder a los datos y realizar saltos.
  • Uso de desplazamientos: En lugar de direcciones absolutas, el PIC utiliza desplazamientos desde el puntero de instrucción actual.
  • Técnicas específicas de plataforma: Diferentes arquitecturas de CPU pueden requerir diferentes técnicas para lograr la independencia de posición.

El PIC es esencial en escenarios donde la dirección exacta de carga del código no se conoce de antemano, lo que lo convierte en un concepto crucial en el desarrollo de shellcode y en ciertas áreas de la programación de sistemas. Al usar SHGenOB, asegúrate de que tu código C de entrada siga estos principios PIC para generar shellcode eficaz y fiable.

Características

  • Compila código C PIC utilizando las herramientas de Microsoft Visual Studio
  • Extrae la sección .text del ejecutable compilado
  • Cifra opcionalmente el shellcode mediante cifrado XOR
  • Inserta el shellcode generado en una plantilla de loader
  • Compila y prueba el loader con el shellcode generado
  • Admite el modo de depuración para inspeccionar archivos intermedios
  • Limpia los archivos intermedios tras una ejecución exitosa

Requisitos

  • Sistema operativo Windows
  • Python 3.6 o superior
  • Microsoft Visual Studio 2022 Community Edition (o versión compatible)
  • Los siguientes paquetes de Python:
    • pefile
    • argparse
  • Un compilador de C (cl.exe) y un ensamblador (ml64.exe) de Visual Studio
  • El archivo vcvars64.bat de Visual Studio (para configurar el entorno de compilación)

Instalación

  1. Instala Python 3.6 o superior desde python.org
  2. Instala Microsoft Visual Studio 2022 Community Edition
  3. Instala los paquetes de Python necesarios:

pip install pefile argparse

  1. Clona o descarga este repositorio en tu máquina local

Uso

Ejecuta el script desde la línea de comandos con la siguiente sintaxis:

root@kitploit:~
python shgenob.py --code-file <path_to_c_file> [--masm-file <path_to_masm_file>] [--debug] [--xor-key <key>]

Argumentos:

  • --code-file o -cf: (Obligatorio) Ruta al archivo main.c que contiene el código PIC
  • --masm-file o -mf: (Opcional) Ruta al archivo .masm externo para incluir lógica adicional en ensamblador dentro del shellcode
  • --debug o -d: (Opcional) Habilita el modo de depuración (omite la limpieza de archivos intermedios)
  • --xor-key o -xk: (Opcional) Clave XOR para cifrar el shellcode (formato: AA,BB,CC)

Ejemplos:

root@kitploit:~
# Basic usage
python shgenob.py --code-file main.c

# With external MASM file
python shgenob.py --code-file main.c --masm-file custom_logic.masm

# With all options
python shgenob.py --code-file main.c --masm-file custom_logic.masm --debug --xor-key AA,BB,CC

Descripciones de funciones

  1. save_to_file(content, filename): Guarda el contenido proporcionado en un archivo en el directorio actual
  2. cleanup(): Elimina los archivos intermedios (.asm, .exe, .obj, .lnk) del directorio actual
  3. xor_encrypt(shellcode, key): Cifra el shellcode mediante XOR con la clave proporcionada
  4. insert_shellcode_into_loader(formatted_shellcode, loader_file): Inserta el shellcode en la plantilla del loader
  5. extract_text_section(file_path, key): Extrae la sección .text de un archivo PE y, opcionalmente, la cifra
  6. find_file(root_dir, file_name): Busca un archivo en el directorio indicado y sus subdirectorios
  7. run_command_with_vcvars(command, vcvars_path): Ejecuta un comando con las variables de entorno de Visual Studio configuradas
  8. compile_cpp_file(cpp_file, vcvars_path, output_exe): Compila un archivo C++ usando el compilador de Visual Studio
  9. modify_asm_file(asm_file): Modifica el archivo ensamblador generado para la compatibilidad con shellcode
  10. main(cpp_file, args): Función principal que orquesta el proceso de generación de shellcode

Flujo de trabajo

  1. Analizar los argumentos de la línea de comandos
  2. Localizar las herramientas de Visual Studio (vcvars64.bat, cl.exe, ml64.exe)
  3. Compilar el archivo C de entrada a ensamblador
  4. Modificar el archivo ensamblador generado
  5. Ensamblar el archivo ensamblador modificado
  6. Extraer la sección .text del ejecutable resultante
  7. Cifrar opcionalmente el shellcode extraído
  8. Guardar el shellcode en un archivo
  9. Insertar el shellcode en una plantilla de loader
  10. Compilar el loader
  11. Probar el loader con el shellcode generado
  12. Limpiar los archivos intermedios (salvo en modo de depuración)

Depuración

Usa el indicador --debug para omitir el proceso de limpieza e inspeccionar los archivos intermedios. Esto es útil para solucionar problemas y comprender el proceso de generación de shellcode.

Consideraciones de seguridad

  • Esta herramienta está destinada únicamente a fines educativos y de pruebas autorizadas
  • El shellcode generado puede ser marcado por el software antivirus
  • Utiliza cifrado (clave XOR) para ofuscar el shellcode, pero ten en cuenta que es una forma básica de ofuscación
  • Asegúrate de tener permiso para usar esta herramienta en los sistemas objetivo

Limitaciones

  • Actualmente solo admite Windows y la cadena de herramientas de Microsoft Visual Studio
  • Manejo limitado de errores para algunos casos extremos
  • El cifrado XOR es una forma básica de ofuscación y puede no ser suficiente para todos los casos de uso

Contribuciones

Las contribuciones para mejorar SHGenOB son bienvenidas. Por favor, sigue estos pasos:

  1. Haz un fork del repositorio
  2. Crea una nueva rama para tu función
  3. Haz commit de tus cambios
  4. Sube los cambios a la rama
  5. Crea un nuevo Pull Request
Descargar herramienta