Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Snoopy — Snoopy:分布式跟踪和数据拦截框架 | Kitploit
工具/GitHubGitHub/sensepost/snoopy
OSINT (开源情报)侦察Wi-Fi审计网络映射钓鱼攻击恶意软件分析社会工程学红队
GitHubsensepost/snoopy

Snoopy

Snoopy:分布式跟踪和数据拦截框架

查看仓库
613149913年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

root@kitploit:~
|       ||  |  | ||       ||       ||       ||  | |  |
|  _____||   |_| ||   _   ||   _   ||    _  ||  |_|  |
| |_____ |       ||  | |  ||  | |  ||   |_| ||       |
|_____  ||  _    ||  |_|  ||  |_|  ||    ___||_     _|
 _____| || | |   ||       ||       ||   |      |   |  
|_______||_|  |__||_______||_______||___|      |___|
                                               V0.1  
“艾米,技术本身没有善恶之分,关键在于如何使用它。就像死亡射线一样。”
——法恩斯沃思教授

欢迎使用 Snoopy;一个分布式跟踪与分析框架。Snoopy 仍在开发中,如有建议或更正,请随时提交。本文档概述了基本用法。如需进一步了解背景,请参阅以下内容:

  • Snoopy:一个分布式跟踪与分析框架
  • ZaCon4 - Glenn Wilkinson - 恐怖主义、跟踪、隐私与人类互动
  1. 引言与概述 ============================= Snoopy 由四个组件组成:
  • 客户端软件(又称 Snoopy Drone 软件)
  • 服务器端软件
  • 网页界面
  • Maltego 转换

a. Snoopy 无人机

客户端软件运行在我们称之为“无人机”(Drone)的设备上。无人机可以是任何具有 WiFi 接口(支持注入驱动)和出站互联网连接的 Linux 设备。Snoopy 已在诺基亚 N900 和运行 BackTrack 的笔记本电脑上测试过。无人机执行以下两项操作:

  1. 收集附近无线设备的探测 SSID
  2. 提供恶意接入点供附近无线设备连接

收集到的探测请求(例如,Bob 的 iPhone 搜索 BTHomeHub-4123)会定期上传到 Snoopy 服务器。所有连接到恶意 AP 的设备将通过 Snoopy 服务器访问互联网。

b. 服务器端软件

服务器将所有探测请求存入数据库,并使用 Wigle 确定 GPS 坐标,利用 Google Maps 确定街道地址(以及街景照片)。这意味着,如果你正在探测你的家庭网络,我可能会获得你房子的照片。

每个无人机通过 OpenVPN 连接到服务器,并拥有自己的子网。关联的客户端从无人机获取 IP 地址,并通过它路由流量。这意味着在服务器端,我们可以将客户端 IP 地址(以及 MAC 地址)与互联网活动进行匹配。

在服务器端,会发生以下操作:

  • 互联网流量通过 Squid 透明代理,所有请求记录到 MySQL
  • SSLStrip 尝试重写网页,去除 HTTPS
  • mitmproxy.py 允许向网页中任意注入内容
  • 运行各种脚本提取社交媒体数据(例如,拉取 Facebook 个人资料)

网络拓扑图如下:

root@kitploit:~
     Client1                        Drone1                                  Snoopy Server
    +----------+            +-----------------------+               +-----------------------+
    |    wlan0-|<---WiFi--->|-at0                   |               |                   eth0|<-squid-sslstrip-mitmproxy->Internet
    |          |    |       | 10.2.0.1              |               |            11.22.33.44|    |
    | dhclient |    |       |                       |               |                       |    Traffic inspection
    |          |    |       |                  tap0-|<-openvpn----->|-tap0                  |    Social media analysis
    +----------+    |       |          192.168.42.2 |           +--/| 192.168.42.1          |
    10.2.0.2        |       +-----------------------+           |   +-----------------------+
                    |                                           |
                    |                                           | route 10.2.0.0 via 192.168.42.2
                    |                                           | route 10.3.0.0 via 192.168.42.3
      Client2       |                                           |
    +----------+    |                                           |
    |    wlan0-|<---+                                           |
    |          |                                                |
    | dhclient |                                                |
    |          |                                                |
    +----------+                                                |
    10.2.0.3                                                    |
                                                                |
                                                                |
                                                                |
      Client3                       Drone2                      |      
    +----------+            +-----------------------+           |
    |    wlan0-|<---WiFi--->|-at0                   |           |
    |          |    |       | 10.3.0.1              |           |
    | dhclient |    |       |                       |           |
    |          |    |       |                  tap0-|<-openvpn--+
    +----------+    |       |          192.168.42.3 |       
    10.3.0.2        |       +-----------------------+       
                    |
                    |       
                    |
      Client4       |                                       
    +----------+    |                                       
    |    wlan0-|<---+                                       
    |          |                                            
    | dhclient |                                            
    |          |                                            
    +----------+
    10.3.0.3

