通过分析Ekko项目了解内存加密过程,这对对抗内存扫描来说很重要。
概述
Edr会扫描程序的内存空间,检测是否存在恶意软件,这种检测恶意软件的方式,应该和静态检测没什么区别,只不过一个扫描的对象是硬盘,一个是内存,应该都是基于特征码来检测的,为了绕过这种扫描我们可以对内存中的beacon进行加密,但这样的话就会出现问题,因为beacon被加密后是无法正常的运行的,因为代码被加密了。
#
我们提到过自己是不可以加密自己的,但是Ekko项目实现了自己加密自己的内存,这对对抗内存扫描很有帮助。
API理解
CreateEvent()
创建或打开一个事件对象
SetEvent()
设置对象状态已通知状态
CreateTimerQueue()
创建计时器队列
CreateTimerQueueTimer()
创建计时器队列计时器
BOOL CreateTimerQueueTimer(
[out] PHANDLE phNewTimer,
[in, optional] HANDLE TimerQueue,
[in] WAITORTIMERCALLBACK Callback,
[in, optional] PVOID Parameter,
[in] DWORD DueTime,
[in] DWORD Period,
[in] ULONG Flags
);
phNewTimer
接受计时器队列计时器的缓冲区
TimeQueue
计时器队列句柄
CallBack
回调函数,计时器过期时要执行的函数
Parameter
回调函数的参数
DueTime
过多长时间向计时器发信号