Browser Exploitation Framework (Beef) + Metasploit in Kali Linux nutzen

Hinter dem  Browser Exploitation Framework (Beef) verbirgt sich mittlerweile ein leistungsfähiges Tool for Penetration Tester, das sich auf die Prüfung der Sicherheit von Browsern spezialisiert hat. Im Gegensatz zu anderen Tools konzentriert sich das Framework auf Schwachstellen die im Internet Explorer, Firefox, Safari, Google Chrome etc. verfügbar sind. Der Anwender kann dadurch prakische Client-Side-Angriffe starten, die Sicherheit der Browser und die evtl. Auswirkungen auf das zu prüfende Netzwerk beurteilen.

beef_logo

Bereits im Buch (Seite 195, Kapitel 5.12) bin ich auf die Installation von Beef eingegangen. Hier wird nun gezeigt, wie man das Browser Exploitation Framework mittels Kali Linux in Zusammenwirken mit Metasploit nutzen kann.

Beef ist bereits in der in Oberfläche von Kali Linux integriert. Man kann das Framework wie folgt starten:

Application –  Kali Linux – Exploitation Tools – BeEF XSS Framework – beef

beef_kali_menu

Von den  Entwicklern des Frameworks wird diese Vorgehensweise allerdings nicht empfohlen.

Hier wird gezeigt, wie man vorgehen sollte.

Schritt 1 – Konfiguration anpassen

 

Im Verzeichnis /usr/share/beef-xss findet man die Datei config.yaml. 

#
# Copyright (c) 2006-2014 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
# BeEF Configuration file

beef:
    version: '0.4.4.9-alpha'
    # More verbose messages (server-side)
    debug: false
    # More verbose messages (client-side)
    client_debug: false

    restrictions:
        # subnet of browser ip addresses that can hook to the framework
        permitted_hooking_subnet: "0.0.0.0/0"
        # subnet of browser ip addresses that can connect to the UI
        # permitted_ui_subnet: "127.0.0.1/32"
        permitted_ui_subnet: "0.0.0.0/0"

    http:
        debug: false #Thin::Logging.debug, very verbose. Prints also full exception stack trace.
        host: "0.0.0.0"
        port: "3000"
        # Decrease this setting up to 1000 if you want more responsiveness when sending modules and retrieving results.
        # It's not advised to decrease it with tons of hooked browsers (more than 50),
        # because it might impact performance. Also, enable WebSockets is generally better.
        xhr_poll_timeout: 5000
        # if running behind a nat set the public ip address here
        #public: ""
        #public_port: "" # port setting is experimental
        # DNS
        dns_host: "localhost"
        dns_port: 53
        web_ui_basepath: "/ui"
        hook_file: "/hook.js"
        hook_session_name: "BEEFHOOK"
        session_cookie_name: "BEEFSESSION"

        # Allow one or multiple domains to access the RESTful API using CORS
        # For multiple domains use: "http://browserhacker.com, http://domain2.com"
        restful_api:
            allow_cors: false
            cors_allowed_domains: "http://browserhacker.com"

        # Prefer WebSockets over XHR-polling when possible.
        websocket:
          enable: false
          secure: true # use 'WebSocketSecure' works only on HTTPS domains and with HTTPS support enabled in BeEF
          port: 61985 # WS: good success rate through proxies
          secure_port: 61986 # WSSecure
          ws_poll_timeout: 1000 # poll BeEF every second

        # Imitate a specified web server (default root page, 404 default error page, 'Server' HTTP response header)
        web_server_imitation:
            enable: true
            type: "apache" #supported: apache, iis

        # Experimental HTTPS support for the hook / admin / all other Thin managed web services
        https:
            enable: false
            # In production environments, be sure to use a valid certificate signed for the value
            # used in beef.http.dns_host (the domain name of the server where you run BeEF)
            key: "beef_key.pem"
            cert: "beef_cert.pem"

    database:
        # For information on using other databases please read the
        # README.databases file

        # supported DBs: sqlite, mysql, postgres
        # NOTE: you must change the Gemfile adding a gem require line like:
        #   gem "dm-postgres-adapter"
        # or
        #   gem "dm-mysql-adapter"
        # if you want to switch drivers from sqlite to postgres (or mysql).
        # Finally, run a 'bundle install' command and start BeEF.
        driver: "sqlite"

        # db_file is only used for sqlite
        db_file: "db/beef.db"

        # db connection information is only used for mysql/postgres
        db_host: "localhost"
        db_port: 5432
        db_name: "beef"
        db_user: "beef"
        db_passwd: "beef123"
        db_encoding: "UTF-8"

    # Credentials to authenticate in BeEF. Used by both the RESTful API and the Admin_UI extension
    credentials:
        user:   "beef"
        passwd: "MyNewPassword"

    # Autorun modules as soon the browser is hooked.
    # NOTE: only modules with target type 'working' or 'user_notify' can be run automatically.
    autorun:
        enable: true
        # set this to FALSE if you don't want to allow auto-run execution for modules with target->user_notify
        allow_user_notify: true

    crypto_default_value_length: 80

    # You may override default extension configuration parameters here
    extension:
        requester:
            enable: true
        proxy:
            enable: true
        metasploit:
            enable: true
        social_engineering:
            enable: true
        evasion:
            enable: false
        console:
             shell:
                enable: false
        ipec:
            enable: true
									

