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.
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 – beefVon 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.
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.
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.
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
Perfekt ist natürlich wenn man über eine IP Qury auf seiner Homepage bei passenden clienten halt das Beef Scrpt nachlädt. Google und Co merken davon nichts weil sie nicht auf der Hacked IP List stehen.