
1) 【一句话结论】在Windows环境下,可通过内核驱动中的缓冲区溢出等漏洞,利用ROP链执行恶意代码提权后,修改360安全卫士内核监控驱动中的回调函数指针(使监控逻辑失效),绕过实时监控;防御需通过内核补丁修复漏洞(消除利用条件)和驱动签名验证(确保加载驱动为可信来源)。
2) 【原理/概念讲解】
老师口吻解释关键概念:
CreateProcess、WriteFile等),通过回调函数监控用户行为(进程创建、文件操作等)。3) 【对比与适用场景】
| 对比维度 | 攻击路径(内核漏洞利用) | 防御措施(内核补丁+驱动签名) |
|---|---|---|
| 定义 | 利用内核驱动漏洞提权后修改监控逻辑 | 修复内核漏洞并验证驱动合法性 |
| 特性 | 需内核权限,可绕过用户层监控 | 需系统更新,限制恶意驱动加载 |
| 使用场景 | 漏洞存在时攻击者提权绕过监控 | 系统维护,防止未授权驱动加载 |
| 注意点 | 漏洞利用需精确控制内存访问避免蓝屏 | 驱动签名需权威机构(如微软)验证 |
4) 【示例】
假设360安全卫士内核驱动“360SafeGuard.sys”存在缓冲区溢出漏洞(地址0x12345678处,缓冲区大小16字节,返回地址在栈顶)。攻击步骤:
a. 内存布局分析:用WinDbg加载驱动,查看栈布局,确定返回地址偏移(如偏移8字节,栈为小端序)。
b. ROP链构建:找到内核中的Gadgets(如“add esp, 4; ret”调整栈指针、“mov eax, [esp+4]; ret”获取参数),构建链跳转到恶意代码。
c. 修改回调函数指针:通过内核API(如NtQuerySystemInformation)获取驱动模块基址,找到回调函数指针结构(假设偏移0x1234),修改为NULL(使监控逻辑失效)。
伪代码:
void exploit() {
// 1. 触发缓冲区溢出,进入内核代码
// 2. 构建ROP链跳转恶意函数
// 3. 获取360监控驱动基址
void* driver_base = get_driver_base("360SafeGuard.sys");
// 4. 修改回调函数指针
void* callback_ptr = (void*)(driver_base + 0x1234);
*callback_ptr = NULL;
// 5. 执行敏感操作
execute_sensitive_action();
}
5) 【面试口播版答案】
面试官您好,针对如何在Windows下利用内核漏洞攻击360安全卫士的实时监控,核心思路是通过内核驱动漏洞提权后修改监控逻辑。具体来说,攻击路径是:首先,发现360安全卫士的内核驱动(如“360SafeGuard.sys”)存在缓冲区溢出漏洞,利用漏洞执行任意内核代码;然后,通过ROP链构建跳转到恶意代码,获取内核权限;接着,修改360监控驱动中用于处理系统调用的回调函数指针(比如将监控回调函数的地址改为NULL),使监控逻辑失效;最后,执行提权后的敏感操作(如安装后门)。防御措施主要是两个:一是内核补丁,微软通过Windows Update修复内核漏洞,消除漏洞利用条件;二是驱动签名验证,系统在加载驱动前会验证数字签名(如微软WHQL测试后的签名),确保驱动来自可信来源,防止恶意驱动加载。这样就能理解攻击路径和防御措施了。
6) 【追问清单】
CreateProcess)、文件操作(WriteFile、ReadFile)、注册表操作等系统调用,通过内核回调函数监控用户行为。NtQuerySystemInformation获取驱动列表,或通过内核符号表查询模块信息)获取模块基址。7) 【常见坑/雷区】