导语:今天我会分享一个快速并且很有趣的打击网络犯罪的一个案例。

在这个案例里面,我们通过分析垃圾邮件,进而劫持其赎金服务器,并且告知每个人关于发现的这一威胁。然后我会尝试寻找攻击者身份,并且将有关信息告诉执法部门。不过这一部分就不在文章中公开了。

我先说一下事情的起源吧:前几天,我的同事MarcoT给了我一个有趣的电子邮件附件,名为71878378709_708463.zip (sha256:fdd1da3bdd8f37dcc04353913b5b580dadda9 4ba).

对这一附件解压缩之后发现里面有一个vbs脚本文件,这就比较有趣了,通过双击vbs脚本文件,受害者将会通过微软wscript.exe来运行它,这样就会启动感染进程。邮件是通过一个复杂的垃圾邮件集群进行发布的,这一集群经常在美国活动,前几天目标对准了欧洲。

vb脚本是是经过混淆处理的,不过混淆程度是非常弱的,你可以在下图中看到脚本的内容。实际上,代码只进行了一次包装,而且明文字符串都是可以看到的。

1501728778572809.png

这一后门引入了一个比较有意思的技术,首先,为了让逆向的过程变得困难,它在代码中加了很多无害的内容。非常有趣的是这样一串代码很显然是从后门代码的一部分,但是它并没有和要分析的代码相关联。另外一处很有意思的是"user-agent"的值是对是否下载真实恶意payload的关键因素。后门本身没有什么好分析的,它会通过wscript.exe执行'MZ'文件从受感染的网站中被下载到本地。这一后门文件会直接在http返回包显示,并且保存到用户临时文件夹中,以saToHxy.exe命名。然后对vb对象以及函数进行重命名,使溯源变得困难起来。

1501728818922132.png

获取到后门网址如下:

castillodepalazuelos.es/rf734rgf?
2010.sggt-wh.de/rf734rgf?
ctt.gr/rf734rgf?

之前有提到的Shell.run会执行后门攻击载荷。攻击载荷(sha356:6a51d0cd9ea189babad031864217ddd3a7ddba84)看起来是很容易分析,既没有进行很难的加密,也没有分成多个文件执行,在启动的调试头可以清楚直观的看到用户功能。

启动IDA,通过异或操作会显示小部分攻击载荷内容,并且它采用了一些反调试的技巧,比如时间控制,以及性能监控.如下图所示:

Schermata 2017-07-30 alle 09.49.44.png

在分析之后,它的设计逻辑变得清楚了,采用了使用了安全处理器异常链技术。攻击者通过触发异常调用修改过的异常处理函数,然后会对攻击载荷进行解码,并且将其分配到新的内存中,最后执行"call eax"部分,下图展示了解码过程中的循环:

Schermata 2017-07-30 alle 10.20.42.png

如下是通过0x03001220处的函数进行解码的一些内存:

Schermata 2017-07-30 alle 10.27.33.png

通过动态分析可以看到勒索软件的攻击载荷。实际上,通过解码后的内存,我们可以看到勒索页面,如下图,我将他提取了出来,而不是通过16进制进行展示,文件hash:(sha256: cdb3fef976270ab235db623d6a4a97ea93c41dd1)

1501728958309567.png

特别有趣的是,攻击者在勒索页面中将TOR浏览器写成了TOP浏览器,所以我就将这个勒索软件叫做TOP勒索木马。2333,TOP勒索软件会对机器上的文件进行加密,并且修改文件的拓展名,通常是三个字符(为什么是通常,因为在攻击者的数据库中发现大部分都是3个字符)。修改后的拓展名作为勒索页面的一个隐藏的参数,下方图片就展示了攻击者用于将信息发送到服务端的隐藏参数:

1501729048712082.png

隐藏的输入类型名称为"FB",就像稍带两个信息到命令行以及控制器中。比如将拓展名名以及一些十六进制包含在精心设置的标签中。通过点击"Yes I want to buy"这一按钮的用户会发送之前的数据,并且提示到下方地址支付0.18BTC,以便对文件进行解密:

