5分钟搞定OSINT自动化:用Node-RED串联theHarvester打造情报收集流水线

5分钟搞定OSINT自动化:用Node-RED串联theHarvester打造情报收集流水线

【免费下载链接】theHarvester E-mails, subdomains and names Harvester - OSINT 【免费下载链接】theHarvester 项目地址: https://gitcode.com/GitHub_Trending/th/theHarvester

你是否还在为手动运行开源情报(OSINT)工具而烦恼?安全分析师小张最近遇到了这样的困境:每天需要对多个目标域名执行子域名收集、邮箱挖掘和IP定位,重复的CLI命令输入不仅耗时,还容易遗漏关键步骤。现在,有一种更聪明的方式——通过theHarvester的API接口与Node-RED可视化编程工具结合,无需编写大量代码就能搭建自动化工作流。本文将带你从零开始,用5个步骤完成从环境配置到流程部署的全流程,最终实现"一键启动、自动汇总"的情报收集系统。

为什么选择theHarvester+Node-RED组合?

theHarvester作为一款经典的OSINT工具,能够从百度、Shodan、Censys等200+数据源中批量获取子域名、邮箱和IP信息。其最新版本通过FastAPI构建的RESTful接口,将原本只能通过命令行调用的功能转化为可通过HTTP请求触发的服务。而Node-RED作为低代码编程平台,提供了拖拽式的节点编辑器,让你可以像搭积木一样连接各种服务和功能模块。

这两者的结合带来了三大优势:

  • 流程可视化:用流程图直观展示情报收集步骤,替代复杂的Shell脚本
  • 定时自动化:设置周期性任务,自动监控目标变化
  • 多工具联动:将theHarvester的输出无缝传递给Nmap、Whois等工具进行深度分析

theHarvester架构

theHarvester的模块化架构设计,使其具备良好的可扩展性和二次开发能力

准备工作:环境搭建与依赖安装

在开始构建工作流前,需要准备以下环境:

1. 部署theHarvester API服务

首先通过GitCode仓库克隆项目代码:

git clone https://link.gitcode.com/i/d4a44ff5bccab5d06e154646bfd86cf5
cd theHarvester

安装Python依赖:

pip install -r requirements.txt

启动API服务(默认端口8000):

python theHarvester/lib/api/api.py

服务启动后,可通过访问http://localhost:8000/docs查看交互式API文档,确认服务正常运行。

2. 安装Node-RED

在Ubuntu系统中可通过APT直接安装:

sudo apt update && sudo apt install nodejs npm
sudo npm install -g --unsafe-perm node-red

启动Node-RED服务:

node-red

访问http://localhost:1880即可打开Node-RED的Web管理界面。

核心步骤:构建自动化工作流

步骤1:配置API请求节点

在Node-RED编辑器中,从左侧面板拖拽一个"HTTP Request"节点到工作区。双击节点进行配置:

  • 方法:GET
  • URLhttp://localhost:8000/query
  • 参数:点击"添加参数"按钮,依次添加:
    • sourcecrtsh,shodan(指定数据源,多个用逗号分隔)
    • domainexample.com(目标域名)
    • limit1000(结果数量限制)

这些参数对应theHarvester命令行中的-s-d-l选项,但通过API方式可以更灵活地动态调整。

步骤2:解析JSON响应数据

theHarvester API返回的是结构化JSON数据,包含asns、ips、emails等字段。添加一个"JSON"节点连接到HTTP请求节点的输出,它会自动将JSON字符串转换为JavaScript对象,方便后续处理。

为了直观查看数据结构,可以在JSON节点后添加一个"Debug"节点,并勾选"显示完整消息对象"选项。部署流程后,触发请求即可在右侧调试面板看到类似以下的输出:

{
  "asns": ["AS15169"],
  "ips": ["172.217.16.110"],
  "emails": ["contact@example.com"],
  "hosts": ["www.example.com", "mail.example.com"]
}

步骤3:数据过滤与清洗

原始API返回可能包含重复或无效数据。添加一个"Function"节点,使用简单的JavaScript代码进行数据处理:

// 去重并过滤私有IP
msg.payload.ips = [...new Set(msg.payload.ips)]
  .filter(ip => !ip.startsWith('192.168.') && !ip.startsWith('10.'));
  
