
接続していないWi-Fiネットワークのマッピングを行うnmapのようなツールに、デバイス追跡機能を追加したもの
接続していないWi-Fiネットワークをマッピングするためのnmapのようなツールです。生の802.11モニタリングを通じて、Wi-Fiネットワークとデバイスをマッピングおよび追跡します。
PyPIページ: https://pypi.python.org/pypi/trackerjacker
pip3 install trackerjacker
サポートプラットフォーム: Linux(Ubuntu、Kali、RPiでテスト済み)およびmacOS(プレアルファ版)

trackerjackerは以下のような用途に役立ちます:
詳細な使い方は以下のように表示されます:
trackerjacker -h
trackerjackerには2つの主要な使用モードがあります: マップモードとトラックモードです。
マップコマンド:
trackerjacker -i wlan1337 --map
デフォルトでは、これはwifi_map.yamlというYAMLファイルを出力します。このファイルは、近くのすべてのWi-Fiネットワークとそのユーザーのマップです。以下はwifi_map.yamlファイルの例です:
TEST_SSID:
00:10:18:6b:7a:ea:
bssid: 00:10:18:6b:7a:ea
bytes: 5430
channels:
- 11
devices:
3c:07:71:15:f1:48:
bytes: 798
signal: 1
vendor: Sony Corporation
78:31:c1:7f:25:43:
bytes: 4632
signal: -52
vendor: Apple, Inc.
signal: -86
ssid: TEST_SSID
vendor: Broadcom
BRANSONS_WIFI:
90:48:9a:e3:58:25:
bssid: 90:48:9a:e3:58:25
bytes: 5073
channels:
- 1
devices:
01:00:5e:96:e1:89:
bytes: 476
signal: -62
vendor: ''
30:8c:fb:66:23:91:
bytes: 278
signal: -46
vendor: Dropcam
34:23:ba:1c:ba:e7:
bytes: 548
signal: 4
vendor: SAMSUNG ELECTRO-MECHANICS(THAILAND)
signal: -80
ssid: BRANSONS_WIFI
vendor: Hon Hai Precision Ind. Co.,Ltd.
hacker_network:
80:2a:a8:e5:de:92:
bssid: 80:2a:a8:e5:de:92
bytes: 5895
channels:
- 11
devices:
80:1f:02:e6:44:96:
bytes: 960
signal: -46
vendor: Edimax Technology Co. Ltd.
80:2a:a8:8a:ec:c8:
bytes: 472
signal: 4
vendor: Ubiquiti Networks Inc.
80:2a:a8:be:09:a9:
bytes: 5199
signal: 4
vendor: Ubiquiti Networks Inc.
d8:49:2f:7a:f0:8f:
bytes: 548
signal: 4
vendor: CANON INC.
signal: -46
ssid: hacker
vendor: Ubiquiti Networks Inc.
80:2a:a8:61:aa:2f:
bssid: 80:2a:a8:61:aa:2f
bytes: 5629
channels:
- 44
- 48
devices:
78:88:6d:4e:e2:c9:
bytes: 948
signal: -52
vendor: ''
e4:8b:7f:d4:cb:25:
bytes: 986
signal: -48
vendor: Apple, Inc.
signal: -48
ssid: null
vendor: Ubiquiti Networks Inc.
82:2a:a8:51:32:25:
bssid: 82:2a:a8:51:32:25
bytes: 3902
channels:
- 48
devices:
b8:e8:56:f5:a0:70:
bytes: 1188
signal: -34
vendor: Apple, Inc.
signal: -14
ssid: hacker
vendor: ''
82:2a:a8:fc:33:b6:
bssid: 82:2a:a8:fc:33:b6
bytes: 7805
channels:
- 10
- 11
- 12
devices:
78:31:c1:7f:25:43:
bytes: 4632
signal: -52
vendor: Apple, Inc.
7c:dd:90:fe:b4:87:
bytes: 423223
signal: 4
vendor: Shenzhen Ogemray Technology Co., Ltd.
80:2a:a8:be:09:a9:
bytes: 5199
signal: 4
vendor: Ubiquiti Networks Inc.
signal: -62
ssid: null
vendor: ''
これはYAML形式であるため、自分で作成した他のスクリプトの入力として簡単に使用できます。この「YAML DB」を解析するサンプルスクリプトはこちら: parse_trackerjacker_wifi_map.py
トラックモードでは、監視するMACアドレスを指定し、特定のデバイスがしきい値(バイト数)を超えた場合(ここでは--threshold 4000で4000バイトをアラートしきい値として指定)にアラートがトリガーされます。
trackerjacker --track -m 3c:2e:ff:31:32:59 --threshold 4000 --trigger-command "./alert.sh" --channels-to-monitor 10,11,12,44
Using monitor mode interface: wlan1337
Monitoring channels: {10, 11, 12, 44}
[@] Device (3c:2e:ff:31:32:59) threshold hit: 4734
[@] Device (3c:2e:ff:31:32:59) threshold hit: 7717
[@] Device (3c:2e:ff:31:32:59) threshold hit: 7124
[@] Device (3c:2e:ff:31:32:59) threshold hit: 8258
[@] Device (3c:2e:ff:31:32:59) threshold hit: 8922
この例では、監視カメラが動画をアップロードしているタイミング(動体検知を示す)を判定し、セキュリティシステムのサイレンを起動するために使用していました(これがこのプロジェクトの当初の目的です)。
trackerjacker -i wlan1337 --track --trigger-plugin foxhunt
次のようなcurses画面が表示されます:
POWER DEVICE ID VENDOR
======= ================= ================================
-82dBm 1c:1b:68:35:c6:5d ARRIS Group, Inc.
-84dBm fc:3f:db:ed:e9:8e Hewlett Packard
-84dBm dc:0b:34:7a:11:63 LG Electronics (Mobile Communications)
-84dBm 94:62:69:af:c3:64 ARRIS Group, Inc.
-84dBm 90:48:9a:34:15:65 Hon Hai Precision Ind. Co.,Ltd.
-84dBm 64:00:6a:07:48:13 Dell Inc.
-84dBm 00:30:44:38:76:c8 CradlePoint, Inc
-86dBm 44:1c:a8:fc:c0:53 Hon Hai Precision Ind. Co.,Ltd.
-86dBm 18:16:c9:c0:3b:75 Samsung Electronics Co.,Ltd
-86dBm 01:80:c2:62:9e:36
-86dBm 01:00:5e:11:90:47
-86dBm 00:24:a1:97:68:83 ARRIS Group, Inc.
-88dBm f8:2c:18:f8:f3:aa 2Wire Inc
-88dBm 84:a1:d1:a6:34:08
foxhuntは組み込みプラグインですが、同じプラグインAPIを使用して独自のプラグインを定義することもできます。$ trackerjacker --track -m 3c:2e:ff:31:32:59 --threshold 10 --trigger-plugin examples/plugin_example1.py --channels-to-monitor 10,11,12,44 --trigger-cooldown 1
Using monitor mode interface: wlan1337
Monitoring channels: {10, 11, 12, 44}
[@] Device (device 3c:2e:ff:31:32:59) threshold hit: 34 bytes
3c:2e:ff:31:32:59 seen at: [1521926768.756529]
[@] Device (device 3c:2e:ff:31:32:59) threshold hit: 11880 bytes
3c:2e:ff:31:32:59 seen at: [1521926768.756529, 1521926769.758929]
[@] Device (device 3c:2e:ff:31:32:59) threshold hit: 18564 bytes
3c:2e:ff:31:32:59 seen at: [1521926768.756529, 1521926769.758929, 1521926770.7622838]
これは、3c:2e:ff:31:32:59が10バイト以上送受信されるたびにexamples/plugin_example1.pyを実行します。
trackerjackerのプラグインは、以下のいずれかを含む単純なPythonファイルです:
__call__(**kwargs)メソッドを定義するTriggerクラス(例: examples/plugin_example1.py)trigger(**kwargs)関数(例: examples/plugin_example2.py)また、オプションで__apiversion__ = 1行を含めることができます(将来の後方互換性のため)
trackerjacker.py -c my_config.json
以下がmy_config.jsonという設定ファイルの例です:
{
"iface": "wlan1337",
"devices_to_watch": {"5f:cb:53:1c:8a:2c": 1000, "32:44:1b:d7:a1:5b": 2000},
"aps_to_watch": {"c6:23:ef:33:cc:a2": 500},
"threshold_window": 10,
"channels_to_monitor": [1, 6, 11, 52],
"channel_switch_scheme": "round_robin"
}
これに関するいくつかの注意点:
threshold_bytesはデフォルトのバイトしきい値で、これを超えるとアラート関数が呼び出されます。threshold_windowはthreshold_bytesが分析される時間ウィンドウです。devices_to_watchはリストで、文字列(MACアドレス)または辞書(nameとthresholdの指定を許可)を含めることができます。
nameは、このデバイスが検出されたときに表示されるラベルです。thresholdは、監視するバイト数です。channels_to_monitor - 監視する802.11 WiFiチャンネルのリスト。使用可能なチャンネルリストはtrackerjacker起動時に表示されます。デフォルトでは、サポートされているすべてのチャンネルが監視されます。channel_switch_scheme - default、round_robin、またはtraffic_basedのいずれか。は最もトラフィックが多いチャンネルを特定し、確率的にそれらをより多く監視します。TrackerjackerにはWiFiハッキングに関連するいくつかのユーティリティ関数が付属しています。その1つは、特定のインターフェースでモニターモードを有効にする機能です。
モニターモードを有効にする:
trackerjacker --monitor-mode-on -i wlan0
モニターモードを無効にする:
trackerjacker --monitor-mode-off -i wlan0mon
trackerjackerは必要に応じて自動的にモニターモードを有効/無効にすることに注意してください。この機能は、他のアプリケーションで使用するためにインターフェースでモニターモードを有効にしたい場合(または、テストのために起動/終了を繰り返す場合にtrackerjackerの起動を高速化する場合)に便利です。
trackerjacker --set-channel 11 -i wlan0
trackerjackerは通常のマップ/トラック動作中に自動的にチャンネルを切り替えることに注意してください。このオプションは、他のアプリケーションで使用するためにインターフェースのチャンネルを設定したい場合に便利です。
sudo iw reg set US - WiFiアダプターで利用可能なすべてのチャンネルにアクセスできるようにするには、このコマンド(またはそのバリアント)を実行する必要がある場合があります。ifconfig - WiFiアダプター名を表示するため。traffic_based