Wannacrypt蠕虫老树开花?又见Wannacrypt
2023-3-8 09:20:13 Author: 每天一个入狱小技巧(查看原文) 阅读量:12 收藏

Wannacrypt蠕虫是一个在2017年就出现的远古毒株,其利用永恒之蓝漏洞降维打击用户服务器,而后进行扩散+勒索,曾经一度风靡全球,可谓是闻者伤心,听着落泪,因为这玩意解密是不可能  解密的。

而2023年的今天,该病毒居然死灰复燃了?

2023年3月5日,某厂区客户现场反馈大量内网服务器出现蓝屏情况,现场工程师安装360安全卫士后,提示为Wannacry蠕虫病毒

从描述中可以猜测是永恒之蓝把服务器打蓝屏了,而后现场通过与现场工程师协同了解到,当时蓝屏的服务器是一台实时数据库服务器,操作系统版本为windows server pack 2 。由于厂区服务器特殊,是不能经常升级的,所以可以理解。。。

通过上述的图片,我推断感染为WannaCrypt蠕虫病毒,该病毒实际爆发事件为2017年,通过永恒之蓝漏洞攻击目标机器,而后通过访问“开关”来判定出网情况,之后释放tasksche.exe文件,而后对系统进行加密,达到勒索的效果。

同时会对内网、外网进行横向攻击,利用永恒之蓝漏洞、SMB、RDP协议爆破来获取更多的权限,幸运的是,此次勒索病毒并没有达到勒索的状态。

这是一款老病毒了,在得知他不能起到勒索的作用后,其实就基本可以判断这就是一次非针对性的流窜,被乱打正着了,清理起来也很容易,结束掉mssecsvc.exe进程,看一下c:/windows目录下有没有tasksche.exe文件,看到直接删除而后打补丁,更改密码即可

但是由于该蠕虫病毒传播性较强,于是乎笔者像前场人员要来了这台服务器的登录日志,可能是沟通有问题,他只给了我登录成功和登录失败的日志

由于永恒之蓝漏洞一大特性是会重启,那么其实可以根据以下进行判断

事件ID 4625(登录失败):如果攻击者尝试通过SMB服务进行远程执行代码攻击,那么会在目标机器的安全事件日志中产生大量登录失败的事件记录。可以筛选该事件ID,以找到与攻击相关的记录。

事件ID 5140(共享对象被其他进程访问):攻击者可能会试图利用漏洞访问共享文件夹或文件,如果成功,系统将记录此事件。

事件ID 7034(服务崩溃):攻击者可能会试图通过攻击SMB服务或相关的Windows服务来执行代码,导致服务崩溃,这会在系统事件日志中记录。

事件ID 7045(服务安装):攻击者可能会通过安装恶意服务的方式利用漏洞。此时,系统将记录新服务的安装记录。

但是他只给了我登录成功和登录失败的日志,那么我们应该如何去用这个日志去获取我们想要的信息呢?

上面也提到过,Wannacay蠕虫病毒在内网会利用MS17010漏洞以及SMB协议漏洞进行攻击,似乎并没有提到会利用到445端口、3389等端口的弱口令暴力破解攻击,但是实际上根据笔者对日志的审计,发现的确会留下很多ntlmssp登录失败日志

其实可以看到,该服务器实际上2021年就已经被打了,但是直到今天其他服务器蓝屏了才发现设备被入侵了,这也是目前国很常见的一个现象,只要没有造成直接的财产损失,他就不是病毒。

那么回到正题,该样本实际上已经没有分析的必要了,因为这是一个老病毒了,我们只需要按部就班的清除就行,索性勒索病毒似乎并没有起,所以我们只需要排查哪些机器已经被污染了,就一起断网清除就可以了

至于为什么一插网线就又有“弹窗”,那是因为内网里其他的机器没有清理病毒,只要网络环境一恢复,那么要不了两分钟立马就给你重新感染,我们通过3.5日的日志也可以看出来,正如我们猜想的那样

笔者简单的看了一下爆破的记录,发现每次爆破都不会很多,少则二三十、多则一两百,没有出现上一次紫狐Rootkit爆破次数达到上万的情况,那么也从侧面说明了,该服务器很有可能是存在弱口令或者是口令共用的情况

而后果然证实了,218确实存在mssecmvc.exe文件,但是依然没有发现本应该存在的tasksche.exe文件以及另一个,这又让我怀疑,这到底是不是wannacay蠕虫病毒

但是当样本给了我之后,我又很确定,这就是mssecmvc2.0蠕虫病毒

而后在本地断网运行后,也的确是在C:/windows目录下生成了tasksche.exe文件

查看一下运行的参数
wmic process get caption,commandline /value

使用IDA看了一下,特征也挺符合的
打开第一眼看到的其实就是访问http://www.iuqerfsodp9ifjaposdfjhgosuri地址,这个地址其实什么也不是,可以理解为是一个开关
0040814A     mov     esi, offset aHttpWww_iuqerf ; "http://www.iuqerfsodp9ifjaposdfjhgosuri"...

此时按F5进入伪代码,查看一下函数逻辑

其实看起来不是很好看,但是大致就是将http://www.iuqerfsodp9ifjaposdfjhgosuri传入szUrl中,而后访问成功的话就返回0,程序继续往下走,否则就会进入到408090地址
我们先跟踪一下aHttpWww_iuqerf

并没有什么卵用,我们回到刚刚的伪代码,双击408090

我们进入到此函数后,发现该函数首先判断程序是不是双击运行的,双机运行的话是就进入到407F20函数,否则就会打开服务主函数,启动服务管理器(28行)

