NSIS(Nullsoft Scriptable Install System)是Windows平台下一个开源的可执行文件安装程序,由于其良好的FUD 特性,使其被恶意软件制作者广泛应用,以达到躲避杀软的目的,方便后续攻击的开展。本文便以一利用该打包器的在野样本作为例子,对该类恶意样本的特征进行分析和总结。
shellcode_loader(NSIS)
该Loader是一个NSIS格式的文件。NSIS(Nullsoft Scriptable Install System)是Windows平台下一个开源的可执行文件安装程序。
在下图中,可以看到该文件绝大部分的数据的熵值极高,也就意味该打包器会对其中将要被安装的可执行文件数据进行混淆或者加密。而恶意软件制造者正是利用NSIS这一特性,来达到隐藏恶意文件特征的目的,以绕过静态检测。
将该样本解压,通过下图可以看到,该NSIS打包器,由以下四个文件组成。
通过该脚本文件,可以得知目标文件会被安装在"$TEMP"目录下,同时会用到该文件下其余的三个文件,并且可以得知"cwlkewfbz.exe"运行时,需要将"pgkayd.aq"作为命令行参数传入,才能使可执行文件正常运行。
这两个文件并没有一个明确的类型,应该是运行中所需的资源文件,会在运行中使用或解密后使用。
从下图中可知,VirtualAlloc仅被一个FUNC交叉引用。
再来看这个调用VirtualAlloc的FUNC的CFG,清晰明了,几个判断,再加上一个loop填充内存,很像释放shellcode或下一阶段样本的准备工作。
对于其他细枝末节,此处不再赘述,直接关注内存填充和解密部分(VirtualAlloc -> memcpy -> xor)。
经以上操作,得到解密后的shellcode,并通过call执行。
pe_loader
在获取到的shellcode中,可以看到与刚刚分析的"cwlkewfbz.exe"同级目录下的另一个文件"djdqvq.sra"。
随后看到了根据API_hash来获取所需要的API。
运行中,其会判断Temp目录下是否存在"djdqvq.sra",若不存在则会直接退出。若存在,其会将"djdqvq.sra"读入内存中。
AgentTesla_loader
在这个文件的import表中,发现了"CLRCreateInstance",该API被用于调用文件中的资源文件。
正如我们预想的那样,该资源文件中存在另一个PE文件,是一个.NET文件。
AgentTesla
由于该.NET样本带有混淆。为了加快分析,我们便不花费大量经历在静态分析上,将更多的经历放在行为、流量和内存上。
通过抓包我们发现,该样本有请求yendex邮箱的相关行为,并且可以确定其目的端口为587。
在内存中我们又找到了更为精确的邮箱信息"prince.omd@yandex.com"。
通过这些信息,我们确定了该样本为AgentTesla的在野样本。这是一个非常成熟的窃密软件,网上有很多关于该样本的分析报告,本文便不再过多赘述其实现细节。
通过兰眼沙箱检测,进一步确定了这是一个窃密木马,其主要行为包括键盘记录器以及窃取用户浏览器信息等,同时沙箱也捕获了该样本利用邮件进行通信的行为。