从钓鱼邮件到窃密木马 – 作者:hohohahe

0x00 前言

在做样本分析的时候,通常都是针对恶意软件进行分析。这种属于样本分析,是安全分析中的一部分,但也是比较关键的一部分。样本分析是安全分析人员与恶意软件开发/投放人员沟通最直接的桥梁。

但是很明显,攻击并不是直接就是从恶意软件开始的。

我们拿到的恶意软件,可能是鱼叉类钓鱼邮件攻击精准投放,也有可能是水坑类攻击下发。

作为分析人员,除了分析看到的这个恶意样本,也应该关注整个攻击事件和攻击背景的分析。

0x01 样本背景

笔者在app.any.run上看到了如下的样本:

图片[1]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

样本链接为:https://app.any.run/tasks/6b9baf15-be08-4446-a07c-b1308130dd01/

样本md5:183960d220750086595d8591041bd3e7

样本原始名称:ExternalRetrievedPlată restantă.msg

根据多家翻译引擎显示,这个邮件的名称应该是罗马尼亚语。

图片[2]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

标题跟付款、金额相关。目前只知道应该是针对罗马尼亚地区的攻击,具体的受害人信息未知。

并且目前该样本VT上没有相关信息,只被投递到了app.any.run。

图片[3]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

0x02 邮件诱饵

邮件内容如下图片[4]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

翻译之后邮件内容如下:

External:[已检索]剩余付款

早上好。

我希望你身体健康,生意兴隆。

附件中的证据是你方确认的逾期付款,因此我们将通知银行立即付款。

热烈的问候

玛丽安娜·普拉斯卡。

财务总监

这就是一个非常普通的钓鱼邮件,目标没有针对性,应该是批量下发的。

最下面的pdf是一个下载链接,下载地址如下。

hxxp[:]//www.mediafire.com/file/m3mcxobpymp9dy5/Plata+restanta[.]7z/file

图片[5]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

需要注意的是,这里的mediafire并不是恶意地址,而是一个免费的托管机构,有点类似于我们所使用的百度云盘

图片[6]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

这里很明显,攻击者是将后续的payload放到了第三方平台中,然后通过URL链接去下载回来执行。

这样做的好处是,可以节约一定的攻击成本,且不容易被溯源。

如果没有猜错的话,后面的木马应该也是用的邮件的方式来传数据,也是攻击者免费申请的邮箱。

这个地址还可以正常访问,下载了一个7z文件回来。

图片[7]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

解压缩后的文件是一个exe

图片[8]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

文件命名为Plata restanta.exe

将罗马尼亚语翻译为中文是:重新付款.exe

图片[9]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

从钓鱼邮件来看,钓鱼的手法并不高级,就是靠大众心理,散发这种可能会有人感兴趣的邮件。

0x03 第一阶段payload

原始样本是带了一定混淆的,但这里的混淆很好解,就直接de4dot去混淆即可

图片[10]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

去混淆之后,样本名还是乱序韩文,但类名和方法名已经显示正常了

图片[11]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

这里需要注意,样本执行的时候,首先执行的不是70行的Main函数的内容。

而是95行的public static byte[] Bytes = Class0.smethod_0();

原因很简单,静态变量的初始化会在正式的代码执行之前完成。

所以当程序运行的时候,会首先将各个静态变量赋值,这里95行处,程序就会通过Class0类的Smethod_0方法给Bytes变量赋值。

Smethod_0方法是直接返回了一个大的数组。

图片[12]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

分别在95行这里和Main函数里面new GClass0().method_0();进来的地方设置断点

图片[13]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

图片[14]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

然后程序跑起来,选择不要中断,程序会首先命中95行的断点

图片[15]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

图片[16]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

F10直接跑过这一行,拿到结果

图片[17]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

然后继续F5,让程序中断在smethod_0中

图片[18]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

这里可以看到,程序进来之后,直接就是通过一个循环对刚才拿到的Bytes变量进行操作。

图片[19]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

操作完成之后,可以看到这类Bytes已经被解密成了一个PE文件,这里将这个PE文件给赋值出来

图片[20]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

该文件看起来像是一个C#的DLL。

这里基本可以知道,最外层的这个程序是一个loader。用于解密PE并加载执行。

加载的方式就在smethod_0后面,使用反射委托加载:

图片[21]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

0x04 第二阶段dll

通过调试,这里可以知道,程序调用dll的时候,会调用awrfsdg类下面的aj方法

图片[22]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

加载dll后如下

图片[23]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

aj()函数的调用逻辑是这样的。

  1. 通过Abs(-3) 给switch case的初始值设置为3,执行case 3分支
  2. 将num赋值为2,跳转到IL_02重新执行switch ,执行case 0分支。
  3. 跳转到IL_4A执行b.a()
  4. 如果b.a()执行失败,则跳转到最后执行f.a()
  5. 如果b.a()执行成,这num赋值为2,退出程序。

图片[24]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

所以这里就是两个关键函数,一个是b.a()

一个是f.a()

程序过来之后,首先会在实例函数这里解密一个字符串,然后等待25s

图片[25]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

然后过来,看看b.a()函数

图片[26]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

这里的 <Ai>.a是一个解密函数,解密算法如下,这里是解密了exe后缀

图片[27]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

然后进入f.a()开始执行关键功能。

首先是解密出了一个资源名称

图片[28]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

根据从这个资源中拿到的数据解密得到原始文件的资源名

图片[29]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

从原始文件的资源中解密出第二段数据

图片[30]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

同时准备释放一个InstallUtil.exe到TEMP目录,这个InstallUtil.exe就是微软官方提供的注册和卸载服务的

图片[31]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

解密出最终阶段的payload

图片[32]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

最后,程序通过Involve的方式加载到最终木马去。调用InstallUtil.exe创建了一个服务

图片[33]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

0x05 最终阶段payload

最后的这个payload进来就可以发现是AgentTesla的商业窃密马。

关于AgentTesla网上分析文章很多,这里就大概提一下关键点。

程序进来之后,首先是调用了一个q函数,这个函数没有什么实际用,就是干扰分析的,根据参数计算出一个sleep时间

图片[34]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

程序获取了一些基本信息,然后设置了几个Timer

图片[35]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

图片[36]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

图片[37]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

图片[38]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

图片[39]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

分别对这几个timer执行的函数设置断点,然后跑起来

最后发现程序会在 Passwords这个函数里面,尝试获取浏览器存储的密码。

图片[40]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

图片[41]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

程序会尝试获取一些主流浏览器中存储的账号密码

图片[42]-从钓鱼邮件到窃密木马 – 作者:hohohahe-安全小百科

直到获取成功,程序才会执行下一步的操作,包括收集用户本地主机的信息,特别是浏览器存储的账号密码,以邮件的方式发送到攻击者的邮箱中。

来源:freebuf.com 2020-08-30 10:28:03 by: hohohahe

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论