SpiderFoot OSINT信息收集实战:15分钟完成首次扫描
【免费下载链接】spiderfootSpiderFoot automates OSINT for threat intelligence and mapping your attack surface.项目地址: https://gitcode.com/GitHub_Trending/sp/spiderfoot
渗透测试或安全评估接到一个域名时,枚举子域、扫端口、查威胁情报,手工跑一圈轻松烧掉一个下午。SpiderFoot 把这条 OSINT 信息收集链路自动化了:目标输入一次,200 多个模块各干各的活,内置的关联引擎还会自动标出"数据库暴露""证书过期"这类发现。本文带你把它跑起来,并拿到第一份可用的侦察报告。
工具定位:SpiderFoot 能替代什么
SpiderFoot 是一个持续维护十余年的开源 OSINT(开源情报)自动化框架,4.0 版本基于 Python 3 开发,MIT 协议。它和你逐个敲 subfinder、nmap、whois 的关键区别在架构上:modules/ 目录下的模块按发布/订阅模型互相喂数据——某个模块解析出一个 IP,所有能消费 IP 的模块自动被唤醒,结果层层滚动,不用你手工接力。
| 维度 | SpiderFoot | 单点工具逐个跑 |
|---|---|---|
| 数据采集 | 200+ 模块发布/订阅互联 | 逐个工具运行,结果互不关联 |
| 结果分析 | 内置关联引擎,30+ 条预定义风险规则 | 原始数据人工比对 |
| 目标类型 | 域名、IP、邮箱、ASN、电话、用户名等十余种 | 每类目标各换一套工具 |
| 产出 | Web 界面 + CLI + CSV/Excel/GEXF 导出 + SQLite | 零散文本输出 |
🚀 环境搭建:5分钟启动 Web 界面
推荐本地运行。先拿代码:
git clone https://gitcode.com/GitHub_Trending/sp/spiderfoot cd spiderfoot两条命令把项目拉到当前目录并进入项目根目录。再装依赖:
pip3 install -r requirements.txt这一条会按 requirements.txt 里锁定的版本装齐所有 Python 库。最后启动:
python3 ./sf.py -l 127.0.0.1:5001sf.py 是程序入口,-l指定 Web 界面监听地址。做完这步你应该在终端看到Starting web server at 127.0.0.1:5001的提示框,浏览器打开 http://127.0.0.1:5001 出现扫描列表页即成功。想省事也可以直接用仓库里的 Dockerfile 和 docker-compose.yml 容器化部署;偏好稳定版的可以下载 v4.0 打包发行版(README.md 的 INSTALLING 一节有说明)。
两个典型卡点:启动时报SpiderFoot requires Python 3.7 or higher,说明解释器太老,升到 3.7+ 即可;端口被占用就把参数改成-l 127.0.0.1:8000。注意扫描数据库在~/.spiderfoot/spiderfoot.db,不会落在安装目录里。
🎯 跑通第一次扫描:从 New Scan 到实时跟踪
打开 Web 界面,三步完成:
- 点击New Scan,目标框里填域名、IP、邮箱甚至电话号码,类型会自动识别。
- 选择模块范围。新手保持默认即可,也可以按用例(all / footprint / investigate / passive)快速圈定模块组。
- 点击 Run Scan 后扫描进入队列,详情页右上角状态徽章会从 RUNNING 走到 FINISHED。
不想开浏览器时命令行等价命令是:
python3 ./sf.py -s example.com -o json-s指定目标,-o json让结果以 JSON 输出、方便喂给其他工具;不带任何模块参数时默认启用全部模块。扫描进行中看 Summary:数据元素总数、错误数,以及按 High/Medium/Low/Info 分档的关联结果计数。Browse 标签页按数据元素类型分层列出结果,每一行都带着来源元素和来源模块,链路可回溯。
解读扫描结果:从原始数据到高危告警
一次全量扫描的数据量不小,真正值得优先看的是 Correlations 标签页。关联引擎拿 correlations/ 里的 YAML 规则对结果做分析,命中即是一条结构化发现,例如:
- multiple_malicious.yaml:主机或 IP 被多个威胁情报源同时判定为恶意,风险 HIGH,误报率很低。
- database_exposed.yaml:MySQL(3306)、PostgreSQL(5432)、Redis(6379) 等数据库端口直接暴露公网,风险 HIGH。
- cert_expired.yaml:目标的 SSL 证书已过期,通常意味着运维失修。
点开一条发现能看到支撑它的底层数据元素,判定误报就勾 False Positive 标记,后续视图会自动过滤。页面顶部搜索框支持把正则包在/里(如/foo/)或*string*通配,配合按类型下钻能快速缩小范围。
导出可用报告:CSV、Excel 与关系图谱
扫描结束后的三条导出路径:
- 结果页 Export 下拉,把当前视图下载为CSV 或 Excel,归档或交接直接用。
- Graph 按钮打开实体关系图,可整体导出为GEXF格式,丢进任意图谱工具看关联结构。
- 命令行加
-o json拿全量结构化数据,直接进脚本做二次加工。
还有一个交互式客户端 sfcli.py:运行后进入sf>提示符,建扫描、搜数据、看关联都不用离开终端,适合塞进自动化流程。
进阶:自己写关联规则、调用外部工具
三个值得动手的深度玩法。
场景:团队想把"端口 banner 泄露版本号"记为 INFO 级发现。做法:correlations/template.yaml 就是规则模板,一条规则只有七块:id/version、meta(名称、描述、风险级别)、collections(按 type、module 或正则提取数据)、aggregation(分组)、analysis(阈值、离群值等过滤)、headline(发现文案)。效果:文件存回 correlations/ 重启后新规则参与每次扫描,结果同时出现在 Web 界面并写入tbl_scan_correlation_results表;YAML 有语法错误时启动阶段就会中止并指出位置。
场景:全量模块动静太大,只想做被动指纹。做法:命令行加-u passive按用例自动选模块,-M列出全部可用模块,-T查看全部数据类型。效果:扫描只做被动查询,不向目标发主动请求,速度快且不留痕迹。
场景:想要操作系统指纹和 TLS 漏洞测试也进结果集。做法:modules/ 里有一组 Tool 型模块,能调用本机安装的 Nmap、WhatWeb、Nuclei、testssl.sh、DNSTwist、TruffleHog 等外部工具。效果:外部工具的发现被并入同一结果集,走完全相同的关联规则。
生产级注意事项
⚠️ 只扫你有权扫的目标
端口扫描、DNS 爆破(基于 spiderfoot/dicts/ 里的词表)、TLD 搜索都会向目标发真实请求。对外测试先拿书面授权,内部排查把范围限定在自己的 IP 段和域名;如果要把 Web 界面暴露到团队网络,在~/.spiderfoot/passwd建用户名:密码文件启用认证,再配 key/crt 上 TLS。
API 密钥集中管理,优先免费档
200+ 模块多数不需要密钥,需要密钥的也多提供免费档。密钥在 Web 界面 Options 页集中填写,支持导出/导入;某模块缺密钥时它会被跳过,不影响整个扫描。
并发与超时:先理解默认值
sf.py 的全局配置里,模块并发数默认 3、抓取超时默认 5 秒。调高并发能缩短耗时,但更容易撞上 API 限流和目标侧防护;目标多时保持默认甚至调低更稳。所有扫描与关联结果都在~/.spiderfoot/spiderfoot.db里,可以直接写 SQL 做二次统计。
收尾
SpiderFoot 把子域枚举、端口扫描、威胁情报查询和交叉分析压缩进一次扫描。下一步建议:先给自己域名跑一遍 passive 扫描,通读一遍 Correlations 结果,然后照 correlations/template.yaml 写下你的第一条规则;更多细节参考仓库 docs/ 与 correlations/README.md。
现在就去扫你的第一个目标吧。
【免费下载链接】spiderfootSpiderFoot automates OSINT for threat intelligence and mapping your attack surface.项目地址: https://gitcode.com/GitHub_Trending/sp/spiderfoot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考