从0开始编写信息收集器
字数 1258 2025-08-18 11:37:15
从零开始编写信息收集器 - 详细教学文档
0x00 引言
信息收集是渗透测试中不可或缺的一环,手动收集各类信息耗时耗力。本教学将指导如何从零开始编写一个Python信息收集工具,重点讲解开发思路和实现方法。
0x01 需求分析
明确工具需要实现的功能:
- whois信息查询
- DNS记录查询
- 端口状态扫描
- 子域名枚举
- 主机系统信息收集
- Robots.txt检查
- 服务信息识别
- 指纹识别(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
使用方法
- 全扫描模式(收集所有信息):
python Stealth.py -a example.com
- 选择性扫描(收集部分信息):
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管理
- 初始化本地仓库
- 添加文件:
git add . - 提交更改:
git commit -m "注释" - 推送到远程:
git push -u origin master
语言设置
创建.gitattributes文件:
*.js linguist-language=python
*.css linguist-language=python
*.html linguist-language=python
0x09 总结与扩展
项目特点
- 模块化设计,便于扩展
- 支持多种信息收集方式
- 跨平台支持(Linux/Windows)
改进方向
- 增加多线程支持
- 集成更多信息源
- 优化输出格式
- 添加API接口支持
- 增强错误处理和日志记录
注意事项
- 使用Nmap可能需要root权限
- 大量查询可能触发目标防护机制
- 遵守当地法律法规,仅用于授权测试
0x0A 参考资源
- Nmap官方文档:http://nmap.org
- wydomain项目:https://github.com/ring04h/wydomain
- Python requests文档:http://docs.python-requests.org
通过本教学,您应该掌握了从零开始开发一个信息收集工具的全过程,包括需求分析、设计、实现和部署。实际开发中可根据需要调整和扩展功能模块。