
Скрипт для парсинга захватов Aircrack-ng в базу данных SQLite и извлечения полезной информации, такой как handshakes, MGT-идентичности, интересные связи между AP, клиентами и их зондами (Probes), данные WPS, а также общий обзор всех обнаруженных AP.
Скрипт для разбора захватов Aircrack-ng в базу данных SQLite и извлечения полезной информации, такой как рукопожатия (в формате 22000 hashcat), корпоративные (MGT) идентификаторы и пары вызов/ответ EAP-MD5, сертификаты X.509 и конфигурация безопасности RSN/WPA каждой сети, возможности 802.11r/k/v, Multiple BSSID и Channel Switch, объявляемые точками доступа, интересные взаимосвязи между AP, клиентами и их пробами, информация WPS, а также общий обзор всех видимых AP.
Certificate.AP.hashcat -m 4800) в таблицу EAPMD5.Probe).Представление SummaryAP) точек доступа, сгруппированных по ESSID и шифрованию, показывающую количество AP и клиентов, версию WPA и состояние PMF, а также всех производителей в группе, чтобы дать быстрый обзор состояния безопасности близлежащих сетей (и выявить SSID со смешанной/пониженной безопасностью).AP.docker pull r4ulcl/wifi_db
### Ручная установка
#### Системы на базе Debian (Ubuntu, Kali, Parrot и т.д.)
Зависимости:
- 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 ..
\n\nУстановка (с использованием виртуального окружения)\n``` 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
> Виртуальная среда должна быть активирована (`source wifi_db_env/bin/activate`) в каждом новом терминале перед запуском `wifi_db.py`. Используйте `deactivate` для выхода из неё.
#### Arch
Зависимости:
- 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 ..
Установка (с использованием виртуального окружения)``` 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
> Виртуальная среда venv должна быть активирована (`source wifi_db_env/bin/activate`) в каждом новом
> shell перед запуском `wifi_db.py`. Используйте `deactivate` для выхода из неё.
## Использование
### Пример использования в [WiFiChallenge Lab](https://lab.wifichallenge.com/)
- https://r4ulcl.com/posts/wifi_db-in-wifichallenge-lab/
### Сканирование с помощью airodump-ng
Запустите airodump-ng, сохраняя вывод с помощью -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`: Сохранить вывод в файл db.SQLITE в текущей папке
- `-v $CAPTURESFOLDER:/captures/`: Чтобы поделиться папкой с захватами с Docker

### Создание базы данных SQLite с помощью ручной установки
После создания захвата мы можем создать базу данных, импортировав захват. Для этого укажите имя захвата без формата. Не забудьте сначала активировать виртуальную среду (`source wifi_db_env/bin/activate`).``` bash
python3 wifi_db.py scan-01
В случае, если у нас есть несколько захватов, мы можем загрузить папку, в которой они находятся напрямую. А с помощью -d мы можем переименовать выходную базу данных.``` bash python3 wifi_db.py -d database.sqlite scan-folder

### Открытие базы данных
Базу данных можно открыть с помощью:
- [sqlitebrowser](https://sqlitebrowser.org/)

Ниже приведен пример таблицы ProbeClientsConnected.

### Аргументы``` 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 содержит несколько таблиц для хранения информации, связанной с трафиком беспроводных сетей, захваченным airodump-ng. Таблицы следующие:
AP: В этой таблице хранится информация о точках доступа (AP), обнаруженных во время захвата, включая их MAC-адрес (bssid), имя сети (ssid), скрыта ли сеть (cloaked), производитель (manuf), канал (channel), частота (frequency), оператор (carrier), тип шифрования (encryption) и общее количество пакетов, полученных от этой точки доступа (packetsTotal). Также содержатся флаги поддержки/требования защиты управляющих кадров (mfpc, mfpr) и данные безопасности RSN/WPA, извлеченные из beacon-пакетов, которые являются атрибутами точки доступа 1:1 и поэтому хранятся в строке самой AP: negotiated wpa_version (WPA2, WPA3, WPA2/WPA3 transition, OWE), наборы аутентификации и управления ключами (, например, PSK, SAE, 802.1X), парные () и групповой () шифры (CCMP-128, GCMP-256, TKIP и т.д.), флаг (устанавливается при наличии AKM 802.1X), состояние защиты управляющих кадров (: Required, Capable или Disabled), необработанное битовое поле и его человекочитаемая расшифровка (, например, → ). Аналогично хранится конфигурация Wi-Fi Protected Setup (WPS) — еще один атрибут AP 1:1: объявленное имя сети (), версия WPS (), имя устройства (), название модели (), номер модели (), методы конфигурации () вместе с их человекочитаемой расшифровкой (, например, → ) и методы конфигурации с клавиатуры (). Наконец, хранятся возможности управления 802.11, извлеченные из beacon-пакетов и probe-ответов: флаг быстрого перехода BSS 802.11r () и его , флаг измерения радиоресурсов 802.11k (), флаг управления переходом BSS 802.11v (), реклама множественных BSSID () и его , флаг объявления смены канала () и его целевой канал (), а также (устанавливается, если имя сети было восстановлено из probe-ответа / запроса (re)association, а не из beacon-пакета). В таблице MAC-адрес используется в качестве первичного ключа.
ProbeClients: Это представление выбирает MAC-адрес probe, производителя и тип клиентского устройства, общее количество пакетов, переданных клиентом, и SSID probe. Оно объединяет таблицы Probe и Client по MAC-адресу и сортирует результаты по SSID.
ConnectedAP: Это представление выбирает BSSID подключенной точки доступа, SSID точки доступа, MAC-адрес подключенного клиентского устройства и производителя клиентского устройства. Оно объединяет таблицы Connected, AP и Client по BSSID и MAC-адресу соответственно и сортирует результаты по BSSID.
ProbeClientsConnected: Это представление выбирает BSSID и SSID подключенной точки доступа, MAC-адрес probe, производителя и тип клиентского устройства, общее количество пакетов, переданных клиентом, и SSID probe. Оно объединяет таблицы Probe, Client и ConnectedAP по MAC-адресу probe и фильтрует результаты, исключая probe, подключенные к тому же SSID, который они прощупывают. Результаты сортируются по SSID probe.
Aircrack-ng
Всё в одном файле (и по отдельности)
Kismet
Wigle
установка
парсинг всех файлов в папке -f --folder
Исправление расширенных ошибок, тильд и т.д. (исправлено в aircrack-ng 1.6)
Поддержка множественных файлов в bash: "capture*-1*"
Скрипт для удаления клиента или точки доступа из БД (mac). - (Белый список)
Белый список для запрета добавления mac в БД (файл whitelist.txt, добавьте mac, создайте БД)
Перезапись, если появляется новая информация (старый ESSID='', новый ESSID='WIFI')
Таблица рукопожатий и PMKID
Формат хэша Hashcat 22000
Таблица файлов: если файл существует, пропустить (полный путь)
Эта программа является продолжением части: https://github.com/T1GR3S/airo-heat
mfpc (поддерживается) и mfpr (требуется), считываемые побитово из возможностей RSN, а также производное состояние pmf (Required, Capable (необязательно) или Disabled), сохраняемые в таблице AP.ft_80211r с mobility_domain_id), 802.11k Radio Resource Measurement/отчёты о соседях (rrm_80211k) и 802.11v BSS Transition Management (bss_transition_80211v).mbssid с max_bssid_indicator) и отправляют объявления о смене канала (csa с целевым каналом csa_new_channel).ssid_revealed отмечает имена, полученные таким образом).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: В этой таблице хранится информация о беспроводных клиентах, обнаруженных во время захвата, включая их MAC-адрес (mac), имя сети (ssid), производителя (manuf), тип устройства (type), общее количество пакетов, полученных от этого клиента (packetsTotal), и флаг randomized (устанавливается, если MAC адрес локально администрируемый — рандомизированный/частный адрес). В таблице MAC-адрес используется в качестве первичного ключа.
SeenClient: В этой таблице хранится информация о клиентах, наблюдаемых во время захватов, включая их MAC-адрес (mac), время обнаружения (time), инструмент, использованный для захвата данных (tool), уровень сигнала (signal_rssi), широту (lat), долготу (lon), высоту (alt). Таблица использует комбинацию MAC-адреса и времени обнаружения в качестве первичного ключа и имеет внешний ключ к таблице Client.
Connected: В этой таблице хранится информация о беспроводных клиентах, подключенных к точке доступа, включая MAC-адрес точки доступа (bssid) и клиента (mac). Таблица использует комбинацию MAC-адресов точки доступа и клиента в качестве первичного ключа и имеет внешние ключи к таблицам AP и Client.
SeenAp: В этой таблице хранится информация о точках доступа, наблюдаемых во время захватов, включая их MAC-адрес (bssid), время обнаружения (time), инструмент, использованный для захвата данных (tool), уровень сигнала (signal_rssi), широту (lat), долготу (lon), высоту (alt) и временную метку (bsstimestamp). Таблица использует комбинацию MAC-адреса точки доступа и времени обнаружения в качестве первичного ключа и имеет внешний ключ к таблице AP.
Probe: В этой таблице хранится информация о probe-запросах, отправленных клиентами, включая MAC-адрес клиента (mac), имя сети (ssid) и время отправки probe (time). Она также содержит отпечаток probe-запроса (fingerprint), который является атрибутом probe 1:1 и поэтому хранится в строке Probe: упорядоченный список информационных элементов (тегов), включенных клиентом в запрос (ie_order), и его хэш (fingerprint), характерный для модели устройства/ОС, а также исходный захваченный файл (file). Столбцы fingerprint заполняются для probe-запросов, извлеченных из файлов .cap (ssid пуст для широковещательных probe-запросов); probe из CSV/netxml оставляют их пустыми. Таблица использует комбинацию MAC-адреса клиента и имени сети в качестве первичного ключа и имеет внешний ключ к таблице Client.
Handshake: В этой таблице хранится информация о рукопожатиях, захваченных во время захватов, включая MAC-адрес точки доступа (bssid), клиента (mac), имя файла (file) и формат hashcat (hashcat). Таблица использует комбинацию MAC-адресов точки доступа и клиента, а также имени файла в качестве первичного ключа и имеет внешние ключи к таблицам AP и Client.
Identity: Эта таблица представляет идентификаторы и методы EAP (Extensible Authentication Protocol), используемые при беспроводной аутентификации. Поля bssid и mac являются внешними ключами, ссылающимися на таблицы AP и Client соответственно. Другие поля включают identity и method, используемые в процессе аутентификации, а также realm (часть после @ в идентификаторе вида user@realm, полезная для анонимных внешних идентификаторов, используемых в PEAP/TTLS).
Certificate: Эта таблица хранит сертификаты X.509, которыми обмениваются при аутентификации в корпоративных сетях (WPA-Enterprise / 802.1X) по протоколам EAP-TLS/PEAP/TTLS — как сертификат сервера, отправленный точкой доступа, так и сертификат клиента, отправленный суппликантом. Каждая строка связана с точкой доступа через поле bssid (внешний ключ к таблице AP) и с клиентом через поле mac; поле cert_type указывает, чей это сертификат (AP, Client или Unknown, когда направление EAP не может быть определено). Также сохраняется исходный захваченный файл (file). Таблица хранит все соответствующие поля сертификата: положение в цепочке сертификатов (cert_index), version, serial_number, signature_algorithm, полные отличительные имена issuer и subject, даты действия (not_before, not_after), разобранные компоненты subject (subject_cn, subject_o, subject_ou) и issuer (issuer_cn, issuer_o, issuer_ou), public_key_algorithm, public_key_size, public_key_curve (EC) и public_key_exponent (RSA), а также sha1_fingerprint и sha256_fingerprint. Также извлекаются наиболее релевантные расширения X.509: альтернативные имена subject (subject_alt_names), key_usage, ext_key_usage, базовые ограничения (is_ca, path_length), флаг self_signed, идентификаторы ключей authority и subject (authority_key_id, subject_key_id), URL-адреса CRL и OCSP (crl_urls, ocsp_urls), а также время жизни сертификата в днях (validity_days). Таблица использует комбинацию bssid и sha256_fingerprint в качестве первичного ключа.
EAPMD5: Эта таблица хранит пары вызов/ответ EAP-MD5, захваченные из корпоративных аутентификаций. EAP-MD5 передает вызов в стиле CHAP и ответ MD5 в открытом виде (вне какого-либо TLS-туннеля), поэтому пару можно перехватить и взломать офлайн (hashcat -m 4800 или eapmd5pass) для восстановления пароля. Каждая строка записывает внешние ключи bssid (AP) и mac (клиент), identity, идентификатор EAP (eap_id), связывающий запрос и ответ, challenge, response, готовую к использованию строку hashcat и исходный файл (file). Первичный ключ — комбинация bssid, mac и eap_id.
HandshakeAP: Это представление выбирает BSSID точки доступа, SSID точки доступа, MAC-адрес клиентского устройства, выполнившего рукопожатие, производителя клиентского устройства, файл, содержащий рукопожатие, и вывод hashcat. Оно объединяет таблицы Handshake, AP и Client по BSSID и MAC-адресу соответственно и сортирует результаты по BSSID.
HandshakeAPUnique: Это представление выбирает BSSID точки доступа, SSID точки доступа, MAC-адрес клиентского устройства, выполнившего рукопожатие, производителя клиентского устройства, файл, содержащий рукопожатие, и вывод hashcat. Оно объединяет таблицы Handshake, AP и Client по BSSID и MAC-адресу соответственно и фильтрует результаты, исключая рукопожатия, не взломанные с помощью hashcat. Результаты группируются по SSID и сортируются по BSSID.
IdentityAP: Это представление выбирает BSSID точки доступа, SSID точки доступа, MAC-адрес клиентского устройства, выполнившего запрос identity, производителя клиентского устройства, строку identity и метод, использованный для запроса identity. Оно объединяет таблицы Identity, AP и Client по BSSID и MAC-адресу соответственно и сортирует результаты по BSSID.
CertificateAP: Это представление выбирает BSSID и SSID точки доступа вместе с типом сертификата (cert_type), общими именами subject и issuer, полными subject и issuer, датами действия, алгоритмом и размером открытого ключа, флагом self_signed и sha256_fingerprint. Оно объединяет таблицы Certificate и AP по BSSID и сортирует результаты по BSSID.
SecurityAP: Это представление выбирает BSSID и SSID точки доступа вместе с wpa_version, akm_suites, pairwise_ciphers, group_cipher, флагом enterprise и столбцами защиты управляющих кадров (mfpc, mfpr). Оно считывает эти столбцы непосредственно из таблицы AP (ограничиваясь точками доступа, у которых есть данные безопасности) и сортирует результаты по BSSID.
CapabilitiesAP: Это представление выбирает BSSID и SSID точки доступа вместе с ее возможностями управления 802.11 (ft_80211r, mobility_domain_id, rrm_80211k, bss_transition_80211v, mbssid, max_bssid_indicator, csa, csa_new_channel). Оно считывает эти столбцы непосредственно из таблицы AP, ограничиваясь точками доступа, рекламирующими хотя бы одну из этих возможностей, и сортирует результаты по BSSID.
SummaryAP: Это представление суммирует точки доступа, сгруппированные по SSID и шифрованию, поэтому один и тот же SSID с разными настройками безопасности отображается в виде отдельных строк (удобно для поиска смешанных или пониженных конфигураций). Для каждой группы оно выбирает SSID, количество различных точек доступа (APs count), тип шифрования, версию WPA (wpa_version) и состояние защиты управляющих кадров (pmf), каждого из производителей, встречающихся в группе (manuf, через запятую), скрыт ли SSID, и количество различных подключенных клиентов (Clients count). Исключаются точки доступа без записанного шифрования, результаты сортируются по убыванию количества точек доступа.
Получение паролей из HTTP POST
DNS-запросы