ZacharyZcR
a1588a321f
feat: SDK agent integration + UDP plugin framework + SNMP plugin
...
SDK enhancements for endpoint agent embedding:
- ScanWithController for pause/resume and live stats
- OnProgress callback for periodic progress reporting
- TaskID injection into every scan result
- ScanController with goroutine-safe pause/resume/stats
- Multi-target stats aggregation (race-free)
UDP plugin infrastructure:
- PluginTypeUDP registry with dedicated dispatch path
- DialUDP on ScanSession with rate limiting and packet counting
- UDP plugins bypass TCP port scan, probe targets directly
- FilterService excludes UDP plugins from TCP port matching
SNMP plugin (first UDP plugin):
- SNMPv2c GetRequest probe for sysDescr detection
- Community string brute force (public/private/community/etc)
- Pure stdlib implementation (encoding/asn1)
- Registered as safe default plugin on port 161/UDP
Tests: 95.7% SDK coverage, race-free, 50+ new test cases
2026-05-18 23:11:39 +08:00
ZacharyZcR
eb4fa38fea
merge sdk architecture polish
2026-05-18 21:41:01 +08:00
ZacharyZcR
c15aa3488b
polish embedded scanner SDK contracts
2026-05-18 21:40:52 +08:00
ZacharyZcR
218811c38d
Merge pull request #582 from shadow1ng/feature/sdk-library
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
Add embeddable scanner SDK
2026-05-18 18:03:12 +08:00
ZacharyZcR
5a884ca6ad
fix lint issues before merge
2026-05-18 17:59:00 +08:00
ZacharyZcR
5942d3bbcb
preserve sdk host language state
2026-05-18 17:43:00 +08:00
ZacharyZcR
c0a9cfd8f5
use config proxy state for credential prechecks
2026-05-18 17:13:19 +08:00
ZacharyZcR
c16aa04e28
isolate session network checks
2026-05-18 17:11:24 +08:00
ZacharyZcR
856eeccd78
respect per-call session dial timeouts
2026-05-18 16:35:58 +08:00
ZacharyZcR
13f7997d16
isolate scan strategy runtime state
2026-05-18 16:33:47 +08:00
ZacharyZcR
adb3ac5b74
add session-aware scan logging
2026-05-18 16:19:34 +08:00
ZacharyZcR
8de7570268
allow concurrent embedded scans
2026-05-18 16:11:41 +08:00
ZacharyZcR
3dde0c6a8e
move plugin safety metadata to registry
2026-05-18 15:57:18 +08:00
ZacharyZcR
d4ed0867c9
polish scanner SDK API and docs
2026-05-18 15:49:57 +08:00
ZacharyZcR
6605c93dd9
improve embedded scanner runtime
2026-05-18 14:53:00 +08:00
ZacharyZcR
6bfa05cb45
add embeddable scanner SDK
2026-05-18 14:41:15 +08:00
ZacharyZcR
bce0a718ea
slim mssql credential check
2026-05-18 14:00:45 +08:00
ZacharyZcR
40c3f1423e
slim oracle credential check
2026-05-18 13:13:40 +08:00
ZacharyZcR
bfd64f78ed
瘦身: Kafka/MongoDB/Cassandra用raw TCP替代重型依赖
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
- kafka: 移除IBM/sarama(45MB), 自实现SASL PLAIN+ApiVersions协议(~150行)
- mongodb: 移除mongo-driver(25MB), 自实现OP_MSG+saslStart认证(~180行)
- cassandra: 移除gocql(1.2MB), 自实现CQLv4 STARTUP+SASL PLAIN(~130行)
- 同时移除间接依赖: pierrec/lz4, klauspost/compress, eapache/snappy等
二进制: 47MB → 40MB (-15%), 移除~55MB压缩依赖
全部13个测试包通过
2026-05-18 06:37:05 +08:00
ZacharyZcR
7063027acf
性能优化: 热路径零分配, 自适应池CAS无锁化, 锁外计算
...
- port_scan: fmt.Sprintf→JoinHostPort+fmtPort零分配地址格式化 (2.5x)
- port_scan: strings.ToLower→containsFold零分配大小写不敏感匹配 (2.5x)
- port_scan: slidingWindowSchedule修复semaphore泄漏bug
- service_probe: readFromConn预分配4KB缓冲区消除扩容
- adaptive_pool: maybeAdjust用atomic CAS代替持锁检查, 99%免锁
- adaptive_timeout: Timeout锁外计算均值/标准差, 只锁缓存更新
- 新增perf_bench_test.go基准测试验证所有优化
2026-05-18 06:11:10 +08:00
ZacharyZcR
639298b7c8
修复全部SA1006: fmt.Errorf(i18n)统一使用"%s"前缀
2026-05-18 05:17:40 +08:00
ZacharyZcR
f427f04d35
修复SA1006: fmt.Errorf(i18n.Tr)改用fmt.Errorf("%s", ...)
2026-05-18 05:08:34 +08:00
ZacharyZcR
05e383d8bf
修复lint: errcheck返回值检查, SA1006动态格式化字符串
...
- scanner_core: 3处InitializeGlobalVScan()返回值用_显式丢弃
- flag/initialize/network: fmt.Errorf(i18n.Tr(...))改为fmt.Errorf("%s", i18n.Tr(...))
2026-05-18 05:07:02 +08:00
ZacharyZcR
a560531e70
修复CI: 覆盖率门禁改用awk整数比较, lint过滤简化
...
- 覆盖率检查移除bc依赖,改用awk int()整数比较
- lint过滤用单条grep -vE替代管道链,更健壮
- 测试命令预计算包列表避免子shell问题
2026-05-18 04:57:39 +08:00
ZacharyZcR
77827bef66
修复凭证测试器计数器、消除panic、补齐i18n
...
- credential_tester: testCredentialWithRetry返回ErrorType,修复网络错误计数器永久不递增的bug
- scanner: os.Exit(1)改为return,defer Cleanup可正常执行
- probe_parser: 5处panic改为error返回,调用链透传到init()
- common库: parsers/initialize/network/session共17处硬编码中文改用i18n
- services插件: 18个文件115处硬编码中文改用i18n
- locale: 补齐service/parser/network相关~25个中英文键
2026-05-18 04:55:20 +08:00
ZacharyZcR
c266912dcb
修复10个代码缺陷: panic防护, 死锁, 密钥泄漏, 错误吞没
...
- eval_random: randomInt参数max<=min时不再panic,返回CEL错误
- scanner: 长驻插件nil/panic时兜底发送ready通道,消除死锁
- poc_executor: Ceye API密钥改为环境变量CEYE_API/CEYE_DOMAIN
- Eval: ParseResponse加入oResp.Request nil检查
- Eval: reverseCheck中http.NewRequest错误不再忽略
- poc_executor: clusterpoc中CEL表达式求值错误记录日志
- winwmi: PowerShell执行失败完整记录错误信息
- sshkey: authorized_keys读取失败处理错误
- minidump: Scan结束后释放系统DLL句柄
- Windows插件: PE文件错误消息改用i18n
2026-05-18 03:47:42 +08:00
ZacharyZcR
2f2b30763c
修复硬编码中文,迁移废弃的 uuid 依赖
...
- flag.go: -local/-perf 参数改用 i18n.GetText,checkParameterConflicts 改用 i18n.Tr
- 补齐中英文 locale 中 flag_local_plugin/flag_perf_stats/param_local_multi_plugin
- satori/go.uuid 迁移为 google/uuid (satori 已废弃)
- CI 补充 lint Go 版本说明
2026-05-18 02:43:45 +08:00
ZacharyZcR
72403ebb32
Merge remote-tracking branch 'origin/dev' into dev
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
2026-05-16 06:57:16 +08:00
ZacharyZcR
4fa8fdc30e
chore: 砍掉 downloader/shellenv,新增 sshkey 插件
...
- 删除 downloader(curl/certutil 可替代)
- 删除 shellenv(劫持 ls 别名动静太大,实用性差)
- 新增 sshkey:生成 ed25519 密钥对,注入 authorized_keys,
私钥保存到当前目录,支持多用户(root 权限下自动注入 root)
2026-05-16 06:56:12 +08:00
ZacharyZcR
bf210dd94d
refactor: minidump 实现降级链凭据提取
...
不再检测到杀软就直接退出,改为三级降级:
1. 直接 MiniDumpWriteDump(无杀软时尝试,15秒超时)
2. comsvcs.dll(系统签名DLL,部分杀软不拦截)
3. reg save SAM/SECURITY/SYSTEM(离线方式,不碰 LSASS)
全部失败才退出,0.2 秒完成不会卡死系统
2026-05-16 06:51:42 +08:00
ZacharyZcR
cb1079598d
feat: cleaner 支持清理所有持久化痕迹,minidump 增加杀软前置检测
...
cleaner 新增 Windows 持久化完整清理:
- Winlogon Shell/Userinit 恢复默认值
- IFEO 映像劫持清理
- 注册表 Run/RunOnce 清理
- 计划任务、服务、启动文件夹清理
- BITS 任务、WMI 事件订阅清理
- Prefetch 记录清理
minidump 增加杀软前置检测,发现 Defender/EDR 直接退出,
避免 MiniDumpWriteDump hang 导致系统崩溃
2026-05-16 06:20:00 +08:00
ZacharyZcR
ec10097e76
fix: minidump 增加杀软检测和缩短超时,防止 hang 导致系统崩溃
...
- 新增 isAVBlocking 检测 Defender/EDR 进程,发现活跃杀软直接跳过
- dump 超时从 120 秒缩短到 15 秒(正常 dump 几秒完成)
- 三层防护:杀软检测 → 权限检测 → 超时兜底
2026-05-16 06:13:47 +08:00
ZacharyZcR
231563e82b
fix: 修复 socks5proxy/cleaner/minidump 三个插件问题
...
- socks5proxy: 监听地址从 127.0.0.1 改为 0.0.0.0,允许外部连接
- cleaner: 重写清理逻辑,精准匹配 fscan 产物,修复 glob 遍历大目录卡死问题,
history 清理改为真正删除 fscan 相关行
- minidump: SeDebugPrivilege 提升失败时直接退出,不再卡 120 秒超时
2026-05-16 03:17:44 +08:00
ZacharyZcR
5af8682d22
fix: 修复长驻插件启动竞态,删除重复的 bashrc 插件
...
- 修复 forwardshell/reverseshell/socks5proxy 因竞态导致主进程提前退出
- 删除与 shellenv 功能重复的 bashrc 插件
2026-05-16 00:12:21 +08:00
ZacharyZcR
a42f074b00
feat: 新增 4 种持久化插件
...
- winifeo: IFEO 映像劫持 (sethc/utilman/narrator)
- winbits: BITS 后台任务持久化,通过 GUID 操作避免同名冲突
- winlogon: Winlogon Userinit/Shell 追加
- bashrc: Linux bashrc/profile 注入
2026-05-15 23:48:30 +08:00
ZacharyZcR
1ebcd6dc79
fix: 补全 Windows 持久化插件的执行逻辑
...
5 个 Windows 持久化插件原先只拼接命令字符串不执行,现全部补上真实执行逻辑:
- winschtask: schtasks /create 创建计划任务
- winservice: sc create 创建系统服务
- winstartup: 复制 PE 到启动文件夹
- winregistry: reg add 写入 Run/RunOnce 注册表键
- winwmi: PowerShell 创建 WMI 事件订阅(单次调用,1.2s 完成)
2026-05-15 23:35:43 +08:00
ZacharyZcR
150e48ba85
refactor: 合并 fileinfo 和 dcinfo 到 systeminfo
...
- fileinfo 的敏感文件扫描合并到 systeminfo
- dcinfo 的域控信息收集合并到 systeminfo,通过 build tag 隔离平台差异
- 检测到域环境时自动触发域信息收集,WORKGROUP 环境自动跳过
- 新增 systeminfo_dc_windows.go 和 systeminfo_dc_other.go 处理跨平台编译
2026-05-15 23:16:35 +08:00
ZacharyZcR
76a4331fae
refactor: 合并 avdetect 到 systeminfo,修复杀软检测误报
...
- 将 avdetect 的进程匹配逻辑合并到 systeminfo 插件
- 修复进程匹配使用 Contains 导致大量误报,改为精确匹配
- 修正 auto.json 中 Microsoft Security Essentials 为 Microsoft Defender
- 使用 map 索引优化进程匹配性能
- 清理废弃的 envinfo/avdetect i18n key
2026-05-15 22:52:11 +08:00
ZacharyZcR
ca4e1ffad3
refactor: 增强 systeminfo 插件并合并 envinfo
...
- systeminfo 新增网卡信息、权限检测、补丁数量、杀软检测、
防火墙状态、敏感环境变量扫描等功能
- 合并 envinfo 到 systeminfo,删除独立的 envinfo 插件
- 修复本地插件通过 -m 指定时仍需 -h 参数的问题
- 通过回调机制解决 common/plugins 循环依赖
2026-05-15 22:47:39 +08:00
ZacharyZcR
a0fc7881f2
fix: 修复 -m 指定本地插件时误走服务扫描策略的问题
...
当通过 -m 参数指定本地插件(如 systeminfo)时,由于 LocalMode 未被设置,
会错误地进入服务扫描流程,导致不必要的端口扫描和插件重复执行。
现在 determineScanMode 会自动检测 -m 指定的插件类型,
全部为 local 类型时自动切换到本地扫描模式。
2026-05-15 22:40:52 +08:00
ZacharyZcR
bc28df2ed1
Merge branch 'main' into dev
2026-05-15 22:16:07 +08:00
ZacharyZcR
7459da2b44
fix: 恢复 plugins/local 中实际使用的 config 变量
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
v2.1.3
2026-05-15 19:54:36 +08:00
ZacharyZcR
9d191889d0
fix: 移除 composite action 中不支持的 timeout-minutes
2026-05-15 18:43:12 +08:00
ZacharyZcR
2e277a51ed
fix: 修复 plugins/local 未使用变量导致编译失败
2026-05-15 18:41:36 +08:00
Ruihang Zhang and ZacharyZcR
73b0b0b822
fix: 修复大网段扫描不设置上限的问题 ( #581 )
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
* fix: 修复大网段扫描不设置上限的问题
修复三处关键Bug:
1. parseIPFullRange() - 修复逻辑错误
- 问题:当maxTargets=-1时,count >= -1 导致只返回1个IP
- 修复:添加maxTargets > 0检查条件
2. parseIPShortRange() - 添加maxTargets参数支持
- 问题:短格式范围(如192.168.1.1-254)无法被限制
- 修复:添加maxTargets参数并在循环中检查
3. parseIPRangeString() - 修复调用传参遗漏
- 问题:调用parseIPShortRange()未传递maxTargets
- 修复:传入maxTargets参数
改进点:
- 大网段解析(如10.0.0.0/8)现在正确处理不超限的情况
- IP范围解析完整性验证
- 添加详细的bug报告和修复文档
* fix parser range limit handling
---------
Co-authored-by: ZacharyZcR <[email protected] >
2026-05-14 21:45:42 +08:00
ZacharyZcR
d412786228
feat: 支持国密 TLS 网站扫描
...
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
- 添加 tjfoc/gmsm 依赖,提供 gmtls 国密 TLS 支持
- 新增国密 HTTP 客户端 ClientGM/ClientNoRedirectGM
- DetectHTTPScheme 增加国密 TLS 回退检测,返回 https-gm 协议标识
- webtitle 插件识别并路由到国密客户端
- DoRequest 标准 TLS 失败时自动回退国密客户端
2026-05-13 19:10:37 +08:00
ZacharyZcR
b2e91d9fc0
fix: 修复 POC Cookie/变量提取的两个问题
...
- poc_adapter: xray/afrog 的 output.search 转换为 Search 字段,多步POC变量传递不再丢失
- poc_executor: Set-Cookie 提取优化不再要求捕获组名含 cookie,sessid/token等命名均生效
2026-05-13 18:37:33 +08:00
ZacharyZcR
3436d6ad02
chore: 版本号更新为 2.1.4
2026-05-13 17:32:28 +08:00
ZacharyZcR
a0f323a891
docs: 更新README版本号为 2.1.3
2026-05-13 17:32:27 +08:00
ZacharyZcR
46e50a021f
ci: 修复发布超时 — 增加 timeout-minutes 以及步骤级超时
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled
2026-05-13 17:32:09 +08:00