Tuesday, July 9, 2024

WLAN hacking

Viele Anleitungen und auch die gängige Fachliteratur nutzen die klassischen Tools der Aircrack-ng Suite airodump-ng(8) und aireplay-ng(8). Vergleiche diese Anleitung: How to Crack WPA/WPA2

Die Aircrack-ng Suite bietet aber auch experimentelle Tools wie besside-ng(8), um ein WLAN zu hacken. Es knackt einen WEP- oder WPA-Schlüssel ohne Benutzereingriff.

Installation der Aircrack-ng Suite

Die Aircrack-ng Suite kann über die Paketverwaltung installiert werden:

apt install aircrack-ng

Es empfiehlt sich jedoch die experimentellen Tools, direkt von Upstream zu installieren:

# Bauabhänigkeiten installieren
apt build-dep aircrack-ng
# Aircrack-ng aus den Quellen installieren
git clone https://github.com/aircrack-ng/aircrack-ng
cd aircrack-ng
NOCONFIGURE=1 ./autogen.sh
./configure --with-ext-scripts # enable experimental, extra scripts
make
make install

Die Tools liegen nun unterhalb von /usr/local und sind im PATH, so dass diese direkt in der Shell ausgeführt werden können.

MAC-Address spoofing

Bevor man das WLAN scannt, sollte man die MAC-Adresse des eigenen Adapter ändern. Dafür eignet sich z.B. das Tool macchanger(1):

apt install macchanger
macchanger -a wlan0 # set random vendor MAC of the same kind

Siehe auch: www.privacy-handbuch.de

Wordlist

Vorweg muss gesagt werden, dass sich WPA, aktuell nur mittels Wörterbuch/Brute Force angreifen lässt.

Kali Linux hat im Paket wordlists das rockyou.txt Wörterbuch, das wie folgt installiert wird:

apt install wordlists
gunzip /usr/share/wordlists/rockyou.txt.gz # entpacken

WLAN-Passwort knacken

WLAN-Passwörter können eine Länge von 8 bis 63 Zeichen haben. Laut den Vorgaben des BSI sollte das Passwort aus mindestens 20 Zeichen bestehen, was vom gewählten Verschlüsselungsverfahren unabhängig gilt.

besside-ng

# WLAN-Adapter in den monitor mode schalten
airmon-ng start wlan0
# WPA-Handshakes aufzeichnen
besside-ng -vvv wlan0mon
# Log verfolgen
tail -f ./besside.log

Die WPA-Handshakes werden in der Datei ./wpa.cap gespeichert.

# Den monitor mode wieder abschalten
airmon-ng stop wlan0mon

Versuchen das WLAN-Passwort zu erraten:

aircrack-ng -w /usr/share/wordlists/rockyou.txt ./wpa.cap

Über neue Geräte im WLAN benachrichtigt werden

Mit dem Tool arpalert(8) können neue Geräte im Netzwerk anhand der MAC-Adresse erkannt werden.

apt install arpalert

Dies installiert das Paket arpalert über die Paketverwaltung.

In der Datei /etc/arpalert/arpalert.conf muss der Wert für das zu überwachende Interface gesetzt werden, ansonsten wird einfach das erste Interface genommen. Es können mehrere Interfaces durch Kommata getennt angegeben werden.

interface = wlan0

Auch muss in der Datei /etc/arpalert/arpalert.conf ein Script für action on detect angegeben werden, das bei Alarm eine Aktion auslöst. Im Beispiel unten, soll eine E-Mail an root gesendet werden.

action on detect = /usr/local/sbin/arpalert-action-on-detect # s.u.
#!/usr/bin/env sh
# ARP alert action
# grep "action on detect" /etc/arpalert/arpalert.conf 
# action on detect = /usr/local/sbin/arpalert-action-on-detect

mac="$1"
ip="$2"
extras="$3"
device="$4"
type_of_alert="$5"
vendor="$6"

