Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
bcm4360-wpa3 — funcionalidade WPA3 para o chip Wi-Fi em um MacBook Pro de 2014 | Kitploit
Ferramentas/GitHubGitHub/unsignedchad/bcm4360-wpa3
Auditoria de Wi-FiEngenharia ReversaSegurança Sem FioSegurança de HardwareAnálise de BináriosAnálise de Firmware
GitHubunsignedchad/bcm4360-wpa3

bcm4360-wpa3

funcionalidade WPA3 para o chip Wi-Fi em um MacBook Pro de 2014

Ver Repositório
51há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

WPA3-SAE + 802.11w no Broadcom BCM4360 (blob wl fechado)

Apple/Broadcom nunca deu WPA3 ao BCM4360 (14e4:43a0). Seu único driver Linux é o blob fechado broadcom-sta (wl); o brcmfmac não consegue conduzi-lo. Isto adiciona WPA3-SAE + PMF 802.11w completo a esse blob fechado — inteiramente a partir do software do host, sem fonte de firmware.

Comprovado no ar contra um AP apenas WPA3, com MFP obrigatório: autenticação SAE → assoc → 4-way → dados CCMP, estável, e resistente a ataques de deauth-flood e derrubada SA-Query.

Como funciona

O blob é um arquivo .o ELF realocável não removido (não uma imagem de firmware final) — essa é a razão principal para isso funcionar. Nós não reescrevemos; linkamos novo C contra ele e redirecionamos alguns pontos de chamada:

  • O wpa_supplicant executa SAE + o 4-way (a criptografia do blob é apenas SHA-1; SAE precisa de SHA-256).
  • Uma pequena cola cfg80211 (wl_cfg80211_hybrid.c, wl_linux.c) faz a ponte entre auth/assoc/chaves.
  • Três etapas de compilação tornam o blob enganchável:
    1. P1 byte-patch — desbloqueia o iovar auth para aceitar SAE (alg=3).
    2. objcopy --globalize-symbol — torna ~10 funções internas do blob chamáveis a partir do nosso C.
    3. wl_reloc.py — reescreve .rela.text para que as chamadas do blob a wlc_recv/wlc_sendauth/wlc_authresp_client caiam em nossos ganchos __wrap_*.

Isso é suficiente para enviar quadros SAE pelo ar, injetar o IE RSN do wpa_supplicant no assoc-req, instalar chaves derivadas do espaço do usuário e adicionar PMF via software (descartar deauth não protegido; SW-CCMP responder a SA-Queries).

Engenharia reversa

Ferramentas: Ghidra (headless), nm, objdump, strings, um sniffer em modo monitor (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

Estratégia: comece nos pontos de entrada cfg80211 na cola aberta (wl_cfg80211_connect, wl_set_auth_type) e siga os iovars (auth, wpa_auth, wsec) para dentro do blob. Descompile o que eles alcançam: o portão AKM (bcmwpa_akm2WPAauth), a FSM join/auth (wlc_join_BSS + o avançador auth→assoc em 0x5b79d), o despacho RX (wlc_recv) e o caminho PMK/chave (wlc_sup_set_pmk, wlc_key_insert). Verifique cada endereço com objdump.

Portar para outro chip

  1. Confirme que o blob é um .o ELF realocável não removido (file, nm). Uma imagem de firmware removida não funcionará dessa forma.
  2. No Ghidra encontre: o bloqueio do algoritmo auth, a FSM join→auth→assoc + seu avançador "auth-succeeded", o despacho RX e set_pmk/inserção de chave.
  3. Coloque os endereços deles em build.sh (--add-symbol re_auth_advance=..., a lista de globalize) e patches/wl_reloc.py (os alvos __wrap_*).
  4. Corrija os offsets de struct em wl_linux.c (wlc+0x6a8 txq, bsscfg+0x320 assoc, scb+0x18 bss) — estes são layout e diferem por versão do blob.
  5. Itere no ar com um sniffer; falhas de firmware são panics do kernel — capture pela rede (veja Dificuldades).

Dificuldades → soluções

  • Kernel trava durante SAE, sem backtrace. Um endereço --add-symbol estava com um dígito hex errado (0x15b79d vs 0x5b79d), caindo no meio de uma instrução → call <lixo> → falha NX. O sinal é o aviso de build objtool: ... can't find starting instruction; verifique se cada símbolo sintético é um início de função real.
  • Não é possível capturar o panic. efi-pstore está quebrado no EFI da Apple; netconsole não pode TX por uma placa USB-ethernet. Transmita dmesg --follow via SSH para uma segunda máquina — ele libera o oops antes da reinicialização.
  • AP rejeita assoc (status 31, política MFP). O blob constrói seu próprio IE RSN com PSK/sem MFP. Capture o sme->ie do wpa_supplicant em .connect e aponte o buffer do IE do assoc-req do blob (*(bsscfg+0x320)+0x30) para ele — também satisfaz a verificação de IE RSN do 4-way.
  • Instalação de chave falha com -22 — apenas o IGTK (BIP, idx 4); o motor de chave de hardware não tem slot BIP.

Compilação

Requer cabeçalhos do kernel, gcc, binutils, python3. O blob não está neste repositório (proprietário).

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)

Instalação

Teste rápido

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

O NetworkManager usa WPA3-SAE através deste driver — basta usar a GUI de Wi-Fi: escolha sua rede, digite a senha, pronto. O NM salva e reconecta automaticamente a cada boot. Equivalente em CLI:

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

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

Persistente (sobrevive a reboot + atualizações do kernel)

root@kitploit:~
sudo dkms/install.sh

Registra o driver com DKMS (recompila automaticamente em upgrades de kernel), insere na lista negra os drivers conflitantes presentes no kernel + o wl padrão, e carrega o nosso na inicialização antes do NetworkManager. Em seguida, conecte-se pela GUI de Wi-Fi. Detalhes e a única pegadinha do DKMS: dkms/README.md. Para uma recompilação manual única, execute ./build.sh → wl-src/wl.ko.

Log de depuração

O driver imprime depuração detalhada de WPA3/PMF por padrão. Silencie em tempo de execução (ou permanentemente):

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

Advertências

  • APs em modo misto WPA2/WPA3 (transição) são instáveis — o SAE conduzido pelo host nem sempre vence a negociação. Use um modo único: configure o AP para apenas WPA3 (ou apenas WPA2), ou fixe a segurança na conexão do NetworkManager (WPA3 Pessoal / SAE, ou WPA2). Uma rede puramente WPA3 conecta sempre.
  • O blob (wlc_hybrid.o_amd64) é propriedade da Broadcom — obtenha-o do broadcom-sta você mesmo. O wl.ko nos Releases o incorpora (mesma situação do broadcom-sta-dkms do Debian).
  • Os offsets são específicos para broadcom-sta 6.30.223.271 / BCM4360.
  • Testado no Linux 6.12 (Debian 13), Intel MacBookPro11,3.
  • Código de pesquisa. Licença: GPL-2.0 (este wrapper) + licença da Broadcom (o blob).
Baixar ferramenta
dmesg
Aceite o IGTK em software; PTK/GTK instalam bem e os dados fluem.
  • O blob nunca descriptografa quadros de gerenciamento, então as SA-Queries do 802.11w chegam como texto cifrado. Capture o PTK e faça AES-CCM em software (kernel ccm(aes)) para ler a query e emitir uma resposta criptografada.