一个可以免杀国内主流杀软的恶意样本分析
字数 1704
更新时间 2025-08-20 18:17:07

免杀恶意样本分析与技术解析

1. 免杀技术概述

免杀技术(Anti-Virus Evasion)是指恶意软件通过各种手段绕过杀毒软件的检测机制。本文分析的样本能够绕过国内主流杀毒软件的检测,主要采用了以下几种技术:

  1. Shellcode加密与动态解密
  2. 非标准内存执行技术
  3. 反调试与反分析手段
  4. 合法API滥用

2. Shellcode处理技术

2.1 Shellcode加密与解密

样本中的Shellcode采用了加密存储,运行时动态解密的策略:

  1. 加密存储:原始Shellcode在静态文件中被加密,无法通过特征码检测
  2. 运行时解密:程序执行时在内存中解密Shellcode,避免静态分析

2.2 栈上Shellcode执行问题

用户destroylq提出的关键问题:解密的Shellcode位于栈上,而现代操作系统默认栈区不可执行(Data Execution Prevention, DEP),样本如何解决?

解决方案包括:

  1. VirtualProtect/VirtualAlloc修改内存属性

    • 使用VirtualProtect将栈内存修改为可执行(PAGE_EXECUTE_READWRITE)
    • 或者使用VirtualAlloc分配新的可执行内存并复制Shellcode
  2. Return-Oriented Programming(ROP)

    • 通过精心构造的返回地址链实现代码执行
    • 不直接执行栈上代码,而是利用现有代码片段(gadgets)
  3. 线程本地存储(TLS)回调

    • 在早期执行阶段修改内存权限

3. 非直接函数调用技术

如用户cxaqhq提到的"相当于没有直接调用函数执行",样本采用了间接执行技术:

  1. 回调函数滥用

    • 使用EnumWindowsEnumChildWindows等API的回调机制执行Shellcode
    • 将Shellcode地址作为回调函数传入
  2. 异步过程调用(APC)

    • 使用QueueUserAPC将Shellcode注入到线程上下文中
  3. 进程镂空(Process Hollowing)

    • 创建合法进程挂起状态
    • 替换其内存内容为恶意代码

4. 地址随机化问题

针对用户cxaqhq关于地址随机化的问题:

4.1 Windows地址空间布局随机化(ASLR)

Windows系统也实现了ASLR技术:

  1. DLL随机化:系统DLL加载基址在每次启动时随机化
  2. 堆栈随机化:线程栈和堆的基址随机化
  3. PEB/TEB随机化:进程环境块和线程环境块位置随机化

4.2 绕过ASLR的技术

  1. 信息泄露:利用漏洞泄露内存地址信息
  2. 非ASLR模块:攻击未启用ASLR的第三方DLL
  3. 部分覆盖:只覆盖地址的低位字节
  4. 堆喷射(Heap Spraying):大量分配内存增加预测成功率

5. 反分析技术

样本中可能包含的反分析技术:

  1. 时间检查

    • 检测调试器单步执行的时间差
    • 检测虚拟机环境的指令执行速度
  2. API断点检测

    • 检查关键API是否被下断点
  3. 沙箱检测

    • 检查系统内存、CPU核心数等特征
    • 检测是否存在分析工具进程

6. 防御建议

针对此类免杀样本的防御措施:

  1. 启用完整的内存保护

    • DEP(数据执行保护)
    • ASLR(地址空间随机化)
    • Control Flow Guard(控制流防护)
  2. 行为监控

    • 监控异常的内存权限修改
    • 检测可疑的进程间通信
  3. 应用白名单

    • 只允许授权程序执行
  4. 深度检测

    • 使用沙箱进行动态行为分析
    • 结合静态和动态分析技术

7. 技术验证与复现

如需验证这些技术,可以按以下步骤:

  1. 使用C/C++编写测试程序
  2. 实现Shellcode加密/解密功能
  3. 使用VirtualProtect修改内存属性:
    DWORD oldProtect;
    VirtualProtect(shellcodeAddr, shellcodeSize, PAGE_EXECUTE_READWRITE, &oldProtect);
    
  4. 通过函数指针或汇编跳转执行Shellcode

注意:此类技术仅用于安全研究,实际使用需遵守法律法规。

8. 总结

该免杀样本综合运用了多种高级技术:

  1. 加密混淆核心恶意代码
  2. 动态内存权限管理绕过DEP
  3. 间接执行技术避免直接调用
  4. 针对ASLR的适应性设计

防御此类攻击需要多层次的安全防护,不能仅依赖传统的特征码检测。

相似文章
相似文章
 全屏