Windows 工件分析工具包,可将 AV 检测映射到 PE 偏移、节区、RVA/VA 和字符串,支持 YARA、AMSI、capa 和多引擎扫描,并生成 JSON/HTML 报告。
由 St0rn / CybersecurIT 创建
静态 PE 分析、YARA 关联、Windows AMSI、多引擎 AV 扫描、PDB/源码映射、基于前缀的检测边界缩小、结构化脚本分析与取证报告。
SigLens 是一个本地 Windows 安全分析工具包,专为工件分类、签名诊断、误报调查以及红队/检测工程工作流而构建。它将静态分析和本地安装的安全引擎的发现结果关联回原始文件布局,而不修改被分析的工件。
对于二进制工件,SigLens 可以扫描固定的 PE 区域,还可以执行基于前缀的 AV 检测边界缩小。首先扫描完整文件,然后逐步测试更短或更长的前缀,以界定可复现的 CLEAN -> DETECTED 转换。所得边界是根据重复的引擎判定推断出来的;它并非作为 AV 引擎返回的原生偏移量呈现。对于脚本格式,SigLens 使用不同的模型:AMSI 扫描完整文件缓冲区,而 SigLens 单独构建函数和脚本块的结构化映射,以便分析师识别值得审查的区域。
Artifact
|
+-- hashes / entropy / strings / IOCs
+-- PE sections / resources / overlay
+-- YARA -> exact native match offsets
+-- offset -> section -> RVA -> VA
| +-- x64 .pdata function boundary
| `-- PDB symbol / source line
+-- Microsoft Defender / ClamAV / configurable AV CLIs
+-- AMSI full-buffer scan
+-- structural script analysis (PowerShell / JS / VBS / WSF / text)
+-- fixed PE-region scan
+-- prefix-based AV detection-boundary narrowing
`-- JSON / HTML reports
SigLens 由 St0rn / CybersecurIT 创建。
.\dist\SigLens.exe about
SigLens
Created by St0rn / CybersecurIT
Windows Artifact Analysis and Multi-Engine Scanner
仅在当前 PowerShell 进程中允许脚本运行:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
安装 SigLens 和开发依赖项:
.\scripts\Install.ps1 -Dev -AddToUserPath
安装程序会:
.venv;siglens 命令 shim;-SkipAVInstall;需要许可证的商业安全产品不会被静默安装。
.\scripts\Build.ps1
输出:
dist\SigLens.exe
构建过程还会将 engines.json 和 engines.example.json 复制到 dist\。
.\scripts\Test.ps1
.\dist\SigLens.exe scan C:\Samples\sample.exe
完整的静态/引擎分析:
.\dist\SigLens.exe scan C:\Samples\sample.exe `
--yara .\rules `
--capa `
--iocs `
--dissect `
--amsi `
--engines .\dist\engines.json
scan - 综合工件分析scan 是主要的编排命令。根据所选选项,它可以收集:
示例:
.\dist\SigLens.exe scan C:\Samples\sample.exe `
--yara .\rules `
--symbol-path .\symbols `
--iocs `
--dissect
报告以 JSON 和 HTML 格式写入 reports\。
multi-scan - 多个本地安全引擎.\dist\SigLens.exe multi-scan C:\Samples\sample.exe --engines .\dist\engines.json
适配器/模板涵盖 Microsoft Defender、ClamAV、ESET Endpoint Security、Sophos Endpoint / Intercept X、Avast Business、Malwarebytes Toolset 以及通用本地命令行扫描器。
扫描器可能返回 DETECTED、CLEAN、UNKNOWN、UNAVAILABLE 或 ERROR。仅当底层引擎原生暴露精确字节偏移量时才会显示它们。
amsi-scan - 全缓冲区 AMSI.\dist\SigLens.exe amsi-scan C:\Samples\sample.ps1
SigLens 通过 Windows AmsiScanBuffer 提交完整文件缓冲区,并显示规范化状态和原始 AMSI 结果信息:
AMSI_RESULT_CLEAN
AMSI_RESULT_NOT_DETECTED
AMSI_RESULT_BLOCKED_BY_ADMIN
AMSI_RESULT_DETECTED
amsi-scan 不会拆分、重写、修补或混淆内容。
script-analyze - AMSI + 结构化脚本诊断对于 PowerShell、JavaScript、VBScript、WSF 和文本工件:
.\dist\SigLens.exe script-analyze C:\Samples\sample.ps1
典型输出:
SigLens - AMSI Analysis
File : sample.ps1
Encoding : UTF-8
Size : 18432 bytes
AMSI : DETECTED
Structural regions
-------------------------------------------------------------
Lines 1-34 module/imports
Lines 36-81 function Invoke-Example
Lines 83-117 function Resolve-Target
Lines 119-143 main script block
Candidate context
Lines : 83-117
Byte offsets : 0x000018F0 - 0x000024A8
AST type : FunctionDefinitionAst
Classification : CANDIDATE_REGION
工作原理:
候选区域并不声称是自主的 AMSI 签名。检测可能取决于上下文、多个片段、内容类型、AMSI 消费者或相关的反恶意软件提供程序。
如果 AMSI 检测到完整缓冲区但无法有把握地归因任何区域,SigLens 会报告:
CONTEXT_DEPENDENT
选项:
.\dist\SigLens.exe script-analyze sample.ps1 --context-lines 5
.\dist\SigLens.exe script-analyze sample.ps1 --max-file-size 20
.\dist\SigLens.exe script-analyze sample.ps1 --json
已识别的扩展名:
.ps1 .psm1 .psd1 .js .jse .vbs .vbe .wsf .txt
编码检测:
narrow - 基于前缀的 AV 检测边界缩小.\dist\SigLens.exe narrow C:\Samples\sample.exe --engines .\dist\engines.json
narrow 首先使用配置的 AV 引擎扫描完整文件。如果文件被检测到,SigLens 会通过测试不同长度的前缀来执行基于前缀的缩小,直到界定出可复现的 CLEAN -> DETECTED 转换。
典型跟踪:
Prefix end Status
0x0230B000 DETECTED
0x01185800 CLEAN
0x01A47C00 DETECTED
0x015E6A00 CLEAN
...
最终候选报告:
CLEAN 前缀边界;DETECTED 前缀边界;报告的边界是通过前缀扫描推断的。它并不声称是 Microsoft Defender 或其他 AV 引擎提供的原生字节偏移量。如果引擎暴露原生偏移量,SigLens 会单独保留该值并标识其来源。
显示上下文仅供分析师检查;它与引擎判定本身是分开的。
component-scan - PE 节区和 overlay.\dist\SigLens.exe component-scan C:\Samples\sample.exe --engines .\dist\engines.json
扫描固定的 PE 结构区域,同时保留原始文件偏移量和 RVA。
dissect - PE 结构.\dist\SigLens.exe dissect C:\Samples\sample.exe
报告节区、原始偏移量、RVA、大小、熵、哈希、资源和 overlay 元数据。
inspect-offset - 本地字节上下文.\dist\SigLens.exe inspect-offset C:\Samples\sample.exe 0x005C0000
映射 文件偏移量 -> PE 节区 -> RVA -> VA -> 映像基址,并显示本地 hexdump 以及 ASCII/UTF-16LE 字符串。
.\dist\SigLens.exe inspect-offset sample.exe 0x005C0000 --preview-bytes 512
locate - 函数 / PDB / 源码关联.\dist\SigLens.exe locate C:\Samples\sample.exe 0x18A20 --symbol-path .\symbols
关联路径:
file offset -> PE section -> RVA -> VA -> x64 .pdata runtime function -> local PDB symbol -> source line
.\dist\SigLens.exe scan C:\Samples\sample.exe --yara .\rules --symbol-path .\symbols
YARA 匹配偏移量是原生 YARA 偏移量,可以关联回 PE/符号信息。
.\dist\SigLens.exe scan C:\Samples\sample.exe --iocs
从可打印内容中提取 URL、IPv4 地址、域名和 Windows 路径。
.\dist\SigLens.exe scan C:\Samples\sample.exe --capa
当 capa.exe 可用时,其输出会嵌入报告中。
compare - 比较构建版本.\dist\SigLens.exe compare .\old.exe .\new.exe
比较哈希、大小、熵、PE 信息和更改的二进制范围。
path-test - Windows 文件访问诊断.\dist\SigLens.exe path-test C:\Samples\sample.exe
检查路径规范化和 SigLens 文件 I/O 回退。
doctor.\dist\SigLens.exe doctor
检查运行时环境和可用的集成。
about.\dist\SigLens.exe about
显示产品归属信息。
编辑 engines.json 以启用本地安装的扫描器。
{
"name": "Example AV",
"type": "cli",
"enabled": true,
"argv": ["C:\\AV\\scanner.exe", "--scan", "{file}"],
"detected_exit_codes": [1],
"clean_exit_codes": [0],
"detect_regex": "(?i)(detected|infected)",
"clean_regex": "(?i)(clean|no threat)",
"signature_regex": "(?i)signature\\s*[:=]\\s*(?P<signature>[^\\r\\n]+)",
"timeout": 300
}
{file} 会被替换为规范化完整路径。扫描器在不使用 shell 的情况下启动。
.\scripts\Install-AVs.ps1
.\scripts\Update-AVs.ps1
.\scripts\Update.ps1
.\scripts\Doctor.ps1
.\scripts\Uninstall.ps1
SigLens 将分析工件以 JSON 和 HTML 格式写入 reports\。