1501729074215545.png

通过更改FB类中第一个隐藏变量,你会观察到不同的比特币钱包地址,并且勒索金额不等。如下是不同的勒索页面:

1501729099184549.png

这就使得这一系统具有一定的漏洞。事实上,我可以对比特币钱包进行枚举,如果不存在,就新建一个新的比特币钱包,填补攻击者为剩余钱包保留的空间。这样可能会阻止攻击者进行新感染。所以,我写了一个比较邪恶的python脚本去强制创建新的钱包,和金钱映射:

1501729119771362.png

接下来通过FB参数进行进一步分析,我发现这一参数很容易受到sql注入攻击,简直了!!
注入点是被叫做<pre>的一个标签,如下图:

1501729161350443.png

所以我们试试攻击这一网站,像上图中,你会发现一个Mysql爆出来的不是拉丁字符的错误,google翻译提示这是俄语,现在我们可以推断出攻击者有非常大的可能性是俄罗斯人。只有用TOR浏览器才可以访问到数据库,并且速度还非常非常慢,不过我发现了一些自动化的进程,请查看增量ids,试图想象一下这个网络到底有多大。

Schermata 2017-07-30 alle 12.28.04.png

另外一个有趣的话题就是攻击者是谁呢?换句话说,使用这一勒索平台的用户就是攻击者,因为这看起来像一台勒索服务器,所以我下一个目标就是看看攻击者已经获得了多少钱。下图我展示了我发现的用户名以及密码,和用于收钱的钱包。

1501729194631365.png

我将注意力集中到了[email protected]这一用户上面,他与私人钱包:1P3t56jg5RQSkFDWkDK3xBj9JPtXhSwc3N有关。

钱包类型有两种:
一种是公共钱包,这种钱包会将受害者的钱存起来,每个人都可以访问到这一钱包,这些钱包用于受害者支付他们的赎金。
另外一种是私人钱包,攻击者会将公共钱包得到的赎金转移到这类钱包里面,这个过程中,交易平台会收取一定的费用。

拥有私人钱包就意味着可能会找到交易记录,有了交易记录就可以确定攻击者在几个月内从事了多少违法活动。通过调查[email protected]的私人钱包,我们找到了很多有趣的东西:

1501729237233257.png

在交易记录中可以看到在2017-4-23和2017-4-20号从此钱包中转出了81.87个比特币。再加上我们目前了解到的勒索数量13个比特币,加起来已经接近了100比特币。在4月份你还记得爆发了什么勒索攻击了吗?这一攻击者看起来是一个惯犯,从事这种勒索活动肯定不只一次。通过对电子邮件的调查,发现这一邮箱和https://vlmi.su/这一出售攻击工具,信息的俄罗斯市场有密切的联系。
通过sql注入,我提取除了"inst"表的内容,字段名称如下:

ID, IP, FB, OS, TIMED, TIMEIN. COUNTRY, BRWSER

表中记录的是受害者的信息,让我们看看能不能帮助他们!
从目前来看,就这一个简单的数据库中包含的受害者信息是2000多个,受害者分布来自世界各地。到目前未知,提取出的受害者国家分布如下:

1501729271387894.png

我不会透露受害者的ip地址,不过另外一个有趣的事情是用户使用浏览器的种类比例,奇怪的是chrome竟然占绝大部分。不过恶意软件是通过双击打开vbs脚本,然后利用wscript.exe进行感染的,这和浏览器关系并不大,难道是巧合?

1501729288442543.png

在这篇文章中,我一直在描述从电子邮件附件中获取恶意软件,将整个攻击者的数据库放在我称为TOPransom的服务平台上。我试图枚举攻击者的收入,并通过写一个快速和持久的python脚本填充每个用户的钱包,阻止新的勒索钱包创建,进而阻止勒索软件的蔓延。

源链接

Hacking more

...