从0开始编写信息收集器
字数 1258 2025-08-18 11:37:15

从零开始编写信息收集器 - 详细教学文档

0x00 引言

信息收集是渗透测试中不可或缺的一环,手动收集各类信息耗时耗力。本教学将指导如何从零开始编写一个Python信息收集工具,重点讲解开发思路和实现方法。

0x01 需求分析

明确工具需要实现的功能:

  1. whois信息查询
  2. DNS记录查询
  3. 端口状态扫描
  4. 子域名枚举
  5. 主机系统信息收集
  6. Robots.txt检查
  7. 服务信息识别
  8. 指纹识别(CMS识别)

0x02 平台选择

  • 主要平台:Linux
  • 兼容平台:Windows(后续扩展)
  • 依赖工具:Nmap(需添加到环境变量)

0x03 功能模块设计

1. 工具启动阶段

  • 参数解析
  • 环境检查
  • 欢迎界面

2. 工具运行阶段

  • 信息收集模块
  • 数据处理模块
  • 结果输出模块

3. 工具结束阶段

  • 结果保存
  • 清理临时文件
  • 退出处理

0x04 代码结构

Stealth.py                # 主程序
├── config/               # 配置文件目录
│   ├── cms.txt           # CMS识别规则
│   └── config.py         # 参数配置
├── output/               # 输出目录
├── static/               # 静态资源
└── util/                 # 功能模块
    ├── welcome.py        # 欢迎界面
    ├── help.py           # 帮助信息
    └── is_select.py      # 功能选择

0x05 核心代码实现

主程序框架

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

import os
from util.welcome import Welcome
from util.help import Help
from util.is_select import select

if __name__ == '__main__':
    # 创建输出目录
    script_path = os.path.dirname(os.path.abspath(__file__))
    _cache_path = os.path.join(script_path, 'output/')
    if not os.path.exists(_cache_path):
        os.makedirs(_cache_path, 777)
    
    # 解析参数
    (arg, domain) = Help.parse_args()
    if domain == '':
        Welcome().headline()
        Help.help_info()
    else:
        select(arg, domain)

配置模块 (config/config.py)

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

import sys
import random

# SSL证书验证
allow_ssl_verify = True

# requests配置
timeout = 60                  # 超时时间
allow_redirects = True        # 允许URL重定向
allow_http_session = True     # 使用session
allow_random_user_agent = False  # 随机User-Agent

# 代理配置
allow_proxies = {}

# User-Agent列表
USER_AGENTS = [
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3)...",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1...)",
    # 更多User-Agent...
]

def random_user_agent(condition=False):
    if condition:
        return random.choice(USER_AGENTS)
    else:
        return USER_AGENTS[0]

# 请求头设置
headers = {
    'User-Agent': random_user_agent(allow_random_user_agent)
}

# nmap命令设置
nmap_cmd_line = ""

0x06 功能实现细节

1. Whois信息收集

  • 使用whois库或查询在线whois服务
  • 结果保存为HTML格式

2. DNS记录查询

  • 使用dnspython库
  • 查询A、MX、NS、TXT等记录
  • 结果保存为HTML格式

3. 端口扫描

  • 调用Nmap进行扫描
  • 识别开放端口和服务
  • 结果保存为文本文件

4. 子域名枚举

  • 使用字典爆破方法
  • 结合搜索引擎查询
  • 结果保存为Excel和HTML格式

5. Robots.txt检查

  • 直接请求目标网站的robots.txt
  • 分析禁止访问的目录
  • 结果保存为文本文件

6. 指纹识别

  • 基于cms.txt规则文件
  • 匹配特定CMS的特征
  • 包括HTTP头、特定文件、HTML特征等

0x07 使用说明

安装指南

git clone https://github.com/ANyedt/Stealth.git
cd Stealth
pip install -r requirements.txt

使用方法

  1. 全扫描模式(收集所有信息):
python Stealth.py -a example.com
  1. 选择性扫描(收集部分信息):
python Stealth.py -s -c -D example.com

参数说明