c. 网页界面

Walter 为 Snoopy 编写了一个网页界面。可通过 http://your-snoopy-server.com:5000/ 访问。

d. Maltego 转换

提供了几个 Maltego 转换,用于以图形方式探索收集的数据(详情见下文)。

  1. 安装 ================ 服务器安装应该比较简单。仅在 Ubuntu 12.04 LTS 32 位的标准安装上测试过。由于会对多个服务器组件进行修改,强烈建议在全新安装的系统上运行安装脚本,并且不要在该机器上运行其他服务(如有必要)。如有疑问,请查看 install.sh 文件并手动进行修改。否则,直接运行(./install.sh)安装程序。

  2. 使用 ======== 安装完成后,你应该可以直接输入“snoopy”来加载服务器菜单。如果不行(或有疑问),请进入安装阶段创建的用户的家目录。在“snoopy/server/”目录中有一个“snoopy.sh”文件,你可以运行它。以下是菜单:

    root@kitploit:~
     +---------------------------------------------------------------+
     |                    Welcome to Snoopy V0.1                     |
     |                        SERVER SIDE                            |
     |                                                               |
     |              SensePost Information Security                   |
     |         [email protected] / www.sensepost.com            |
     +---------------------------------------------------------------+
     Date: Thu Nov  1 16:37:08 CET 2012
     Snoopy Server Status: Stopped
     Connected Drones: 0
     Wigle User: setYourWigleAccount
    
     Would you like to:
     [1] (Re)Start Snoopy server components
     [2] Stop Snoopy server components
     [3] Manage drone configuration packs
     [4] Configure server options
     [5] Set web traffic injection string
     [6] Observe logs
     [X] Exit
    
     [?] Help
    
  3. 创建无人机包 菜单中的选项 [3] 允许你为无人机设备创建客户端“包”。每个无人机都有自己的 OpenVPN 和 SSH 密钥、DHCP 范围以及路由表。你会获得每个无人机设备的下载 URL。确保服务器和无人机的时间设置正确,否则 VPN 连接将无法建立。

  4. 在无人机上安装和运行 Snoopy 你最多可以拥有 100 架无人机(如需更多,请查看源代码或给我发邮件,实际上没有限制)。安装包括下载上一步中的配置包,并运行相应的设置脚本。对于诺基亚 N900,桌面上会放置一个图标。例如:

    root@kitploit:~
     haxor@drone001# wget http://snoopy-server.com/secretdir/drone001.tar.gz
     haxor@drone001# tar xzvf drone001.tar.gz
     haxor@drone001# cd snoopy && ./setup_n900.sh
    
  5. 查找 SSID 位置 在 www.wigle.net 上创建一个账户,并通过“配置服务器选项”设置你的凭据。

每个 Snoopy 实体可以应用不同的转换。将“Snoopy”实体拖到你的图上即可开始。如果你在实体属性中未指定开始或结束日期,默认会获取最近 5 分钟的结果(此值可在服务器配置菜单中更改)。

