第5章 第39.1课
:国产网络空间测绘利器解析
1. ZoomEye工具简介:网络空间的中文"望远镜"
作为参与过多次HW行动的安全研究员,第一次用ZoomEye时的感受是:终于有接地气的国产测绘工具了。它就像网络空间的"北斗系统",特别适合国内环境。
# 与Shodan的对比
def tool_comparison():
shodan = {
"优势": "全球覆盖广,设备指纹全",
"劣势": "国内节点少,英文界面",
"适合": "国际项目研究"
}
zoomeye = {
"优势": "中文界面,国内IP丰富,教育网优化",
"劣势": "国际数据较少",
"适合": "国内目标测绘"
}
return shodan, zoomeye
# 校园案例:搜索学校暴露的OA系统
zoomeye.search('app:"用友OA" org:"北京大学"')# 直接定位目标
2. ZoomEye入门实战:校园安全自查手册
基础搜索技巧(Web界面操作)
场景1:IP搜索 - 定位学校服务器
# 语法:ip:xxx.xxx.xxx.xxx
# 案例:查学校DNS服务器开放端口
ip:202.112.0.1# 北师大DNS
# 结果:显示53(DNS)、80(HTTP)、443(HTTPS)开放
场景2:域名搜索 - 找子域名资产
# 语法:site:domain
# 案例:找学校官网子站
site:tsinghua.edu.cn
# 结果:www.tsinghua.edu.cn, lib.tsinghua.edu.cn, mail.tsinghua.edu.cn...
场景3:操作系统识别 - 服务器类型统计
# 语法:os:"操作系统名"
# 案例:统计学校Linux服务器
os:"linux" org:"上海交通大学"
# 结果:共发现1524台Linux设备
场景4:应用软件搜索 - 特定服务发现
# 语法:app:"软件名"
# 案例:找学校里的Jenkins服务
app:"Jenkins" org:"浙江大学"
# 结果:发现3台未授权Jenkins构建服务器
场景5:综合搜索 - 多条件组合
# 语法:组合使用
# 案例:找用Spring框架的测试环境
app:"Spring Framework" +"测试环境" org:"南京大学"
# 结果:返回test.nju.edu.cn等测试站点
3. ZoomEye进阶实战:命令行自动化审计
环境配置
# 安装ZoomEye-python SDK
pip install zoomeye
# 初始化(首次使用需认证)
zoomeye init -apikey YOUR_API_KEY# 在官网控制台获取
基础命令实战
# 搜索学校暴露的Redis服务
zoomeye search 'app:redis org:"复旦大学"'# 直接搜索
# 结果示例
ip:202.121.xxx.xxxport:6379[Redis 6.0.9]# 未设密码高危!
数据导出与分析
# 导出学校所有设备(JSON格式)
zoomeye search 'org:"电子科技大学"' -save assets.json
# 用jq工具分析(安装:brew install jq)
cat assets.json | jq '.matches[] | {ip:.ip, port:.portinfo.port}'
API集成开发示例
from zoomeye.sdk import ZoomEye
# 初始化API
zm = ZoomEye(api_key="YOUR_API_KEY")
# 搜索教育网摄像头
results = zm.dork_search('webcam +org:"教育网"', page=1)
# 提取IP和Banner
for item in results:
print(f"IP: {item['ip']}")
print(f"服务: {item['portinfo']['service']}")
print(f"横幅: {item['portinfo']['banner']}")
print("-" * 30)
校园安全防护实战案例
案例1:暴露的数据库自查
# 检查学校MongoDB暴露情况
from zoomeye.sdk import ZoomEye
zm = ZoomEye(api_key="YOUR_KEY")
count = zm.resources()["quota_info"]["remain_total_quota"]# 查看剩余额度
# 搜索MongoDB
results = zm.dork_search('app:"mongodb" org:"中山大学"', facets="app")
# 输出统计
print(f"共发现 {results.total} 个MongoDB实例")
for service in results.facets["app"]:
print(f"{service['name']}: {service['count']}个")# 版本分布
案例2:漏洞设备紧急排查
# 快速定位Log4j漏洞设备(CVE-2021-44228)
import requests
# ZoomEye搜索受影响服务
url = "https://api.zoomeye.org/host/search?query=app:log4j"
headers = {"API-KEY": "YOUR_API_KEY"}
response = requests.get(url, headers=headers).json()
# 提取高危IP列表
vuln_ips = [host["ip"] for host in response["matches"]]
print(f"需紧急处理的IP: {vuln_ips}")
# 自动生成防火墙规则
with open("block_rules.sh", "w") as f:
for ip in vuln_ips:
f.write(f"iptables -A INPUT -s {ip} -j DROP\n")
防御视角:网络管理员操作指南
ZoomEye暴露风险处置流程
graph TD
A[发现暴露设备] --> B{是否授权?}
B -->|是| C[评估风险等级]
B -->|否| D[立即下线]
C -->|高危| E[紧急修复]
C -->|中危| F[限时整改]
C -->|低危| G[持续监控]
防护措施三原则
- 最小暴露
# 防火墙配置示例(仅允许校内访问)
iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.0/8 -j ACCEPT# 仅教育网
iptables -A INPUT -p tcp --dport 3306 -j DROP# 其他禁止
- 服务伪装
# 修改Nginx Banner(nginx.conf)
server_tokens off;
more_clear_headers 'Server';
- 持续监控
# 定期扫描自身资产(每月)
zoomeye monitor create "org:清华大学"# 创建监控任务
学习与就业衔接
新手学习路径
1. **基础**
- 注册ZoomEye教育账号(edu邮箱认证)
- 完成官方教程(https://www.zoomeye.org/doc)
2. **进阶**
- 用ZoomEye-python做自动化审计
- 参加知道创宇"网际迷踪"比赛
3. **实战**
- 为学校信息中心提供资产报告
- 参与公益SRC(安全应急响应中心)
职场应用场景
# 安全公司日常工作片段
def daily_work():
morning = "用ZoomEye追踪客户资产暴露情况"
afternoon = "编写自动化监控脚本(Python+API)"
evening = "输出加固建议报告"
return [morning, afternoon, evening]
附赠资源包(公众号回复 ZoomEye校园版 获取):
- 教育网IP段大全
- 高校专属API额度申请通道
- 实战靶场环境
记住:能力越大责任越大,用技术守护而非破坏 —— 这才是网安人的浪漫 (•̀ω•́)✧
感谢浏览和学习,作者:鱼油YOU,转载请注明原文链接:https://www.cnblogs.com/OmegaYOU3/p/19021325,或者可以➕主播WX:OmegaAnimeman_desu;QQ:3819054512