原创干货 | 【恶意代码分析技巧】07-exe_自动安装

  • A+
所属分类:逆向工程

1.自动安装的介绍

许多病毒会以安装包的形式进行传播,一方面病毒作者可以修改合法软件的安装包实现捆绑安装,另一方面病毒可以将病毒本体隐藏在包内,避免被直接查杀。能够制作安装包的软件很多,本文将介绍几款主流软件及其制作的恶意软件的分析技巧。

2.MSI

许多软件的安装包都是.msi格式的,msi文件的能够像exe文件一样双击运行,但是查看msi文件的文件头却会发现,msi文件并不属于PE文件。

图片1.png
msi文件是Windows Installer的数据包,它采用了OLE(复合文件)结构,是一种压缩文件,里面包含安装(和卸载)程序所需的指令和数据。
双击MSI文件的时候,真正运行起来的是Msiexec.exe 程序。Msiexec.exe 程序是 Windows Installer 的一个组件,当双击MSI文件的时候,Msiexec.exe将读取msi文件并进行进一步处理,然后 Windows Installer 执行所有与安装有关的任务:包括将文件复制到硬盘、修改注册表、创建桌面快捷方式,必要时显示提示对话框以便用户输入安装需要的信息等。
msi文件分析的关键是病毒本体的提取。有很多软件可以制作msi文件,这些软件制作出的msi文件在“数据包”组合中存在一些差别,导致了我们需要采取不同的方式提取病毒本体。

2.1.msiexec或lessmsi提取

第一类msi文件,笔者称之为标准的msi文件。接下来笔者以python-2.4.3.msi(md5:ab946459d7cfba4a8500f9ff8d35cc97)文件为例进行分析。
使用7z工具打开msi文件,就能看到类似PE节结构的数据:

图片2.png
但是7z解析出来的数据里并不包含病毒主体,msi中还有很多数据没有被解析出来,我们需要借助专用的解析工具——lessmsi。
lessmsi的使用非常简单,你只需要把msi文件拖进lessmsi就可以了:

图片3.png
如果你懒得下载lessmsi,你也可以使用msiexec,运行如下命令提取文件:
msiexec /a "xxx.msi" /qb TARGETDIR="xxx_dir"

图片4.png
提取出的文件:

图片5.png

2.2.7z提取

现在我们来看一下另一类msi文件,笔者称之为变形的msi文件,笔者以FlawedAmmyyRAT(md5:7e40f92a9e549b7652a0c2a18a7cb3e3)样本为例进行分析。
同样使用7z工具打开msi文件,这次我们看到的却是结构完全不一样的数据:

图片6.png
其中名称为“Binary._*”的这段数据是一个PE文件,也就是病毒主体,我们只要把它解压出来进一步分析就行了。

3.NSIS

NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。
NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的。因此,NSIS安装包的分析过程中,首先要分析的就是NSIS脚本。
这次我们使用的示例样本是银钩团伙的样本(MD5:6b4384b706d7fa925bdceeb5b21c855c)。
分析NSIS安装包文件需要使用定制的7z(下载地址:https://github.com/myfreeer/7z-build-nsis )进行解压:

图片 159.png
其中的[NSIS].nsi文件就是NSIS脚本文件,PE病毒就被存放在$TEMP和$PLUGINSDIR文件夹内。
NSIS脚本的语法还是比较简单的,分析过程中需要重点关注的是区段(Section)和一些回调函数:

图片 160.png
NSIS中的区段,就是安装过程中的脚本。而回调函数则是在某些动作触发时会自动执行的函数过程,我们需要重点关注的是如下回调函数:
|安装过程回调函数|卸载过程回调函数|
|-|-|
|.onGUIInit|un.onGUIInit|
|.onInit|un.onInit|
|.onInstFailed|un.onUninstFailed|
|.onInstSuccess|un.onUninstSuccess|
|.onGUIEnd|un.onGUIEnd|
|.onMouseOverSection|un.onRebootFailed|
|.onRebootFailed|un.onUserAbort|
|.onSelChange|-|
|.onUserAbort|-|
|.onVerifyInstDir|-|

在本样本中,就是在.onInit回调函数值执行了PE程序:

图片 170.png

4.winrar

winrar大家一定都很熟悉,一款强大的压缩包管理工具,许多病毒也开始借助它进行传播。

4.1.sfx自解压

winrar有一个强大的功能——制作自解压程序。
你可以通过如下操作创建自解压程序:

图片 152.png
通过高级设置,你可以伪造程序的图标,选择隐藏执行,选择解压执行的路径,设置在解压过程中执行的cmd命令,每一个功能都受到病毒作者的称赞:

图片 156.png
一些病毒还设置了解压密码,通过社会工程学的方式进行攻击,增加安全研究员的分析难度。
在没有设置解压密码的情况下,此类sfx自解压程序的分析很简单,你只需要用winrar打开就能看到病毒本体以及程序在解压过程中会执行的命令:

图片 171.png

4.2.CVE-2018-20250

本节内容并不属于自动安装的内容,但既然提到了winrar,就不得不说前段时间很火的winrar漏洞CVE-2018-20250。本段分析的内容来自于https://www.freebuf.com/articles/system/198858.html。

图片 157.png

图片 158.png
当受害者通过WinRAR直接解压该文件便会触发该漏洞,从而释放内置的恶意程序(startups.exe)到用户windows系统的启动目录内,从而使得下次重启系统的时候该恶意程序能自动启动运行。

5.Inno Setup

Inno Setup 是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本。
通过分析程序的字符串特征,很容易判断出程序是不是Inno Setup制作的安装包程序:

图片 184.png
可以使用InnoExtractor工具 (下载:http://www.havysoft.cl/download/IE_Install.zip)
提取Inno安装包程序中的病毒主体:

图片 164.png

6.AutoIt

AutoIt是一种脚本语言,能够完成任何基于 Windows 或 DOS 的简单任务。它最初被设计用来自动完成安装那些其它方法不能自动安装的软件。目前主流的版本为v3版本,又叫antoit3,简称AU3。
AU3功能十分强大,不仅可以模拟鼠标、键盘各种事件,提供了对大多数win32 API的封装,还可以调用offic的VBA、宏等命令。AutoIt功能越强大,病毒作者越喜爱,其用途早已脱离了自动安装,已经变成了一门功能完备的脚本了。
AutoIt类型的病毒有两种攻击方式,一种是直接使用脚本进行攻击,另一种是使用安装包——独立可执行文件进行攻击。攻击脚本可以是AU3源码脚本,后缀一般是au3,也可以是编译后的脚本,后缀一般是a3x。

图片 186.png

6.1.脚本

使用脚本攻击,恶意攻击负载至少需要两个文件:一个是脚本,另一个是合法的AutoIt解释器。

图片 139.png
在图中,  WinddowsUpdater.exe就是合法的AutoIt解释器,只是由病毒作者重命名以隐藏可执行文件的真实身份。WinddowsUpdater.zip,它实际上不是压缩存档,而是已编译的AutoIt脚本。脚本的文件扩展名无关紧要,可以设置为任何内容。该特定脚本的内容如图所示,是a3x脚本。

图片 142.png

6.2.独立可执行文件

使用独立可执行文件,恶意攻击负载将显示为单个.exe文件,它实际上是将a3x脚本作为资源嵌入autoit解释器中。老版本的autoit将a3x以附加数据的形式直接放在PE数据后面,而新版本的autoit将a3x放在资源段中。
可以使用PeStudio分析exe文件,将很清晰的看到a3x数据。如下两图所示,不同版本a3x嵌入的位置不同:

图片 176.png

图片 179.png

6.3.反编译

AutoIt的反编译,主要有AutoDec和Exe2Aut这两款工具,两款工具各有千秋。
AutoDec能够既能对exe进行反编译,又能单独对a3x文件进行反编译。其反编译后会生成au3文件,方便查阅。但是其不能反编译AutoIt3.3.10.0及之后版本的程序。

图片 181.png
反编译结果:

图片 182.png

图片 183.png
Exe2Aut仅能反编译exe文件,不能反编译a3x文件,但是它支持最新版本AutoIt3程序的反编译。

图片 180.png

参考资料:

https://r3mrum.wordpress.com/2017/07/10/autoit-malware-from-compiled-binary-to-plain-text-script/
https://baike.baidu.com/item/MSI%E6%96%87%E4%BB%B6/6524811?fr=aladdin
https://baike.baidu.com/item/nsis

相关推荐: 隐写术总结--CTF指南

一、图片隐写术1.图种例如一个zip压缩包(1.zip)+一个jpg图片(4fcefdaba56019d77b476e30a5558b47.jpg)结合为一张图片(output.jpg) 以下为Windows命令:C:Userslenovo>c…