在做样本分析的时候,通常都是针对恶意软件进行分析。这种属于样本分析,是安全分析中的一部分,但也是比较关键的一部分。样本分析是安全分析人员与恶意软件开发/投放人员沟通最直接的桥梁。
但是很明显,攻击并不是直接就是从恶意软件开始的。
我们拿到的恶意软件,可能是鱼叉类钓鱼邮件攻击精准投放,也有可能是水坑类攻击下发。
作为分析人员,除了分析看到的这个恶意样本,也应该关注整个攻击事件和攻击背景的分析。
笔者在app.any.run上看到了如下的样本:
样本链接为:https://app.any.run/tasks/6b9baf15-be08-4446-a07c-b1308130dd01/
样本md5:183960d220750086595d8591041bd3e7
样本原始名称:ExternalRetrievedPlată restantă.msg
根据多家翻译引擎显示,这个邮件的名称应该是罗马尼亚语。
标题跟付款、金额相关。目前只知道应该是针对罗马尼亚地区的攻击,具体的受害人信息未知,应该是批量投放用于钓鱼的。
并且目前该样本VT上没有相关信息,只被投递到了app.any.run。
邮件内容如下:
翻译之后邮件内容如下:
External:[已检索]剩余付款
早上好。
我希望你身体健康,生意兴隆。
附件中的证据是你方确认的逾期付款,因此我们将通知银行立即付款。
热烈的问候
玛丽安娜·普拉斯卡。
财务总监
这就是一个非常普通的钓鱼邮件,目标没有针对性,应该是批量下发的。
最下面的pdf是一个下载链接,下载地址如下。
hxxp[:]//www.mediafire.com/file/m3mcxobpymp9dy5/Plata+restanta[.]7z/file
需要注意的是,这里的mediafire并不是恶意地址,而是一个免费的托管机构,有点类似于我们所使用的百度云盘。
这里很明显,攻击者是将后续的payload放到了第三方平台中,然后通过URL链接去下载回来执行。
这样做的好处是,可以节约一定的攻击成本,且不容易被溯源。
如果没有猜错的话,后面的木马应该也是用的邮件的方式来传数据,也是攻击者免费申请的邮箱。
这个地址还可以正常访问,下载了一个7z文件回来。
解压缩后的文件是一个exe:
文件命名为Plata restanta.exe
将罗马尼亚语翻译为中文是:重新付款.exe
从钓鱼邮件来看,钓鱼的手法并不高级,就是靠大众心理,散发这种可能会有人感兴趣的邮件。
原始样本是带了一定混淆的,但这里的混淆很好解,就直接de4dot去混淆即可。
去混淆之后,样本名还是乱序韩文,但类名和方法名已经显示正常了:
这里需要注意,样本执行的时候,首先执行的不是70行的Main函数的内容。
而是95行的public static byte[] Bytes = Class0.smethod_0();
原因很简单,静态变量的初始化会在正式的代码执行之前完成。
所以当程序运行的时候,会首先将各个静态变量赋值,这里95行处,程序就会通过Class0类的Smethod_0方法给Bytes变量赋值。
Smethod_0方法是直接返回了一个大的数组。
分别在95行这里和Main函数里面new GClass0().method_0();进来的地方设置断点
然后程序跑起来,选择不要中断,程序会首先命中95行的断点:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课