Skip to main content

通过原始 802.11 监控查找和跟踪 wifi 设备

项目描述

就像 nmap 用于映射您未连接到的 wifi 网络。通过原始 802.11 监控映射和跟踪 wifi 网络和设备。

PyPI 页面:https ://pypi.python.org/pypi/trackerjacker

安装

pip3 install trackerjacker

支持的平台:Linux(在 Ubuntu、Kali 和 RPi 上测试)和 macOS(pre-alpha)

<图> 视觉描述 <图说明>

视觉描述

</figcaption> </figure>

trackerjacker 可以提供以下帮助:

  • 我想知道附近的所有 wifi 网络,并知道连接到每个网络的所有设备。

  • 我想知道谁占用了所有带宽。

  • 我想在此 MAC 地址在 30 秒窗口内发送超过 100000 个字节时运行命令(可能确定 IP 摄像机何时上传视频,这表明它刚刚看到运动)。

  • 我想取消在 10 秒窗口中使用超过 100000 字节的任何人。

  • 我想关闭该地区的所有 Dropcam,这样我的 Airbnb 房东就不会监视我。

  • 我希望在看到任何 MAC 地址的功率水平高于我以前从未见过的 -40dBm 时收到警报。

  • 我想看看这个特定的人何时在附近(基于他们手机的 MAC)并运行一个命令来提醒我。

  • 每当附近出现新的 Apple 设备时,我想编写自己的插件来运行一些脚本来做一些有趣的事情。

用法

找到这样的详细用法:

trackerjacker -h

trackerjacker有两种主要的使用模式:地图模式和 跟踪模式:

地图模式示例

地图命令:

trackerjacker -i wlan1337 --map

默认情况下,这会输出wifi_map.yaml YAML 文件,该文件是所有附近 WiFi 网络及其所有用户的地图。这是一个示例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 地址,如果任何特定设备超过阈值(以字节为单位),在此处使用-t 4000指定(指定 4000 字节的警报阈值)将触发警报。

trackerjacker --track -m 3c:2e:ff:31:32:59 --t 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

在这个特定的示例中,我正在观看一个安全摄像头以确定它何时上传视频(指示检测到运动),以便我可以打开我的安全系统警报器(这是该项目的最初起源)。

示例:使用 foxhunt 插件的跟踪模式

trackerjacker -i wlan1337 --track --trigger-plugin foxhunt

显示一个像这样的诅咒屏幕:

  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 个字节或更多字节时,它都会运行示例/plugin_example1.py 。

trackerjacker 插件是简单的 python 文件,包含: * 定义__call__(**kwargs)方法的触发器类(例如: 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)或字典(允许指定 名称阈值

    • 名称就是您看到此设备时要打印的标签。

    • “安全摄像头”中的阈值是必须看到多少字节

  • channels_to_monitor - 要监控的 802.11 wifi 频道列表。当 trackerjacker 启动时,会打印您的 wifi 卡支持的频道列表。默认情况下,所有支持的频道都受到监控。

  • channel_switch_scheme -默认值round_robintraffic_basedtraffic_based确定了大部分流量的通道,并在概率上对其进行了更多的监控。

示例:在接口上启用/禁用监控模式

Trackerjacker 带有一些其他与 WiFi 黑客相关的实用功能。其中之一是能够在特定界面上打开监控模式。

启用监控模式:

trackerjacker --monitor-mode-on -i wlan0

禁用监控模式:

trackerjacker --monitor-mode-off -i wlan0mon

请注意,trackerjacker 将在必要时自动启用/禁用监控模式。如果您想在界面上启用监控模式以与其他应用程序一起使用(或者如果您计划启动/退出以测试东西,则可以更快地启动 trackerjacker),此功能非常有用。

示例:设置适配器通道

trackerjacker --set-channel 11 -i wlan0

请注意,trackerjacker 将在正常地图/跟踪操作期间根据需要自动切换通道。如果您想在接口上设置通道以与其他应用程序一起使用,此选项很有用。

路线图

  • [x] 托管在 PyPI 中

  • [x] AP 的无线电信号强度

  • [x] 单个 Mac 的无线电信号强度

  • [x] 通过数据交换构建地图(不包括信标)

  • [x] AP 的数据包计数

  • [x] MAC 的数据包计数

  • [x] 输入每个设备跟踪阈值的更简单方法

  • [x] 插件系统

  • [x] 猎狐模式

  • [x] 按 SSID 跟踪(而不仅仅是 BSSID)

  • [x] 基本 macOS (OS X) 支持(pre-alpha)

  • [ ] macOS 支持:获取正确的信号强度值(将在https://github.com/secdev/scapy/pull/1381中修复

  • [ ] macOS 支持:反向机场二进制确定如何设置真正的监控模式

  • [ ] macOS 支持:多种接口支持(不仅仅是en0

  • [ ] macOS 支持:获取接口支持的频道

  • [ ] 映射特定的 SSID

  • [ ] 性能增强:不为频道切换而掏腰包

  • [ ] “Jack”模式 - deauth 攻击

发布历史 发布通知| RSS订阅