
Script per analizzare le catture di Aircrack-ng in un database SQLite ed estrarre informazioni utili come handshakes, identità MGT, relazioni interessanti tra AP, client e le loro sonde, informazioni WPS e una visione globale di tutti gli AP visti.
Script per analizzare le catture di Aircrack-ng in un database SQLite ed estrarre informazioni utili come handshake (nel formato hashcat 22000), identità enterprise (MGT) e coppie challenge/response EAP-MD5, i certificati X.509 e la configurazione di sicurezza RSN/WPA di ogni rete, le capacità 802.11r/k/v, Multiple BSSID e Channel Switch pubblicizzate dagli AP, relazioni interessanti tra AP, client e i loro Probe, informazioni WPS, e una visione globale di tutti gli AP visti.
Certificate.AP.hashcat -m 4800) nella tabella EAPMD5.Probe).SummaryAP) degli AP raggruppati per ESSID e crittografia, mostrando il conteggio di AP e client, la versione WPA e lo stato PMF, e ogni produttore per gruppo, per fornire una rapida panoramica dello stato di sicurezza delle reti vicine (e individuare SSID con sicurezza mista/degradata).AP.docker pull r4ulcl/wifi_db
### Installazione manuale
#### Sistemi basati su Debian (Ubuntu, Kali, Parrot, ecc.)
Dipendenze:
- python3
- python3-pip
- tshark
- hcxtools``` bash
sudo apt install tshark
sudo apt install python3 python3-pip
sudo apt install pkg-config libcurl4-openssl-dev libssl-dev zlib1g-dev make gcc
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
Installazione (utilizzando un ambiente virtuale)``` bash
git clone https://github.com/r4ulcl/wifi_db cd wifi_db
sudo apt update ; sudo apt install python3-venv python3 -m venv wifi_db_env source wifi_db_env/bin/activate
pip3 install -r requirements.txt
> Il venv deve essere attivato (`source wifi_db_env/bin/activate`) in ogni nuova shell prima di eseguire `wifi_db.py`. Usa `deactivate` per uscire.
#### Arch
Dipendenze:
- python3
- python3-pip
- tshark
- hcxtools``` bash
sudo pacman -S wireshark-qt
sudo pacman -S python-pip python
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
Installazione (utilizzando un ambiente virtuale)``` bash
git clone https://github.com/r4ulcl/wifi_db cd wifi_db
python3 -m venv wifi_db_env source wifi_db_env/bin/activate
pip3 install -r requirements.txt
> Il venv deve essere attivato (`source wifi_db_env/bin/activate`) in ogni nuova
> shell prima di eseguire `wifi_db.py`. Usa `deactivate` per uscire.
## Utilizzo
### Esempio di utilizzo in [WiFiChallenge Lab](https://lab.wifichallenge.com/)
- https://r4ulcl.com/posts/wifi_db-in-wifichallenge-lab/
### Scansione con airodump-ng
Esegui airodump-ng salvando l'output con -w:``` bash
sudo airodump-ng wlan0mon -w scan --manufacturer --wps --gpsd
#Folder with captures CAPTURESFOLDER=/home/user/wifi
touch db.SQLITE chmod a+rw db.SQLITE
docker run -t -v $PWD/db.SQLITE:/app/db.SQLITE -v $CAPTURESFOLDER:/captures/ r4ulcl/wifi_db
- `-v $PWD/db.SQLITE:/app/db.SQLITE`: Per salvare l'output nel file db.SQLITE nella cartella corrente
- `-v $CAPTURESFOLDER:/captures/`: Per condividere la cartella con le catture con il docker