Snoopy 机器允许你自动排序转换,并根据需求过滤/删除节点。源代码/注释应充分说明其工作原理。

  1. 法律考虑 ======================= Snoopy 的全部或部分组件可能在你所在地区是非法的。请在使用软件前了解情况。在英国,由于广播性质,探测收集组件是合法的。然而,恶意接入点组件在大多数地区很可能是非法的。SensePost 不对你因使用此工具而惹上麻烦承担任何责任。

  2. 安全考虑 ========================== 每个“无人机包”都包含 OpenVPN 和 SSH 密钥。如果无人机被入侵(例如被盗或其他情况),可能对服务器构成安全风险。强烈建议 Snoopy 服务器专用。在服务器上创建的用户会自动在 *.ssh/authorized_hosts 文件中添加以下内容,以增加一点安全性:

    "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/bin/rsync ${SSH_ORIGINAL_COMMAND#* }""

  3. 未来工作 =============== 还有很多事情要做/添加。此版本更像是一个概念验证。

  • 集成 ToR 支持
  • 添加过滤器以便轻松添加其他流量捕获(例如 mDNS)
  • 集成 aGPS 攻击(因为我们已经控制受害者的 DNS)
  • Evilgrade
  • 蓝牙/GSM 跟踪
  • WiFi 解除认证 / 3G 干扰
  • 带人脸识别的摄像头
  • 窃取 Cookie 的 Firefox 插件加载器
  • 替换数据上传流程(目前所有无人机都使用同一个用户进行 rsync)
  1. 已知问题/错误 ======================
  • 包含特殊字符的 SSID 可能会导致问题
  • 目前所有探测请求都被捕获并存入数据库。数据库增长很快,尤其是在繁忙地区。数据库应该进行规范化,并决定是否保留所有探测记录。
  • 最初使用 Scapy 进行探测嗅探,但后来替换为 tshark 单行命令(因为 Scapy 无法读取 802.11 信号强度参数)。N900 上旧版本 tshark 的一个已知问题是它不支持输出 epoch 时间,只支持本地时间。这会导致时区问题。如果你能为 N900 编译一个新版本的 tshark 那就太好了(这里特别期待 PwnieExpress)。总而言之,目前请确保服务器和无人机都处于同一时区。
  1. 联系方式 ============== 代码由 Glenn 编写(Walter 的网页界面除外)。你可以通过 [email protected] 给他发邮件,或在 Twitter 上关注他:@glennzw。Glenn 不是开发者,对他的糟糕代码表示歉意。他是一个黑客,这个工具让他可以黑掉你。

致谢

感谢以下人员提供的帮助/建议/意见:

  • SensePost 团队(很棒的工作场所)。
  • DocScrutinizer 和其他 #maemo 频道的成员(来自 Freenode),感谢他们对 N900 的帮助。

附录 A1. 攻击场景(不认可或鼓励)

抓捕间谍

问:我们知道一名外国间谍将于 11 月 11 日抵达希思罗机场,但不知道具体时间和航班。情报显示他抵达后将入住希尔顿酒店,并于 14 日从卢顿机场乘飞机离开(同样不知道时间和目的地)。他擅长伪装。我们如何识别他?

答:在希思罗机场、希尔顿酒店和卢顿机场部署 Snoopy 无人机。Maltego 的“CommonLocation”转换将找出在这三个地点同时出现的设备交集。希望只有一个结果——我们的目标人物。 一旦发现,我们可以查看 Google 地图和街景照片,了解间谍去过的地方。如果他的设备被诱骗连接到 Snoopy 恶意接入点(例如通过他的 Facebook、Twitter 或电子邮件),他的身份就可能被揭露。

识别不受欢迎者

让 Snoopy 记录所有连接到某个 WiFi 点并且来自某些特定国家(可能是不受欢迎的国家)的人。

跟踪客户

在你的 10 家百货商店部署 Snoopy。记录人流量、回头客、客户类型。

恶意软件分发

注入恶意代码以接管客户端设备并安装恶意软件。由于路由表的存在,可以直接从服务器向连接的受害者发起利用。

伦敦地铁

TFL 可以在每条伦敦地铁线路上部署一个 Snoopy 无人机。他们可以监控人流量,记录高峰和低谷时段/日期,并相应分配/减少工作人员。

大规模人类跟踪

在伦敦各地部署 500 架 Snoopy 无人机。当人们经过无人机时监控他们的移动。如果持续数周/月,一定会出现有趣的人类移动模式。


附录 A2. 硬件说明

对于基于 Linux 的桌面/笔记本电脑,Alfa AWUS036H 网卡性能一般。更可靠的网卡是 Ubiquity SR-71。欢迎提供关于哪些卡在注入驱动方面工作良好/不工作的反馈。

对于 N900,你会注意到加载注入驱动会严重缩短电池寿命。TecNet 6600mAh 电池组在测试中提供了大约 6-8 小时的使用时间。不过,你需要一个适配器将 N900 连接到任何电池组。减少(或禁用)GPS 轮询频率也有助于延长电池寿命。

关于通过 USB 将 N900 连接到笔记本电脑(用于 SSH)的技巧,请参见此处

我目前正在 RaspberryPi、Alfa R36 迷你 AP 和 SheevaPlug 上进行测试。结果稍后公布。


附录 A3. SNOOPY MALTEGO 脚本

你可以创建自己的 Maltego 转换来探索收集的数据。提供的转换主要用于演示功能。请查看源代码,并阅读:

  • http://www.paterva.com/web6/documentation/developer.php
  • http://www.paterva.com/web6/documentation/developer-tds.php