case "$type_of_alert" in
	0)	subject="IP change $ip ($vendor)" ;;
	1)	subject="MAC already detected but not in white list" ;;
	2)	subject="MAC in black list" ;;
	3)	subject="New MAC $mac ($vendor)" ;;
	4)	subject="Unauthorized arp request" ;;
	5)	subject="Abusive number of arp request detected" ;;
	6)	subject="Ethernet MAC different from ARP MAC" ;;
	7)	subject="Flood detected" ;;
	8)	subject="New MAC whithout IP $mac ($vendor)" ;;
	9)	subject="MAC change $mac ($vendor)" ;;
	10)	subject="MAC expiere $mac ($vendor)" ;;
	*)	subject="n/a" ;;
esac

mail -s "$subject" root <<!
$device $ip $mac $vendor
$subject ($type_of_alert)
$extras
!

Damit das eigene Gerät keinen Alarm auslöst, muss dessen MAC-Adressen in die Datei /etc/arpalert/maclist.allow eingetragen werden und weiterhin angegeben werden, dass die Events für ip_change und new_mac ignoriert werden sollen:

cat <<! >>/etc/arpalert/maclist.allow
XX:XX:XX:YY:YY:YY 0.0.0.0 wlan0 ip_change
!
service arpalert force-reload

Weitere Geräte können, dem obigen Schema folgend, als neue Zeilen hinzugefügt werden.

Ein WLAN-Router kann i.d.R. auch so konfiguriert werden, dass nur bestimmte MAC-Adressen (Geräte) überhaupt eine Verbinung aufbauen dürfen (Whitelist).

Die .leases leeren:

service arpalert stop
>/var/lib/arpalert/arpalert.leases
service arpalert start

Schlusswort

Diesen Artikel habe ich geschrieben, um einer Bekannten Nachbarin die ihr Geburtsdatum als WLAN-Passwort gesetzt hat zu zeigen, dass es nur wenige Minuten braucht, bis man dieses erraten hat. Ich habe dazu ein Wörterbuch erstellt, das ein paar Datumsangaben enthält: dates.gz

Wer sich ernsthaft in des Nachbarn WLAN einloggen will, sollte bedenken, dass MAC-Adresse und Hostname im WLAN-Router geloggt werden. Und vor allem, dass es verboten ist. Vielleicht mag noch jemand den Straftatbestand und das mögliche Strafmaß in die Kommentare schreiben!

Links und Weiterführendes

Friday, October 1, 2021

Windows 11 auf VirtualBox oder auf älterer Hardware installieren (Bypass für TPM 2.0 Chip und für SecureBoot)

Für die Installation von Windows 11 auf nicht offiziell unterstützter Hard­ware, zeigt Microsoft nun eine offizielle Möglichkeit, wie Windows 11 auch auf Systemen ohne TPM 2.0 Chip und ohne SecureBoot installiert werden kann.

windows-11-bypass.png

Dazu im Windows 11 Installer mittels der Tastenkombination Shift + F10 das Terminal öffnen und dort regedit.exe öffnen und die Datei Windows11Bypass.reg s.u. importieren.
Ggf. im Menü von VirtualBox unter Eingabe/Tastatur die Bildschirmtastatur aktivieren.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\Setup\MoSetup]
	"AllowUpgradesWithUnsupportedTPMOrCPU"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig]
	"BypassCPUCheck"=dword:00000001
	"BypassDiskCheck"=dword:00000001
	"BypassRAMCheck"=dword:00000001
	"BypassSecureBootCheck"=dword:00000001
	"BypassStorageCheck"=dword:00000001
	"BypassTPMCheck"=dword:00000001

Speicher das Listing auf einen USB-Stick als Windows11Bypass.reg o.ä., um es während der Installation anzuwenden.

Quellen und weiterführendes

Monday, May 31, 2021

HTTPS-Verschlüsselung knacken