我们首先进入到407F20函数

第一步,进入407C40函数,带参数执行mssecmvc恶意程序,而后打开服务器创建服务进程,更改成微软的服务名称用来躲避杀软

我们再进入407CE0,该函数的目的其实是为了将tasksche.exe藏起来,这样如果只是把明面上的删除了,过一段时间依然会返回来(我猜的)

最后,如程序是正常执行的,那么此时程序会进入到408000服务主函数内

如注释所看,该函数目的是注册一个服务,服务名为mssecsvc2.0,若是服务注册成功则会进入407BD0主函数内

我们进入到407BD0函数地址

我们首先进入407B90函数地址,如下图所示,此函数主要功能其实就是初始化网络环境,准备加载两个PE文件

我们再进入407A20内容,其实就是申请两个内存空间(到底是堆栈还是内存?)用来存放即将要用到的payload,不管你是x86还是x64架构,直接塞两次进去,而后保存文件,存在的话就打开

我们再来看一下 407720函数,此函数用来进行内网SMB协议漏洞攻击

我们先来查看409160获取网卡信息函数

4076B0 局域网内传播函数,利用SMB协议漏洞或者是SMB协议爆破连接目标机器

由此,我们得出如下结论

到此暂时告一段落,其余的笔者能力有限(菜逼),接下来就要从日志入手,快速知道局域网都哪些人中招了

废话不多说,我们直接从登录失败日志即可得到我们想要的答案;因为该蠕虫会通过445端口进行爆破,那么我们只需要检索服务器4625登录失败日志,找到机器行为的,那么就可以知道谁攻击我,谁攻击我,谁就是有问题的机器

又拐回来了,日志虽然只有5000+条,但是时间线太长,如果一条一条筛不太现实,这个时候我们直接上工具
Log Parser Studio ,这是一款图形化日志分析工具,我们只需要用到几条简单的SQL语句即可快速筛选我们想要的内容
首先我们先将系统日志导入到工具内

而后我们新建一个窗口,修改日志类型,输入sql语句

SELECT    TimeGenerated AS [时间],    EXTRACT_TOKEN(Strings,5,'|') AS [登录用户名],    EXTRACT_TOKEN(Strings,6,'|') AS [登录域],    EXTRACT_TOKEN(Strings,19,'|') AS [源IP地址],    EXTRACT_TOKEN(Strings,10,'|') AS [登录类型],    EXTRACT_TOKEN(Strings,11,'|') AS [登录进程]FROM    C:\Users\Administrator\Desktop\LPSV2.D1\157-4625.evtxWHEREEventID=4625


此SQL语句可以获取所有的4624登录失败日志,筛选出爆破的时间、爆破的用户名、登录域、源IP地址、登录类型、登录进程信息;我们着重关注登录类型为3,登录进程为Ntlmssp的,这个进程其实就是445/3389爆破的记录

我们可以点击红色感叹号执行,而后将结果导出到表格里,这样更方便我们观察

导出结果如下图所示

我们以此类推,导出4624结果

SELECT    TimeGenerated AS [时间],    EXTRACT_TOKEN(Strings,5,'|') AS [登录用户名],    EXTRACT_TOKEN(Strings,6,'|') AS [登录域],    EXTRACT_TOKEN(Strings,18,'|') AS [源IP地址],    EXTRACT_TOKEN(Strings,8,'|') AS [登录类型],    EXTRACT_TOKEN(Strings,9,'|') AS [登录进程]FROM    C:\Users\Administrator\Desktop\LPSV2.D1\157-4625.evtxWHERE    EventID=4624

我们看一下导出结果

这两个并没有卵用,我们只需要知道谁爆破我们了就可以了,那么我们可以这样做

SELECT DISTINCT  to_date(TimeGenerated) AS [时间],  EXTRACT_TOKEN(Strings,19,'|') AS [源IP地址],  EXTRACT_TOKEN(Strings,10,'|') AS [登录类型],  EXTRACT_TOKEN(Strings,11,'|') AS [登录进程],  EXTRACT_TOKEN(Strings,5,'|') AS [登录用户名],  COUNT(*) AS [总数]FROM C:\Users\Administrator\Desktop\LPSV2.D1\157-4625.evtx  WHERE EventID = 4625GROUP BY  to_date(TimeGenerated),  EXTRACT_TOKEN(Strings,19,'|') ,EXTRACT_TOKEN(Strings,10,'|') , EXTRACT_TOKEN(Strings,11,'|'), EXTRACT_TOKEN(Strings,5,'|')HAVING  COUNT(*) > 5ORDER BY  to_date(TimeGenerated), COUNT(*) DESC

我们直接将每天的IP去重复,然后按照日期排序,将每天对我们爆破过的IP进行单独计数,我们直接就知道了都有谁爆破我们了,大大的爽

只筛选4625的源IP地址

SELECT DISTINCT  EventID,  EXTRACT_TOKEN(Strings,19,'|') AS IPAddressFROM C:\Users\Administrator\Desktop\LPSV2.D1\157-4625.evtxWHERE EventID = 4625 

至此告一段落,清除也简单,结束掉进程,删除就行了


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2MzYzNjEyMg==&mid=2247487072&idx=1&sn=0f9b800624249252fa169430d76f36ea&chksm=ce74d195f903588388814e5f6f681eb2a5ae837f64b6d990bd20e9669259d1e46b7b51db00c9#rd
如有侵权请联系:admin#unsafe.sh