如有任何疑问,请联系 [email protected](或者询问出色的 Maltego 团队)。


附录 A4. SNOOPY 网页界面脚本

简介

Web UI 代码位于 ~user/snoopy/server/bin/snoopy/src/snoopy/

要求(已安装)

Python 包

  • Beaker
  • cryptacular
  • Flask
  • MySQLdb
  • SQLAlchemy

插件

插件由两部分组成:

  • 后端(数据提供)部分,使用 Python 编写
  • 前端(显示)部分,使用 JavaScript 编写(可选)

后端

插件是一个可调用对象,由 Snoopy 应用程序动态加载。 让我们从一个例子开始:

root@kitploit:~
from snoopy import db, pluginregistry

@pluginregistry.add('client-data', 'ssidlist', 'SSID List', js='/static/js/ssidlist.js')
def ssid_list(mac):
    with db.SessionCtx() as session:
        query = session.query(
            distinct(db.Probe.probe_ssid) # SELECT DISTINCT probe_ssid FROM probes
        ).filter_by(
            device_mac=mac                # WHERE device_mac=$mac
        ).order_by(
            db.Probe.probe_ssid           # ORDER BY probe_ssid
        )
        return query.all()

现在逐行解释...

root@kitploit:~
from snoopy import db, pluginregistry

我们需要 db 来访问 Snoopy 数据库,以及 pluginregistry 来注册我们的插件。

root@kitploit:~
@pluginregistry.add('client-data', 'ssidlist', 'SSID List', js='/static/js/ssidlist.js')

这是我们注册插件的方式(插件可以是任何可调用对象)。第一个参数指定插件所属的组名。我们指定了 client-data,因为该插件接受一个 MAC 地址,并返回要在客户端数据窗口中显示的数据。除了 client-data,还有 session-data 组,该组的插件对邻近会话进行操作。第二个参数是插件名称,仅供内部使用,应为 JSON 友好格式。第三个参数是插件标题,本质上与名称相同,但标题会显示在 GUI 中。更具体地说,这是客户端数据窗口中数据区域的标题。

标题之后的所有关键字参数都保存为选项。虽然插件系统不要求任何选项,但 Snoopy 支持 js 选项。此选项指定插件 JavaScript 组件的 URL(从浏览器端,而不是从 Snoopy/服务器端)。

root@kitploit:~
def ssid_list(mac):

该插件是一个简单的函数。它接受一个 MAC 地址字符串,符合 client-data 插件的定义。可调用对象的名称不会被使用。这个示例插件的主体只是执行一个 SQLAlchemy 查询,该查询基本上执行 SELECT DISTINCT probe_ssid FROM probes WHERE device_mac=$mac,并将结果作为列表返回。插件的返回值通常作为 JSON 响应的一部分添加。因此,结果必须符合 JSON 友好性(正如 Flask 的 jsonify() 函数所支持的)。

就这么简单!

前端

用于客户端数据的前端插件被称为客户端数据处理器。它们通过 Snoopy.registerPlugin(sectionName, dataHandler) 函数注册。sectionName 是数据处理器想要处理的数据分节名称,该名称与生成数据的后端插件名称相同。dataHandler 必须是一个具有以下签名的函数:function($section, clientData) {...}。$section 是一个 jQuery 对象,代表数据处理器可以显示数据或产生影响变化的 div 元素。客户端数据(由后端插件生成)通过 clientData 参数提供。

由于数据处理器的唯一允许输出是对给定 div ($section) 的更改,因此无需返回值。

下载工具
  • 网页界面 你可以通过 http://your-snoopy-server:5000/ 访问网页界面。你可以编写自己的插件来遍历和显示数据。Walter 简化了此过程(请参见本文档附录)。

  • 使用 Maltego 探索数据 在 Snoopy 服务器菜单中,进入“配置服务器选项” > “Maltego”。在这里你将看到用于下载 Snoopy 实体、机器以及转换 URL 的链接。要使用 Maltego 转换,你需要:

    • 将 Snoopy 实体添加到 Maltego
    • 在 http://cetas.paterva.com/TDS/ 上创建一个账户
    • 登录到 cetas.paterva.com/TDS/
    • 在 cetas.paterva.com/TDS/ 上创建一个种子(seed)
    • 将转换 URL 添加到创建的种子中
    • 在 Maltego 中添加种子(管理 > 发现转换(高级))
    • 输入名称“Snoopy”,种子 URL 输入你的种子地址
    • 将 Snoopy 机器添加到机器部分