Mit dem Programm mitmproxy (https://mitmproxy.org) kann mittels eigenem Zertifikat als MITM eine HTTPS-Verbindung mitgelesen werden.

Installation von mitmproxy

Installation über die Paketverwaltung:

apt install mitmproxy

Das Paket wird von Debian GNU/Linux und auch Kali Linux bereitgestellt.

Ansonsten kann mitmproxy über Python mittels PIP installiert werden (Das funktioniert auch unter Cygwin und auch unter Windows - Python gibt es im Microsoft Store. Wobei ein C/C++ Compiler benötigt wird):

pip install mitmproxy

SOCKS-Proxy starten

mitmweb --mode socks5 --no-web-open-browser

Dies startet einen SOCKS-Proxy Server am Port TCP/8080 und das HUD ist als Web-Interface unter http://localhost:8081 verfügbar.

x-www-browser http://localhost:8081 http://mitm.it

Zertifikate importieren

Die Zertifikate befinden sich unter ~/.mitmproxy und es muss i.d.R. das mitmproxy-ca-cert.p12 importiert werden. Dieses (neue) Format fast die anderen einzelnen Dateien als eine Datei zusammen.

Ansonsten ist es wichtig, das Zertifikat ~/.mitmproxy/mitmproxy-ca-cert.cer als CA in den Webbrowser zu importieren und als SOCKS-Proxy den Socket 127.0.0.1:8080 anzugeben.

Für Firefox öffne dazu Einstellungen/Datenschutz und Sicherheit/Zertifikate/Zertifikate anzeigen/Zertifizierungsstellen/Importieren… und importiere ~/.mitmproxy/mitmproxy-ca-cert.cer und aktiviere Dieser CA vertrauen, um Websites zu identifizieren.

Siehe auch: Zertifizierungsstellen in Firefox einrichten

Traffic über Proxy leiten

Außerdem muss auch eingestellt werden den Proxy s.o. zu nutzen.

Für Firefox öffne dazu Einstellungen/Allgemein/Verbindungs-Einstellungen, aktiviere Manuelle Proxy-Konfiguration und setze SOCKS-Host und Port.

Siehe auch: Verbindungs-Einstellungen in Firefox

Transparent Proxy

Wird ein Transparent Proxy z.B. für Android und/oder Windows benötigt, erstellt man einen WLAN Hotspot wie folgt (Das Zertifikat s.o. muss dann zu den OS CAs hinzugefügt werden):

#!/usr/bin/env sudo
# Set up a WiFi hotspot in Kali Linux
wifi_ap=wlan0
gateway=eth0
sysctl net.ipv4.conf.$wifi_ap.forwarding=1
sysctl net.ipv6.conf.$wifi_ap.forwarding=1
iptables -t nat -A PREROUTING -i $wifi_ap -p tcp -m multiport --dports 80,443 -j REDIRECT --to-port 8080
iptables -t nat -A POSTROUTING -o $gateway -j MASQUERADE
ip6tables -t nat -A PREROUTING -i $wifi_ap -p tcp -m multiport --dports 80,443 -j REDIRECT --to-port 8080
ip6tables -t nat -A POSTROUTING -o $gateway -j MASQUERADE
nmcli dev wifi hotspot ifname $wifi_ap
nmcli dev wifi show-password

Und dann mitmproxy starten:

# startet den Proxy; benötigt kein root
mitmweb --mode transparent --no-web-open-browser

Für mehr Informationen siehe auch mitmweb --help, nmcli --help und iptables --help.

Wie man unter Android oder Windows das Zertifikat importiert und den Proxy setzt, entnehmen Sie bitte dem Benutzerhandbuch. Kurz: Das Webinterface lokal unter http://localhost:8081 aufrufen und zum Zertifikate einrichten remote die URL http://mitm.it aufrufen.

Wednesday, September 16, 2020

Fotos anhand der GeoTags auf einer Weltkarte (Google Earth) anordnen

Das Perl Modul und Programm ExifTool von Phil Harvey, bietet die Möglichkeit, Metadaten in einer beliebigen Anzahl von Formaten auszugeben. Z.B. auch als GPS-Trackdatei, die dann nach Google Earth importiert werden kann. Super fürs Fotoalbum, mit all den Urlaubsfotos (Wenn Sie immer schön GPS an hatten).
Das Google Earth installiert ist, setze ich voraus.

google_earth-2020-09-16-19-38-06.png

ExifTool installieren

Das Programm exiftool(1p) ist in Debian GNU/Linux enthalten und kann über die Paketverwaltung wie folgt installiert werden:

apt install libimage-exiftool-perl

Ansonsten muss es aus dem CPAN installiert werden:

cpan Image::ExifTool # installiert nach /usr/local

GPX- und KML-Datei erstellen

Um nun aus einer Reihe von Fotos mit GeoTags eine GPX- und eine KML-Datei zu erstellen, müssen entsprechende Schablonen mit der Option -p an exiftool(1p) übergebenen werden:

# Creating a GPX track log
exiftool -p ~/Downloads/gpx.fmt -ee -r ~/Bilder/ ~/Videos/ > ~/out.gpx
# Creating a Google Earth KML file
exiftool -p ~/Downloads/kml.fmt -ee -r ~/Bilder/ ~/Videos/ > ~/out.kml

Die Schablonen finden Sie für GPX hier und für KML hier.
Speichern Sie diese beiden Dateien am besten unter ~/Downloads/gpx.fmt und ~/Downloads/kml.fmt ab und führen Sie dann die obigen Kommandos aus./

Die zwei Beispiele, arbeiten die Verzeichnisse ~/Bilder/ und ~/Videos/ rekursiv ab. Aber es können stattdessen auch einzelne Dateien, oder Verzeichnisse und Dateien gemischt angegeben werden.

Mit Google Earth öffnen

Es sollten die Dateien ~/out.gpx bzw. ~/out.kml erzeugt worden sein.
Letztere können Sie mit Google Earth öffnen:

google-earth-pro ~/out.kml

Mein Tipp: Geben Sie Bilder, Videos und die out.kml mit absoluter Pfadangabe an. Dann sollten diese von Google Earth auch immer gefunden werden (Ansonsten halten Sie sich an die Tipps aus den Schablonenbeschreibungen).

In diesem Beispiel habe ich ausschließlich im Home-Verzeichnis als aktuelles Arbeitsverzeichnis (working directory) gearbeitet. So sollte die out.kml, auch korrekt über das Kontextmenü, mit Google Earth, aus dem Dateimanager heraus geöffnet werden können.

PS: ExifTool kam hier mit ~20000 Dateien klar!

Quellen und Weiterführendes

Sunday, August 16, 2020

NetworkManager als WLAN-Sniffer: Liste der benachbarten Access Points erhalten

Um eine Liste der benachbarten Funknetzwerke (Access Points), mit den Werten für WLAN-Name (SSID), Kanal (Channel), Signalstärke, Verschlüsselungsart usw. zu erhalten, kann man folgendes Kommando nutzen:

nmcli device wifi list --rescan yes

Anders als z.B. iwlist(8) muss nmcli(1) nicht explizit als UID 0/root ausgeführt werden, um einen Rescan durchzuführen.

Für Skripte kennt nmcli(1) den Schalter -g, --get-values. Dieser soll verwendet werden, um die Werte bestimmter Felder zu erhalten. Es ist im Grunde eine Kombination aus --mode tabular, --terse und --fields und eine bequeme Möglichkeit, Werte für bestimmte Felder abzurufen.

nmcli --get-values IN-USE,BSSID,SSID,CHAN,SIGNAL,SECURITY device wifi list --rescan yes

PS: Dies ist auch in nmcli-examples(7) beschrieben.