原文:https://rvsec0n.wordpress.com/2020/02/22/msi-malware-analysis/
相比较,eecb8098f5de87a26d5d1780f7552033的结构如下。
实际上,PE文件位于msi文件中的cab文件中,只是7z自动将其从cab文件中提取出来并显示了。如果使用“ 7-Zip -> Open archive -> * ”上下文菜单打开,将看到相似的结果。
下面是前面提到的800db6507256cde0514990f2bf0a414a文件。如果msi内包含的文件不在任何一个cab内,直接在msi内,将在binary table中列出。
再看d8d4facbe26427176cf8801d03c69c45文件。component table中包含cab中有函数需要被安装的文件,还有文件被释放的位置。
在下面的截图中,Action是_D7D112F049BA1A655B5D9A1D0702DEE5,Source是_D7D112F049BA1A655B5D9A1D0702DEE5。这里注意,Action可以是任意值(非exe扩展名),Source中的文件都将被执行。
当然,对大多数msi文件来说,内部的文件都有扩展名容易被识别。f9d3b6dc33077979720e149ece6bc6ac运行jjtur.js(位于Binary表),这是Source中的值。
也存在一些非常规情况。f3a20a781bcc6122981ff9caa7ed5580中只有Target没有Source,这里面包含恶意Jscript代码。这些Jscript位于_StringData文件中。(DFNLFP34314BAEL的下一行)
ExecuteScriptCode行为也常被使用。下面的例子(d8d4facbe26427176cf8801d03c69c45)中你可以在ExecuteScriptCode中看到恶意脚本代码。代码同样位于_StringData中。
每次分析恶意msi文件时,我一直对msi文件的结构和功能有很多疑惑。当然,它们中的大多数只是简单的安装器。但有时,它会有很多其它功能并且很难分析,所有我决定找一种适合的分析方法。
7z
使用7z打开800db6507256cde0514990f2bf0a414a,可以看到下图所示结构。注意,其中Binary._D7D112F049BA1A655B5D9A1D0702DEE5是一个exe,虽然没有扩展名。
相比较,eecb8098f5de87a26d5d1780f7552033的结构如下。
实际上,PE文件位于msi文件中的cab文件中,只是7z自动将其从cab文件中提取出来并显示了。如果使用“ 7-Zip -> Open archive -> * ”上下文菜单打开,将看到相似的结果。
Orca
在查看内部文件上7z很有用,但不能分析msi文件的真正功能。Orca是一个能显示msi文件各种信息的的工具。可以google “Orca msi installer” 找到它。( Orca.msi : 710ae2be53e11f3d5c5f8cfccce76a3a )
使用Ocra打开msi文件,可以看到如下表。本节,我们关注恶意软件分析有关的部分。
a. File Table
Msi文件d8d4facbe26427176cf8801d03c69c45内包含disk1.cab,下图中可以看到其中包含四个文件。如果存在内部包含文件的cab,应该是以这种文件表形式列出。
b. Binary Table
下面是前面提到的800db6507256cde0514990f2bf0a414a文件。如果msi内包含的文件不在任何一个cab内,直接在msi内,将在binary table中列出。
c. Component Table
再看d8d4facbe26427176cf8801d03c69c45文件。component table中包含cab中有函数需要被安装的文件,还有文件被释放的位置。
d. Registry Table
d8d4facbe26427176cf8801d03c69c45是个功能丰富的恶意软件。它还使用msi的Registry Table功能在注册表中注册键值HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations。
e. CustomAction Table
这是最重要的一个表。不像其它表,这个表中的每一个行为项都需要详细分析。
e.1. Custom
800db6507256cde0514990f2bf0a414a
首先,最简单的是800db6507256cde0514990f2bf0a414a。之前提过,真正的恶意代码是binary table内的_D7D112F049BA1A655B5D9A1D0702DEE5。使用7z看到的名字是Binary._D7D112F049BA1A655B5D9A1D0702DEE5。
在下面的截图中,Action是_D7D112F049BA1A655B5D9A1D0702DEE5,Source是_D7D112F049BA1A655B5D9A1D0702DEE5。这里注意,Action可以是任意值(非exe扩展名),Source中的文件都将被执行。
f9d3b6dc33077979720e149ece6bc6ac
当然,对大多数msi文件来说,内部的文件都有扩展名容易被识别。f9d3b6dc33077979720e149ece6bc6ac运行jjtur.js(位于Binary表),这是Source中的值。
f3a20a781bcc6122981ff9caa7ed5580
也存在一些非常规情况。f3a20a781bcc6122981ff9caa7ed5580中只有Target没有Source,这里面包含恶意Jscript代码。这些Jscript位于_StringData文件中。(DFNLFP34314BAEL的下一行)
除Jscript外,! _StringData文件中有几个字符串,所有使用的字符串,如Error Table中的error字符串,都存在这里。
e.2.执行脚本代码
ExecuteScriptCode行为也常被使用。下面的例子(d8d4facbe26427176cf8801d03c69c45)中你可以在ExecuteScriptCode中看到恶意脚本代码。代码同样位于_StringData中。
除VBScript外ExecuteScriptCode还可以包含Jscript(a8123c2e3a8a51685c2287ee26b28a9d)。
使用7z打开800db6507256cde0514990f2bf0a414a,可以看到下图所示结构。注意,其中Binary._D7D112F049BA1A655B5D9A1D0702DEE5是一个exe,虽然没有扩展名。
相比较,eecb8098f5de87a26d5d1780f7552033的结构如下。
实际上,PE文件位于msi文件中的cab文件中,只是7z自动将其从cab文件中提取出来并显示了。如果使用“ 7-Zip -> Open archive -> * ”上下文菜单打开,将看到相似的结果。
Orca
在查看内部文件上7z很有用,但不能分析msi文件的真正功能。Orca是一个能显示msi文件各种信息的的工具。可以google “Orca msi installer” 找到它。( Orca.msi : 710ae2be53e11f3d5c5f8cfccce76a3a )
使用Ocra打开msi文件,可以看到如下表。本节,我们关注恶意软件分析有关的部分。
a. File Table
Msi文件d8d4facbe26427176cf8801d03c69c45内包含disk1.cab,下图中可以看到其中包含四个文件。如果存在内部包含文件的cab,应该是以这种文件表形式列出。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)