Ataques al navegador del usuario usando BeEF

Share this…

BeEF es un framework que viene por defecto en Kali Linux y está orientado en la explotación de vulnerabilidades en los navegadores web. Podemos usar como vector de ataque un XSS (una vulnerabilidad XSS reflejado o persistente) y mediante un iframe oculto o fichero JavaSript (JS) se pueden robar credenciales, o bien usar simples ataques de ingeniería social preguntando por la instalación de falsos certficados de seguridad, falsas actualizaciones de Flash Player o simplemente simular una sesión caducada de Facebook

logo_beef

¿Qué es  BeEF?

La BeEF es la abreviatura de The Browser Exploitation Framework. Es una herramienta de pruebas de penetración que se centra en el navegador web.

En medio de la creciente preocupación por los ataques procedentes de Internet en contra de los clientes, incluyendo clientes móviles, BeEF permite la prueba de intrusión profesional para evaluar la situación de seguridad actual de un entorno de destino mediante el uso de vectores de ataque del lado del cliente. A diferencia de otros entornos de seguridad, BeEF mira más allá del perímetro de la red endurecido y sistema cliente, y examina explotabilidad en el marco de la puerta abierta: el navegador web.

BeEF enganchará (hook) uno o más de los navegadores web y los utilizan como cabezas  para el lanzamiento de los módulos de comando dirigidas y nuevos ataques contra el sistema desde dentro del contexto del explorador.

 

Introducción

The Browser Exploitation Framework (BeEF ) es una poderosa herramienta de seguridad profesional. La BeEF usa técnicas pioneras que proporcionan la prueba de intrusión con experiencia a los vectores de ataque del lado del cliente prácticos. A diferencia de otros marcos de seguridad , BeEF se centra en el aprovechamiento de las vulnerabilidades del navegador para evaluar la postura de seguridad de un objetivo. Este proyecto es desarrollado exclusivamente para la investigación legal y pruebas de penetración .

BeEF engancha (Hook ) uno o más navegadores web como cabezas de playa para la puesta en marcha de los módulos de mando dirigidos . Cada navegador es probable que sea en un contexto de seguridad diferente , y cada contexto puede proporcionar un conjunto de vectores de ataque únicos. El marco permite que el probador de la penetración pueda seleccionar los módulos específicos ( en tiempo real ) para apuntar a cada navegador , y por lo tanto a cada contexto.

El marco contiene numerosos módulos de comando que emplean API sencilla y potente de la BeEF. Esta API está en el corazón de la eficacia y eficiencia de la estructura. Se abstrae la complejidad y facilita el desarrollo rápido de los módulos personalizados.

Requerimientos

  • OSX 10.5.0 o superior, Linux moderno, o bien Windows XP o superior
  • Ruby 1.9.2 o superior
  • SQLite 3.x
  • The gems listed in the Gemfile: https://github.com/beefproject/beef/blob/master/Gemfile

Instalación

En Kali linux ya tenemos instalado por defecto a BeEF su localizacion es en:

/usr/share/beef-xss o tambien en “Kali Linux>herramiental de explotacion>plataforma XSS BeEF”

    cd /usr/share/beef-xss
./beef

Para los impacientes:

$ curl -L https://raw.githubusercontent.com/beefproject/beef/a6a7536e/install-beef | bash -s stable

Dependencias

  • curl
  • git
  • gems
  • Ruby
git clone git://github.com/beefproject/beef.git
cd beef
    bundle install
    ruby beef

  • https://github.com/beefproject/beef/wiki/Installation

Configuración

El fichero de configuración general se llama:

  • config.yaml

Aquí podemos establecer o restringir el acceso vía red al panel de control:

restrictions:
        permitted_hooking_subnet: "10.1.0.0/16"
        permitted_ui_subnet: "127.0.0.1/32"

