wtfis 被动式主机名域名IP查询工具技术分析
一、概述
1. 项目简介
A. 是什么
wtfis 是一个命令行工具,用于通过多种 OSINT(开源情报)服务收集域名、FQDN 或 IP 地址的相关信息。该工具专为人类用户设计,提供美观易读的输出结果,而非机器可解析的原始数据。
B. 为什么需要
- 传统 whois 工具输出格式不友好,难以阅读
- 安全研究人员需要快速了解目标主机的威胁情报
- 手动查询多个威胁情报平台效率低下
- 需要一个集成化的信息汇总工具
C. 项目背景
- 项目名称源于对 whois 工具的重新诠释
- GitHub Star 数 1.7k,Fork 数 82
- 最新版本 v0.14.0(2025 年 12 月 3 日发布)
- 支持 Python 3.14
- 采用 MIT 开源许可证
二、核心功能
1. 支持的查询类型
- 域名(Domain)
- 完全限定域名(FQDN)
- IP 地址
2. 数据来源
wtfis 整合了多个 OSINT 服务的 API,提供全面的目标情报:
graph TB
Input[用户输入<br/>域名/FQDN/IP] --> wtfis[wtfis 处理核心]
subgraph 必需服务
VT[VirusTotal]
end
subgraph 可选服务
Abuse[AbuseIPDB]
Grey[GreyNoise]
IP2Loc[IP2Location]
IP2Who[IP2Whois]
IPinfo[IPinfo]
IPWho[IPWhois]
Shodan[Shodan]
URLhaus[URLhaus]
end
wtfis --> VT
wtfis --> Abuse
wtfis --> Grey
wtfis --> IP2Loc
wtfis --> IP2Who
wtfis --> IPinfo
wtfis --> IPWho
wtfis --> Shodan
wtfis --> URLhaus
VT --> Output[汇总输出]
Abuse --> Output
Grey --> Output
IP2Loc --> Output
IP2Who --> Output
IPinfo --> Output
IPWho --> Output
Shodan --> Output
URLhaus --> OutputA. VirusTotal(必需)
- 威胁分析统计与厂商详情
- 信誉评分(基于社区投票)
- 流行度排名(Alexa、Cisco Umbrella 等)
- 厂商分类
- 解析记录
- Whois 信息(备用)
B. AbuseIPDB
- 滥用置信度评分(0-100)
- 举报次数
C. GreyNoise
- Noise 状态:是否经常扫描互联网
- RIOT 状态:是否属于常见商业应用
- 分类:良性、恶意、未知
D. IP2Location / IPWhois / IPinfo
- 地理位置信息
- ASN 和组织信息
- 代理检测
- 域名信息
E. IP2Whois
- 域名 Whois 数据
- 注册人信息
F. Shodan
- 开放端口和服务列表
- 操作系统识别
- Shodan 标签
G. URLhaus
- 在线恶意 URL 数量
- DNSBL 和 SURBL 块列表状态
- 历史标签
三、系统架构
1. 工作流程
sequenceDiagram
participant U as 用户
participant W as wtfis
participant VT as VirusTotal
participant OS as 其他OSINT服务
participant D as 数据聚合模块
participant R as 结果渲染模块
U->>W: 输入目标 + 参数
W->>VT: 请求基础情报(必需)
W->>OS: 请求增强情报(可选)
par 并行查询
VT-->>D: 返回分析数据
OS-->>D: 返回增强数据
end
D->>D: 数据整合与去重
D->>R: 格式化数据
R->>U: 渲染面板输出2. 设计原则
- API 调用最小化:避免达到免费层配额限制
- 人类可读性:结果以面板形式组织,易于理解
- 模块化设计:每个数据源独立实现
- 可扩展性:易于添加新的数据源
3. 技术栈
- 语言:Python 99.5%
- 包管理:PyPI、conda-forge、Homebrew
- 容器化:Docker 支持
四、安装与配置
1. 安装方式
A. 通过 pip 安装
pip install wtfisB. 通过 conda 安装
conda install -c conda-forge wtfisC. 通过 Homebrew 安装
brew install wtfisD. 通过 Docker 安装
make docker-image2. 环境配置
A. 必需配置
- VT_API_KEY:VirusTotal API 密钥(必需)
B. 可选配置
- ABUSEIPDB_API_KEY:AbuseIPDB API 密钥
- GREYNOISE_API_KEY:GreyNoise API 密钥
- IP2LOCATION_API_KEY:IP2Location API 密钥
- IP2WHOIS_API_KEY:IP2Whois API 密钥
- SHODAN_API_KEY:Shodan API 密钥
- URLHAUS_API_KEY:URLhaus API 密钥
C. 高级配置
- WTFIS_DEFAULTS:默认布尔参数
- GEOLOCATION_SERVICE:地理位置服务选择
D. 配置文件方式
在用户主目录创建 .env.wtfis 文件:
# 配置文件示例
VT_API_KEY=your_vt_api_key
SHODAN_API_KEY=your_shodan_api_key
GREYNOISE_API_KEY=your_greynoise_api_key
GEOLOCATION_SERVICE=ipwhois
WTFIS_DEFAULTS=-s -1安全建议:
chmod 400 ~/.env.wtfis五、使用方法
1. 基本用法
wtfis example.com
wtfis 1.1.1.1
wtfis api.google.com2. 命令行参数
A. 增强选项
- -A, --all:启用所有可能的增强功能
- -s, --use-shodan:使用 Shodan 增强 IP 查询
- -g, --use-greynoise:启用 GreyNoise
- -a, --use-abuseipdb:启用 AbuseIPDB
- -u, --use-urlhaus:启用 URLhaus
B. 显示选项
- -m N, --max-resolutions N:最大解析记录数(默认 3,最大 10)
- -n, --no-color:无颜色输出
- -1, --one-column:单列显示
C. 服务选择
- --geolocation-service:地理位置服务选择
3. 使用示例
A. 基本查询
wtfis google.comB. 启用所有增强功能
wtfis -A example.comC. 查询特定 IP 并启用 Shodan
wtfis -s 1.1.1.1D. 单列显示
wtfis -1 example.comE. 更改地理位置服务
GEOLOCATION_SERVICE=ipinfo wtfis 1.1.1.1F. Docker 运行
docker run --env-file=${HOME}/.env.wtfis -it wtfis example.com六、技术特性分析
1. 输出设计
A. 面板化布局
- 信息分类展示:基本信息、威胁情报、网络信息
- 颜色编码:不同风险级别使用不同颜色
- 可点击链接:终端支持时可直接跳转到原始数据源
B. 智能输入处理
- 支持 defanged 输入格式:api[.]google[.]com
- 自动识别输入类型(域名/FQDN/IP)
2. API 优化策略
A. 配额管理
- 最小化 API 调用次数
- 默认禁用低配额服务(如 GreyNoise 每周仅 50 次请求)
- 智能缓存机制
B. 降级策略
- IP2Whois 不可用时回退到 VirusTotal Whois
- 部分服务失败不影响整体功能
3. 扩展性设计
A. 模块化架构
- 每个数据源独立模块
- 统一的数据接口
- 易于添加新数据源
B. 配置灵活性
- 环境变量配置
- 默认参数设置
- 命令行覆盖
七、应用场景
1. 安全研究
- 快速评估可疑主机威胁等级
- 收集目标基础设施情报
- 追踪恶意软件 C2 服务器
2. 威胁情报分析
- 识别恶意 IP 地址
- 分析域名解析历史
- 检测已知的恶意软件分发点
3. 网络侦察
- 了解目标组织的网络资产
- 识别开放的服务和端口
- 收集地理位置和 ISP 信息
4. 事件响应
- 快速验证攻击来源
- 收集入侵指标(IOC)
- 评估攻击者的基础设施
八、项目优势与局限
1. 优势
- 人类友好的输出格式
- 多数据源集成
- 最小化 API 调用
- 开源免费
- 跨平台支持
- 丰富的安装方式
2. 局限
- 依赖第三方 API 配额
- 需要注册多个服务账号
- 某些服务需要付费
- GreyNoise 免费配额极低
- 不支持批量查询
3. 与同类工具对比
| 工具 | 优势 | 劣势 |
|---|---|---|
| wtfis | 人类可读、多数据源、界面美观 | API 依赖重 |
| whois | 无需 API、原生工具 | 输出格式不友好 |
| theHarvester | 数据源丰富 | 主要用于邮件收集 |
| Maltego | 图形化界面、强大 | 商业软件、复杂 |
九、最佳实践
1. API 密钥管理
- 使用 .env.wtfis 文件集中管理
- 设置文件权限为 400
- 不要将密钥提交到版本控制系统
2. 配额管理
- 优先使用必需的 VirusTotal
- 按需启用低配额服务
- 合理设置解析记录上限
3. 输出处理
- 使用 -n 参数重定向到文件
- 使用 -1 参数方便复制粘贴
- 结合脚本进行批量处理
十、未来发展方向
1. 潜在改进
- 添加更多 OSINT 数据源
- 支持批量查询
- JSON 输出格式
- 结果缓存机制
- Web 界面
2. 社区贡献
- 6 位贡献者
- 活跃的 Issue 和 PR
- 持续的版本迭代