Hier sollte man folgende Einstellungen vornehmen:

  • # Credentials to authenticate – hier das Passwort für die Weboberfläche ändern
  • # You may override default extension configuration parameters here –  hier auf metasploit: enable: true ändern

Im Verzeichnis /usr/share/beef-xss/extensions/metasploit findet man die Datei config.yaml

#
# Copyright (c) 2006-2014 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
# Enable MSF by changing extension:metasploit:enable to true
# Then set msf_callback_host to be the public IP of your MSF server
#
# Ensure you load the xmlrpc interface in Metasploit
# msf > load msgrpc ServerHost=10.211.55.2 Pass=abc123
# Please note that the ServerHost parameter must have the same value of host and callback_host variables here below.
# Also always use the IP of your machine where MSF is listening.
beef:
    extension:
        metasploit:
            name: 'Metasploit'
            enable: true
            host: "127.0.0.1"
            port: 55552
            user: "msf"
            pass: "MySecretPassword"
            uri: '/api'
            # if you need "ssl: true" make sure you start msfrpcd with "SSL=y", like:
            # load msgrpc ServerHost=IP Pass=abc123 SSL=y
            ssl: false
            ssl_version: 'SSLv3'
            ssl_verify: true
            callback_host: "127.0.0.1"
            autopwn_url: "autopwn"
            auto_msfrpcd: false
            auto_msfrpcd_timeout: 120
            msf_path: [ 
              {os: 'osx', path: '/opt/local/msf/'},
              {os: 'livecd', path: '/opt/metasploit-framework/'},
              {os: 'bt5r3', path: '/opt/metasploit/msf3/'},
              {os: 'bt5', path: '/opt/framework3/msf3/'},
              {os: 'backbox', path: '/opt/metasploit3/msf3/'},
              {os: 'kali', path: '/usr/share/metasploit-framework/'},
              {os: 'pentoo', path: '/usr/lib/metasploit'},
              {os: 'win', path: 'c:\metasploit-framework\'},
              {os: 'custom', path: ''}
            ]

									

Hier folgende Einstellungen vornehmen:

  • IP-Adresse für host und callback_host ändern
  • Passwort in der Zeile pass: ändern

Hinweis: Nutzt man Beef und Metasploit auf dem gleichen Server, so kann man die Einstellungen für Host und Callback bei den aktuellen Werten belassen.

 

Schritt 2 – Ressource-Datei für Metasploit erstellen

 

In einem beliebigen Verzeichnis wird nun die Datei start_msgrpc.rc mit folgendem Inhalt erstellt:

load msgrpc ServerHost=127.0.0.1 Pass=MySecretPassword
									

Die Angaben für die Werte ServerHost und pass sollten natürlich mit den vorher eingestellten Werten übereinstimmen.

 

Schritt 3 – Beef mit Metasploit-Unterstützung starten

 

Mit dem ersten Befehl wird die Metaspoit-Anbindung gestartet. Bei erfolgreiche Ausführung könnte dies wie folgt aussehen:

msfconsole -r /home/start_msgrpc.rc


       =[ metasploit v4.10.0-2014082101 [core:4.10.0.pre.2014082101 api:1.0.0]]
+ -- --=[ 1331 exploits - 722 auxiliary - 214 post        ]
+ -- --=[ 340 payloads - 35 encoders - 8 nops             ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]

[*] Processing /home/scripts/start_msgrpc.rc for ERB directives.
resource (/home/scripts/start_msgrpc.rc)> load msgrpc ServerHost=127.0.0.1 Pass=MySecretPassword
[*] MSGRPC Service:  127.0.0.1:55552 
[*] MSGRPC Username: msf
[*] MSGRPC Password: MySecretPassword
[*] Successfully loaded plugin: msgrpc
									

Hinweis: Der Start der Metasploit-Konsole  kann etwas Zeit in Anspruch nehmen!

Öffnen Sie nun ein zweites Terminal-Fenster und führen Sie nun folgenden Befehl aus:

service beef-xss start
									

Das Beef-Framework braucht nun etwas Zeit bis es vollständig geladen ist. Danach kann man dessen Weboberfläche im Browser mit folgender URL nutzen:

http://localhost:3000/ui/panel

Zum Login verwenden Sie die im ersten Abschnitt veränderten Zugangsdaten.

beef_login

Um nun die möglichen Schwachstellen der verwendeten Browser testen zu können, muss man nur noch die Clients „an den Haken“ nehmen. Dazu verwendet man folgende (Phishing)-URLs auf dem zu prüfenden Clients oder erstellt nach diesem Vorbild eigene Webseiten.

http://IP-Adresse:3000/demos/basic.html

http://IP-Adresse:3000/demos/butcher/index.html

Hat man verschiedene Clients auf diese Webseiten gelockt, so können die Prüfungen vorgenommen werden.

Hier klickt man auf der linken Seite im Bereich „Online Browsers“  auf einen Eintrag und dann im rechten Fenster auf „Commands“. Das die Metasploit-Anbindung tatsächlich funktioniert sieht man daran, dass im Verzeichnis Metasploit die entsprechenden Module aufgelistet sind.

beef_hooks

 

 

3 Gedanken zu “Browser Exploitation Framework (Beef) + Metasploit in Kali Linux nutzen”

  1. Guten Tag,
    Ist das nur für locale arbeit(im eigenen Netzwerk) ?
    wenn ja wie sorge ich dafür das ich das auch online machen kann?
    Und eine generelle Frage wissen sie warum die „phone gap“ abteilung nicht
    funktioniert, egal was ich ausprobiert habe nichts hat davon geklappt.
    Wissen sie was ich da machen kann?
    Freundliche Grüße Matrim

    • Hallo Matrim,

      Beef funktioniert natürlich auch über die Grenzen von lokalen Netzwerken hinaus. Dazu müsste man den Rechner (dort wo Beef installiert ist) eine IP-Adresse aus dem Internet geben.
      Leider funktionieren nicht alle Module mit allen Browsern und Betriebsystemen. Deshalb habe die Entwickler die einzelnen Module farblich gekennzeichnet. Ich kann es nicht mehr genau sagen, aber die mit „grün“ gekennzeichneten Module funktionieren fast immer und „grau“ wohl nur sehr eingeschränkt und nur mit einzelnen Browsern und OS. Dazwischen gibt es noch andere Farben. Bei den Phonegap-Modulen gibt es dann noch Unterschiede für die einzelnen Telefone und Betriebssysteme (Android, IOS, Windows etc.). Da muss man genau nachlesen, welche Module mit welchem Phone funktionieren.

  2. Danke für die schnelle Rückmeldung,
    ich habe geguckt und eigentlich alles gemacht wie sie
    trotzdem funktioniert Metasploit nicht.
    Und wegen der Ip man hat doch eine öffentliche geht die nicht.
    Und hätten sie noch ein Tipp wo ich mich noch dazu Informieren kann ( damit ich das dann umsetzen kann was sie gesagt haben).

    Ich hoffe ich nerve sie nicht.
    Freundliche Grüße Matrim

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.