Configurar el Servidor web:

    https:
        debug: false # Will print verbose message in BeEF console
        host: "0.0.0.0" # IP address of the web server
        port: "3000" #Port of the web server

        # If BeEF is running behind a reverse proxy or NAT
        #  set the public hostname and port here
        public: "8.7.6.5"
        public_port: "3000"

        dns: "localhost" # Address of DNS server
        web_ui_basepath: "/ui" # Path for admin UI
        hook_file: "/hook.js" # Path for hooking script
        hook_session_name: "BEEFHOOK" #Name of session
        session_cookie_name: "BEEFSESSION" # Name of BeEF cookie

Las extensiones:

    extension:
        requester:
            enable: true
        proxy:
            enable: true
        metasploit:
            enable: false
        social_engineering:
            enable: true
        evasion:
            enable: false
        console:
             shell:
                enable: false

La integración con Metasploit:

            name: 'Metasploit'
            enable: true
            host: "127.0.0.1"
            port: 55552
            user: "msf"
            pass: "abc123"
            uri: '/api'
            ssl: true
            ssl_version: 'TLS1'
            ssl_verify: true
            callback_host: "127.0.0.1"
            autopwn_url: "autopwn"

 

Módulos de Metasploit

Podemos usar Browser Autopwn creando un iframe invisble:

 

msf > use auxiliary/server/browser_autopwn2
msf auxiliary(browser_autopwn2) > show options

Module options (auxiliary/server/browser_autopwn2):

   Name             Current Setting  Required  Description
   ----             ---------------  --------  -----------
   EXCLUDE_PATTERN                   no        Pattern search to exclude specific modules
   INCLUDE_PATTERN                   no        Pattern search to include specific modules
   Retries          true             no        Allow the browser to retry the module
   SRVHOST          0.0.0.0          yes       The local host to listen on. This must be an address on the local machine or 0.0.0.0
   SRVPORT          8080             yes       The local port to listen on.
   SSL              false            no        Negotiate SSL for incoming connections
   SSLCert                           no        Path to a custom SSL certificate (default is randomly generated)
   URIPATH                           no        The URI to use for this exploit (default is random)


Auxiliary action:

   Name       Description
   ----       -----------
   WebServer  Start a bunch of modules and direct clients to appropriate exploits

Y esperamos para obtener una shell:

 

Iniciando BeFF

Accedemos al panel de control vía:

  • https://localhost:3000/ui/panel

 

  • Usuario –> beef
  • Contraseña –> beef
Página inicial:
Página de Demos:
  • https://localhost:3000/demos/basic.html

 Módulos

El significado del color de los módulos:

  • – Verde: La víctima es vulnerable y su ejecución pasa desapercibida.
  • – Naranja: La víctima es vulnerable pero su ejecución no pasa desapercibida.
  • – Gris: Indeterminado. ¡Hemos venido a jugar!
  • – Rojo: La víctima no es vulnerable.

Ejemplos de Ingeniería Social

Preguntar por credenciales:

  • The Pretty Theft imprime un sencillo  mensaje al usuario que requiere de un usuario y contraseña explicando que la sesión ha terminado o caducado
  • The Simple Hijacker propone varias plantillas de ingeniería social y los impulsan al usuario cuando se haga clic en un enlace en la página.
  • Clippy crea un pequeño asistente navegador que proponen las actualizaciones del navegador.

Ejemplo de session timeout en Facebook:

Extensiones de Chrome/Firefox

Una vez enganchado al navegador (hooked)  podemos obtener:

  • Listado de dominios visitados
  • Listado de URLS
  • Acceso a la Webcam
  • Todas las Cookies
  • Capturas de Pantalla (Screenshots)

BeEF usa un fichero JavaScript llamado “hook.js”

Ejemplo Falsa Actualización de Adobe Flash Player:

  • https://github.com/beefproject/beef/wiki/Module%3A-Fake-Flash-Update

Ejemplo instalación de certficado Falso:

  • https://github.com/beefproject/beef/wiki/Module%3A-Simple-Hijacker
Fuente:https://www.enhacke.com