用于 AMSI/Defender 检测边界分析和静态恶意软件分类的 PowerShell 工具包,可将字节偏移映射到检测触发点,并提供 YARA、熵、字符串和 PE/imphash 分析。是 OffsetScan 的配套工具。
一个用于字节偏移检查、源码关联、二进制比较和防御性检测边界分析的有界内存 PowerShell 工具包。
OffsetInspect 回答了一个实际的分析师问题:
在此字节偏移处存在什么内容?其周围是什么源码或二进制上下文?
它还提供了 OffsetInspect 原生的检测边界工作流,其灵感来自 ThreatCheck 所解决的同一个分析师问题,但并未捆绑其源码或二进制文件:它会定位 AMSI 或 Microsoft Defender 仍能检测到的最早内容前缀,反复验证该边界,并将得到的偏移直接送入上下文检查器。在此核心之上,它增加了红队分析与静态分诊套件——多区域发现、语料库扫描、检测差异对比、检测触发关联、漂移日志、交战报告、熵分析、字符串提取以及 PE/imphash 解析——全部为只读操作,另有一个仅供授权使用的签名稳健性测试器,仅在内存中扰动样本,且从不禁用或重新配置端点保护。
如需在没有 PowerShell 开销的情况下进行语料库规模的静态分诊(PE 解析、熵、字符串、IOC),请参阅 OffsetScan——一个使用相同 JSON 输出模式的原生 Rust 二进制程序。OffsetInspect 3.1.0+ 可直接通过 -IocJsonPath 摄取 OffsetScan IOC JSON。
-ContextLines 实现前后源码上下文。ProbeLog/ProbeCount),并实时流式输出到 -Verbose,为扫描的真实提供程序成本提供可直接用于报告的记录。-CaptureTelemetry):是否触发了 Microsoft Defender 警报、带有什么上下文,以及哪些遥测源是盲区——体现了“假定可见性,然后验证它”的原则。只读、非管理员、仅限 Windows。Get-OffsetSignature):使用平台的真实信任验证,报告文件是否有效签名且受信任、由谁签名,以及是嵌入签名还是目录签名——这是一个签名者信号,补充了 imphash 和构建工具链指纹(导入与工具链与签名者)。仅限 Windows。| 命令 | 用途 | 平台 |
|---|---|---|
Invoke-OffsetInspect | 将字节偏移映射到源码/二进制上下文、十六进制和比较 | 跨平台 |
Invoke-OffsetThreatScan | 针对单个文件的 AMSI/Defender 检测边界搜索 | Windows |
Invoke-OffsetThreatScanBatch | 扫描文件语料库;-Summary 返回检测矩阵 | Windows |
Invoke-OffsetThreatScanRegion | 通过内存 AMSI 进行多区域发现(不写入磁盘) | Windows |
Invoke-OffsetMutationTest | 签名稳健性测试:在内存中扰动检测到的样本,报告哪些转换可绕过(仅供授权使用) | Windows |
Compare-OffsetThreatResult | 比较两个扫描结果(例如跨签名定义更新) | 跨平台 |
Get-OffsetDetectionTrigger | 将检测边界与最可能触发它的内容关联起来 | 跨平台 |
Add-OffsetDriftEntry | 将检测快照(文件哈希 + Defender 签名版本)记录到日志 | 跨平台² |
Get-OffsetDrift | 解释文件可检测性如何变化:文件变更 vs 签名更新 vs 非确定性 | 跨平台 |
Export-OffsetThreatReport | 将扫描结果渲染为 Markdown/HTML 交战报告 | 跨平台 |
Invoke-OffsetYaraScan | 使用 YARA 规则匹配文件;返回带字节偏移的命中 | 跨平台¹ |
Invoke-OffsetClamScan | 使用 ClamAV 引擎扫描文件;归一化检测结果 | 跨平台¹ |
Get-OffsetEntropy | 逐窗口香农熵,用于定位加壳/加密区域 | 跨平台 |
Get-OffsetString | 提取带字节偏移的 ASCII/UTF-16LE 字符串 | 跨平台 |
Get-OffsetPEInfo | PE 头、节、导入/imphash、覆盖、偏移→节 | 跨平台 |
Get-OffsetIOC | 整合指示器面板:哈希、熵、PE/imphash、字符串 | 跨平台 |
Get-OffsetSignature | Authenticode 签名:是否有效签名且受信任、由谁签名、嵌入 vs 目录 | Windows |
¹ 这两个命令有可选的外部依赖:Invoke-OffsetYaraScan 需要 YARA 引擎(winget install VirusTotal.YARA),Invoke-OffsetClamScan 需要带签名数据库的 ClamAV(winget install Cisco.ClamAV,然后 freshclam)。其他每个命令都是自包含的。这里的 ClamAV 是单文件检测器,而不是边界搜索引擎——clamscan 每次调用都会加载其完整数据库,因此二分查找需要 clamd 守护进程。
² Add-OffsetDriftEntry 在跨平台环境中记录日志,但 Defender 签名/引擎版本字段仅在 Windows 上填充(通过 Get-MpComputerStatus);在其他平台上它们记录为 null,快照的其余部分仍会写入。
偏移检查核心和所有静态分诊辅助工具均为跨平台(Windows、Linux、macOS);AMSI/Defender 威胁提供程序仅限 Windows。
Install-Module OffsetInspect -Scope CurrentUser Import-Module OffsetInspect
### 仓库检出```powershell
git clone https://github.com/warpedatom/OffsetInspect.git
cd OffsetInspect
Import-Module ./module/OffsetInspect/OffsetInspect.psd1 -Force
该仓库还包含轻量级 CLI 包装器:```powershell ./OffsetInspect.ps1 ./OffsetThreatScan.ps1 -Engine AMSI
## Offset inspection
### Human-readable output```powershell
Invoke-OffsetInspect ./sample.bin 0x200
SecuSphere - SecuSphere是一个全面、高效的DevSecOps平台,贯穿整个SDLC。SecuSphere通过在一个统一的框架内集成开发、安全与运维,从根本上转变了组织保护软件系统安全的方式。该平台对整个SDLC进行集中管理,包括漏洞管理、安全测试、合规以及DevSecOps工作流,将设计、架构、实施及防护融为一体,从而以前所未有的方式提升运营效率与安全标准。
Cobra - Cobra是一个能够通过输入路径列表,自动为特定路径生成定制字典的Golang工具,用于模糊测试。Cobra是一个用于生成定制字典的灵活模糊测试工具,它通过CLI路径或文件中的路径列表进行输入。它会自动扫描路径内的关键词,并匹配相关扩展生成输出,从而构建字典。
Vigilant - Vigilant是一个用于检测Web应用程序的变更、监控其内容完整性、抓取屏幕截图并进行全文搜索的工具。
Tantiny - Tantiny是一款基于Tantivy的最小化全文搜索Ruby库。Tantiny是一个受Tantivy和SQLite架构研究启发的Ruby gem包。Tantiny允许你在Ruby/Ruby on Rails环境中使用全文搜索功能。不同于使用FFI或为Tantivy做C绑定,它利用了Tantivy的Ruby绑定。
Kali Linux Tools - 一键式Kali Linux工具安装,实现自动化安装,为渗透测试人员节省时间。该项目旨在自动化执行这些任务,为渗透测试人员提供一种快速简便的方式来安装Kali Linux上使用的工具。
Whitewidow - Whitewidow是一个开源的自动化SQL漏洞扫描工具,能够处理文件列表,并可以在Google上轻松搜索潜在的易受攻击网站。
Megatron - Megatron是(相对)安全地管理AWS账户权限的最简单方法。
Webkiller - 输入你的目标域名,让工具通过分析Whois信息、DNS记录、HTTP头部、SSL/TLS证书等方式为你完成所有渗透测试。```powershell $inspectParameters = @{ FilePaths = './script.ps1' OffsetInputs = 128, 256, 512 ByteWindow = 64 ContextLines = 4 } Invoke-OffsetInspect @inspectParameters
### 结构化对象```powershell
$inspectParameters = @{
FilePaths = './script.ps1'
OffsetInputs = 0x80, 0x100
PassThru = $true
}
$results = Invoke-OffsetInspect @inspectParameters
$results | Where-Object BytesDiffer
Invoke-OffsetInspect ./sample.bin 0x200 -Json Invoke-OffsetInspect ./sample.bin 0x200 -Csv Invoke-OffsetInspect ./sample.bin 0x200 -CsvPath ./artifacts/offsets.csv
JSON 模式始终输出一个数组,即使是单个结果也是如此。
### 二进制比较```powershell
$compareParameters = @{
FilePaths = './before.bin'
OffsetInputs = 0x200
CompareFile = './after.bin'
PassThru = $true
}
Invoke-OffsetInspect @compareParameters
| 输入 | 解释 |
|---|---|
512 | 十进制 512 |
0x200 或 0X200 | 十六进制 0x200 |
200h | 十六进制 0x200 |
E1AB1 | 包含 A-F,因此是无前缀十六进制 |
仅数字的值如果没有前缀或后缀,会被有意视为十进制。
| 模式 | 行为 |
|---|---|
Auto | 检测 UTF-8/UTF-16 BOM;否则使用 UTF-8 |
Default | 使用宿主操作系统默认编码 |
UTF8 | UTF-8 源映射 |
UTF16LE | 小端 UTF-16 源映射 |
UTF16BE | 大端 UTF-16 源映射 |
ASCII | ASCII 源映射 |