可疑样本静态分析检查清单

可疑样本静态分析检查清单

目标: 在不运行样本的前提下,快速识别可疑迹象,确认一个样本是否恶意。

  • 此清单用于快速初步判断,不能100%确定样本是否恶意。
  • “是”的答案越多,样本恶意性越高,需要优先处理或送去沙箱进行动态分析。
  • 对于高度混淆或0-day样本,静态分析可能效果有限。

一、文件基础信息检查

  • 文件名/扩展名异常?
    • 是否为双扩展名 (如 file.txt.exe)?
    • 是否伪装成常见文档/图片 (如 invoice.pdf 但实际是 .exe)?
    • 文件名是否包含空格或诱导性词汇 (如 点击运行我.exe放假通知.exe吃瓜视频.exe)?
  • 文件大小异常?
    • 对于声称的类型是否过小/过大? (例如,一个几KB的 “视频播放器.exe”)
  • 文件类型真实性?
    • 使用工具 (如 DIEfile命令) 确认,是否与声称的扩展名一致?
  • 数字签名状态?
    • 无签名?
    • 签名无效或已吊销?
    • 签发者可疑或不常见?
  • 文件哈希在线查询结果? (VirusTotal, 微步等)
    • 是否被多家引擎报毒?
    • 是否已有分析报告指认为恶意?
    • 注意,尽量不要直接上传样本到在线沙箱,请上传哈希值或样本特征码,避免客户或者内部数据泄露。

二、字符串内容检查 (使用 strings 工具等)

注意:现如今绝大多数的恶意样本都会对行为特征和字符串进行加密、压缩等变形,很难直接通过字符串发现恶意行为,但是往往是非常好的切入点。
  • 可疑网络活动迹象?
    • 发现IP地址 (特别是国外、或已知恶意IP段)?
    • 发现URL/域名 (特别是动态域名、短链接、可疑顶级域名 .xyz.top 等)?
    • 包含HTTP/HTTPS/FTP等协议关键词?
    • 包含网络相关的API名称 (如 socketconnectHttpOpenRequest)?
  • 可疑文件系统操作迹象?
    • 包含常见系统路径 (如 C:\Windows\System32%TEMP%%APPDATA%)?
    • 包含文件操作命令/API (如 CreateFileWriteFileDeleteFilecopydel)?
  • 可疑注册表操作迹象?
    • 包含注册表路径 (特别是启动项 RunRunOnce 或服务相关键值)?
    • 包含注册表操作API (如 RegCreateKeyRegSetValue)?
  • 可疑进程/命令执行迹象?
    • 包含 cmd.exepowershell.exe (尤其带 -enc-nop-w hidden 参数)?
    • 包含 CreateProcessShellExecuteWinExec
    • 包含提权、添加用户、关闭防火墙等命令 (如 net usernetsh advfirewall)?
  • 代码混淆/加密迹象?
    • 大量无意义的随机字符串?
    • 包含 Base64/XOR 等编码特征?
    • 包含加壳工具特征字符串 (如 UPX, Themida, VMProtect)?
  • 其他可疑关键词?
    • 如 exploitpayloadhackkeyloggerbackdoor
    • 常见恶意软件家族名称或其特有字符串?

三、重点:PE文件结构检查 (如 .EXE, .DLL – 使用PE分析工具)

其他脚本类型、文档、等类型的文件分析起来较为容易,PE文件结构较为复杂,需要一定的PE分析知识。

