首页
论坛
课程
招聘
[病毒木马] [原创]Phobos勒索软件变种之Roger来袭
2020-9-17 09:35 1142

[病毒木马] [原创]Phobos勒索软件变种之Roger来袭

2020-9-17 09:35
1142

前言

Roger是近期较为活跃的一款勒索病毒,隶属于Phobos家族。Phobos家族通常通过RDP暴力破解+人工投放的方式进行攻击,攻击者成功入侵后,通常会关闭系统的安全软件防护功能,运行勒索病毒,加密后会修改文件后缀为[原文件名]+id[随机字符串]+[邮箱地址].ROGER,目前该勒索无法解密。

行为概述

勒索病毒运行后,创建互斥体,接着遍历数据库,邮件,办公软件等相关进程,并中止查询到的进程,解除文件占用,以保证加密文件成功。之后运行加密模块。与此同时,内存解密出勒索信息、需要加密文件后缀名、以及被加密文件随机后缀等。之后遍历系统文件目录,加密相关文件,最后弹出勒索信息。
图片描述
值得关注的是,该勒索病毒在运行过程中会进行自复制,并在注册表添加自启动项,如果没有清除干净系统中残留的病毒体,重启后很可能会遭遇二次加密。

样本分析

开始正式将分析之前,要说明以下,由于样本来源的特殊性,这里并没有将样本的hash信息公布。

反调试保护

首先是有一层upx的外壳,用upx提供的脱壳工具来搞定。
图片描述
接下来的分析让我差点蒙了,感觉这就是一个正常的图形化程序代码,如果不是我提前知道这是个勒索软件,估计就被骗过去了吧。
图片描述
不得不说,Roger新变种勒索在反调试上是做的真好,第一层通过upx加壳保护,第二层通过正常图形化代码伪装,但最终还是被API断点拦下。
图片描述
紧接着获取VirtualAlloc的地址,用于分配新的内存来存储内部数据。
图片描述
分分配0x33000大小的内存,用于之后的解码操作,并执行相应的代码,这部分二进制代码,可以作为脱壳后的特征码,用于判断是否是roger勒索。
图片描述
紧接着对该内存区域进行内存拷贝,拷贝的数据来源于内部数据解码之后的结果。
图片描述
针对0x1900000下内存写入断点,发现了第二次对该数据写入的地方。
图片描述
有意思的是,系统API通过这样的组合来调用,并且jmp eax被所有API调用,所以在jmp eax下断点,会看到所有的API调用。
图片描述
通过EnumSystemGeoID的系统API触发了CreateProcessW,当返回到用户层时,发现已经进入了分配的内存区域。
图片描述

进程注入

通过SetThreadContext来设置线程的EIP,此时EIP被设置为0x40A9D0。
图片描述
在这里明显发现了进程代码注入的API组合,一般是以下这种组合情况。
1.使用CreateProcessW创建挂起进程。
2.GetThreadContext获取线程上下文信息。
3.SetTreadContext设置线程的EIP信息。
4.ResumeThread恢复线程执行代码。

通过对roger进程的查看发现,确实满足这样的一组API组合,并且进程也是挂起的状态。
图片描述

子进程附加

通过附加的方式,附加创建的子进程roger,并跳转到0x40A9D0设置断点信息。
图片描述
在进行其他操作之前,首先获取了几组系统环境变量值。
图片描述
图片描述
调试发现通过拼接的方式来获取并打开互斥量,如果没有就创建新的互斥量。
图片描述
图片描述

涉及的服务和进程

加密的文件类型几乎是全文件加密,由于特别多这里只列举了部分。
图片描述
涉及的部分服务信息,多数为数据库相关服务,包括firebird、sql、mssql以及sqlserver等数据库服务。
图片描述
涉及关闭的进程信息,如下图所示,主要包含数据库进程,以mysql、postgres和sqlserver等数据库进程。
图片描述

设置开机启动

将roger勒索病毒在拷贝到多个位置,并设置对应的开机启动项。
图片描述
首先是注册表的自启动,自启动的目录为SOFTWARE\Microsoft\Windows\CurrentVersion\Run,其中又包含了HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER,这里可以借助Autoruns来帮助完成查找。
图片描述
图片描述
接着是通过Start up目录实现开机文件自启动。
图片描述
图片描述
这里可以借助everything来帮助寻找roger文件。
图片描述
Roger子进程通过进程内存替换完成了以下这些功能,包含目标进程和服务名以及实现多种方式的开机启动,最后删除掉系统的shadow,防止数据恢复。
图片描述
这些功能也可以通过行为检测工具也能发现roger的相关行为,详细如下图所示。
图片描述

进程卡死

在刚开始调试的时候并不知道子进程roger会利用双管道实现对cmd进程数据的读写,发现创建cmd子进程后老容易卡死,并且是创建的双管道,可能是利用的管道对cmd进程进行数据发送的。
图片描述

勒索提示生成部分

除此之外还没有看到最重要的文件加密部分,为此还得继续努力,终于通过调试发现了有趣的东西,首先发现的是加密后缀的生成。
图片描述
紧接着看到了勒索提示文件名的生成,感觉应该稳了,继续慢慢调试。
图片描述
最后是info.hta用于显示勒索信息。
图片描述

遗憾的部分

最后的结果是悲伤的,虽然发现了roger启动了超级多的线程去执行最后的加密过程,但是由于某些未知的原因导致调试器卡死,断点信息全部没了,没了,没了。当时的内心是卧槽的,整个调试过程可能花了大概30分钟,突然以下就没了,而且还没有之前的调试信息。最后只能留下了一张生成勒索文件的截图。
图片描述
啊,西湖的水,我的泪。
印象中调试最后部分,出现最多的就是CreateThread,并且其中有个线程用于完成生成勒索文件的部分。
图片描述
其他关于加密部分,由于调试的耗时性,并没有再一次进行二次调试,也算是留下了一个小小的遗憾吧

安全解决方案

1、由于Phobos家族会利用RDP(远程桌面协议),建议关闭3389等远RDP相关端口,如果确实有工作业务需要,建议进行白名单配置,只允许白名单内的IP连接登陆。
2、尽量关闭不必要的文件共享,或使用强密码对文件共享加密保护。
3、定期更换帐户密码,采用高强度的密码,避免使用弱口令密码,同时避免使用统一的密码。
4、对重要文件和数据进行定期异地备份。


[看雪官方培训] Unicorn Trace还原Ollvm算法!《安卓高级研修班》2021年6月班火热招生!!

最后于 2020-9-17 10:20 被Risks编辑 ,原因: 调整数据内容
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 5335
活跃值: 活跃值 (5616)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
SSH山水画 活跃值 1 2020-9-17 13:45
2
0
真不错,可惜没有HASH,不然也去看看
游客
登录 | 注册 方可回帖
返回