Jektor:一款功用强盛的Windows用户情势Shellcode执行测试器材

北京云巢动脉科技有限公司

你的位置:北京云巢动脉科技有限公司 > 工程案例 > Jektor:一款功用强盛的Windows用户情势Shellcode执行测试器材
Jektor:一款功用强盛的Windows用户情势Shellcode执行测试器材
发布日期:2022-08-07 00:57    点击次数:190

对付Jektor

Jektor是一款功用强盛的Windows用户情势Shellcode执行测试器材,该器材可以或许协助泛博研究人员相识和测试恶意软件所应用的种种差别技能。

该器材首要针对的是Shellcode注入技能,可以或许演示恶意软件在目的体系上执行Shellcode时所应用的技能编制,个中蕴含:

静态剖析API函数以防止IAT包孕 应用未记载的NT Windows API函数 经由过程CreateThread执行外埠Shellcode 经由过程CreateRemoteThread执行近程Shellcode 经由过程QueueUserAPC支持外埠Shellcode注入 经由过程EnumTimeFormatsEx支持外埠Shellcode注入 经由过程CreateFiber举行外埠Shellcode注入

反病毒检测

在应用静态函数地点剖析时,将一组NOP预挂起到Msfvenom异或加密Shellcode Payload后,可以或许绕过Windows Defender。

IAT导入规避

Jektor行使了静态函数地点剖析,并应用了LoadLibrary和GetProcessAddress来添加了静态阐发的难度。

除此之外,良多恶意软件也不会间接调用近似VirtualAlloc这样的首要函数,这也会使得调试和经由过程断点转储Shellcode变得更为费力。

器材下载

泛博研究人员可应用如下敕令将该名目源码克隆至外埠:

git clone https://github.com/FULLSHADE/Jektor.git 
经由过程CreateThread完成外埠Shellcode执行

在Windows上,当你想要在今后过程之中创立一个新的线程,需求调用CreateThread函数,这是在一个过程之中执行恶意代码或Shellcode时会应用的一个最根抵的技能了。此时,我们只需求为Shellcode分派一个内存地区,尔后将Shellcode移动到分派的内存地区中,工程案例并应用指向该地区地点的指针来调用CreateThread即可。调用CreateThread时,需通报lpStartAddress 参数,而该参数是一个指向由新创立线程所执行的应用顺序定义函数的指针。

经由过程EnumTimeFormatsEx完成外埠Shellcode执行

EnumTimeFormatsEx是一个Windows API函数,可以或许罗列供应的时光名目,兴许用于执行Shellcode,因为第一个参数可以或许领受用户定义的指针:

BOOL EnumTimeFormatsEx(    [in]           TIMEFMT_ENUMPROCEX lpTimeFmtEnumProcEx,    [in, optional] LPCWSTR            lpLocaleName,    [in]           DWORD              dwFlags,    [in]           LPARAM             lParam  ); 
应用VirtualAlloc为Shellcode Payload分派外埠内存。 应用memcpy/RtlCopyMemory将Shellcode Payload移动到新分派的内存地区。 将Shellcode作为EnumTimeFormatsEx的lpTimeFmtEnumProcEx参数来通报,并触发Shellcode。 经由过程QueueUserAPC完成外埠Shellcode执行 应用VirtualAlloc为Shellcode分派内存缓冲区。 应用GetCurrentProcess取得今后过程的句柄。 应用WriteProcessMemory向新分派的内存地区写入Shellcode Payload。 应用GetCurrentThread取得今后列程的句柄。 将分派的内存地区以pfnAPC参数的情势供应给QueueUserAPC,并将新创立的APC顺序插手行列。 经由过程调用未记载的NtTestAlert函数触发Shellcode Payload,该函数将覆灭今后列程的APC行列。 经由过程敞开今后列程和今后过程的句柄来执行清理使命。

名目地点

Jektor:【GitHub传递门】