optional arguments:
  -h, --help       显示帮助信息
  -a, --all        执行所有操作
  -D, --domain     目标域名
  -d, --dns        DNS信息
  -s, --subdomain  子域名信息
  -R, --robots     查询Robots.txt
  -I, --info       服务信息、端口信息和系统信息
  -c, --cms        CMS信息
  -w, --whois      Whois信息
  -q, --quit       退出

0x08 项目部署与维护

GitHub管理

  1. 初始化本地仓库
  2. 添加文件:git add .
  3. 提交更改:git commit -m "注释"
  4. 推送到远程:git push -u origin master

语言设置

创建.gitattributes文件:

*.js linguist-language=python
*.css linguist-language=python
*.html linguist-language=python

0x09 总结与扩展

项目特点

  • 模块化设计,便于扩展
  • 支持多种信息收集方式
  • 跨平台支持(Linux/Windows)

改进方向

  1. 增加多线程支持
  2. 集成更多信息源
  3. 优化输出格式
  4. 添加API接口支持
  5. 增强错误处理和日志记录

注意事项

  • 使用Nmap可能需要root权限
  • 大量查询可能触发目标防护机制
  • 遵守当地法律法规,仅用于授权测试

0x0A 参考资源

  • Nmap官方文档:http://nmap.org
  • wydomain项目:https://github.com/ring04h/wydomain
  • Python requests文档:http://docs.python-requests.org

通过本教学,您应该掌握了从零开始开发一个信息收集工具的全过程,包括需求分析、设计、实现和部署。实际开发中可根据需要调整和扩展功能模块。

从零开始编写信息收集器 - 详细教学文档 0x00 引言 信息收集是渗透测试中不可或缺的一环,手动收集各类信息耗时耗力。本教学将指导如何从零开始编写一个Python信息收集工具,重点讲解开发思路和实现方法。 0x01 需求分析 明确工具需要实现的功能: whois信息查询 DNS记录查询 端口状态扫描 子域名枚举 主机系统信息收集 Robots.txt检查 服务信息识别 指纹识别(CMS识别) 0x02 平台选择 主要平台:Linux 兼容平台:Windows(后续扩展) 依赖工具:Nmap(需添加到环境变量) 0x03 功能模块设计 1. 工具启动阶段 参数解析 环境检查 欢迎界面 2. 工具运行阶段 信息收集模块 数据处理模块 结果输出模块 3. 工具结束阶段 结果保存 清理临时文件 退出处理 0x04 代码结构 0x05 核心代码实现 主程序框架 配置模块 (config/config.py) 0x06 功能实现细节 1. Whois信息收集 使用whois库或查询在线whois服务 结果保存为HTML格式 2. DNS记录查询 使用dnspython库 查询A、MX、NS、TXT等记录 结果保存为HTML格式 3. 端口扫描 调用Nmap进行扫描 识别开放端口和服务 结果保存为文本文件 4. 子域名枚举 使用字典爆破方法 结合搜索引擎查询 结果保存为Excel和HTML格式 5. Robots.txt检查 直接请求目标网站的robots.txt 分析禁止访问的目录 结果保存为文本文件 6. 指纹识别 基于cms.txt规则文件 匹配特定CMS的特征 包括HTTP头、特定文件、HTML特征等 0x07 使用说明 安装指南 使用方法 全扫描模式(收集所有信息): 选择性扫描(收集部分信息): 参数说明 0x08 项目部署与维护 GitHub管理 初始化本地仓库 添加文件: git add . 提交更改: git commit -m "注释" 推送到远程: git push -u origin master 语言设置 创建.gitattributes文件: 0x09 总结与扩展 项目特点 模块化设计,便于扩展 支持多种信息收集方式 跨平台支持(Linux/Windows) 改进方向 增加多线程支持 集成更多信息源 优化输出格式 添加API接口支持 增强错误处理和日志记录 注意事项 使用Nmap可能需要root权限 大量查询可能触发目标防护机制 遵守当地法律法规,仅用于授权测试 0x0A 参考资源 Nmap官方文档:http://nmap.org wydomain项目:https://github.com/ring04h/wydomain Python requests文档:http://docs.python-requests.org 通过本教学,您应该掌握了从零开始开发一个信息收集工具的全过程,包括需求分析、设计、实现和部署。实际开发中可根据需要调整和扩展功能模块。