🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

第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[持续监控]
防护措施三原则
  1. 最小暴露
# 防火墙配置示例(仅允许校内访问)
iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.0/8 -j ACCEPT# 仅教育网
iptables -A INPUT -p tcp --dport 3306 -j DROP# 其他禁止
  1. 服务伪装
# 修改Nginx Banner(nginx.conf)
server_tokens off;
more_clear_headers 'Server';
  1. 持续监控
# 定期扫描自身资产(每月)
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额度申请通道
  • 实战靶场环境

记住:能力越大责任越大,用技术守护而非破坏 —— 这才是网安人的浪漫 (•̀ω•́)✧

posted on 2025-08-04 13:12  鱼油YOU  阅读(31)  评论(0)    收藏  举报