## 攻击面
Outlook 要播放的声音文件是波形音频文件格式( WAV)。它通过接收声音文件路径的PlaySound函数播放。PlaySound将加载文件、解析它,然后调用soundOpen,后者将调用不同的波形函数,例如waveOutOpen。
WAV 文件充当多个音频编解码器的容器(或包装器)。编解码器是一种对数据流(如图像、视频或音频)进行编码或解码的程序或代码。通常,编解码器将采用脉冲编码调制(PCM) 编码,这是一种表示采样模拟信号的简单方法。
我们可以在三个主要攻击面上搜索漏洞:
- WAV 格式解析
- 音频压缩管理器
- 不同的音频编解码器
WAV 格式解析
WAV 格式解析是在 winmm.dll(实现 Windows 多媒体 API 的库)中的函数soundInitWavHdr内实现的。那里呈现的攻击面并不大,而且似乎已经过审查;我们没有在那里发现任何漏洞。
什么是音频压缩管理器?
音频压缩管理器 (ACM) 是负责处理 WAV 文件中使用的编解码器不使用简单 PCM 编码的情况的代码,因此需要由自定义解码器进行解码。这些解码器在扩展名为 .acm 的文件中实现。一个常见示例是 MP3 编解码器,它在 l3codeca.acm 中实现。每个编解码器都由一个驱动程序处理(它与内核模式驱动程序不同,但功能相似),该驱动程序通过 ACM 注册。
每当需要转换时,例如将 MP3 转换为 PCM 或反之,ACM 就会开始工作并管理此转换。当我们使用未使用 PCM 的 WAV 文件时,将查询 ACM 以查看文件本身中指定的编解码器是否存在并且可以处理转换(图 1)。
Outlook 要播放的声音文件是波形音频文件格式( WAV)。它通过接收声音文件路径的PlaySound函数播放。PlaySound将加载文件、解析它,然后调用soundOpen,后者将调用不同的波形函数,例如waveOutOpen。
WAV 文件充当多个音频编解码器的容器(或包装器)。编解码器是一种对数据流(如图像、视频或音频)进行编码或解码的程序或代码。通常,编解码器将采用脉冲编码调制(PCM) 编码,这是一种表示采样模拟信号的简单方法。
我们可以在三个主要攻击面上搜索漏洞:
- WAV 格式解析
- 音频压缩管理器
- 不同的音频编解码器
WAV 格式解析
WAV 格式解析是在 winmm.dll(实现 Windows 多媒体 API 的库)中的函数soundInitWavHdr内实现的。那里呈现的攻击面并不大,而且似乎已经过审查;我们没有在那里发现任何漏洞。
什么是音频压缩管理器?
音频压缩管理器 (ACM) 是负责处理 WAV 文件中使用的编解码器不使用简单 PCM 编码的情况的代码,因此需要由自定义解码器进行解码。这些解码器在扩展名为 .acm 的文件中实现。一个常见示例是 MP3 编解码器,它在 l3codeca.acm 中实现。每个编解码器都由一个驱动程序处理(它与内核模式驱动程序不同,但功能相似),该驱动程序通过 ACM 注册。
每当需要转换时,例如将 MP3 转换为 PCM 或反之,ACM 就会开始工作并管理此转换。当我们使用未使用 PCM 的 WAV 文件时,将查询 ACM 以查看文件本身中指定的编解码器是否存在并且可以处理转换(图 1)。
介绍
利用我们在本博客系列第 1 部分中描述的漏洞,我们再次能够在目标上播放自定义声音文件,从而滥用 Outlook 的提醒声音功能。为了利用此功能并将其转变为完整的远程代码执行 (RCE),我们开始在 Windows 上搜索中的漏洞。## 攻击面
Outlook 要播放的声音文件是波形音频文件格式( WAV)。它通过接收声音文件路径的PlaySound函数播放。PlaySound将加载文件、解析它,然后调用soundOpen,后者将调用不同的波形函数,例如waveOutOpen。
WAV 文件充当多个音频编解码器的容器(或包装器)。编解码器是一种对数据流(如图像、视频或音频)进行编码或解码的程序或代码。通常,编解码器将采用脉冲编码调制(PCM) 编码,这是一种表示采样模拟信号的简单