首页/安全/取证与溯源速查/托管样本的静态线索

托管样本的静态线索

可疑的 .NET 可执行文件可用字符串与反编译工具看类型与方法名,托管代码保留元数据,排查入口函数更快。

取证与溯源速查安全更新于 2026-10-13

托管样本保留元数据

.NET 可执行文件与脚本混淆程序不同,编译后仍保留类型、方法、命名空间与资源等元数据,字符串也常以 UTF-16 形式存放。这让静态排查的性价比很高:先用字符串工具扫一遍类名、方法名与可疑关键字,往往就能看出程序在做什么,再决定是否用反编译工具精读某一处逻辑。

重点看什么

优先关注外联相关线索(URL、IP、User-Agent 字符串)、执行相关调用(进程启动、脚本宿主调用)、加解密相关命名(密钥或算法名)、以及长 Base64 串。托管样本的密钥也常以 Base64 形式硬编码在代码或资源里,看到长串先记录下来,后续可能用于解密载荷配置。

基本信息

适用平台Windows(.NET 可执行文件与程序集);跨平台 .NET 程序同理
字符串编码托管字符串多为 UTF-16,需用支持 -el 的工具提取
常见线索类名与方法名、命名空间、资源段、长 Base64 串
工具顺序字符串初筛,再按需用反编译工具精读
隔离要求反编译与调试在隔离环境进行,避免运行原样本

典型使用场景

  • 可疑可执行文件带托管特征:用字符串先看类名与方法名快速定性
  • 发现外联地址:从字符串里提取域名、URL 与 User-Agent
  • 定位配置解码逻辑:按加解密相关命名找到解密方法再精读
  • 分析加载器:看它如何从资源或远端取回下一阶段载荷
  • 同族比对:命名空间与类名相似可辅助关联多个样本

提取字符串与线索

提取字符串与线索
# UTF-16 字符串:托管代码里的类名、方法名与常量多在此
strings.exe -n 8 -el sample.dll | Select-String -Pattern 'http|powershell|cmd|Aes|Key|Base64' |
  Select-Object -First 20

# ASCII 字符串补充(有的编译器会混用两种编码)
strings.exe -n 8 -e sample.dll | Select-String -Pattern 'http|\.exe|temp|run' |
  Select-Object -First 20

# 记录可疑长串,可能与密钥或配置有关
strings.exe -n 8 -el sample.dll | Where-Object { $_.Length -gt 60 } | Select-Object -First 20

线索类型与含义

线索常见含义后续动作
URL 或域名外联或下载地址与流量日志、DNS 记录互证
进程启动相关调用拉起子进程或脚本关注命令行与父进程关系
加解密命名载荷或配置解密逻辑定位方法并记录密钥来源
长 Base64 字符串硬编码的密钥或配置记录后尝试按算法解码验证
资源段内容内嵌的下一阶段载荷导出资源并单独鉴定
混淆后的托管样本可能把字符串延迟到运行时解码,静态字符串会显得很干净;此时应把重点放到动态行为与内存中的解密结果上。
分析时只对副本操作并保留原始样本哈希:反编译工具可能生成同名中间文件,在证据目录里操作会造成文件混入。

易错点

  • 只提取 ASCII 字符串:托管样本的关键线索多为 UTF-16,会大面积漏掉
  • 把 Base64 串直接当明文读:未按算法解码会得到无意义内容并误判
  • 在生产机调试托管样本:加载器会立即执行并外联
  • 忽略资源段:内嵌载荷常放在资源里,只扫代码会漏下一阶段
  • 反编译中间文件写回证据目录:原始样本目录被污染,哈希对不上

数据来源与参考

  • Sysinternals strings 文档(-el 选项)
  • SANS 托管样本分析资料
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