Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
bcm4360-wpa3 — funzionalità wpa3 per il chip wifi in un MacBook Pro del 2014 | Kitploit
Strumenti/GitHubGitHub/unsignedchad/bcm4360-wpa3
Auditing Wi-FiReverse EngineeringSicurezza WirelessSicurezza HardwareAnalisi di BinariAnalisi del Firmware
GitHubunsignedchad/bcm4360-wpa3

bcm4360-wpa3

funzionalità wpa3 per il chip wifi in un MacBook Pro del 2014

Vedi Repository
511 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

WPA3-SAE + 802.11w sul Broadcom BCM4360 (blob wl chiuso)

Apple/Broadcom non ha mai dato al BCM4360 (14e4:43a0) il WPA3. Il suo unico driver Linux è il blob chiuso broadcom-sta (wl); brcmfmac non può pilotarlo. Questo aggiunge WPA3-SAE + 802.11w PMF completo a quel blob chiuso — interamente dal software host, nessuna fonte del firmware.

Testato in onda contro un AP solo WPA3 con MFP richiesto: autenticazione SAE → assoc → 4-way → dati CCMP, stabile e resistente agli attacchi deauth-flood e SA-Query teardown.

Come funziona

Il blob è un .o ELF rilocabile non strippato (non un'immagine firmware finale) — questo è il motivo per cui funziona. Non lo riscriviamo; colleghiamo nuovo C contro di esso e reindirizziamo pochi siti di chiamata:

  • wpa_supplicant esegue SAE + il 4-way (la crittografia del blob è solo SHA-1; SAE necessita SHA-256).
  • Un piccolo collante cfg80211 (wl_cfg80211_hybrid.c, wl_linux.c) fa da ponte per auth/assoc/chiavi.
  • Tre passaggi di build rendono il blob agganciabile:
    1. P1 byte-patch — rimuovi il clamp dell'iovar auth in modo che accetti SAE (alg=3).
    2. objcopy --globalize-symbol — rendi richiamabili ~10 funzioni interne del blob dal nostro C.
    3. wl_reloc.py — riscrivi .rela.text in modo che le chiamate del blob a wlc_recv/wlc_sendauth/wlc_authresp_client finiscano nei nostri hook __wrap_*.

Questo basta per inviare frame SAE in onda, iniettare l'RSN IE di wpa_supplicant nella assoc-req, installare chiavi derivate dallo userspace e aggiungere PMF software (scarta deauth non protetti; SW-CCMP risponde alle SA-Queries).

Reverse engineering

Strumenti: Ghidra (headless), nm, objdump, strings, uno sniffer in modalità monitor (iw + tcpdump).

root@kitploit:~
# 1. Il blob è spedito in broadcom-sta e NON è strippato (~4091 sym) -> Ghidra recupera i nomi.
GHIDRA=/opt/ghidra
$GHIDRA/support/analyzeHeadless ./proj wl -import wlc_hybrid.o_amd64 \
    -analysisTimeoutPerFile 3600          # auto-analizza, poi decompila nella GUI

# 2. Triage di ciò che è PRESENTE prima di scegliere una strategia (crittografia assente deve passare all'host):
nm wlc_hybrid.o_amd64 | grep -iE 'sha256|sae|bip|igtk|mmie'          # -> vuoto qui
nm wlc_hybrid.o_amd64 | grep -iE 'wpa|akm|sup|sendauth|key_insert'

# 3. Verifica ogni offset prima di patcharlo (.text vaddr V == file offset V+0x40 in questo blob):
objdump -d --start-address=0x47d40 --stop-address=0x47d60 wlc_hybrid.o_amd64

Strategia: parti dai punti di ingresso cfg80211 nel collante aperto (wl_cfg80211_connect, wl_set_auth_type) e segui gli iovar (auth, wpa_auth, wsec) dentro il blob. Decompila ciò che raggiungono: il gate AKM (bcmwpa_akm2WPAauth), la FSM join/auth (wlc_join_BSS + l'avanzatore auth→assoc a 0x5b79d), il dispatch RX (wlc_recv), e il percorso PMK/chiave (wlc_sup_set_pmk, wlc_key_insert). Verifica ogni indirizzo con objdump.

Porting su un altro chip

  1. Conferma che il blob sia un .o rilocabile non strippato (file, nm). Un'immagine firmware strippata non funzionerà in questo modo.
  2. In Ghidra trova: il clamp auth-alg, la FSM join→auth→assoc + il suo avanzatore "auth-riuscito", il dispatch RX, e set_pmk/key-insert.
  3. Inserisci i loro indirizzi in build.sh (--add-symbol re_auth_advance=..., la lista globalize) e patches/wl_reloc.py (i target __wrap_*).
  4. Correggi gli offset delle struct in wl_linux.c (wlc+0x6a8 txq, bsscfg+0x320 assoc, scb+0x18 bss) — questi sono layout e differiscono per versione del blob.
  5. Iterazione in onda con uno sniffer; i guasti del firmware sono kernel panic — cattura attraverso la rete (vedi Problemi).

Problemi → soluzioni

  • Kernel si blocca durante SAE, nessun backtrace. Un indirizzo --add-symbol era sbagliato di una cifra esadecimale (0x15b79d vs 0x5b79d), finendo a metà istruzione → call <garbage> → NX fault. L'indizio è l'avviso di build objtool: ... can't find starting instruction; verifica che ogni simbolo sintetico sia un vero inizio di funzione.
  • Impossibile catturare il panic. efi-pstore è rotto su Apple EFI; netconsole non può trasmettere su una scheda USB-ethernet. Streamma dmesg --follow via SSH su una seconda macchina — scarica l'oops prima del riavvio.
  • L'AP rifiuta l'assoc (status 31, policy MFP). Il blob costruisce il proprio PSK/senza MFP RSN IE. Cattura sme->ie di wpa_supplicant in .connect e punta il buffer IE della assoc-req del blob (*(bsscfg+0x320)+0x30) su di esso — soddisfa anche il controllo RSN-IE del 4-way.
  • Installazione chiave fallisce -22 — solo l'IGTK (BIP, idx 4); il motore chiavi HW non ha slot BIP.

Build

Necessita di header del kernel, gcc, binutils, python3. Il blob non è in questo repo (proprietario).

root@kitploit:~
# 1. Ottieni il blob originale da 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   (o scaricalo dalle Release)

Installazione

Test rapido

root@kitploit:~
sudo rmmod b43 brcmfmac bcma ssb wl 2>/dev/null   # libera la scheda
sudo insmod wl-src/wl.ko                          # appare wlan0

NetworkManager guida WPA3-SAE attraverso questo driver — basta usare la GUI wifi: scegli la rete, inserisci la password, fatto. NM la salva e si riconnette automaticamente a ogni avvio. Equivalente da riga di comando:

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 fa SAE + 4-way + DHCP

(Alternativa standalone: sudo ./examples/connect.sh wlan0 examples/wpa3-sae.conf.example.)

Persistente (sopravvive a riavvii + aggiornamenti del kernel)

root@kitploit:~
sudo dkms/install.sh

Registra il driver con DKMS (ricostruzione automatica agli aggiornamenti del kernel), blacklista i driver in-albero conflittuali + lo stock wl, e carica il nostro all'avvio prima di NetworkManager. Poi connettiti dalla GUI wifi. Dettagli e l'unico gotcha di DKMS: dkms/README.md. Per una ricostruzione manuale una tantum invece, esegui ./build.sh → wl-src/wl.ko.

Log di debug

Il driver stampa debug dettagliato di WPA3/PMF di default. Silenzialo a runtime (o permanentemente):

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

Avvertenze

  • AP in modalità mista WPA2/WPA3 (transition-mode) sono inaffidabili — il SAE guidato dall'host non sempre vince la negoziazione. Usa una singola modalità: imposta l'AP solo WPA3 (o solo WPA2), o fissa la sicurezza nella connessione NetworkManager (WPA3 Personal / SAE, o WPA2). Una rete pura WPA3 si connette ogni volta.
  • Il blob (wlc_hybrid.o_amd64) è proprietario Broadcom — ottienilo da broadcom-sta da solo. Il wl.ko nelle Release lo incorpora (stessa situazione di Debian's broadcom-sta-dkms).
  • Gli offset sono specifici di broadcom-sta 6.30.223.271 / BCM4360.
  • Testato su Linux 6.12 (Debian 13), Intel MacBookPro11,3.
  • Codice di ricerca. Licenza: GPL-2.0 (questo wrapper) + licenza Broadcom (il blob).
Scarica lo strumento
dmesg
Accetta l'IGTK in software; PTK/GTK si installano bene e i dati fluiscono.
  • Il blob non decifra mai i frame di management, quindi le SA-Query 802.11w arrivano come ciphertext. Cattura il PTK e fai AES-CCM in software (kernel ccm(aes)) per leggere la query ed emettere una risposta crittata.