Loading... # 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,提供全面的目标情报: ```mermaid 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 --> Output ```  ### A. 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. 工作流程 ```mermaid 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 安装 ```bash pip install wtfis ``` ### B. 通过 conda 安装 ```bash conda install -c conda-forge wtfis ``` ### C. 通过 Homebrew 安装 ```bash brew install wtfis ``` ### D. 通过 Docker 安装 ```bash make docker-image ``` ## 2. 环境配置 ### 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 文件: ```bash # 配置文件示例 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 ``` 安全建议: ```bash chmod 400 ~/.env.wtfis ``` # 五、使用方法 ## 1. 基本用法 ```bash wtfis example.com wtfis 1.1.1.1 wtfis api.google.com ``` ## 2. 命令行参数 ### 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. 基本查询 ```bash wtfis google.com ``` ### B. 启用所有增强功能 ```bash wtfis -A example.com ``` ### C. 查询特定 IP 并启用 Shodan ```bash wtfis -s 1.1.1.1 ``` ### D. 单列显示 ```bash wtfis -1 example.com ``` ### E. 更改地理位置服务 ```bash GEOLOCATION_SERVICE=ipinfo wtfis 1.1.1.1 ``` ### F. Docker 运行 ```bash 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 - 持续的版本迭代 *** ## 参考资料 1. [wtfis GitHub 仓库](https://github.com/pirxthepilot/wtfis) 2. [VirusTotal API 文档](https://developers.virustotal.com/reference) 3. [GreyNoise 社区 API](https://docs.greynoise.io/docs/using-the-greynoise-community-api) 4. [Shodan API 文档](https://developer.shodan.io/api) 5. [AbuseIPDB API](https://www.abuseipdb.com/api) 最后修改:2026 年 01 月 17 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