前不久,思科安全团队披露了一款代号为Rombertik的病毒,它的主要危害是窃取Chrome、Firefox和IE浏览器上输入的文本信息,并采用超级复杂的指令和垃圾代码对抗安全研究人员的分析。一旦Rombertik发现有人正在对它进行分析,就会“自杀式袭击”破坏MBR(磁盘主引导区),使系统无法正常启动;如果篡改MBR失败,它还会加密破坏电脑上的文件。
值得关注的是,国内近期也出现了Rombertik攻击的迹象。360QVM引擎团队迄今已发现至少17个该病毒的主要变种,被攻击电脑达到上千台。不过对普通用户来说,完全不必担心Rombertik病毒自爆,因为它破坏MBR和加密文件的行为只针对反病毒分析人员,如果只是用杀毒软件查杀它并不会引发其破坏行为。
由于思科安全博客仅披露了Rombertik的主要特点,并未公布详细的技术分析。360QVM引擎团队通过动态调试定位分析了Rombertik完整的攻击流程,发现该病毒利用其傀儡进程注入恶意代码实现窃取数据和对抗分析的目的。
分析过程:
Rombertik的恶意代码被加密,并不会直接展现出来,运行后会通过shellcode再次运行自身,并将真正的恶意代码注入到子进程执行。
1、通过取出TEB中的PID来判断虚拟环境
2、两段大循环(9.6忆次的内存写入)致使一些自动跟踪系统失效
3、调用ZwGetWriteWatch检查指令模拟虚拟机
获取文件所在路径并获取计算机用户名并转换成小写
检测文件路径和用户名中是否包含以下字符串,如果包含Rombertik会选择退出。
以下检测全部通过后才会解密并执行关键代码,可以看出以下字符串是反病毒分析人员常用的目录和用户名:
通过检测后Rombertik会申请出一块大小为0x4AA2的内存,并将0x4F3294(加密后的shellcode)解密后填充到新申请的内存地址,紧接着跳转到shellcode地址加上偏移0x1A48处开始执行
shellcode采用乱序引擎,跳转之多,大大增加了静态分析和动态跟踪难度,很难定位到关键点
通过文件监控我们发现,shellcode部分将病毒自身拷贝到了“%USERPROFILE%/Application Data/rsr”目录下,同时释放一个fgf.vbs到开始菜单的启动目录
VBS内容如下:
Set WshShell = CreateObject("WScript.Shell") WshShell.Runchr(34) & "C:/Documents and Settings/Administrator/Application Data/rsr/yfoye.bat" &Chr(34), 0 Set WshShell = Nothing
可以看出VBS的功能就是用来启动yfoye.bat,而yfoye.bat的功能是用来启动yfoye.exe
在%USERPROFILE%/Application Data/rsr目录下运行的yfoye.exe的shellcode流程中会走和之前不同的流程,会在shellcode中以挂起模式再次运行自身(启动傀儡进程)
首先申请一块内存(后面用来临时存放傀儡进程代码)
获取主进程上下文取得PEB等
卸载子进程原有区块并创建新区块
映射区段
在新申请出来的内存中临时存放傀儡进程每个区段代码
代码写入完毕后映射到傀儡进程
重新设置傀儡进程上下文
恢复傀儡进程
退出进程将剩下的工作交给傀儡进程
由此可以看出yfoye.exe首次运行工作就是创建新的傀儡进程并注入病毒代码,Rombertik的关键行为应该在其傀儡进程中。
傀儡进程启动后首先调用两个函数提升自身权限
之后获取计算机名并动态获取CreateToolhelp32Snapshot地址
Hook CreateToolhelp32Snapshot
被Hook后的CreateToolhelp32Snapshot会跳转到00401730(作用为检测自身是否被修改以及破坏电脑将在最后提到破坏功能)
释放资源,ID分别为1006 1007 1008,资源内容如下图
传入RSADec函数的四个参数为(1007资源数据,1007资源大小,1006资源数据,1006资源大小)
调用RSA后解密的数据为www.centozos.org.in(后门地址)
通过遍历进程查找Chrome、Firefox以及IE浏览器
查找到以上进程存在后会在远程进程中申请一段内存,并根据.reloc中的重定位表修复重定位信息
再次将自身代码注入到浏览器进程并调用CreateRemoteThread运行远程线程。CreateRemoteThread的lpStartAddress参数会根据不同的浏览器传不通的偏移作为线程起始地址:
Google浏览器(chrome.exe):基址+0x12A0 火狐浏览器(firefox.exe):基址+0x18E0 IE浏览器(iexplore.exe):基址+0x2040
Google Chrome浏览器(chrome.exe):WSASend
Firefox浏览器(firefox.exe):nss3.dll或者nspr4.dll中的PR_Write
IE浏览器(iexplore.exe):HttpSendRequestW
拿IE为例被Hook后的HttpSendRequestW一旦执行,则会在真正的HttpSendRequestW执行之前将数据发送到www.centozos.org.in/don1/gate.php
被Hook后的CreateToolhelp32Snapshot在被调用时执行真正代码之前会先进入00401730检查PE结构中的FileStamp中的值是否和资源中解密出来的相同,如果不同,则会首先尝试写入MBR(主引导记录)
写入的数据内容
被写入MBR后重启计算机会看到如下提示
如果MBR写入失败,则会进入另一个破坏流程,加密文件:
首先获取登录用户所在路径,如C:/Documents and Settings/Administrator/,然后查找该目录下所有文件
排除exe、dll、vxd等类型后缀名后进入加密流程(也就是说主要破坏文档、图片等所有非PE文件),读取文件内容后对内容加密并写回到源文件
文件加密前后对比
Rombertik病毒会注入浏览器窃取受害者上网信息,包括账号密码等敏感数据,严重威胁广大网友的账号和财产安全。其特点在于关键代码采用乱序引擎,大大提高分析成本和门槛,且“自我保护”意识很强,一旦检测自身受到威胁则会开启破坏模式。但普通网友并不会触发病毒这一行为,无须过于担心,更应关注的是如何预防中招、万一中招怎样发现,以保护上网安全。
360QVM引擎团队提醒广大网友:
1、Rombertik病毒采用社会工程学手法,会针对收件人的不同职业身份发不同内容的邮件,以骗取下载点击。因此,网友应警惕来路不明的陌生邮件,不要下载和点击可疑附件。 2、Rombertik的主要中招症状是浏览器上网速度变慢,如果发现网速异常情况,应及时使用安全软件扫描查杀病毒,不必被媒体误导而担心电脑遭病毒破坏。
* 作者/360安全卫士(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)