windows样本分析之基础静态分析
字数 1327 2025-08-03 16:49:52

Windows样本分析之基础静态分析

目标

  1. 样本鉴定黑白(判断是否为恶意软件)
  2. 样本初步行为的判断
  3. 相关信息收集

原理

鉴黑白

特征码检测

  • 检测已知病毒:杀毒软件将分析过的病毒中的特征部分提取成相应特征码
    • 文件特征
    • 字符特征
    • 指令特征等

启发检测

  • 检测未知病毒:通过检测病毒运行过程中的API调用行为链

初步行为判断

  • 特征API:不同种类的病毒样本根据其特性总会调用一些特定的API函数

相关信息收集

  • 编译时间:判断样本的出现时间
  • 文件类型:命令行、GUI或其他类型
  • 网络行为:是否有网络连接特征
  • 关联文件:是否有其他相关文件
  • 壳情况:是否加壳或混淆

算法流程

根据常用逆向工具实现上述原理的检测:

鉴黑白

  1. 文件特征检测

    • 使用VirusTotal检测(通过SHA-1搜索)
    • 查看是否有厂商已进行黑白判断
  2. 字符特征检测

    • 使用strings/pestdio工具打印字符串
    • 根据特征字符串(如IP地址、敏感词句、API符号等)进行Google搜索
  3. 加壳/混淆判断

    • 使用PEID/DIE工具查看文件是否加壳
    • strings判断:如果字符串数量稀少、存在少量API符号(如LoadLibrary),需特别注意
  4. 链接检测

    • 运行时链接检测:恶意样本通常采用LoadLibrary进行运行时链接

样本初步行为判断

  • 使用pestdio查看导入表的API调用和字符串信息
  • 分析API调用链判断可能的行为

相关信息收集

  • 使用PEStudio查看文件头的时间戳
  • 使用PEStudio查看文件头的文件类型
  • 查看导入表里的API和String表中的网络特征
  • 查看String表中的文件字符串
  • 使用DIE/PEID查壳情况或分析string表和api的特征

实践过程(以Lab01-01.exe为例)

鉴黑白

  1. VT(virusTotal)扫描
    • 42/70的检出率,确认是病毒
    • 高检出率可减少后续分析工作量

样本初步行为判断

  1. 导入表分析

    • FindFirstFileA和FindNextFileA:可能进行文件遍历
    • CopyFile:文件复制操作
    • 排除勒索可能性(VT扫描结果无Ransom字段)
  2. 字符串表分析

    • 发现"C:*"和".exe"字段:可能在C盘遍历exe文件
    • 发现非系统DLL文件"Lab01-01.dll"
    • 发现警示语(破坏机器的提示)
    • 发现混淆DLL名称"kernel132.dll"(将字母l替换为数字1)

初步结论

  • 有文件遍历和复制操作
  • 存在可疑DLL文件并尝试隐藏(通过名称混淆)
  • 可能将DLL文件复制到特定位置并通过其他方式调用

相关信息收集

  1. 编译时间

    • 2010年,较老的样本
  2. 文件类型

    • 32位可执行文件
  3. 导入表和String表

    • 未发现网络特征
    • 字符串表中发现破坏性警告,但未发现相关API
    • 可能通过资源占用(如磁盘空间)进行破坏
  4. 壳信息

    • 查壳工具未发现加壳特征
    • 导入表函数和字符串数量正常
    • 未发现LoadLibrary等脱壳API,排除加壳行为

小结

  1. 通过静态分析确认样本为恶意软件
  2. 初步判断样本行为包括文件遍历、复制和隐藏DLL
  3. 收集了编译时间、文件类型等基本信息
  4. 需要进一步分析关联的DLL文件以全面了解样本行为

参考

[1] 恶意样本分析实战

Windows样本分析之基础静态分析 目标 样本鉴定黑白(判断是否为恶意软件) 样本初步行为的判断 相关信息收集 原理 鉴黑白 特征码检测 检测已知病毒:杀毒软件将分析过的病毒中的特征部分提取成相应特征码 文件特征 字符特征 指令特征等 启发检测 检测未知病毒:通过检测病毒运行过程中的API调用行为链 初步行为判断 特征API :不同种类的病毒样本根据其特性总会调用一些特定的API函数 相关信息收集 编译时间:判断样本的出现时间 文件类型:命令行、GUI或其他类型 网络行为:是否有网络连接特征 关联文件:是否有其他相关文件 壳情况:是否加壳或混淆 算法流程 根据常用逆向工具实现上述原理的检测: 鉴黑白 文件特征检测 使用VirusTotal检测(通过SHA-1搜索) 查看是否有厂商已进行黑白判断 字符特征检测 使用strings/pestdio工具打印字符串 根据特征字符串(如IP地址、敏感词句、API符号等)进行Google搜索 加壳/混淆判断 使用PEID/DIE工具查看文件是否加壳 strings判断:如果字符串数量稀少、存在少量API符号(如LoadLibrary),需特别注意 链接检测 运行时链接检测:恶意样本通常采用LoadLibrary进行运行时链接 样本初步行为判断 使用pestdio查看导入表的API调用和字符串信息 分析API调用链判断可能的行为 相关信息收集 使用PEStudio查看文件头的时间戳 使用PEStudio查看文件头的文件类型 查看导入表里的API和String表中的网络特征 查看String表中的文件字符串 使用DIE/PEID查壳情况或分析string表和api的特征 实践过程(以Lab01-01.exe为例) 鉴黑白 VT(virusTotal)扫描 42/70的检出率,确认是病毒 高检出率可减少后续分析工作量 样本初步行为判断 导入表分析 FindFirstFileA和FindNextFileA:可能进行文件遍历 CopyFile:文件复制操作 排除勒索可能性(VT扫描结果无Ransom字段) 字符串表分析 发现"C:\*"和".exe"字段:可能在C盘遍历exe文件 发现非系统DLL文件"Lab01-01.dll" 发现警示语(破坏机器的提示) 发现混淆DLL名称"kernel132.dll"(将字母l替换为数字1) 初步结论 : 有文件遍历和复制操作 存在可疑DLL文件并尝试隐藏(通过名称混淆) 可能将DLL文件复制到特定位置并通过其他方式调用 相关信息收集 编译时间 2010年,较老的样本 文件类型 32位可执行文件 导入表和String表 未发现网络特征 字符串表中发现破坏性警告,但未发现相关API 可能通过资源占用(如磁盘空间)进行破坏 壳信息 查壳工具未发现加壳特征 导入表函数和字符串数量正常 未发现LoadLibrary等脱壳API,排除加壳行为 小结 通过静态分析确认样本为恶意软件 初步判断样本行为包括文件遍历、复制和隐藏DLL 收集了编译时间、文件类型等基本信息 需要进一步分析关联的DLL文件以全面了解样本行为 参考 [ 1 ] 恶意样本分析实战