基于回调和PEB的木马逆向分析

💡 原文中文,约2700字,阅读约需7分钟。
📝

内容提要

本文分析了一种恶意DLL加载技术,利用合法软件执行恶意代码。通过回调机制和内存保护修改,恶意代码得以运行。研究发现,恶意DLL通过篡改加载顺序实现木马功能,并采用反沙箱检测。最终,利用回调函数触发恶意代码执行,展示了API哈希匹配和内存管理的复杂性。

🎯

关键要点

  • 本文分析了一种恶意DLL加载技术,利用合法软件执行恶意代码。
  • 恶意代码通过回调机制和内存保护修改得以运行。
  • 恶意DLL通过篡改加载顺序实现木马功能,并采用反沙箱检测。
  • 使用VirtualAllocExNuma分配内存空间,使用VirtualProtect修改内存保护为PAGE_EXECUTE_READWRITE。
  • 通过API哈希匹配技术判断对应的函数,shellcode加密为IPv4地址。
  • 分析发现drstat.dll是恶意DLL,程序通过篡改DLL加载顺序加载恶意代码。
  • 使用动态和静态分析工具(如IDA和xdbg)分析DLL文件。
  • 程序通过LoadLibrary和GetProcAddress函数载入相关函数,规避检测。
  • shellcode经过加密存储,需解密后才能执行,使用异或解密方法。
  • 最终通过EnumCalendarInfoA函数注册回调函数,触发恶意代码执行。
  • 回调函数遍历日历系统,触发恶意代码的执行。
  • 本文为独立观点,未经授权禁止转载。

延伸问答

恶意DLL加载技术是如何工作的?

恶意DLL加载技术通过合法软件加载恶意代码,利用回调机制和内存保护修改来执行恶意代码。

如何通过回调函数触发恶意代码的执行?

通过使用EnumCalendarInfoA函数注册回调函数,回调函数遍历日历系统并触发恶意代码执行。

恶意DLL是如何实现反沙箱检测的?

恶意DLL使用GetTickCount和BeeP等函数进行反沙箱检测,以判断是否在沙箱环境中运行。

shellcode是如何加密和解密的?

shellcode经过加密存储,使用异或解密方法与0x6f进行解密,最终得到可执行的shellcode。

如何分析恶意DLL文件?

可以使用动态和静态分析工具,如IDA和xdbg,分析DLL文件的导出表和函数调用。

恶意DLL是如何篡改加载顺序的?

恶意DLL通过修改程序的导入表,改变DLL的加载顺序,从而实现加载恶意代码。

➡️

继续阅读