你突然接到一个任务:摸清公司所有域名到底对外暴露了什么。
正常做法是什么?查 WHOIS、翻证书透明日志、搜子域名、看威胁情报、查有没有被拖库……十几个网站来回切,复制粘贴,记在 Excel 里。查完子域名发现新 IP,再去查这个 IP 的端口,又发现新服务,再回来查服务版本。两天过去,你得到一份 20 行的表格,还不知道自己漏了什么。
这不是懒。OSINT 侦察本来就是这么琐碎:目标是相互关联的,而工具是孤立的。你缺的不是某一个查询工具,而是一个能把查询结果自动变成下一次查询输入的东西。
SpiderFoot 就是干这个的。我拿自己的域名跑了一趟,下面说的都是这一趟里看到的东西。

它和“查一次”的工具差在哪
用过 theHarvester、Amass 的人熟悉这种感觉:跑完一次,拿到一批子域名或邮箱,然后呢?下一步还是你自己来。它们是“查询器”,跑完就结束。
SpiderFoot 的模块之间是发布订阅关系:一个模块的产出,就是另一个模块的输入。丢进去一个域名,WHOIS 模块查出注册人和邮箱,邮箱模块顺着去搜这个邮箱出现在哪、有没有被拖库;证书透明日志模块翻出几十个子域名,DNS 模块解析出 IP,端口模块去扫这些 IP,再从 banner 里挖出软件版本,版本号又触发漏洞情报查询。
网是越织越大的,不需要手动把结果接起来。

200 多个模块,大部分不要 API key
从 WHOIS、crt.sh、搜索引擎,到 Shodan、HaveIBeenPwned、各威胁情报黑名单,再到云存储桶枚举、暗网搜索,都在模块列表里。需要 key 的那部分,大多也有免费额度。
这套机制还带一个别的工具很少给的选择:被动模式。如果你调查一个目标又不想惊动它——比如蓝队评估时不想打草惊蛇,或者想看看对手查你时能看到什么——可以只用不直接接触目标的模块收集信息。界面里写得很直白:不接触目标或其关联方,尽量多收集。
五分钟跑起来
docker-compose up -d浏览器打开 http://127.0.0.1:5001 就是界面。不用 Docker 也行:
pip3 install -r requirements.txt
python3 ./sf.py -l 127.0.0.1:5001新扫描页面只有一个目标输入框,能自动识别类型:域名、IP、邮箱、手机号、用户名、比特币地址,连 CIDR 网段和人名都支持。
模块选择分三档:想稳就按用途选(Footprint 了解暴露面、Investigate 深挖、Passive 不碰目标);进阶可以按目标数据类型选;再细可以逐个勾。选完点 Run Scan Now。
扫描过程中结果是实时刷新的:一条条“事件”像流水一样涌进来——发现的子域名、邮箱、开放端口、命中记录。点 Graph 会把整个网络画成关联图。我跑自己域名时最意外的一刻,是看见一个早忘了的旧子域名从证书日志里浮上来。它不会替你记得清楚,但它会把该有的都捞回来。
4.0 的关联引擎:从给数据到给结论
SpiderFoot 一直有个坦率承认的弱点:收集能力太强,分析靠人。200 个模块灌进来几千条数据,普通人不知道从哪看起。这个弱点在 4.0 被一个重量级功能补上了——correlation 引擎。
4.0 之前,关联规则是商业版 SpiderFoot HX 的付费功能,4.0 把它开源给了社区。现在每次扫描跑完,引擎会用 37 条预置规则自动找出值得注意的结论,并按风险分级:
- 证书已过期的服务;
- 暴露在公网的云存储桶和数据库;
- 开了端口、版本号也泄露出来,可能没打补丁;
- 同一资产被多个威胁源同时标记恶意;
- 出现和主资产完全不一致的“离群”服务器——影子 IT 的信号;
- 证书透明度里翻出的孤立主机,可能是忘记下线的心跳残留。

你不需要看懂几千条原始数据,先看这一屏风险提示。规则是 YAML 写的,能读配置的人就能自定义,也可以把好规则提交回社区。
这是它和“一次性收集工具”最根本的分野:别人给你数据,它给你结论。
边界:它替你跑腿,不替你思考
它快但不免费。 免费模块很多,但商业 API(Dehashed、Shodan 高配额这类)要么限额要么花钱。跑一个域名全量扫描可能耗时数小时,请求量一大还会让目标 IP 限流——这也是被动模式存在的理由之一。
默认不设防。 Web 界面默认没有认证,起来后它自己都会警告你加密码。内网自用没问题,别直接暴露到公网。
它老,而且慢下来了。 最新正式版 v4.0 发布于 2022 年 4 月,master 分支最后一笔提交停在 2023 年 11 月。一个从 2012 年做到今天的项目,能落地做的事很多,但别期待它每年翻新——它的价值是稳定把活干完,不是追热点。
工具给结论,不给人背锅。 它说“多源标记恶意”,你得知道这些源的可信度;它说“证书过期”,你得自己判断业务影响。侦查时间从两天压到两小时,但判断永远是人的事。
什么时候选它
做渗透测试的前期侦察、蓝队的攻击面自查,或者单纯想看看公司域名在别人眼里长什么样——选它。它把“到处找工具 + 手工接数据”的两天,变成“丢一个目标 + 喝杯咖啡”的两小时,而且漏掉的东西会比手工少得多。
我跑那一趟的具体配置
第一次跑,建议先用 Passive 模式,只勾不接触目标的模块。这样能快速看到这个域名在公开数据里留下了什么,也不会给对方留下扫描日志。我的习惯是先看结果里的“离群”项:和主资产不在同一个网段、不在同一张证书下、但确实解析到公司域名的主机。这类东西往往是影子 IT 或者遗留系统。
第二次再开 Footprint,加上 DNS 解析和端口扫描。这一步会实际接触目标,所以务必确认授权范围。如果目标有 WAF 或者限流,把并发调低,或者干脆只跑子域名和证书相关的模块。
扫描结束之后不要只看 Graph。Graph 好看,但信息密度低。真正有用的是按类型过滤事件:先看 IP_ADDRESS 和 TCP_PORT_OPEN,再看 VULNERABILITY,最后看 correlation 给出的风险项。这个顺序能把“资产是什么”和“有什么问题”分开,不容易被噪音带偏。
还有一个容易被忽略的模块类别:泄露数据。HaveIBeenPwned、Dehashed 这类模块能查公司邮箱是否出现在历史泄露里。这跟“服务器开了什么端口”是两条完全不同的风险线,但对社工和钓鱼来说,前者往往更致命。
如果只想要一份一次性清单,theHarvester 五分钟就能给你;如果只想要专业资产测绘,商业攻击面平台做得更深。但如果你要的是“侦察这件事本身”,SpiderFoot 是同量级里少有的、把整个流程自动化了十几年的平台。
项目地址:smicallef/spiderfoot
文章评论