### Crea il database SQLite usando l'installazione manuale
Una volta creata la cattura, possiamo creare il database importando la cattura. Per fare ciò, inserisci il nome della cattura senza formato. Ricorda di attivare prima l'ambiente virtuale (`source wifi_db_env/bin/activate`).``` bash
python3 wifi_db.py scan-01
Nel caso in cui abbiamo più catture, possiamo caricare la cartella in cui si trovano direttamente. E con -d possiamo rinominare il database di output.``` bash python3 wifi_db.py -d database.sqlite scan-folder

### Aprire il database
Il database può essere aperto con:
- [sqlitebrowser](https://sqlitebrowser.org/)

Di seguito è riportato un esempio di una tabella ProbeClientsConnected.

### Argomenti``` bash
usage: wifi_db.py [-h] [-v] [--debug] [-o] [-t LAT] [-n LON] [--source [{aircrack-ng,kismet,wigle}]] [-d DATABASE] capture [capture ...]
positional arguments:
capture capture folder or file with extensions .csv, .kismet.csv, .kismet.netxml, or .log.csv. If no extension is provided, all types will
be added. This option supports the use of wildcards (*) to select multiple files or folders.
options:
-h, --help show this help message and exit
-v, --verbose increase output verbosity
--debug increase output verbosity to debug
-o, --obfuscated Obfuscate MAC and BSSID with AA:BB:CC:XX:XX:XX-defghi (WARNING: replace all database)
-t LAT, --lat LAT insert a fake lat in the new elements
-n LON, --lon LON insert a fake lon in the new elements
--source [{aircrack-ng,kismet,wigle}]
source from capture data (default: aircrack-ng)
-d DATABASE, --database DATABASE
output database, if exist append to the given database (default name: db.SQLITE)
TODO
TODO
wifi_db contiene diverse tabelle per memorizzare informazioni relative al traffico di rete wireless catturato da airodump-ng. Le tabelle sono le seguenti:
AP: Questa tabella memorizza informazioni sui punti di accesso (AP) rilevati durante le catture, inclusi il loro indirizzo MAC (bssid), il nome della rete (ssid), se la rete è nascosta (cloaked), il produttore (manuf), il canale (channel), la frequenza (frequency), il gestore (carrier), il tipo di crittografia (encryption) e il totale dei pacchetti ricevuti da questo AP (packetsTotal). Contiene anche i flag di capability/requisito di protezione dei frame di management (mfpc, mfpr) e i dettagli di sicurezza RSN/WPA parsati dai beacon, che sono attributi 1:1 dell'AP e quindi risiedono nella riga dell'AP stessa: la versione WPA negoziata (wpa_version - WPA2, WPA3, WPA2/WPA3 transition, OWE), le suite di autenticazione e gestione delle chiavi (, es. PSK, SAE, 802.1X), i cifrari pairwise () e il cifrario di gruppo ( - CCMP-128, GCMP-256, TKIP, ecc.), un flag impostato quando è presente un AKM 802.1X, lo stato di protezione dei frame di management (: Required, Capable o Disabled), il campo di bit grezzo e la sua decodifica leggibile (, es. → ). Allo stesso modo contiene la configurazione di Wi-Fi Protected Setup (WPS), un altro attributo 1:1 dell'AP: il nome di rete pubblicizzato (), la versione WPS (), il nome del dispositivo (), il nome del modello (), il numero del modello (), i metodi di configurazione () insieme alla loro decodifica leggibile (, es. → ), e i metodi di configurazione tramite tastiera (). Infine memorizza le capacità di gestione 802.11 parsate dai beacon e dalle probe response: il flag di Fast BSS Transition 802.11r () e il suo , il flag di Radio Resource Measurement 802.11k (), il flag di BSS Transition Management 802.11v (), l'annuncio di BSSID multipli () e il suo , il flag di Channel Switch Announcement () e il suo canale di destinazione (), e , impostato quando il nome di rete è stato recuperato da una probe response / richiesta di (ri)associazione invece che da un beacon. La tabella utilizza l'indirizzo MAC come chiave primaria.
ProbeClients: Questa vista seleziona l'indirizzo MAC della probe, il produttore e il tipo del dispositivo client, il numero totale di pacchetti trasmessi dal client e l'SSID della probe. Unisce le tabelle Probe e Client sull'indirizzo MAC e ordina i risultati per SSID.
ConnectedAP: Questa vista seleziona il BSSID del punto di accesso connesso, l'SSID del punto di accesso, l'indirizzo MAC del dispositivo client connesso e il produttore del dispositivo client. Unisce le tabelle Connected, AP e Client rispettivamente su BSSID e indirizzo MAC, e ordina i risultati per BSSID.
ProbeClientsConnected: Questa vista seleziona il BSSID e l'SSID del punto di accesso connesso, l'indirizzo MAC della probe, il produttore e il tipo del dispositivo client, il numero totale di pacchetti trasmessi dal client e l'SSID della probe. Unisce le tabelle Probe, Client e ConnectedAP sull'indirizzo MAC della probe e filtra i risultati per escludere le probe che sono connesse allo stesso SSID che stanno sondando. I risultati sono ordinati per SSID della probe.
Aircrack-ng
Tutto in 1 file (e separatamente)
Kismet
Wigle
Installazione
Analizza tutti i file nella cartella -f --folder
Correggi errori estesi, tilde, ecc. (corretto in aircrack-ng 1.6)
Supporto per file multipli bash: "capture*-1*"
Script per eliminare client o AP dal DB (mac). - (Whitelist)
Whitelist per non aggiungere mac al DB (file whitelist.txt, aggiungi mac, crea DB)
Sovrascrivi se ci sono nuove informazioni (vecchio ESSID='', nuovo ESSID='WIFI')
Tabella Handshake e PMKID
Formato hash Hashcat 22000
Tabella file, se il file esiste salta (percorso completo)
Questo programma è la continuazione di una parte di: https://github.com/T1GR3S/airo-heat
mfpc (capable) e mfpr (required) letti bitwise dalle capacità RSN, e lo stato pmf derivato (Required, Capable quando è opzionale, o Disabled), memorizzati nella tabella AP.ft_80211r, con mobility_domain_id), 802.11k Radio Resource Measurement / neighbor reports (rrm_80211k), e 802.11v BSS Transition Management (bss_transition_80211v).mbssid, con max_bssid_indicator) e che inviano Channel Switch Announcements (csa, con il canale target csa_new_channel).ssid_revealed segna i nomi appresi in questo modo).akm_suitespairwise_ciphersgroup_cipherenterprisepmfrsn_capabilitiesrsn_capabilities_text0x00c0MFPR, MFPCwlan_ssidwps_versionwps_device_namewps_model_namewps_model_numberwps_config_methodswps_config_methods_text0x218cLabel, PushButton, Keypad, Virtual Display PINwps_config_methods_keypadft_80211rmobility_domain_idrrm_80211kbss_transition_80211vmbssidmax_bssid_indicatorcsacsa_new_channelssid_revealedClient: Questa tabella memorizza informazioni sui client wireless rilevati durante le catture, inclusi il loro indirizzo MAC (mac), il nome della rete (ssid), il produttore (manuf), il tipo di dispositivo (type), il totale dei pacchetti ricevuti da questo client (packetsTotal) e un flag randomized impostato quando il MAC è amministrato localmente (un indirizzo randomizzato/privato). La tabella utilizza l'indirizzo MAC come chiave primaria.
SeenClient: Questa tabella memorizza informazioni sui client visti durante le catture, inclusi il loro indirizzo MAC (mac), l'ora del rilevamento (time), lo strumento utilizzato per catturare i dati (tool), l'intensità del segnale (signal_rssi), la latitudine (lat), la longitudine (lon), l'altitudine (alt). La tabella utilizza la combinazione di indirizzo MAC e ora del rilevamento come chiave primaria e ha una relazione di chiave esterna con la tabella Client.
Connected: Questa tabella memorizza informazioni sui client wireless connessi a un punto di accesso, inclusi l'indirizzo MAC del punto di accesso (bssid) e del client (mac). La tabella utilizza una combinazione degli indirizzi MAC del punto di accesso e del client come chiave primaria e ha relazioni di chiave esterna sia con la tabella AP che con la tabella Client.
SeenAp: Questa tabella memorizza informazioni sui punti di accesso visti durante le catture, inclusi il loro indirizzo MAC (bssid), l'ora del rilevamento (time), lo strumento utilizzato per catturare i dati (tool), l'intensità del segnale (signal_rssi), la latitudine (lat), la longitudine (lon), l'altitudine (alt) e il timestamp (bsstimestamp). La tabella utilizza la combinazione di indirizzo MAC del punto di accesso e ora del rilevamento come chiave primaria e ha una relazione di chiave esterna con la tabella AP.
Probe: Questa tabella memorizza informazioni sulle probe request inviate dai client, inclusi l'indirizzo MAC del client (mac), il nome della rete (ssid) e l'ora della probe (time). Contiene anche l'impronta digitale della probe request, che è un attributo 1:1 della probe e quindi risiede nella riga Probe: la lista ordinata degli elementi informativi (tag) che il client ha incluso nella richiesta (ie_order) e il suo hash (fingerprint), caratteristico di un modello di dispositivo/SO, più il file di cattura di origine (file). Le colonne dell'impronta vengono popolate per le probe request parsate da file .cap (ssid è vuoto per le probe request broadcast); le probe parsate da CSV/netxml le lasciano vuote. La tabella utilizza una combinazione dell'indirizzo MAC del client e del nome della rete come chiave primaria e ha una relazione di chiave esterna con la tabella Client.
Handshake: Questa tabella memorizza informazioni sugli handshake catturati durante le catture, inclusi l'indirizzo MAC del punto di accesso (bssid), il client (mac), il nome del file (file) e il formato hashcat (hashcat). La tabella utilizza una combinazione degli indirizzi MAC del punto di accesso e del client e del nome del file come chiave primaria e ha relazioni di chiave esterna sia con la tabella AP che con la tabella Client.
Identity: Questa tabella rappresenta le identità e i metodi EAP (Extensible Authentication Protocol) utilizzati nell'autenticazione wireless. I campi bssid e mac sono chiavi esterne che fanno riferimento rispettivamente alle tabelle AP e Client. Altri campi includono identity e method utilizzati nel processo di autenticazione, e realm (la parte dopo @ in un'identità user@realm, utile per le identità anonime esterne viste in PEAP/TTLS).
Certificate: Questa tabella memorizza i certificati X.509 scambiati nelle autenticazioni enterprise (WPA-Enterprise / 802.1X) EAP-TLS/PEAP/TTLS, sia il certificato del server inviato dal punto di accesso sia il certificato del client inviato dal supplicant. Ogni riga è associata al punto di accesso tramite il campo bssid (una chiave esterna che fa riferimento alla tabella AP) e al client tramite il campo mac; il campo cert_type indica di chi è il certificato (AP, Client o Unknown quando la direzione EAP non può essere determinata). Mantiene anche il file di cattura di origine (file). La tabella memorizza tutti i campi rilevanti del certificato: la posizione nella catena di certificazione (cert_index), version, serial_number, signature_algorithm, i nomi distinti completi di issuer e subject, le date di validità (not_before, not_after), i componenti suddivisi del subject (subject_cn, subject_o, subject_ou) e dell'issuer (issuer_cn, issuer_o, issuer_ou), public_key_algorithm, public_key_size, public_key_curve (EC) e public_key_exponent (RSA), e le impronte digitali sha1_fingerprint e sha256_fingerprint. Estrae anche le estensioni X.509 più rilevanti: Subject Alternative Names (subject_alt_names), key_usage, ext_key_usage, Basic Constraints (is_ca, path_length), un flag self_signed, gli Authority e Subject Key Identifiers (authority_key_id, subject_key_id), gli URL CRL e OCSP (crl_urls, ocsp_urls), e la durata del certificato in giorni (validity_days). La tabella utilizza la combinazione di bssid e sha256_fingerprint come chiave primaria.
EAPMD5: Questa tabella memorizza le coppie challenge/response EAP-MD5 catturate dalle autenticazioni enterprise. EAP-MD5 trasmette una challenge in stile CHAP e una risposta MD5 in chiaro (al di fuori di qualsiasi tunnel TLS), quindi la coppia può essere sniffata e decifrata offline (hashcat -m 4800 o eapmd5pass) per recuperare la password. Ogni riga registra le chiavi esterne bssid (AP) e mac (client), identity, l'identificatore EAP (eap_id) che collega la richiesta e la risposta, challenge, response, una riga hashcat pronta all'uso e il file di origine (file). Utilizza la combinazione di bssid, mac e eap_id come chiave primaria.
HandshakeAP: Questa vista seleziona il BSSID del punto di accesso, l'SSID del punto di accesso, l'indirizzo MAC del dispositivo client che ha eseguito l'handshake, il produttore del dispositivo client, il file contenente l'handshake e l'output di hashcat. Unisce le tabelle Handshake, AP e Client rispettivamente su BSSID e indirizzo MAC, e ordina i risultati per BSSID.
HandshakeAPUnique: Questa vista seleziona il BSSID del punto di accesso, l'SSID del punto di accesso, l'indirizzo MAC del dispositivo client che ha eseguito l'handshake, il produttore del dispositivo client, il file contenente l'handshake e l'output di hashcat. Unisce le tabelle Handshake, AP e Client rispettivamente su BSSID e indirizzo MAC, e filtra i risultati per escludere gli handshake non decifrati da hashcat. I risultati sono raggruppati per SSID e ordinati per BSSID.
IdentityAP: Questa vista seleziona il BSSID del punto di accesso, l'SSID del punto di accesso, l'indirizzo MAC del dispositivo client che ha eseguito la richiesta di identità, il produttore del dispositivo client, la stringa di identità e il metodo utilizzato per la richiesta di identità. Unisce le tabelle Identity, AP e Client rispettivamente su BSSID e indirizzo MAC, e ordina i risultati per BSSID.
CertificateAP: Questa vista seleziona il BSSID e l'SSID del punto di accesso insieme al tipo di certificato (cert_type), i nomi comuni del subject e dell'issuer, il subject e l'issuer completi, le date di validità, l'algoritmo e la dimensione della chiave pubblica, il flag self_signed e l'impronta sha256_fingerprint. Unisce le tabelle Certificate e AP su BSSID e ordina i risultati per BSSID.
SecurityAP: Questa vista seleziona il BSSID e l'SSID del punto di accesso insieme a wpa_version, akm_suites, pairwise_ciphers, group_cipher, il flag enterprise e le colonne di protezione dei frame di management (mfpc, mfpr). Legge queste colonne direttamente dalla tabella AP (limitata agli AP che hanno dettagli di sicurezza) e ordina i risultati per BSSID.
CapabilitiesAP: Questa vista seleziona il BSSID e l'SSID del punto di accesso insieme alle sue capacità di gestione 802.11 (ft_80211r, mobility_domain_id, rrm_80211k, bss_transition_80211v, mbssid, max_bssid_indicator, csa, csa_new_channel). Legge queste colonne direttamente dalla tabella AP, limitata agli AP che pubblicizzano almeno una di esse, e ordina i risultati per BSSID.
SummaryAP: Questa vista riassume i punti di accesso raggruppati per SSID e crittografia, quindi lo stesso SSID con impostazioni di sicurezza diverse viene visualizzato come righe separate (utile per individuare configurazioni miste o declassate). Per ogni gruppo seleziona l'SSID, il conteggio dei punti di accesso distinti (APs count), il tipo di crittografia, la versione WPA (wpa_version) e lo stato di protezione dei frame di management (pmf), ogni produttore visto nel gruppo (manuf, separato da virgole), se l'SSID è nascosto e il conteggio dei client connessi distinti (Clients count). Esclude gli AP senza crittografia registrata e ordina i risultati per conteggio AP in ordine decrescente.
Ottieni password HTTP POST
Query DNS