Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/unsignedchad/bcm4360-wpa3
Wi-Fi-PrüfungReverse EngineeringDrahtlose SicherheitHardware-SicherheitBinäranalyseFirmware-Analyse
GitHubunsignedchad/bcm4360-wpa3

bcm4360-wpa3

wpa3 Funktionalität für den WiFi-Chip in einem MacBook Pro von 2014

Repository anzeigen
51vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

WPA3-SAE + 802.11w auf dem Broadcom BCM4360 (geschlossener wl-Blob)

Apple/Broadcom hat dem BCM4360 (14e4:43a0) nie WPA3 gegeben. Der einzige Linux-Treiber ist der geschlossene broadcom-sta (wl)-Blob; brcmfmac kann ihn nicht betreiben. Dies fügt WPA3-SAE + volles 802.11w PMF zu diesem geschlossenen Blob hinzu – vollständig aus der Hostsoftware, keine Firmware-Quelle.

Luftgetestet gegen einen WPA3-only, MFP-erfordernden AP: SAE-Authentifizierung → Assoziation → 4-Way-Handshake → CCMP-Daten, stabil und resistent gegen Deauth-Flood- und SA-Query-Teardown-Angriffe.

Wie es funktioniert

Der Blob ist ein nicht gestripptes, relokierbares ELF .o (kein endgültiges Firmware-Image) – das ist der ganze Grund, warum das funktioniert. Wir schreiben ihn nicht neu; wir linken neuen C-Code dagegen und leiten einige Aufrufstellen um:

  • wpa_supplicant führt SAE + den 4-Way-Handshake aus (die Kryptografie des Blobs ist nur SHA-1; SAE benötigt SHA-256).
  • Ein kleiner cfg80211-Klebecode (wl_cfg80211_hybrid.c, wl_linux.c) überbrückt Auth/Assoc/Keys.
  • Drei Build-Schritte machen den Blob hookbar:
    1. P1-Byte-Patch – Entferne die Beschränkung des auth-iovars, sodass es SAE (alg=3) akzeptiert.
    2. objcopy --globalize-symbol – Mache ~10 blob-interne Funktionen von unserem C aus aufrufbar.
    3. wl_reloc.py – Schreibe .rela.text um, sodass die Aufrufe des Blobs an wlc_recv/wlc_sendauth/wlc_authresp_client in unseren __wrap_*-Hooks landen.

Das reicht aus, um SAE-Frames über die Luft zu senden, wpa_supplicants RSN-IE in die Assoc-Request einzufügen, benutzerseitig abgeleitete Schlüssel zu installieren und Software-PMF hinzuzufügen (ungeschützte Deauth verwerfen; SW-CCMP beantwortet SA-Queries).

Reverse Engineering

Werkzeuge: Ghidra (headless), nm, objdump, strings, ein Monitor-Mode-Sniffer (iw + tcpdump).

root@kitploit:~
# 1. The blob ships inside broadcom-sta and is NOT stripped (~4091 syms) -> Ghidra recovers names.
GHIDRA=/opt/ghidra
$GHIDRA/support/analyzeHeadless ./proj wl -import wlc_hybrid.o_amd64 \
    -analysisTimeoutPerFile 3600          # auto-analyze, then decompile in the GUI

# 2. Triage what's present BEFORE picking a strategy (absent crypto must move host-side):
nm wlc_hybrid.o_amd64 | grep -iE 'sha256|sae|bip|igtk|mmie'          # -> empty here
nm wlc_hybrid.o_amd64 | grep -iE 'wpa|akm|sup|sendauth|key_insert'

# 3. Verify any offset before you patch it (.text vaddr V == file offset V+0x40 in this blob):
objdump -d --start-address=0x47d40 --stop-address=0x47d60 wlc_hybrid.o_amd64

Strategie: Beginne an den cfg80211-Einstiegspunkten im offenen Klebecode (wl_cfg80211_connect, wl_set_auth_type) und folge den iovars (auth, wpa_auth, wsec) in den Blob. Dekompiliere, was sie erreichen: das AKM-Gate (bcmwpa_akm2WPAauth), die Join/Auth-FSM (wlc_join_BSS + den Auth→Assoc-Vorwärtsschieber bei 0x5b79d), die RX-Dispatch (wlc_recv) und den PMK/Key-Pfad (wlc_sup_set_pmk, wlc_key_insert). Überprüfe jede Adresse mit objdump.

Portieren auf einen anderen Chip

  1. Bestätige, dass der Blob ein nicht gestripptes, relokierbares .o ist (file, nm). Ein gestripptes Firmware-Image funktioniert so nicht.
  2. Finde in Ghidra: die Auth-Alg-Beschränkung, die Join→Auth→Assoc-FSM + ihren "Auth-Erfolgreich"-Vorwärtsschieber, die RX-Dispatch und set_pmk/Key-Insert.
  3. Trage ihre Adressen in build.sh ein (--add-symbol re_auth_advance=..., die Globalisierungsliste) und in patches/wl_reloc.py (die __wrap_*-Ziele).
  4. Korrigiere die Struct-Offsets in wl_linux.c (wlc+0x6a8 txq, bsscfg+0x320 assoc, scb+0x18 bss) – diese sind Layout-abhängig und unterscheiden sich pro Blob-Version.

