diff --git a/CHANGELOG.md b/CHANGELOG.md index ff9d53a..f1b0abe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,73 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow SemVer. +## [1.0.0] - 2026-10-24 + +First stable release: real-hardware validation across the whole attack surface, a much more complete cracking pipeline, two new attacks (WPS, Evil Twin), a redesigned report, and several reliability fixes found only by testing against live Wi-Fi networks. + +### Added +- **Cracking:** default dictionary replaced by a 9.7M-password list (rockyou + + Probable-Wordlists, deduplicated, gzip-embedded); hashcat-style **mutation + rules** (uppercase, numeric/symbol suffixes, simple leet); **mask brute + force** (`?d?l?u?s?a` syntax); **`.hc22000` export** (single or batch) to + hand a handshake to hashcat/John. +- **WPS attack:** PIN/Pixie Dust via a bundled `reaver` (extracted at + runtime), or `bully` when installed on the system. +- **Evil Twin:** clones an already-seen AP (open SSID) on a second interface + with a captive portal, for WPA/WPA2-PSK — the submitted password is only + accepted after being verified against the real captured handshake, never + "accepts anything". An **Enterprise (802.1X/EAP)** variant captures + credentials automatically via `hostapd-wpe`, no portal or human action + needed, since the credential travels in the EAP handshake itself. +- **CCMP traffic decryption** for a client once its handshake's password is + known (Temporal Key derived from the cracked PMK). +- **Channel-interference scoring** per band and **security findings** (open + network, missing PMF, WPS exposed, possible evil twin by duplicate SSID). +- **Redesigned audit report:** full-page cover with embedded logo, table of + contents, running header/footer via `@page` margin boxes (current + section, page numbers), KPI and findings cards with severity colors — + still paginated by Paged.js in the browser, printable to PDF. +- `ScanSnapshot.warning`: tells you when a capture has been running for a + while without receiving a single frame — a card that accepts turning + monitor mode on without actually delivering capture (common with + built-in laptop Wi-Fi) now says so, instead of silently "listening". + +### Fixed +- **Handshake capture never completed on real networks:** `eapol.rs` read + `key_info`/`replay_counter`/`key_data_len` as little-endian; those + 802.1X fields are big-endian. Deauth worked, EAPOL frames were seen, but + `HandshakeTracker` silently discarded every one — 0 handshakes no matter + how much traffic was generated. The project's own synthetic test frames + made the same mistake symmetrically, so round-trip tests never caught + it; verified live against a real AP after the fix. +- **Monitor mode fighting NetworkManager:** `set_monitor()` now releases + the interface from NetworkManager before switching modes and returns it + afterward — without this, NM reasserted its own connection within + seconds and capture died with "is in managed mode". +- **Evil Twin left the system half-configured if the process died mid-run** + (Ctrl+C, `kill -9`, power loss): both interfaces stuck `managed=no` + forever, Wi-Fi gone from the system panel. A state file plus a + self-healing pass on every engine start now undoes this automatically; + `sabia ui` also handles SIGINT gracefully. +- **Repeated deauth/disassoc frames were dropped as duplicates** after the + first send — the same Sequence Control was reused on every injection; + now increments per frame. +- **Network list reordered under the cursor** during capture, as signal-based + sorting reacted to every 1-2 dBm fluctuation; order is now stable + (arrival order, signal rounded to 4 dBm buckets). +- **"Force handshake" failed if capture had been stopped:** it now resumes + capture automatically and waits for the target to reappear with a known + channel before starting the job, instead of locking onto whatever + channel the scanner happened to be hopping through. +- **Attacks tab layout left large empty gaps** when two cards of very + different heights shared a grid row; switched to a masonry-style column + layout. + +### Changed +- `crack_reader`/`crack_mask` parallelize across available cores and reuse + the HMAC base per iteration instead of reconstructing it — roughly 640x + faster in release builds versus the original debug/single-thread path. + ## [0.1.0] - 2026-10-23 First release: CLI, desktop app and shared core. diff --git a/CHANGELOG.pt-BR.md b/CHANGELOG.pt-BR.md index fbbd373..a973710 100644 --- a/CHANGELOG.pt-BR.md +++ b/CHANGELOG.pt-BR.md @@ -4,6 +4,79 @@ Formato baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/); versões seguem SemVer. +## [1.0.0] - 2026-10-24 + +Primeira versão estável: validação em hardware real por toda a superfície de ataque, um pipeline de quebra bem mais completo, dois ataques novos (WPS, Evil Twin), relatório redesenhado e várias correções de confiabilidade que só apareceram testando contra redes Wi-Fi de verdade. + +### Adicionado +- **Quebra de senha:** dicionário padrão trocado por uma lista de 9,7 milhões + de senhas (rockyou + Probable-Wordlists, deduplicados, comprimida e + embutida no binário); **regras de mutação** estilo hashcat (maiúscula, + sufixos numéricos/símbolos, leet simples); **força bruta por máscara** + (sintaxe `?d?l?u?s?a`); **exportação `.hc22000`** (individual ou em lote) + para levar o handshake direto ao hashcat/John. +- **Ataque WPS:** PIN/Pixie Dust via `reaver` embutido (extraído em tempo de + execução), ou `bully` quando instalado no sistema. +- **Evil Twin:** clona um AP já visto na sessão (SSID aberto) numa segunda + interface com portal cativo, para WPA/WPA2-PSK — a senha só é aceita + depois de conferida de verdade contra o handshake real já capturado, + nunca "aceita qualquer coisa". Uma variante **Enterprise (802.1X/EAP)** + captura credenciais automaticamente via `hostapd-wpe`, sem portal nem + ação humana, já que a credencial viaja no próprio handshake EAP. +- **Decriptação de tráfego CCMP** de um cliente assim que a senha do + handshake dele é conhecida (Temporal Key derivada da PMK quebrada). +- **Pontuação de interferência de canais** por banda e **achados de + segurança** (rede aberta, PMF ausente, WPS exposto, possível evil twin + por SSID duplicado). +- **Relatório de auditoria redesenhado:** capa em página cheia com o logo + embutido, sumário com âncoras, cabeçalho/rodapé corridos via margin + boxes do `@page` (seção atual, numeração de página), cards de KPI e + achados com cor por severidade — a paginação continua feita pelo + Paged.js no navegador, imprimível em PDF. +- `ScanSnapshot.warning`: avisa quando uma captura está rodando há um + tempo sem receber nenhum quadro — uma placa que aceita ativar modo + monitor sem realmente entregar captura (comum em Wi-Fi interno de + notebook) agora diz isso, em vez de ficar "escutando o ar" caladinha. + +### Corrigido +- **Captura de handshake nunca completava em rede real:** `eapol.rs` lia + `key_info`/`replay_counter`/`key_data_len` como little-endian; esses + campos do 802.1X são big-endian. O deauth funcionava, os quadros EAPOL + eram vistos, mas o `HandshakeTracker` descartava todos silenciosamente — + 0 handshakes não importa quanto tráfego fosse gerado. Os próprios + quadros sintéticos de teste do projeto cometiam o mesmo engano + simetricamente, então os testes de ida e volta nunca pegaram isso; + verificado ao vivo contra um AP real depois da correção. +- **Modo monitor brigando com o NetworkManager:** `set_monitor()` agora + solta a interface do NetworkManager antes de trocar de modo e devolve + depois — sem isso o NM reafirmava a própria conexão em segundos e a + captura caía com "está em modo managed". +- **Evil Twin deixava o sistema pela metade se o processo morresse no + meio** (Ctrl+C, `kill -9`, queda de energia): as duas interfaces ficavam + presas em `managed=no` pra sempre, Wi-Fi sumia do painel do sistema. Um + arquivo de estado mais uma rotina de autocura a cada início do engine + desfazem isso sozinhos agora; o `sabia ui` também trata SIGINT + graciosamente. +- **Quadros repetidos de deauth/disassoc eram descartados como duplicata** + depois do primeiro envio — o mesmo Sequence Control era reusado em toda + injeção; agora incrementa por quadro. +- **Lista de redes reordenava debaixo do cursor** durante a captura, porque + a ordenação por sinal reagia a cada oscilação de 1-2 dBm; a ordem agora + é estável (ordem de chegada, sinal arredondado em buckets de 4 dBm). +- **"Forçar handshake" falhava se a captura tivesse sido parada:** agora + religa a captura sozinho e espera o alvo reaparecer com canal conhecido + antes de disparar o job, em vez de travar no canal em que o scanner por + acaso estava saltando. +- **Grid da aba Ataques deixava buracos vazios grandes** quando dois cards + de alturas muito diferentes caíam na mesma linha; trocado por um layout + de colunas tipo alvenaria. + +### Alterado +- `crack_reader`/`crack_mask` paralelizam entre os núcleos disponíveis e + reaproveitam a base do HMAC por iteração em vez de reconstruí-la — cerca + de 640x mais rápido em build release comparado ao caminho original + debug/single-thread. + ## [0.1.0] - 2026-10-23 Primeira versão: CLI, app desktop e núcleo compartilhado. diff --git a/Cargo.lock b/Cargo.lock index 022e668..be79345 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -440,7 +440,7 @@ dependencies = [ [[package]] name = "sabia-cli" -version = "0.1.0" +version = "1.0.0" dependencies = [ "clap", "ctrlc", @@ -451,7 +451,7 @@ dependencies = [ [[package]] name = "sabia-core" -version = "0.1.0" +version = "1.0.0" dependencies = [ "aes", "flate2", diff --git a/Cargo.toml b/Cargo.toml index 96ea646..26bf21d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["crates/sabia-core", "crates/sabia-cli"] [workspace.package] -version = "0.1.0" +version = "1.0.0" edition = "2021" license = "MIT OR Apache-2.0" repository = "https://github.com/lucasrguerra/sabia" diff --git a/README.md b/README.md index 59a1f2b..f01bfd8 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,14 @@ Sabiá brings together, in a single sweep, what tools like `airodump-ng`, `hcxdumptool`, `aircrack-ng` and `wifite` do separately — in one Rust binary, with no `libpcap` dependency: -- **Network discovery:** hops across the **2.4, 5 and 6 GHz** channels and lists access points and associated clients, with SSID, BSSID, channel, signal and security type. -- **Monitor mode without scripts:** turns the card's monitor mode on and off straight through netlink/`iw`, and shows which channels the radio supports. -- **Handshake capture:** recognizes the **4-way handshake (EAPOL)** and the **PMKID** on the air and keeps only what offline cracking needs. -- **Offline dictionary cracking:** recomputes the PMK with **PBKDF2-HMAC-SHA1** and checks the **MIC** (4-way) or the **PMKID** (`HMAC-SHA1(PMK, "PMK Name" …)`) — for WPA/WPA2-PSK. +- **Network discovery:** hops across the **2.4, 5 and 6 GHz** channels and lists access points and associated clients, with SSID, BSSID, channel, signal, security type, WPS details and vendor. +- **Monitor mode without scripts:** turns the card's monitor mode on and off straight through netlink/`iw`, recovering automatically if NetworkManager tries to reclaim the interface, and shows which channels the radio supports. +- **Handshake capture:** recognizes the **4-way handshake (EAPOL)** and the **PMKID** on the air and keeps only what offline cracking needs; decrypts CCMP traffic for a client once its password is known. +- **Cracking, three ways:** dictionary (9.7M passwords bundled by default, rockyou + Probable-Wordlists), hashcat-style **mutation rules**, and **mask brute force** (`?d?l?u?s?a`) — recomputes the PMK with **PBKDF2-HMAC-SHA1** and checks the **MIC** (4-way) or the **PMKID** — for WPA/WPA2-PSK. Export to **`.hc22000`** to hand the handshake to hashcat/John instead. - **pcap round-trip:** writes captured frames to `.pcap` and **analyzes a `.pcap` offline** (networks, clients and handshakes), interoperable with the other tools. -- **Deauthentication test:** sends _deauth_ to an AP/station to force a reassociation — only with an explicit authorization confirmation (`--yes`). +- **Deauthentication and WPS:** directional/continuous _deauth_, PMF probing, clientless PMKID hunting, and a WPS PIN/Pixie Dust attack (bundled reaver, or bully when installed) — all gated behind an explicit authorization confirmation (`--yes` / checkbox). +- **Evil Twin:** clones an already-seen AP with a captive portal for WPA/WPA2-PSK — the submitted password is only accepted after it's verified against the real captured handshake, never "accepts anything" — plus an Enterprise (802.1X/EAP) variant that captures credentials automatically, no portal needed. +- **Audit report:** a paginated, printable report (cover, table of contents, findings, channel scoring, audit trail) generated locally. - **Audit trail:** every monitor-mode activation and capture session is recorded in a local **hash-chained** trail. - **Diagnostics:** `doctor` checks privileges, tools and interfaces before you start. @@ -75,7 +77,7 @@ Desktop app (Tauri) with an interface sidebar, a capture panel with an animated - **Capture is Linux-only**, with a card that supports **monitor mode** (and injection, for `deauth`). On Windows and macOS Sabiá only does `.pcap` analysis and offline cracking. - **WPA3/SAE** does not fall to handshake dictionaries — cracking covers **WPA/WPA2-PSK** (4-way and PMKID). - **5 and 6 GHz** depend on the card and the regulatory domain; some channels stay passive (no probing). -- **Passwords outside the dictionary don't come back:** cracking is dictionary force only, no rules or masks yet. +- **Evil Twin's self-signed certificate:** the Enterprise variant's TLS certificate isn't trusted by clients that validate the chain (common on updated corporate/MDM devices) — that's the correct defense working, not a bug. - **Windows and macOS:** the code compiles and is tested in CI, but live capture does not run on those platforms. ## Where it's going @@ -84,10 +86,9 @@ Summary of the [ROADMAP](ROADMAP.md): | | | |---|---| -| **Done** | Monitor mode via netlink, 2.4/5/6 GHz scanning, 4-way and PMKID capture, `.pcap` read/write, dictionary cracking (WPA/WPA2-PSK), authorized `deauth`, hash-chained audit trail, `doctor`, CLI + desktop app, one-click update | -| **Next** | Rules and masks in cracking, GPU acceleration, export to the hashcat format (`22000`) | -| **Later** | WPS attack, rogue AP / evil twin for authorized testing, capture on Windows (Npcap) | -| **Long term** | WPA3/SAE downgrade, validation on varied hardware | +| **Done** | Monitor mode via netlink (with NetworkManager recovery), 2.4/5/6 GHz scanning, 4-way and PMKID capture, CCMP decryption, dictionary/rules/mask cracking (WPA/WPA2-PSK), `.hc22000` export, `.pcap` read/write, authorized `deauth`/PMF/PMKID, WPS attack, Evil Twin (PSK + Enterprise), channel scoring and findings, paginated audit report, hash-chained audit trail, `doctor`, CLI + desktop app, one-click update | +| **Next** | GPU acceleration for cracking, capture on Windows (Npcap) | +| **Later** | WPA3/SAE downgrade, validation on varied hardware, signed release binaries | ## Development diff --git a/README.pt-BR.md b/README.pt-BR.md index 8802288..86722f9 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -10,12 +10,14 @@ O Sabiá junta, numa única varredura, o que ferramentas como `airodump-ng`, `hcxdumptool`, `aircrack-ng` e `wifite` fazem separadamente — em um só binário Rust, sem depender de `libpcap`: -- **Descoberta de redes:** percorre os canais de **2.4, 5 e 6 GHz** e lista os pontos de acesso e os clientes associados, com SSID, BSSID, canal, sinal e tipo de segurança. -- **Modo monitor sem scripts:** liga e desliga o modo monitor da placa direto pelo netlink/`iw`, e mostra os canais que o rádio suporta. -- **Captura de handshake:** reconhece o **4-way handshake (EAPOL)** e o **PMKID** no ar e guarda só o que é preciso para a quebra offline. -- **Quebra offline por dicionário:** recalcula a PMK com **PBKDF2-HMAC-SHA1** e confere o **MIC** (4-way) ou o **PMKID** (`HMAC-SHA1(PMK, "PMK Name" …)`) — para WPA/WPA2-PSK. +- **Descoberta de redes:** percorre os canais de **2.4, 5 e 6 GHz** e lista os pontos de acesso e os clientes associados, com SSID, BSSID, canal, sinal, tipo de segurança, detalhes de WPS e fabricante. +- **Modo monitor sem scripts:** liga e desliga o modo monitor da placa direto pelo netlink/`iw`, com recuperação automática se o NetworkManager tentar retomar a interface, e mostra os canais que o rádio suporta. +- **Captura de handshake:** reconhece o **4-way handshake (EAPOL)** e o **PMKID** no ar e guarda só o que é preciso para a quebra offline; decifra tráfego CCMP de um cliente assim que a senha dele é conhecida. +- **Quebra, de três jeitos:** dicionário (9,7 milhões de senhas por padrão, rockyou + Probable-Wordlists), **regras de mutação** estilo hashcat e **força bruta por máscara** (`?d?l?u?s?a`) — recalcula a PMK com **PBKDF2-HMAC-SHA1** e confere o **MIC** (4-way) ou o **PMKID** — para WPA/WPA2-PSK. Exporta em **`.hc22000`** para levar o handshake direto ao hashcat/John. - **pcap de ida e volta:** grava os quadros capturados em `.pcap` e **analisa um `.pcap` offline** (redes, clientes e handshakes), compatível com as outras ferramentas. -- **Teste de desautenticação:** envia _deauth_ a um AP/estação para forçar uma reassociação — só com a confirmação explícita de autorização (`--yes`). +- **Desautenticação e WPS:** _deauth_ direcional/contínuo, teste de PMF, caça de PMKID sem cliente, e ataque WPS PIN/Pixie Dust (reaver embutido, ou bully quando instalado) — tudo atrás de confirmação explícita de autorização (`--yes`/checkbox). +- **Evil Twin:** clona um AP já visto com portal cativo para WPA/WPA2-PSK — a senha só é aceita depois de conferida contra o handshake real já capturado, nunca "aceita qualquer coisa" — mais uma variante Enterprise (802.1X/EAP) que captura credenciais automaticamente, sem portal. +- **Relatório de auditoria:** relatório paginado e imprimível (capa, sumário, achados, pontuação de canais, trilha de auditoria) gerado localmente. - **Trilha de auditoria:** toda ativação de modo monitor e sessão de captura fica registrada numa trilha local **encadeada por hash**. - **Diagnóstico:** o `doctor` confere privilégios, ferramentas e interfaces antes de você começar. @@ -75,7 +77,7 @@ App desktop (Tauri) com sidebar de interfaces, painel de captura com linha de si - **Captura só no Linux**, com placa que suporte **modo monitor** (e injeção, para `deauth`). Em Windows e macOS o Sabiá faz só análise de `.pcap` e quebra offline. - **WPA3/SAE** não cai por dicionário de handshake — a quebra cobre **WPA/WPA2-PSK** (4-way e PMKID). - **5 e 6 GHz** dependem da placa e do _regulatory domain_; alguns canais ficam passivos (sem _probe_). -- **Senhas fora do dicionário não voltam:** a quebra é só força de dicionário, sem regras nem máscara ainda. +- **Certificado autoassinado do Evil Twin Enterprise:** clientes que validam a cadeia de certificado da rede (comum em perfil corporativo/MDM atualizado) não confiam nele — é a defesa correta funcionando, não um bug. - **Windows e macOS:** o código compila e é testado em CI, mas a captura ao vivo não roda nessas plataformas. ## Para onde vai @@ -84,10 +86,9 @@ Resumo do [ROADMAP](ROADMAP.pt-BR.md): | | | |---|---| -| **Feito** | Modo monitor por netlink, varredura 2.4/5/6 GHz, captura de 4-way e PMKID, escrita e leitura de `.pcap`, quebra por dicionário (WPA/WPA2-PSK), `deauth` autorizado, trilha de auditoria por hash, `doctor`, CLI + app desktop, atualização em um clique | -| **Próximo** | Regras e máscaras na quebra, aceleração por GPU, exportação para o formato do hashcat (`22000`) | -| **Depois** | Ataque a WPS, _rogue AP_/_evil twin_ para teste autorizado, captura em Windows (Npcap) | -| **Longo prazo** | WPA3/SAE _downgrade_, validação em hardware variado | +| **Feito** | Modo monitor por netlink (com recuperação do NetworkManager), varredura 2.4/5/6 GHz, captura de 4-way e PMKID, decriptação CCMP, quebra por dicionário/regras/máscara (WPA/WPA2-PSK), exportação `.hc22000`, escrita e leitura de `.pcap`, `deauth`/PMF/PMKID autorizados, ataque WPS, Evil Twin (PSK + Enterprise), pontuação de canais e achados, relatório de auditoria paginado, trilha de auditoria por hash, `doctor`, CLI + app desktop, atualização em um clique | +| **Próximo** | Aceleração por GPU na quebra, captura em Windows (Npcap) | +| **Depois** | WPA3/SAE _downgrade_, validação em hardware variado, binários de release assinados | ## Desenvolvimento diff --git a/ROADMAP.md b/ROADMAP.md index 2cfd777..d1139c5 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,34 +2,37 @@ **English** · [Português](ROADMAP.pt-BR.md) -Sabiá does Wi-Fi auditing: it discovers networks, captures handshakes (4-way and PMKID), cracks WPA/WPA2-PSK by offline dictionary and tests deauthentication with authorization. Always for authorized use, with a local audit trail. +Sabiá does Wi-Fi auditing: it discovers networks, captures handshakes (4-way and PMKID), cracks WPA/WPA2-PSK by dictionary/rules/mask, assesses WPS, PMF and evil twin exposure, and tests deauthentication and rogue-AP attacks with authorization. Always for authorized use, with a local audit trail. -## Done (0.1.0) +## Done (1.0.0) -- **Monitor mode** and channel control via netlink/`iw`. -- **Scanning** of 2.4, 5 and 6 GHz: APs and clients, with SSID, BSSID, channel, signal and security. +- **Monitor mode** and channel control via netlink/`iw`, with automatic recovery from NetworkManager reclaiming the interface. +- **Scanning** of 2.4, 5 and 6 GHz: APs and clients, with SSID, BSSID, channel, signal, security, WPS details, vendor and PHY standard. - Raw 802.11 capture via **AF_PACKET** (no libpcap), **radiotap** and management-frame parsing. -- Capture of the **4-way handshake (EAPOL)** and the **PMKID**. -- **Offline dictionary cracking** (PBKDF2-HMAC-SHA1, MIC and PMKID) for WPA/WPA2-PSK. +- Capture of the **4-way handshake (EAPOL)** and the **PMKID**; **CCMP traffic decryption** once the password is known. +- **Offline cracking** (PBKDF2-HMAC-SHA1, MIC and PMKID) for WPA/WPA2-PSK: a 9.7M-password dictionary (rockyou + Probable-Wordlists) by default, hashcat-style **mutation rules** and **mask brute force**. +- **`.hc22000` export** to take the handshake straight to hashcat/John. - **`.pcap`** read and write; offline `.pcap` analysis. -- Authorized **`deauth`** (`--yes` flag). +- Authorized **`deauth`** (`--yes` flag), directional and continuous jobs, PMF probing, clientless PMKID hunting. +- **WPS attack** (PIN/Pixie Dust) via a bundled reaver, or bully when installed. +- **Evil Twin** with captive portal for WPA/WPA2-PSK (password only accepted after cryptographic verification against the real handshake) and a credential-capture variant for WPA2/WPA3-Enterprise (802.1X/EAP). +- Channel-interference scoring and security findings (open network, no PMF, WPS exposed, possible evil twin). +- Redesigned, paginated **audit report** (cover, table of contents, running header/footer) that prints to PDF from the browser. - Local hash-chained **audit trail**; `doctor` diagnostics. - **CLI** + **desktop app** (Tauri) + local UI server; **one-click update**. ## Next -- **Rules and masks** in cracking (hashcat style), beyond the plain dictionary. -- **`22000` export** to take the handshake straight to hashcat/John. - **GPU** acceleration for PMK derivation. - -## Later - -- **WPS attack** (PIN/Pixie Dust) in authorized testing. -- **Rogue AP / evil twin** for client assessment, with authorization. - **Capture on Windows** via Npcap. -## Long term +## Later - **WPA3/SAE**: detection and downgrade paths where applicable. - Validation on **varied hardware** (chipsets and regulatory domains). - Signing of release binaries (SmartScreen/Gatekeeper). + +## Long term + +- GPU-accelerated cracking backend (hashcat integration beyond export). +- Packaged distribution (`apt`/`brew`/winget). diff --git a/ROADMAP.pt-BR.md b/ROADMAP.pt-BR.md index d83f28e..a458796 100644 --- a/ROADMAP.pt-BR.md +++ b/ROADMAP.pt-BR.md @@ -2,34 +2,37 @@ [English](ROADMAP.md) · **Português** -O Sabiá faz auditoria de Wi-Fi: descobre redes, captura handshakes (4-way e PMKID), quebra WPA/WPA2-PSK por dicionário offline e testa desautenticação com autorização. Sempre de uso autorizado, com trilha de auditoria local. +O Sabiá faz auditoria de Wi-Fi: descobre redes, captura handshakes (4-way e PMKID), quebra WPA/WPA2-PSK por dicionário/regras/máscara, avalia exposição a WPS, PMF e evil twin, e testa desautenticação e ataques de rogue AP com autorização. Sempre de uso autorizado, com trilha de auditoria local. -## Feito (0.1.0) +## Feito (1.0.0) -- Controle de **modo monitor** e de canal por netlink/`iw`. -- **Varredura** de 2.4, 5 e 6 GHz: APs e clientes, com SSID, BSSID, canal, sinal e segurança. +- Controle de **modo monitor** e de canal por netlink/`iw`, com recuperação automática quando o NetworkManager tenta retomar a interface. +- **Varredura** de 2.4, 5 e 6 GHz: APs e clientes, com SSID, BSSID, canal, sinal, segurança, detalhes de WPS, fabricante e padrão PHY. - Captura crua de 802.11 por **AF_PACKET** (sem libpcap), parsing de **radiotap** e de quadros de gerenciamento. -- Captura de **4-way handshake (EAPOL)** e de **PMKID**. -- **Quebra offline** por dicionário (PBKDF2-HMAC-SHA1, MIC e PMKID) para WPA/WPA2-PSK. +- Captura de **4-way handshake (EAPOL)** e de **PMKID**; **decriptação de tráfego CCMP** quando a senha é conhecida. +- **Quebra offline** (PBKDF2-HMAC-SHA1, MIC e PMKID) para WPA/WPA2-PSK: dicionário padrão de 9,7 milhões de senhas (rockyou + Probable-Wordlists), **regras de mutação** estilo hashcat e **força bruta por máscara**. +- **Exportação `.hc22000`** para levar o handshake direto ao hashcat/John. - Escrita e leitura de **`.pcap`**; análise de `.pcap` offline. -- **`deauth`** autorizado (flag `--yes`). +- **`deauth`** autorizado (flag `--yes`), jobs direcionais e contínuos, teste de PMF, caça de PMKID sem cliente. +- **Ataque WPS** (PIN/Pixie Dust) via reaver embutido, ou bully quando instalado. +- **Evil Twin** com portal cativo para WPA/WPA2-PSK (senha só aceita após verificação criptográfica contra o handshake real) e variante de captura automática de credencial para WPA2/WPA3-Enterprise (802.1X/EAP). +- Pontuação de interferência de canais e achados de segurança (rede aberta, sem PMF, WPS exposto, possível evil twin). +- **Relatório de auditoria** redesenhado e paginado (capa, sumário, cabeçalho/rodapé corridos) que imprime em PDF pelo navegador. - **Trilha de auditoria** local encadeada por hash; `doctor` de diagnóstico. - **CLI** + **app desktop** (Tauri) + servidor local da UI; **atualização em um clique**. ## Próximo -- **Regras e máscaras** na quebra (estilo hashcat), além do dicionário puro. -- **Exportação `22000`** para levar o handshake direto ao hashcat/John. - Aceleração por **GPU** na derivação da PMK. - -## Depois - -- **Ataque a WPS** (PIN/Pixie Dust) em teste autorizado. -- **Rogue AP / evil twin** para avaliação de clientes, com autorização. - **Captura em Windows** via Npcap. -## Longo prazo +## Depois - **WPA3/SAE**: detecção e caminhos de _downgrade_ onde aplicável. - Validação em **hardware variado** (chipsets e _regulatory domains_). - Assinatura dos binários de release (SmartScreen/Gatekeeper). + +## Longo prazo + +- Backend de quebra acelerado por GPU (integração com hashcat além da exportação). +- Distribuição empacotada (`apt`/`brew`/winget). diff --git a/apps/gui/src-tauri/Cargo.lock b/apps/gui/src-tauri/Cargo.lock index fcc016e..cfa1b22 100644 --- a/apps/gui/src-tauri/Cargo.lock +++ b/apps/gui/src-tauri/Cargo.lock @@ -2538,7 +2538,7 @@ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "sabia-core" -version = "0.1.0" +version = "1.0.0" dependencies = [ "aes", "flate2", @@ -2555,7 +2555,7 @@ dependencies = [ [[package]] name = "sabia-gui" -version = "0.1.0" +version = "1.0.0" dependencies = [ "libc", "sabia-core", diff --git a/apps/gui/src-tauri/Cargo.toml b/apps/gui/src-tauri/Cargo.toml index 34ada48..882ccf4 100644 --- a/apps/gui/src-tauri/Cargo.toml +++ b/apps/gui/src-tauri/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "sabia-gui" description = "Sabiá: interface gráfica de auditoria de Wi-Fi" -version = "0.1.0" +version = "1.0.0" edition = "2021" license = "MIT OR Apache-2.0" repository = "https://github.com/lucasrguerra/sabia" diff --git a/apps/gui/src-tauri/tauri.conf.json b/apps/gui/src-tauri/tauri.conf.json index 80cbfdb..0686c66 100644 --- a/apps/gui/src-tauri/tauri.conf.json +++ b/apps/gui/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Sabia", - "version": "0.1.0", + "version": "1.0.0", "identifier": "dev.sabia.app", "build": { "frontendDist": "../ui" diff --git a/docs/cli.md b/docs/cli.md index fe2e637..a5f0fea 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -39,10 +39,10 @@ sabia analyze [--json] ## `crack` — dictionary cracking ```bash -sabia crack --wordlist [--bssid ] [--station ] [--json] +sabia crack --wordlist [--bssid ] [--station ] [--rules] [--json] ``` -Recomputes the PMK with PBKDF2-HMAC-SHA1 and checks the MIC (4-way) or the PMKID, for WPA/WPA2-PSK. `--bssid`/`--station` filter which handshake to use. +Recomputes the PMK with PBKDF2-HMAC-SHA1 and checks the MIC (4-way) or the PMKID, for WPA/WPA2-PSK. `--bssid`/`--station` filter which handshake to use. `--rules` applies hashcat-style mutations (uppercase, numeric/symbol suffixes, simple leet) to each dictionary word — multiplies the time for real. The desktop app and `sabia ui` additionally offer the bundled 9.7M-password dictionary by default, mask brute force (`?d?l?u?s?a`), and `.hc22000` export. ## `deauth` — authorized deauthentication test diff --git a/docs/interface.md b/docs/interface.md index 3f56ea1..0190edf 100644 --- a/docs/interface.md +++ b/docs/interface.md @@ -9,7 +9,10 @@ The desktop app (Tauri) and the browser version (`sabia ui`) are the same front- - **Interface sidebar:** lists the Wi-Fi interfaces; pick one to work with. The footer has the version and the one-click **update** button. - **Capture panel:** header with the current mode (managed/monitor), an **animated signal line**, and the **enable monitor mode** and **start capture** buttons. - **Authorized-use notice**, always in view: use only on your own networks or with authorization; every monitor activation and capture goes into the local audit trail. -- **Networks seen:** live table with SSID, signal bars, channel and a color-coded security badge (open, WEP, WPA/WPA2, WPA3). +- **Networks seen:** live table with SSID, signal bars, channel and a color-coded security badge (open, WEP, WPA/WPA2, WPA3). Row order is stable (arrival order, signal rounded to 4 dBm buckets) so it doesn't shuffle under the cursor as signal fluctuates. +- **Channels view:** interference/overlap scoring per band with a recommended channel. +- **Network detail → Attacks tab:** directional/continuous deauthentication, PMF probing, clientless PMKID hunting, handshake capture (auto-resumes the capture session if it was stopped), cracking (bundled 9.7M-password dictionary, mutation rules, mask brute force), `.hc22000` export, WPS PIN/Pixie Dust, Evil Twin with captive portal (WPA/WPA2-PSK), and — only shown for 802.1X networks — the Enterprise Evil Twin variant that captures credentials automatically. Every action requires the authorized-use checkbox and is logged to the audit trail. +- **Report:** a paginated, printable audit report (cover, table of contents, findings, channel scoring, networks/clients/handshakes, audit trail) previewed in a dialog and printable to PDF from the browser. ## Privilege diff --git a/docs/pt-BR/cli.md b/docs/pt-BR/cli.md index 09bd945..c15a5ab 100644 --- a/docs/pt-BR/cli.md +++ b/docs/pt-BR/cli.md @@ -39,10 +39,10 @@ sabia analyze [--json] ## `crack` — quebra por dicionário ```bash -sabia crack --wordlist [--bssid ] [--station ] [--json] +sabia crack --wordlist [--bssid ] [--station ] [--rules] [--json] ``` -Recalcula a PMK com PBKDF2-HMAC-SHA1 e confere o MIC (4-way) ou o PMKID, para WPA/WPA2-PSK. `--bssid`/`--station` filtram qual handshake usar. +Recalcula a PMK com PBKDF2-HMAC-SHA1 e confere o MIC (4-way) ou o PMKID, para WPA/WPA2-PSK. `--bssid`/`--station` filtram qual handshake usar. `--rules` aplica mutações estilo hashcat (maiúscula, sufixos numéricos/símbolos, leet simples) a cada palavra do dicionário — multiplica o tempo de verdade. O app desktop e o `sabia ui` oferecem também o dicionário embutido de 9,7 milhões de senhas por padrão, força bruta por máscara (`?d?l?u?s?a`) e exportação em `.hc22000`. ## `deauth` — teste autorizado de desautenticação diff --git a/docs/pt-BR/interface.md b/docs/pt-BR/interface.md index 198b500..9601d5b 100644 --- a/docs/pt-BR/interface.md +++ b/docs/pt-BR/interface.md @@ -9,7 +9,10 @@ O app desktop (Tauri) e a versão no navegador (`sabia ui`) são o mesmo front-e - **Sidebar de interfaces:** lista as interfaces Wi-Fi; selecione uma para trabalhar. No rodapé ficam a versão e o botão de **atualização** em um clique. - **Painel de captura:** cabeçalho com o modo atual (managed/monitor), uma **linha de sinal animada**, e os botões **ativar modo monitor** e **iniciar captura**. - **Aviso de uso autorizado**, sempre à vista: use só em redes próprias ou com autorização; toda ativação de monitor e captura entra na trilha de auditoria local. -- **Redes vistas:** tabela em tempo real com SSID, barras de sinal, canal e um selo de segurança por cor (aberta, WEP, WPA/WPA2, WPA3). +- **Redes vistas:** tabela em tempo real com SSID, barras de sinal, canal e um selo de segurança por cor (aberta, WEP, WPA/WPA2, WPA3). A ordem das linhas é estável (ordem de chegada, sinal arredondado em buckets de 4 dBm) — não fica trocando de posição debaixo do cursor conforme o sinal oscila. +- **Visão de canais:** pontuação de interferência/sobreposição por banda, com canal recomendado. +- **Detalhe da rede → aba Ataques:** desautenticação direcional/contínua, teste de PMF, caça de PMKID sem cliente, captura de handshake (religa a captura sozinha se ela tiver sido parada), quebra de senha (dicionário embutido de 9,7 milhões de senhas, regras de mutação, força bruta por máscara), exportação `.hc22000`, WPS PIN/Pixie Dust, Evil Twin com portal cativo (WPA/WPA2-PSK) e — só exibido para redes 802.1X — a variante Enterprise do Evil Twin, que captura credenciais automaticamente. Toda ação exige o checkbox de autorização e fica registrada na trilha de auditoria. +- **Relatório:** relatório de auditoria paginado e imprimível (capa, sumário, achados, pontuação de canais, redes/clientes/handshakes, trilha de auditoria), pré-visualizado num diálogo e imprimível em PDF pelo navegador. ## Privilégio