0x01 漏洞概述
Windows Defender是Windows自带的防护软件,其在对可执行文件进行检测时采用模拟执行的策略进行黑白判定,模拟执行分为两个部分:指令模拟和运行环境模拟。其中指令模拟会将程序的响应平台指令(arm/mips/x86等)转换成Defender自己的中间指令,然后运行相应的中间指令来模拟执行该文件;而运行环境模拟则是对内存系统、文件系统、系统API、DLL等进行模拟。
Defender在进行指令模拟的时候遇到带壳的可执行文件会使用内置的一些方法尝试脱壳,目前支持脱壳的方式有Upxw64/Upxw/WExtract/NSPacker/Shrinker/PECompact2/Area51/Crypter1337/Aspack/PKLite/SfxCab/Asprotect 等,这次漏洞所在的就是Asprotect壳的脱壳过程中,当攻击者构造一个带有特殊PE头的可执行文件,Windows Defender检测时就会出发缓冲区溢出漏洞进而导致任意代码执行。
0x02 影响版本
-Microsoft:Microsoft Defender:Windows 8.1 for 32-bit systems
-Microsoft:Microsoft Defender:Windows 7 for x64-based Systems Service Pack 1
-Microsoft:Microsoft Defender:Windows 7 for 32-bit Systems Service Pack 1
-Microsoft:Microsoft Defender:Windows Server 2016 (Server Core installation)
-Microsoft:Microsoft Defender:Windows Server 2016
-Microsoft:Mic