作者:MerJerson
预估稿费:700RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
传送门
【安全资讯】遭遇WannaCry(想哭)蠕虫怎么办?防御百科帮你忙!
0x1 前言
近日,外媒和多家安全公司命名的“WanaCrypt0r”勒索病毒,席卷了全国,企事业单位以及教育网成为重灾区。该病毒利用NSA泄露“永恒之蓝”黑客武器攻击windows系统的445端口,如果没有安装MS17-010相应的补丁,用户不需要任何操作,只要开机上网,病毒就可以感染到本地,加密文件,进行勒索。
此次大规模爆出的病毒为典型的蠕虫类勒索病毒,通过网络进行传播。接下来我们针对流量,对病毒行为进行分析。
0x2 实验环境
操作系统:Windows 7 旗舰版 Services Pack 1
Wireshark 1.12.5
VMware Workstation 12
Process Monitor
0x3 病毒触发时流量分析
此次拿到的病毒样本为较早的版本,Twitter上自称@malwaretechblog的英国研究员发现了隐藏的一个“触发开关”。蠕虫启动时会连接固定的url:
http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com
如果连接成功则退出程序,连接不成功将继续攻击。
所以最开始我们先对此进行验证。
虚拟机在联网的状态下触发病毒,等待几分钟后并没有发现异常,此时打开wireshark查看期间的流量信息。
请求域名时会向DNS服务器进行解析,所以我们先过滤DNS流量。
很明显,期间有一条DNS请求被捕获,直接查看返回包,回执域名的ip为 54.153.0.145 (此IP为DNS解析到的,不固定,先前回执的还有144.217.254.3和144.217.74.156)
得到IP,那么我们过滤看一下,病毒对这个域名到底有什么数据交换,过滤144.217.254.3,得到结果:
请求过程很简短,三次握手建立连接后进行GET请求,得到返回数据。之后RST强制断掉了连接。
该域名是那名英国安全研究员之后注册的,有趣的是,GET得到的数据:sinkhole.tech – where the bots party hard and the researchers harder.
恢复快照,回滚到原始环境,之后我们断网状态下,再次运行病毒。
很成功的触发了病毒。此时我们再去查看期间的流量信息:
先过滤DNS,查看有无域名访问请求:
同样是有的,只不过此时断开网络,没有DNS解析回执信息而已。
之后我们查看全部流量,发现大量的异常数据包:
发现了两种异常流量,第一种基于ARP的主机发现,以及针对445端口的TCP SYN式扫描。根据情报,我们知道,WanaCrypt0r是利用的“永恒之蓝”黑客武器。蠕虫病毒首先周期性的通过ARP探测本网段活跃的主机,与此同时,扫描一些地址的445端口,如果扫描到的主机开启445端口,则病毒会尝试进行植入。
对流量进行统计,针对TCP活动进行观察:
针对大量的外网IP进行455端口探测。
返回快照,多次触发漏洞发现,探测外部ip的地址每次都不尽相同,应该是蠕虫为了扩大传播范围,不仅扫描当前网段进行攻击,而且还随机扫描公网主机进行传播。
0x5 病毒传播时流量分析
已经被感染的主机A的ip为192.168.43.101,开始未被感染的主机B的ip为192.168.43.32。两台机子开启后,监视之间流量,可以发现:
主机A对主机B进行了455的端口探测,此时主机B对主机A有一个SYN + ACK 数据包的回复。之后主机A建立连接,发送SMB数据包进行攻击,值得注意的是,在对话过程中,有一个包为:
对比之前Eternalblue工具使用的MS17-010 SMB数据包:
基本可以断定,此次蠕虫使用的攻击代码是Eternalblue工具使用的攻击包。
0x6 病毒行为分析
在被攻击机中,创建一个“qweasd”的文件夹,其中放置一些jpg格式的图片,便于之后我们分析加密行为,同时开启Process Monitor进行对进程行为的监视。
之后十分顺利的被感染了。
查看Process Monitor的记录,我们知道病毒执行时的文件为mssecsvc.exe,所以直接搜索带有mssecsvc.exe的操作行为:
最先找到三条,正式将mssecsvc.exe写入本地的过程,目录为C:Windows,并且之后,mssecsvc.exe创建了名为tasksche.exe的可执行文件,并在稍后启动了他。
先前我们在桌面创建一个名为“qweasd”的文件夹,此时里面的文件已经被加密了,在Process Monitor搜索“qweasd”相关的操作:
此时我们发现tasksche.exe对“qweasd”文件夹进行了大量的查询操作,tasksche.exe正是之前mssecsvc.exe释放出来的应用, tasksche.exe之后进行了大量的文件操作,那么可以推断tasksche.exe应该和病毒的加密部分有关系。
病毒遍历了“qweasd”文件夹,得到了其下的文件名,之后便创建了QQWWEE1 (1).jpg.WNCRY的加密文件。之后QQWWEE1 (1).jpg和QQWWEE1 (1).jpg.WNCRY频繁的读写操作,应该是加密的过程。但是之后有一条操作值得我们注意:
病毒对原始文件有一个写入操作,长度为1024。此时病毒就破坏了原始文件的完整性,具体行为,之后我们在逆向中查看。
0x7 病毒逆向分析
既然病毒每次运行时都会请求固定的域名,那么这个域名一定是被硬编码到程序里的,所以直接Search字符串:
http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com
得到的结果为:
将aHttpWww_iuqerf的内容的偏移地址回送给esi,此时aHttpWww_iuqerf中存储的正是域名,F5查看反汇编代码。
函数名WinMain,域名被InternetOpenUrlA函数调用,程序根据v5值进行下一步操作,InternetOpenUrlA返回为真,结束程序,否则,进行下一步操作。这正验证了前面的“秘密开关“。
此时打开Graphs,查看当前函数所在的结构:
在sub_408090中的sub_408000调用RegisterServiceCtrlHandlerA函数,来注册一个功能服务,进入相应查看:
发现是创建一个名为mssecsvc2.0的服务。
从sub_408090 → sub_408000 下发现了sub_407BD0函数,反汇编为:
根据代码,此函数开了两个线程在一直跑什么东西,进入查看后发现
v6, v19, v10, v11为sub_407660函数生成的随机数,赋值给Dest,经 inet_addr转化为ip地址,传入sub_407480函数。
进入sub_407480,发现
*(_WORD *)&name.sa_data[0] = htons(0x1BDu)
(445的16进制为1BD)所以,此处应为病毒随机对外网ip445端口进行扫描。
追溯sub_407480函数,发现sub_4076B0有调用,当sub_407480返回为真,则证明扫描到的主机的455端口开放,病毒会有一系列操作。
sub_407540下的多个函数下有send行为,接着进行追溯。
跳转到byte_42e544,发现此处为伪造数据的地址,根据之前抓包分析的流量:
在IDA中搜索,得到playload存储的地址为:
名为byte_42E54。
在send行为中查询byte_42E54的调用情况
发现在sub_401B70处有调用,至此,对其他主机进行漏洞攻击感染分析到此结束。
在病毒行为分析时,我们注意到进行加密的模块是由mssecsvc.exe释放的tasksche.exe执行的,所以在IDA中直接搜索“tasksche.exe ”
发现了生成文件的行为,目录是在C:Windows下。
之前我们通过Process Monitor发现,病毒会有遍历文件及文件夹频繁的操作,所以在逆向的时候注意下相应的API:
感染的时候我们发现,并不是所有的文件都会进行加密,比如dll文件就没有被加密。此时猜测,病毒只是加密特定后缀的文件,可能是白名单模式,也可能是黑名单模式,在IDA中搜索dll,如果是白名单模式,dll应该被硬编码到病毒中的。但没有查询到相应代码,则病毒可能采取的是黑名单模式,png图片被加密了,那么我们搜索png:
确实如此,向上查看,我们发现,这些被加密的后缀变量名为:
同时在sub_4010FD中调用了,调入其中果然发现了过滤行为:
木马随机生成一个256字节的密钥,并拷贝一份用RSA2048加密,RSA公钥内置于程序中。(函数sub_4019E1)
Aes加密过程(函数sub_402A76)
Rsa加密过程(函数sub_403A77)
在sudb_4041A6函数中调用了sub_4019E1、sub_402A76、sub_403A77,所以sub_403A77是密文写入文件函数。
以上就是文件加密过程分析
文件解密:
Sub_401A45为获取密匙
Sub_40170A函数为解密函数
0x5 总结
初次分析病毒,开始并没有思路,拿到样本直接逆向很头痛。因为该病毒为典型的Worm病毒,我们尝试先去分析病毒流量,进程操作等行为,之后针对性的一层层去逆向。从外往里慢慢剖析,文中记录了大量的思路,分享给大家。刚做逆向,还请各位看官指出不足。
传送门
【安全资讯】遭遇WannaCry(想哭)蠕虫怎么办?防御百科帮你忙!