// 提取二级域名
msg.payload.hosts = msg.payload.hosts
  .map(host => host.split('.').slice(-2).join('.'))
  .filter((v, i, a) => a.indexOf(v) === i);
  
return msg;

这段代码实现了IP地址去重、私有IP过滤和子域名提取三个常用的数据清洗功能。你可以根据实际需求修改过滤规则。

步骤4:结果存储与通知

处理后的数据可以通过多种方式保存:

  • 文件存储:使用"File"节点将结果写入JSON或CSV文件
  • 数据库存储:通过"MySQL"或"MongoDB"节点存入数据库
  • 邮件通知:配置"Email"节点,任务完成后自动发送结果到指定邮箱

推荐组合使用"File"和"Email"节点:当文件保存成功后,发送包含结果摘要和文件路径的通知邮件。

步骤5:设置定时触发器

最后添加一个"Inject"节点作为工作流的触发器。配置定时规则:

  • 重复:每隔24小时
  • ** payload**:{"domain": "example.com"}(动态指定目标域名)

点击"部署"按钮后,工作流将按照设定的时间自动执行。你也可以点击Inject节点的按钮手动触发执行。

高级技巧:优化与扩展

错误处理机制

在HTTP请求节点后添加"Catch"节点,捕获API调用失败的情况。连接到"Function"节点实现重试逻辑:

if (msg.statusCode === 503) {
  // 服务不可用时延迟5分钟重试
  node.send([null, {payload: msg.payload, delay: 300000}]);
} else {
  // 其他错误发送邮件通知
  node.send([{payload: `API调用失败: ${msg.statusCode}`}, null]);
}

多数据源并行处理

通过"Split"和"Join"节点实现多数据源并行查询。例如同时查询crtsh和securitytrails:

Inject -> Split -> [HTTP Request(crtsh), HTTP Request(securitytrails)] -> Join -> JSON -> ...

这种方式可以将原本串行执行的多个查询并行化,大幅缩短整体执行时间。

结果可视化展示

使用Node-RED Dashboard插件创建自定义仪表盘:

  1. 安装插件:npm install node-red-dashboard
  2. 添加"ui_table"节点展示主机列表
  3. 添加"ui_chart"节点统计不同数据源的结果数量
  4. 通过浏览器访问http://localhost:1880/ui查看实时数据面板

部署与维护最佳实践

服务持久化运行

为确保工作流稳定运行,需要将theHarvester API和Node-RED配置为系统服务:

# 配置theHarvester为systemd服务
sudo nano /etc/systemd/system/theharvester-api.service

添加以下内容:

[Unit]
Description=theHarvester API Service
After=network.target

[Service]
User=ubuntu
WorkingDirectory=/data/web/disk1/git_repo/GitHub_Trending/th/theHarvester
ExecStart=/usr/bin/python3 theHarvester/lib/api/api.py
Restart=always

[Install]
WantedBy=multi-user.target

同样的方式配置Node-RED服务,然后启动并设置开机自启:

sudo systemctl start theharvester-api node-red
sudo systemctl enable theharvester-api node-red

API密钥管理

api-keys.yaml文件中配置各数据源的API密钥,避免将密钥硬编码到Node-RED流程中。对于需要频繁更换密钥的场景,可以通过环境变量注入:

export SHODAN_API_KEY="your_key_here"
python theHarvester/lib/api/api.py

总结与下一步行动

通过本文介绍的方法,你已经掌握了如何利用theHarvester的RESTful API和Node-RED构建低代码自动化工作流。这个方案不仅适用于安全情报收集,还可以扩展到漏洞扫描、资产监控等多种场景。

接下来你可以尝试这些进阶方向:

  1. 集成Slack/Teams通知,实现即时告警
  2. 添加Nmap节点对发现的IP进行端口扫描
  3. 使用机器学习节点对收集的域名进行风险评分

现在就打开你的浏览器,访问项目仓库获取最新代码,开始构建属于你的自动化情报平台吧!如果觉得本文对你有帮助,请点赞收藏,并关注获取更多OSINT自动化技巧。

提示:定期查看theHarvester的更新日志,及时了解新添加的数据源和API功能,持续优化你的工作流。

【免费下载链接】theHarvester E-mails, subdomains and names Harvester - OSINT 【免费下载链接】theHarvester 项目地址: https://gitcode.com/GitHub_Trending/th/theHarvester

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值