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 --> Output

wtfis 数据来源架构图

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. 工作流程

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: 渲染面板输出

wtfis 工作流程时序图

2. 设计原则

  • API 调用最小化:避免达到免费层配额限制
  • 人类可读性:结果以面板形式组织,易于理解
  • 模块化设计:每个数据源独立实现
  • 可扩展性:易于添加新的数据源

3. 技术栈

  • 语言:Python 99.5%
  • 包管理:PyPI、conda-forge、Homebrew
  • 容器化:Docker 支持

四、安装与配置

1. 安装方式

A. 通过 pip 安装

pip install wtfis

B. 通过 conda 安装

conda install -c conda-forge wtfis

C. 通过 Homebrew 安装

brew install wtfis

D. 通过 Docker 安装

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 文件:

# 配置文件示例
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.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. 基本查询

wtfis google.com

B. 启用所有增强功能

wtfis -A example.com

C. 查询特定 IP 并启用 Shodan

wtfis -s 1.1.1.1

D. 单列显示

wtfis -1 example.com

E. 更改地理位置服务

GEOLOCATION_SERVICE=ipinfo wtfis 1.1.1.1

F. 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
  • 持续的版本迭代

参考资料

  1. wtfis GitHub 仓库
  2. VirusTotal API 文档
  3. GreyNoise 社区 API
  4. Shodan API 文档
  5. AbuseIPDB API
最后修改:2026 年 01 月 17 日
如果觉得我的文章对你有用,请随意赞赏