快速分析的话,可以使用DIE工具进行PE文件分析,检查以下内容:
https://github.com/horsicq/Detect-It-Easy
类似工具还有很多,选择自己顺手的即可。

  • 导入函数 (Imports) 可疑? (程序想要做什么?)
    • 网络操作函数: (是否涉及网络通信、下载、上传?)
      • 例子:SocketConnectSendRecvWSASocketWSAStartupInternetOpenA/WInternetOpenUrlA/WHttpOpenRequestA/WHttpSendRequestA/WURLDownloadToFileA/WGetAddrInfoWDnsQuery_A/W
      • 关注点:常用于C2通信、下载后续恶意载荷、数据回传。
    • 文件/目录操作函数: (是否会创建、修改、删除文件?)
      • 例子:CreateFileA/WWriteFileReadFileDeleteFileA/WMoveFileA/WCopyFileA/WSetFileAttributesA/WGetTempPathA/W
      • 关注点:常用于释放恶意文件、修改系统文件、清除痕迹、窃取文档。
    • 进程注入/操作函数: (是否会操作其他进程、注入代码?)
      • 例子:CreateRemoteThreadWriteProcessMemoryReadProcessMemoryOpenProcessVirtualAllocExVirtualProtectExQueueUserAPCSetThreadContextResumeThread
      • 关注点:常用于代码注入以隐藏自身、在信任进程中执行恶意代码、反调试。
    • 注册表操作函数: (是否会修改注册表以实现持久化或更改配置?)
      • 例子:RegOpenKeyExA/WRegCreateKeyExA/WRegSetValueExA/WRegDeleteValueA/WRegQueryValueExA/W
      • 关注点:常用于设置自启动项、修改系统配置、存储恶意软件配置。
    • 键盘钩子/监控/窗口操作函数: (是否会记录键盘输入、监控用户行为?)
      • 例子:SetWindowsHookExA/W (特别是 WH_KEYBOARDWH_MOUSE), GetAsyncKeyStateGetKeyStateGetForegroundWindowFindWindowA/W
      • 关注点:常用于键盘记录、窃取敏感信息、针对特定应用的行为。
    • 反调试/虚拟机检测函数: (是否试图检测分析环境?)
      • 例子:IsDebuggerPresentCheckRemoteDebuggerPresentGetTickCountQueryPerformanceCounterOutputDebugStringA/WFindWindowA/W (查找调试器窗口名)
      • 关注点:恶意软件常使用这些函数来对抗分析,如果检测到调试器或虚拟机则可能改变行为或直接退出。
    • 加密/解密/哈希函数: (是否涉及数据加密或解密?)
      • 例子:CryptEncryptCryptDecryptCryptAcquireContextA/WCryptGenKeyCryptHashDataBCryptEncryptNCryptEncrypt
      • 关注点:勒索软件会加密文件;C2通信或自身模块可能使用加密来混淆。
    • 权限提升/令牌操作函数: (是否试图获取更高权限?)
      • 例子:OpenProcessTokenAdjustTokenPrivilegesLookupPrivilegeValueA/W
      • 关注点:用于提升自身权限以执行敏感操作。
    • 服务管理函数: (是否会创建或修改系统服务?)
      • 例子:OpenSCManagerA/WCreateServiceA/WStartServiceA/WControlServiceDeleteService
      • 关注点:常用于持久化,使恶意软件在系统启动时自动运行。
    • 动态库加载/过程地址获取函数: (是否在运行时加载功能?)
      • 例子:LoadLibraryA/WGetProcAddressLdrLoadDll
      • 关注点:虽然正常,但如果加载可疑DLL或大量使用 GetProcAddress (尤其配合解密后的函数名字符串),可能是为了隐藏导入表或实现模块化。
    • 资源操作函数: (是否会从自身资源中提取数据?)
      • 例子:FindResourceA/WLoadResourceLockResourceSizeofResource
      • 关注点:恶意软件可能将Payload、配置文件或其他恶意模块存储在资源中,并在运行时提取。
    • COM组件操作函数: (是否通过COM对象执行功能?)
      • 例子:CoInitializeExCoCreateInstanceOleInitialize
      • 关注点:一些恶意软件利用COM对象执行命令 (如WMI) 或进行浏览器劫持等。
    • 导入函数数量异常:
      • 极少: (如仅有几个kernel32.dll的函数) 强烈暗示样本被加壳(Packed)或是一个Shellcode加载器,真实功能被隐藏,需要脱壳或动态分析。
      • 极多且不相关: 有时是为了迷惑分析者,或者是一些特定框架自动生成的,但也可能不寻常。
  • PE节区 (Sections) 异常?
    • 节区名可疑 (如 .UPX0.rmnet, 或随机名)?
    • 存在可写且可执行 (WX) 的节区?
    • 节区熵值过高 (接近8.0,表明可能压缩/加密)?
  • 资源 (Resources) 可疑?
    • 包含其他PE文件、脚本或二进制数据?
    • 图标/版本信息与宣称功能不符或缺失?
  • 编译时间戳异常?(关注编译、活动时间可以做APT组织归因辅助)
    • 时间为未来或非常古老?
    • 与已知攻击活动时间吻合?

四、其他文件类型特定检查

  • 脚本文件 (PS1, VBS, JS, PY 等)?
    • 是否有明显代码混淆 (如长串无意义字符、Base64编码块)?
    • 是否包含 Invoke-Expression (IEX), evaldocument.write (针对JS) 等高危函数?
    • 是否有下载执行远程文件的代码?
  • Office 文档 (DOCX, XLSX, PPTX 等,特别是带 M 后缀的宏启用文档)?
    • 是否提示“启用内容”或“启用宏”?
    • (使用olevba等工具) 发现可疑宏代码?
    • 宏代码是否包含自动执行 (AutoOpenDocument_Open)?
    • 宏代码是否调用外部程序 (如 PowerShell) 或下载文件?
  • PDF 文件?
    • (使用pdf-parser.py等工具) 是否包含 JavaScript?
    • JavaScript 是否有可疑行为 (如启动动作 /Launch/URI 指向可疑链接)?
    • 是否利用已知PDF阅读器漏洞的迹象?

结论判断:

  • 多个检查项为“是”? (危险程度随“是”的数量增加)
  • 是否与当前流行的攻击手法特征吻合?
  • 直觉和经验判断是否可疑?
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容