IExpress是Windows 2000和更高版本的操作系统的组件,用于从一组文件中创建自解压缩程序包。此类软件包可用于安装软件。
IExpress(IEXPRESS.EXE
)可用于将自包含的安装程序包(基于INF的安装可执行文件)分发到多台本地或远程Windows计算机。它使用提供的前端界面(IExpress向导)或自定义的自我提取指令(SED)文件创建自解压缩的可执行文件(.EXE)或压缩的Cabinet(.CAB)文件。 可以使用任何纯文本/ ASCII编辑器(例如Notepad)修改SED文件。由IExpress创建的所有自解压缩文件均使用CAB压缩算法,使用MakeCab(MAKECAB.EXE
)工具压缩 ,并使用WExtract(WEXTRACT.EXE
)工具提取。 IEXPRESS.EXE
位于WindowsSYSTEM32
的32位和64位安装文件夹中。可以通过手动导航到相应目录并打开可执行文件(IExpress.exe)或在“开始”菜单的“运行”窗口中键入IExpress来启动前端界面(IExpress向导)。也可以从命令行(Windows命令提示符或批处理文件)中使用它来创建自定义安装程序包,这些程序包将会自动操作:
IEXPRESS /N drive_letter:\directory_name\file_name.SED
IExpress向导界面指导用户完成创建自解压程序包的过程。它询问程序包应该做什么,提取文件然后运行程序,或者仅提取文件。然后,它允许用户为程序包指定标题,添加确认提示,添加最终用户必须接受以允许提取的许可协议,选择要归档的文件,为进度窗口设置显示选项,以及最后指定要在完成时显示的消息。
如果选择了创建归档文件并运行程序的选项,则将有一个附加步骤,提示用户选择要在提取时运行的程序。
IExpress将根据操作系统类型(32或64位)创建相应的自解压缩存档,而且64位将无法在32位计算机上运行解压缩。
使用IExpress创建的自解压程序包具有(固有的)漏洞,由于处理安装命令和命令行处理的方式,它们允许任意代码的执行。 此外,由于Windows 用户帐户控制处理安装程序的方式,这些漏洞允许特权提升。
更具体地说,此漏洞有两个版本:最明显的是/c:
开关告诉软件包在提取的目录中运行任意命令;另一个是该目录对于任何普通用户都是可预测的和可写的,因此msiexec.exe
可以用攻击有效载荷代替常用命令。 后者已由Microsoft在MS14-049中修复,但是仅通过弃用IExpress的策略解决了前者。 此外,IExpress还可能存在DLL劫持漏洞。