Probleme → Lösungen

  • Kernel hängt sich während SAE auf, kein Backtrace. Eine --add-symbol-Adresse war um eine Hex-Ziffer verschoben (0x15b79d vs 0x5b79d), landete mitten in einer Instruktion → call <Garbage> → NX-Fehler. Der Hinweis ist die Build-Warnung objtool: ... can't find starting instruction; überprüfe jedes synthetische Symbol auf einen echten Funktionsanfang.
  • Kann den Panic nicht erfassen. efi-pstore ist auf Apple EFI defekt; netconsole kann nicht über ein USB-Ethernet-NIC senden. Streame dmesg --follow über SSH auf eine zweite Maschine – es spült den oops vor dem Neustart aus.
  • AP weist Assoc ab (Status 31, MFP-Richtlinie). Der Blob erstellt sein eigenes PSK/kein-MFP RSN-IE. Erfasse wpa_supplicants sme->ie in .connect und zeige den Assoc-Request-IE-Puffer des Blobs (*(bsscfg+0x320)+0x30) darauf – erfüllt auch die RSN-IE-Überprüfung des 4-Way.
  • Schlüsselinstallation schlägt fehl -22 – nur der IGTK (BIP, idx 4); die HW-Schlüsselengine hat keinen BIP-Slot.

Build

Benötigt Kernel-Header, gcc, binutils, python3. Der Blob ist nicht in diesem Repository (proprietär).

root@kitploit:~
# 1. Get the pristine blob from broadcom-sta 6.30.223.271:
#    hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz  ->  lib/wlc_hybrid.o_amd64
cp /path/to/wlc_hybrid.o_amd64 wl-src/lib/wlc_hybrid.o_amd64.orig

# 2. Build:
./build.sh                 # -> wl-src/wl.ko   (or download it from Releases)

Installieren

Schnelltest

root@kitploit:~
sudo rmmod b43 brcmfmac bcma ssb wl 2>/dev/null   # free the card
sudo insmod wl-src/wl.ko                          # wlan0 appears

NetworkManager treibt WPA3-SAE durch diesen Treiber – verwende einfach die WLAN-GUI: wähle dein Netzwerk, gib das Passwort ein, fertig. NM speichert es und verbindet sich automatisch bei jedem Neustart. CLI-Äquivalent:

root@kitploit:~
nmcli con add type wifi ifname wlan0 con-name w ssid "YOUR_SSID"
nmcli con modify w wifi-sec.key-mgmt sae wifi-sec.psk "YOUR_PASS" 802-11-wireless-security.pmf 3
nmcli con up w        # NM does SAE + 4-way + DHCP

(Eigenständige Alternative: sudo ./examples/connect.sh wlan0 examples/wpa3-sae.conf.example.)

Dauerhaft (überlebt Neustart + Kernel-Updates)

root@kitploit:~
sudo dkms/install.sh

Registriert den Treiber mit DKMS (automatischer Neubau bei Kernel-Upgrades), blacklistet die konfliktierenden In-Tree-Treiber + den Standard-wl und lädt unseren beim Boot vor NetworkManager. Dann verbinde über die WLAN-GUI. Details und die eine DKMS-Falle: dkms/README.md. Für einen einmaligen manuellen Neubau stattdessen führe ./build.sh → wl-src/wl.ko aus.

Debug-Logging

Der Treiber gibt standardmäßig ausführliches WPA3/PMF-Debug aus. Stummschalten zur Laufzeit (oder dauerhaft):

root@kitploit:~
echo 0 | sudo tee /sys/module/wl/parameters/re_verbose          # this boot
echo 'options wl re_verbose=0' | sudo tee /etc/modprobe.d/wl-quiet.conf   # permanent

Einschränkungen

  • Gemischte WPA2/WPA3-APs (Transition-Mode) sind unzuverlässig – das hostgesteuerte SAE gewinnt nicht immer die Verhandlung. Verwende einen einzelnen Modus: stelle den AP auf WPA3-only (oder WPA2-only) oder fixiere die Sicherheit in der NetworkManager-Verbindung (WPA3 Personal / SAE, oder WPA2). Ein reines WPA3-Netzwerk verbindet sich jedes Mal.
  • Der Blob (wlc_hybrid.o_amd64) ist Broadcom-proprietär – besorge ihn selbst von broadcom-sta. Das wl.ko in den Releases enthält ihn (gleiche Situation wie Debian's broadcom-sta-dkms).
  • Offsets sind spezifisch für broadcom-sta 6.30.223.271 / BCM4360.
  • Getestet auf Linux 6.12 (Debian 13), Intel MacBookPro11,3.
  • Forschungscode. Lizenz: GPL-2.0 (dieser Wrapper) + Broadcoms Lizenz (der Blob).
Tool herunterladen
  • Iteriere luftgestützt mit einem Sniffer; Firmware-Fehler sind Kernel-Panics – erfasse dmesg über das Netzwerk (siehe Probleme).
  • Akzeptiere den IGTK in Software; PTK/GTK werden problemlos installiert und Daten fließen.
  • Blob entschlüsselt niemals Management-Frames, daher kommen 802.11w SA-Queries als Chiffretext an. Erfasse den PTK und führe AES-CCM in Software durch (Kernel ccm(aes)), um die Query zu lesen und eine verschlüsselte Antwort zu senden.