简介
许多病毒会以安装包的形式进行传播,一方面病毒作者可以修改合法软件的安装包实现捆绑安装,另一方面病毒可以将病毒本体隐藏在包内,避免被直接查杀。能够制作安装包的软件很多,本文将介绍几款主流软件及其制作的恶意软件的分析技巧。
1、MSI
许多软件的安装包都是.msi格式的,msi文件的能够像exe文件一样双击运行,但是查看msi文件的文件头却会发现,msi文件并不属于PE文件。
msi文件是Windows Installer的数据包,它采用了OLE(复合文件)结构,是一种压缩文件,里面包含安装(和卸载)程序所需的指令和数据。
双击MSI文件的时候,真正运行起来的是Msiexec.exe 程序。Msiexec.exe 程序是 Windows Installer 的一个组件,当双击MSI文件的时候,Msiexec.exe将读取msi文件并进行进一步处理,然后 Windows Installer 执行所有与安装有关的任务:包括将文件复制到硬盘、修改注册表、创建桌面快捷方式,必要时显示提示对话框以便用户输入安装需要的信息等。
msi文件分析的关键是病毒本体的提取。有很多软件可以制作msi文件,这些软件制作出的msi文件在“数据包”组合中存在一些差别,导致了我们需要采取不同的方式提取病毒本体。
msiexec或lessmsi提取
首先说一种标准的msi文件,使用7z工具打开msi我呢见,就能看到类似PE节结构的数据:
但是7z解析出来的数据里并不包含病毒主体,msi中还有很多数据没有被解析出来,我们需要借助专用的解析工具——lessmsi。
lessmsi的使用非常简单,你只需要把msi文件拖进lessmsi就可以了:
如果你懒得下载lessmsi,你也可以使用msiexec,运行如下命令提取文件:
msiexec /a “xxx.msi” /qb TARGETDIR=“xxx_dir”
提取出的文件:
还有一种msi文件,可以称之为变形msi文件,使用7z工具打开msi文件,这次我们看到的结构是完全不同的数据:
其中命名Binary._*的这个数据是一个PE文件,也就是病毒主体了。
2、NISI
NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。
NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的。因此,NSIS安装包的分析过程中,首先要分析的就是NSIS脚本。
这次我们使用的示例样本是银钩团伙的样本(MD5:6b4384b706d7fa925bdceeb5b21c855c)。
分析NSIS安装包文件需要使用定制的7z(下载地址:https://github.com/myfreeer/7z-build-nsis )进行解压:
其中的[NSIS].nsi文件就是NSIS脚本文件,PE病毒就被存放在TEMP和PLUGINSDIR文件夹内。
NSIS脚本的语法还是比较简单的,分析过程中需要重点关注的是区段(Section)和一些回调函数:
NSIS中的区段,就是安装过程中的脚本。而回调函数则是在某些动作触发时会自动执行的函数过程,我们需要重点关注的是如下回调函数:
在本样本中,就是在.onInit回调函数值执行了PE程序:
3、winrar
sfx自解压
winrar有一个强大的功能——制作自解压程序。
你可以通过如下操作创建自解压程序:
通过高级设置,你可以伪造程序的图标,选择隐藏执行,选择解压执行的路径,设置在解压过程中执行的cmd命令,每一个功能都受到病毒作者的称赞:
一些病毒还设置了解压密码,通过社会工程学的方式进行攻击,增加安全研究员的分析难度。
在没有设置解压密码的情况下,此类sfx自解压程序的分析很简单,你只需要用winrar打开就能看到病毒本体以及程序在解压过程中会执行的命令:
CVE-2018-20250
提到了winrar,就不得不说前段时间很火的winrar漏洞CVE-2018-20250。本段分析的内容来自于https://www.freebuf.com/articles/system/198858.html。
当受害者通过WinRAR直接解压该文件便会触发该漏洞,从而释放内置的恶意程序(startups.exe)到用户windows系统的启动目录内,从而使得下次重启系统的时候该恶意程序能自动启动运行。
4、Inno Setup
Inno Setup 是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本。
通过分析程序的字符串特征,很容易判断出程序是不是Inno Setup制作的安装包程序:
可以使用InnoExtractor工具 (下载:http://www.havysoft.cl/download/IE_Install.zip)
提取Inno安装包程序中的病毒主体:
5、Autolt
AutoIt是一种脚本语言,能够完成任何基于 Windows 或 DOS 的简单任务。它最初被设计用来自动完成安装那些其它方法不能自动安装的软件。目前主流的版本为v3版本,又叫antoit3,简称AU3。
AU3功能十分强大,不仅可以模拟鼠标、键盘各种事件,提供了对大多数win32 API的封装,还可以调用offic的VBA、宏等命令。AutoIt功能越强大,病毒作者越喜爱,其用途早已脱离了自动安装,已经变成了一门功能完备的脚本了。
AutoIt类型的病毒有两种攻击方式,一种是直接使用脚本进行攻击,另一种是使用安装包——独立可执行文件进行攻击。攻击脚本可以是AU3源码脚本,后缀一般是au3,也可以是编译后的脚本,后缀一般是a3x。
脚本
使用脚本攻击,恶意攻击负载至少需要两个文件:一个是脚本,另一个是合法的AutoIt解释器。
在图中, WinddowsUpdater.exe就是合法的AutoIt解释器,只是由病毒作者重命名以隐藏可执行文件的真实身份。WinddowsUpdater.zip,它实际上不是压缩存档,而是已编译的AutoIt脚本。脚本的文件扩展名无关紧要,可以设置为任何内容。该特定脚本的内容如图所示,是a3x脚本。
独立可执行文件
使用独立可执行文件,恶意攻击负载将显示为单个.exe文件,它实际上是将a3x脚本作为资源嵌入autoit解释器中。老版本的autoit将a3x以附加数据的形式直接放在PE数据后面,而新版本的autoit将a3x放在资源段中。
可以使用PeStudio分析exe文件,将很清晰的看到a3x数据。如下两图所示,不同版本a3x嵌入的位置不同:
反编译
AutoIt的反编译,主要有AutoDec和Exe2Aut这两款工具,两款工具各有千秋。
AutoDec能够既能对exe进行反编译,又能单独对a3x文件进行反编译。其反编译后会生成au3文件,方便查阅。但是其不能反编译AutoIt3.3.10.0及之后版本的程序。
反编译结果:
Exe2Aut仅能反编译exe文件,不能反编译a3x文件,但是它支持最新版本AutoIt3程序的反编译。