
Aircrack-ngのキャプチャを解析してSQLiteデータベースに格納し、ハンドシェイク、MGT ID、APとクライアントとそのプローブ間の興味深い関係、WPS情報、そして見られたすべてのAPの全体像といった有用な情報を抽出するスクリプト。
Aircrack-ng のキャプチャを解析し、SQLite データベースに保存して、有用な情報を抽出するスクリプトです。例えば、ハンドシェイク(22000 hashcat 形式)、エンタープライズ (MGT) の ID と EAP-MD5 チャレンジ/レスポンスペア、各ネットワークの X.509 証明書と RSN/WPA セキュリティ設定、AP がアドバタイズする 802.11r/k/v、マルチ BSSID、チャネルスイッチの機能、AP とクライアント間の興味深い関係、Probe リクエスト、WPS 情報、そして見つかったすべての AP の全体像などを取得します。
Certificate テーブルに保存します。AP テーブルに分解して格納します。hashcat -m 4800) のために EAPMD5 テーブルに保存します。Probe テーブルに保存)。SummaryAP ビュー)を生成します。AP 数とクライアント数、WPA バージョン、PMF の状態、グループごとのすべての製造元を表示し、近隣ネットワークのセキュリティ状況を素早く把握できるようにします(また、混合/ダウングレードされたセキュリティを実行している SSID を特定できます)。AP 行に記録します。mfpc (対応) および mfpr (必須) フラグと、それらから導出される 状態 (、オプションの場合は 、または ) を テーブルに保存します。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 ..
インストール(仮想環境の使用)``` 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
> venvは新しいシェルごとにアクティブ化する必要があります(`source wifi_db_env/bin/activate`)\
> `wifi_db.py`を実行する前に。終了するには`deactivate`を使用してください。
#### Arch
Dependencies:
- 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
> The venv は新しいシェルを開くたびに有効化する必要があります(`source wifi_db_env/bin/activate`)。終了するには `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)、この AP から受信した総パケット数 (packetsTotal) が含まれます。また、管理フレーム保護機能/要求フラグ (mfpc, mfpr) と、ビーコンから解析された RSN/WPA セキュリティ詳細 (1:1 の AP 属性であり、AP 行自体に格納されます) も保持します。これには、ネゴシエートされた wpa_version (WPA2, WPA3, WPA2/WPA3 トランジション, OWE)、認証および鍵管理スイート (akm_suites、例:PSK, SAE, 802.1X)、 と (CCMP-128, GCMP-256, TKIP など)、802.1X AKM が存在する場合に設定される フラグ、管理フレーム保護状態 (:Required, Capable, Disabled)、生の ビットフィールドとその人間が読めるデコード (、例: → ) が含まれます。同様に、Wi-Fi Protected Setup (WPS) 設定 (これも 1:1 の AP 属性) も保持します。アドバタイズされたネットワーク名 ()、WPS バージョン ()、デバイス名 ()、モデル名 ()、型番 ()、設定方法 () とその人間が読めるデコード (、例: → )、キーパッド設定方法 () が含まれます。最後に、ビーコンとプローブ応答から解析された 802.11 管理機能を格納します。802.11r Fast BSS Transition フラグ () とその 、802.11k Radio Resource Measurement フラグ ()、802.11v BSS Transition Management フラグ ()、Multiple BSSID アドバタイズ () とその 、Channel Switch Announcement フラグ () とそのターゲットチャネル ()、そしてネットワーク名がビーコンではなくプローブ応答/(再)アソシエーション要求から回復された場合に設定される です。テーブルは MAC アドレスを主キーとして使用します。
ProbeClients: このビューは、プローブの MAC アドレス、クライアントデバイスの製造元とタイプ、クライアントが送信した総パケット数、プローブの SSID を選択します。Probe テーブルと Client テーブルを MAC アドレスで結合し、結果を SSID で並べ替えます。
ConnectedAP: このビューは、接続されたアクセスポイントの BSSID、アクセスポイントの SSID、接続されたクライアントデバイスの MAC アドレス、クライアントデバイスの製造元を選択します。Connected、AP、Client テーブルをそれぞれ BSSID と MAC アドレスで結合し、結果を BSSID で並べ替えます。
ProbeClientsConnected: このビューは、接続されたアクセスポイントの BSSID と SSID、プローブの MAC アドレス、クライアントデバイスの製造元とタイプ、クライアントが送信した総パケット数、プローブの SSID を選択します。Probe、Client、ConnectedAP テーブルをプローブの MAC アドレスで結合し、プローブしているのと同じ SSID に接続されているプローブを除外するように結果をフィルタリングします。結果はプローブの SSID で並べ替えられます。
HandshakeAP: このビューは、アクセスポイントの BSSID、アクセスポイントの SSID、ハンドシェイクを実行したクライアントデバイスの MAC アドレス、クライアントデバイスの製造元、ハンドシェイクを含むファイル、hashcat 出力を選択します。、、 テーブルをそれぞれ BSSID と MAC アドレスで結合し、結果を BSSID で並べ替えます。
Aircrack-ng
すべてを1つのファイルに (および別々に)
Kismet
Wigle
インストール
フォルダ内のすべてのファイルを解析 -f --folder
拡張エラー、チルダなどを修正 (aircrack-ng 1.6 で修正済み)
bash のマルチファイルをサポート: "capture*-1*"
DB からクライアントまたは AP を削除するスクリプト (mac)。 - (ホワイトリスト)
MAC を DB に追加しないためのホワイトリスト (ファイル whitelist.txt、MAC を追加、DB を作成)
新しい情報がある場合は上書き (古い ESSID=''、新しい ESSID='WIFI')
テーブル Handshakes と PMKID
Hashcat ハッシュ形式 22000
テーブル files、ファイルが存在する場合はスキップ (フルパス)
このプログラムは、以下の一部の継続です: https://github.com/T1GR3S/airo-heat
pmfRequiredCapableDisabledAPft_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 はこの方法で学習された名前を示します)。pairwise_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)、および MAC がローカル管理 (ランダム化/プライベートアドレス) である場合に設定される randomized フラグが含まれます。テーブルは MAC アドレスを主キーとして使用します。
SeenClient: このテーブルは、キャプチャ中に確認されたクライアントに関する情報を格納します。MAC アドレス (mac)、検出時刻 (time)、データキャプチャに使用されたツール (tool)、信号強度 (signal_rssi)、緯度 (lat)、経度 (lon)、高度 (alt) が含まれます。テーブルは MAC アドレスと検出時刻の組み合わせを主キーとして使用し、Client テーブルとの外部キー関係を持ちます。
Connected: このテーブルは、アクセスポイントに接続されているワイヤレスクライアントに関する情報を格納します。アクセスポイントの MAC アドレス (bssid) とクライアントの MAC アドレス (mac) が含まれます。テーブルはアクセスポイントとクライアントの MAC アドレスの組み合わせを主キーとして使用し、AP テーブルと Client テーブルの両方との外部キー関係を持ちます。
SeenAp: このテーブルは、キャプチャ中に確認されたアクセスポイントに関する情報を格納します。MAC アドレス (bssid)、検出時刻 (time)、データキャプチャに使用されたツール (tool)、信号強度 (signal_rssi)、緯度 (lat)、経度 (lon)、高度 (alt)、タイムスタンプ (bsstimestamp) が含まれます。テーブルはアクセスポイントの MAC アドレスと検出時刻の組み合わせを主キーとして使用し、AP テーブルとの外部キー関係を持ちます。
Probe: このテーブルは、クライアントによって送信されたプローブ要求に関する情報を格納します。クライアントの MAC アドレス (mac)、ネットワーク名 (ssid)、プローブ時刻 (time) が含まれます。また、プローブ要求のフィンガープリント (プローブの 1:1 属性であり、Probe 行に格納されます) も保持します。クライアントが要求に含めた情報要素 (タグ) の順序付きリスト (ie_order) とそのハッシュ (fingerprint)、これはデバイスモデル/OS の特徴を示します。さらに、ソースキャプチャ file も含まれます。フィンガープリント列は、.cap ファイルから解析されたプローブ要求に対して入力されます (ssid はブロードキャストプローブ要求の場合は空です)。CSV/netxml から解析されたプローブでは空のままになります。テーブルはクライアントの MAC アドレスとネットワーク名の組み合わせを主キーとして使用し、Client テーブルとの外部キー関係を持ちます。
Handshake: このテーブルは、キャプチャ中に取得されたハンドシェイクに関する情報を格納します。アクセスポイントの MAC アドレス (bssid)、クライアント (mac)、ファイル名 (file)、hashcat 形式 (hashcat) が含まれます。テーブルはアクセスポイントとクライアントの MAC アドレス、およびファイル名の組み合わせを主キーとして使用し、AP テーブルと Client テーブルの両方との外部キー関係を持ちます。
Identity: このテーブルは、ワイヤレス認証で使用される EAP (Extensible Authentication Protocol) の ID とメソッドを表します。bssid と mac フィールドは、それぞれ AP テーブルと Client テーブルを参照する外部キーです。他のフィールドには、認証プロセスで使用される identity と method、および realm (user@realm ID の @ 以降の部分。PEAP/TTLS で見られる匿名の外部 ID に便利) が含まれます。
Certificate: このテーブルは、エンタープライズ (WPA-Enterprise / 802.1X) EAP-TLS/PEAP/TTLS 認証で交換される X.509 証明書を格納します。アクセスポイントから送信されるサーバー証明書と、サプリカントから送信されるクライアント証明書の両方を含みます。すべての行は、bssid フィールド (AP テーブルを参照する外部キー) を介してアクセスポイントに関連付けられ、mac フィールドを介してクライアントに関連付けられます。cert_type フィールドは、その証明書が誰のものかを示します (AP、Client、または EAP の方向が判別できない場合は Unknown)。また、ソースキャプチャ 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 Alternative Names (subject_alt_names)、key_usage、ext_key_usage、Basic Constraints (is_ca、path_length)、self_signed フラグ、Authority と Subject Key Identifiers (authority_key_id、subject_key_id)、CRL と OCSP の URL (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 の組み合わせを主キーとして使用します。
HandshakeAPClientHandshakeAPUnique: このビューは、アクセスポイントの BSSID、アクセスポイントの SSID、ハンドシェイクを実行したクライアントデバイスの MAC アドレス、クライアントデバイスの製造元、ハンドシェイクを含むファイル、hashcat 出力を選択します。Handshake、AP、Client テーブルをそれぞれ BSSID と MAC アドレスで結合し、hashcat によってクラックされなかったハンドシェイクを除外するように結果をフィルタリングします。結果は SSID でグループ化され、BSSID で並べ替えられます。
IdentityAP: このビューは、アクセスポイントの BSSID、アクセスポイントの SSID、ID 要求を実行したクライアントデバイスの MAC アドレス、クライアントデバイスの製造元、ID 文字列、ID 要求に使用されたメソッドを選択します。Identity、AP、Client テーブルをそれぞれ BSSID と MAC アドレスで結合し、結果を BSSID で並べ替えます。
CertificateAP: このビューは、アクセスポイントの BSSID と SSID に加えて、証明書タイプ (cert_type)、サブジェクトと発行者のコモンネーム、完全なサブジェクトと発行者、有効期間、公開鍵アルゴリズムとサイズ、self_signed フラグ、sha256_fingerprint を選択します。Certificate テーブルと AP テーブルを BSSID で結合し、結果を BSSID で並べ替えます。
SecurityAP: このビューは、アクセスポイントの BSSID と SSID に加えて、wpa_version、akm_suites、pairwise_ciphers、group_cipher、enterprise フラグ、管理フレーム保護列 (mfpc、mfpr) を選択します。これらの列を AP テーブルから直接読み取り (セキュリティ詳細がある 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 テーブルから直接読み取り (少なくとも1つの機能をアドバタイズする AP のみ)、結果を BSSID で並べ替えます。
SummaryAP: このビューは、アクセスポイントを SSID と暗号化でグループ化して要約するため、同じ SSID で異なるセキュリティ設定が実行されている場合に別々の行として表示されます (混合またはダウングレードされた設定の特定に便利)。グループごとに、SSID、異なるアクセスポイントの数 (APs count)、暗号化タイプ、WPA バージョン (wpa_version)、管理フレーム保護状態 (pmf)、グループ内で確認されたすべての製造元 (manuf、カンマ区切り)、SSID がクロークされているかどうか、異なる接続クライアントの数 (Clients count) を選択します。暗号化が記録されていない AP を除外し、結果を AP 数の降順で並べ替えます。
HTTP POST パスワードを取得
DNS クエリ