rmnet蠕虫病毒样本分析

news/2024/11/7 17:54:54/
rmnet蠕虫病毒样本分析

目录

文章目录

  • 目录
  • 0x00基本信息
  • 0x01 概述
  • 0x02流程图
  • 0x03 技术细节详细分析
    • 第一层壳
      • 解密出PE文件
    • 第二层壳
      • 检查环境
      • 准备注入iexplore.exe
      • 注入Iexplore.exe
      • 恶意六线程
        • 线程1: 7ACA 自启动
        • 线程2: 7626 测试网络连通性
        • 线程3: 781F 记录连通时差
        • 线程4: 790C 发送本机信息接收返回指令
        • 线程5: 6EA8 感染exe/dll/html/htm文件
          • 感染exe/dll
          • 感染html/htm
        • 线程6: 6EC2 感染可移动磁盘,传播
  • 0x04 样本溯源 & 作者溯源
  • 0x05 查杀,防御技术方案
    • 0xA 杀死iexplore.exe进程
    • 0xB 删除恶意样本
    • 0xC 恢复被感染的文件
      • 恢复exe/dll文件
      • 恢复html/htm文件
    • 0xD 恢复被感染的磁盘
  • 0x06 总结

0x00基本信息

样本名称ff5e1f27193ce51eec318714ef038bef_ff5e1f27193ce51eec318714ef038bef.vir
文件大小56320 byte
是否加壳3层UPX
样本类型感染型蠕虫病毒
MD5ff5e1f27193ce51eec318714ef038bef

0x01 概述

12
木马病毒特点感染传播
攻击人群移动磁盘用户和网络用户
活跃地区全国各地
传播方式通过浏览器访问被感染的html,移动磁盘自启动

0x02流程图

流程图有些繁琐

0x03 技术细节详细分析

第一层壳

解密出PE文件

常规UPX壳,ESP定律常规脱壳
在这里插入图片描述

第二层壳

第二层壳,看着像是将文件解密出来,本质还是个壳

在这里插入图片描述

偷了个技术,直接在脱第一层壳的时候,利用硬件断点还在一直F9,(前提我们知道他除了第一层壳还有壳)

直到再次看到popad

找到popad

在这里插入图片描述
等一个大跳就到了第二个壳之后的OEP:

脱完第二个壳发现图标都变化了:
左边是没脱壳的

在这里插入图片描述

这时,就能看到比较正确的程序代码了:

检查环境

首先,程序通过
HKEY_CLASSES_ROOT\http\shell\open\command
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\IEXPLORE.EXE"
两个注册表项
以及扩展环境变量
"%ProgramFiles%\Internet Explorer\iexplore.exe" 的值来检测iexplore.exe 是否存在

在这里插入图片描述
如果存在iexplore.exe等与http协议关联的浏览器程序 才会继续进行下面的操作:
注意:这里指存在是指路径存在并且有值,但不一定非是IE浏览器,进行判断的通过条件只要是找到了HTTP协议关联的程序就能继续进行操作。

检测互斥量 KyUffThOkYwRRtgPP 是否存在

如果互斥量不存在 那就返回创建的KyUffThOkYwRRtgPP互斥量的句柄
如果互斥量已经存在,就释放掉当前互斥量,并返回0。
在这里插入图片描述

在这里插入图片描述

只有互斥量不存在时,才会执行重新设置互斥量hMute=HANDLE_FLAG_INHERIT, 程序代码也才会正常执行:

在这里插入图片描述
检测完互斥量,接下来检测自身是否在固定磁盘下运行,并且名称是否是DesktopLayer.exe。

在这里插入图片描述

如果不同时满足上面两个判断条件,则程序会按顺序遍历下面的系统环境的目录,直到找到一个可以创建Micsoftware文件夹的目录 便不再遍历。

然后返回完整目录路径+DesktopLayor.exe的路径

下面是该函数的备选路径:

%ProgramFiles%
%CommonProgramFiles%
%HOMEDRIVE%%HOMEPATH%
%APPDATA%
SystemDirectory
WindowsDirectory
TempPath

在这里插入图片描述

然后将自身文件拷贝到返回的完整路径中并运行,然后退出当前进程

在这里插入图片描述

准备注入iexplore.exe

获取一些ntdll.dll的导出函数地址,并保存在全局变量中。

在这里插入图片描述
在这里插入图片描述

hook ZwWriteVirtualMemory 由于用CreateProcess创建iexplore.exe的进程的时候,会调用ZwWriteVirtualMemory API 所以利用 hook ZwWriteVirtualMemory函数的方式去注入iexplore.exe

首先,先对ZwWriteVirtualMemory函数地址所在的空间,修改访问权限而使得可以进行修改。

然后对ZwWriteVirtualMemory函数前五个字节进行处理。以方便接下来进行填充 jmp addr

在这里插入图片描述

流程图:

在这里插入图片描述

emmm 就是上图那样 hook了ZwWrite…函数

代码实现:

在这里插入图片描述

为什么要使用ZwWriteVirtualMemory函数,而不是别的函数?

在这里插入图片描述

hook ZwWriteVirtualMemory函数:
首先修改需要hook的函数地址前五个字节的访问权限,
修改为jmp 到自己想要的函数。
本次样本 hook 到了402a59函数地址

hook后的ZwWriteVirtualMemory函数:

在这里插入图片描述

对应的反汇编:

在这里插入图片描述

注入Iexplore.exe

hook ZwWritevirtualMemory函数成功之后,调用CreateProcess 函数创建一个iexplore.exe进程,并触发被hook的ZwWriteVirtualMemory

在这里插入图片描述

现在来看看hook ZwWriteVirtualMemory之后,hook到的函数都做了些什么事情

首先需要先把原先ZwWriteVirtualMemory函数该做的事情做了,就像上面hook流程图中的call 0x1116

代码:

在这里插入图片描述

sub_402002 是主要注入函数

该函数在当前进程中 申请了和要远程注入的相同基址20010000 ,避免了要频繁计算地址差值和重定向数据的一些麻烦,然后把dll在当前内存中展开,然后注入到iexplore.exe

在这里插入图片描述

此外,为了dll在进程中完整顺利运行,还将

1.初始化导入表的代码,  
2.修改页保护的代码,
3.修复IAT表并启用2,3步写入的代码以及调用dll文件 的代码,
4,一些运行所需的数据以及调用启动3步代码的 代码

都注入了iexplore.exe

在这里插入图片描述

恶意六线程

在启用六个恶意线程之前,会先进行socket的初始化和系统信息获取:

本地磁盘信息
磁盘序列号信息
系统版本信息
语言环境信息

获取系统信息

在这里插入图片描述
初始化Socket服务
在这里插入图片描述

线程1: 7ACA 自启动

每一秒都读取一次注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon,并判断Userinit的值是否有样本文件目录c:\programfiles\microsoft\Desktoplayer.exe 是否在键值中,如果不在就将样本文件目录加到该注册表项的键值中,从而达到开机自启的目的。

代码

在这里插入图片描述

线程2: 7626 测试网络连通性

测试与 google.com ,bing.com , yahoo.com 这三个主机80端口的访问,一旦有一个可以访问,就停止测试,并保存两次能够连通的时间差多少秒

在这里插入图片描述

线程3: 781F 记录连通时差

每一分钟都向**“C:\Program Files\Internet Explorer\dmlconf.dat”**文件中写入一个16字节的数据,前八个字节是获取的系统时间,接着4个是联通网站的时间差,后四个是0.

在这里插入图片描述

线程4: 790C 发送本机信息接收返回指令

每十分钟向“fget-career.com”服务器发送当前系统时间以及本机信息,并接受服务器返回的指令 。端口:443

在这里插入图片描述

线程5: 6EA8 感染exe/dll/html/htm文件

每30秒遍历固定磁盘DRIVE_FIXED和移动磁盘DRIVE_REMOVABLE

在这里插入图片描述
在这里插入图片描述
先过滤掉文件的白名单:"." ,"…" ,“RMNetwork” 如果是这三个文件或文件夹不进行遍历
.是当前文件夹的意思, …是上层目录,RMNetWork 可能是作者自己存储信息用的文件夹。

在这里插入图片描述
如果这些都不是,并且是个文件而不是文件夹的话,进行判断是exe文件还是html文件,用不同的方法进行加密:
在这里插入图片描述

感染exe/dll

如果是exe/dll 则对文件继续进行判断,判断该文件能不能够被加密:

文件大小是否大于64字节
文件PE格式是否正确
文件大小足够有NT头
文件Machine的值为Intel 386
文件是32位文件
文件没签名
文件不是通过C#和.Net编译的

在这里插入图片描述

继续判断2,通过判断是否有rmnet节表,来判断是否已经被加密过

在这里插入图片描述
继续判断3, 遍历导入表查看是否有LoadLibrary和GetProcAddress函数。

在这里插入图片描述
继续判4,判断文件末尾是否有一个足够大的0的空节表。
如果有足够大的空表 0x28,就修改文件的sizeOfImage的值,改为根据节表对齐后加上新节表的文件映像大小。

在这里插入图片描述
对文件的改动:

添加一个节表名称为rmnet,赋值给新加节表的rawsize(使用要写入的文件大小)   
让原本的文件大小作为新节点的入口地址  
节表大小按节表对齐后的值作为RVAsize  
节表大小按文件对齐的后的值作为RAWsize
节表特征设为0xE0000020
重新设置sizeOfImage(文件映像大小)为加新节表后并且按文件对齐值对齐后的大小
再将结构中的表的数量加1

在这里插入图片描述

接下来 更改程序入口点为新节表的入口点(更改PE中的EntryPointAddress)

取消文件在进程空间中的映射,写入两份数据到新解表加密的PE文件(其实就是自身DesktopLayorer.exe,这个可以用OD调试加密的文件解密出来),第二份数据是当前文件被加密的相关信息。

在这里插入图片描述

至此 结束加密exe,该exe只要被执行就会执行DesktopLayorer.exe恶意程序

总结 :

1.文件末尾添加一个表.rmnet的结构
2.表的数量增加1
3.SizeOfImage的大小  进行了更正
4.更改程序入口点
感染html/htm

先检查文件内容的最后9字节数据是不是""以此来判断该文件是否被感染过,如果没有被感染,则在文件末尾添加数据,

在这里插入图片描述

感染后会发现html页面添加了一段脚本代码:

在这里插入图片描述

如果是企业网站的html文件被感染,则访问该网站被感染的html文件时,IE会提示运行脚本

在这里插入图片描述

一旦点击运行脚本,就会在本地在Temp目录生成svchost.exe并执行。而svchost.exe其实也就是DesktopLayorer.exe文件。

线程6: 6EC2 感染可移动磁盘,传播

首先判断是不是移动磁盘,该线程每十秒查找一次是否有移动盘磁盘

在这里插入图片描述

然后继续进行判断:
该磁盘是否已经被感染过

1.该盘符是否有autorun.inf 文件
2.autorun.inf文件大小>3字节
3.autorun.inf前三个字节是RmN

满足上面三个条件之后 就确定该磁盘已经被感染过。

在这里插入图片描述

然后根据判断结果,如果是移动磁盘且磁盘空间大小正常且是未被感染过的磁盘,就进行感染

创建新的文件
RECYCLER 并设置为隐藏

并在该文件夹下创建新的子文件夹RECTCKER\S-3-0-14-0132847250-7673(随机时间拼凑成的文件夹名) 也设置为隐藏

在这里插入图片描述

并在该文件下创建字母随机拼凑成的文件名:clCbjNCI.exe 然后把加密过的DesktopLayorer.exe的代码内容拷贝到该文件下,并设置文件属性为隐藏

在这里插入图片描述
在这里插入图片描述
之后 再在可移动磁盘打开或者新建一个autorun.inf文件,然后在该文件头写入被感染的标志RmN,

在这里插入图片描述
再写入加密后的数据以及
“[autorun]\r\naction=Open\r\nicon=&%WinDir&\system32\shel132.d11,4\r\nshellexecute=.%g\r\nshell\explore\com”
移动磁盘自动播放相关指令。达到插上移动磁盘自动运行原本DesktopLayorer.exe代码的效果

在这里插入图片描述

从而达到被动传播,主动感染的效果

0x04 样本溯源 & 作者溯源

IP地址服务器
72.26.218.76(荷兰阿姆斯特丹)fget-career.com(443端口)

释放的文件:

文件路径md5
C:\Program Files\Microsoft\DesktopLayer.exe.5FFO6E6CD02773C13BEFBD82771223A6
C:\Program Files\InternetExplorer\dmlconf.dat随时保存连通网站时差等信息md5不固定
移动磁盘:\autorun.inf3374214FC65E4586B68FDEF7944856BC
移动磁盘:\RECYCLER\S-3-0-14-0132847250-7673626366-775384636-4860\cLCbJNCI.exe5FFO6E6CD02773C13BEFBD82771223A6

上面最后一个文件移动磁盘RECYCLER文件夹名是固定的
后面的子文件夹名和恶意程序名称是随机的,但是MD5与c盘的样本本身是一样的

rmnet蠕虫病毒最早出现在2010年,至今已有8年之久,主流杀毒软件均可拦截。
但因为传播方式简单,容易被忽略,加上很多机子还没有添加杀软,至今仍然有较强的传播力。

0x05 查杀,防御技术方案

0xA 杀死iexplore.exe进程

杀死被注入的iexplore.exe进程

0xB 删除恶意样本

遍历7个目录路径

1"C:\Program Files\";
2:"C:\Program Files\Common Files\";
3:"C:\Documents and Settings\Administrator\ ";
4:"C:\Documents andSettings\Administrator\Application Data\ ";
5:"C:\WINDOWS\system32\ ";
6:"C:\WINDOWS\ ";
7:"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\";

如果有"Microsoft"目录,删除该目录及其目录下的"DesktopLayer.exe"程序

0xC 恢复被感染的文件

恢复exe/dll文件

根据样本对文件的修改

1.添加一个表的结构
2.表的数量增加了一个
3.SizeOfImage的大小  进行了更正
4.更改程序入口点

编写脚本改文件PE, 遍历除了"C:\WINDOWS","C:\windows\system32"的其他目录下exe/dll文件,判断文件节表中是否有.rmnet节表(感染标志),如果有则进行下面的行为

1.最后一个节表结构中的数据全置为0
2.NumberOfSections -=1
3.更正SizeOfImage为倒数第二个节表对齐后的RVA大小
4.更改程序入口点为原始OEP

恢复html/htm文件

遍历目录下的html/htm文件
判断文件最后9个字节内容,如果是""
就从文件尾开始 删除5E1E2字节的数据

0xD 恢复被感染的磁盘

判断如果磁盘根目录下有"autorun.inf"文件且文件头三个字节为"RmN"
如果上述情况存在,就表明该移动磁盘已经被感染,

1.删除autorun.inf文件
2.删除RECYCLER文件夹及其子文件夹和文件
3.用恢复文件的方式,修复磁盘中的文件

能力有限,写了个恢复被感染的exe/dll/htm/html文件的小程序,凑合用。

下载链接

https://pan.baidu.com/s/18nTdPZWYJM-UpMlrYtwBQQ

0x06 总结

本次分析 注入的修复IAT表的函数,以及初始化导入表的函数和第4步添加数据中的shellcode,以及如何通过这段shellocde去执行写入的代码。 都还没来的及或者能力不够没能仔细分析,该样本除了感染能力强,传播区域广泛,还可以作为后门去执行服务器的命令。 接下来的时间,就去编写查杀的程序吧。


http://www.ppmy.cn/news/560056.html

相关文章

U盘流行病毒autorun的分析及清除方法

U盘流行病毒的形态为autorun名称的隐藏文件,后缀名为inf、exe等十种,通常表现为双击无法打开机器盘符,只能右击再点打开;系统变慢。有的没有感觉到异样,不大影响使用,但硬盘根目录下仍然有各种名为autorun的…

计算机病毒没有文件名是靠什么识别的,电脑病毒文件怎么样识别

电脑病毒会经常存在我们的电脑文件里,如果文件有了病毒,要怎么样去识别呢?下面由学习啦小编给你做出详细的电脑病毒文件识别方法介绍!希望对你有帮助! 电脑病毒文件识别方法一: 通过文件时间 如果你觉得电脑不对劲,用杀毒软件检查后,没什么反映或清除一部分病毒后还是觉得…

转:jwgkvsq.vmx手工清除方法(针对病毒变种补充完整)

jwgkvsq.vmx手工清除方法(针对病毒变种补充完整) 网络上关于jwgkvsq.vmx专杀的文章比较多,具体对该u盘病毒深入分析的文章很少或分析不够详细,对那些用了jwgkvsq.vmx专杀但却搞不定该病毒的人来说,可以参考以下内容对jwgkvsq.vmx蠕虫病毒进行手动清除。由于涉及到对注册表的操…

文件夹病毒残余文件的解决办法

文件夹病毒的进程 文件夹病毒的进程为chrome.exe,也可能为其他进程,且相关进程为svchost.exe的系统进程,与谷歌浏览器的进程名一致,因此首先需要阻止该进程的启动和运行,可以使用VB脚本实现 do set baggetobject(&qu…

病毒分析2

1、概述 本文档讲述关于极虎病毒变种的行为、技术细节; 该病毒主要通过互联网和局域网传播,其大小为248,832 字节 ,编写语言不详。运行后先判断自身模块位置,如为0x0040000则认为是exe文件,此时打开指定服务&#xff0…

关于Recycle.exe病毒的分析

【名称】:recycle.exe病毒 【传播方式】:U盘 【属性】:木马 【测试环境】:windows xp sp3 、冰刃、Process MonitorV2.02H、File Monlter、combo防火墙免费版(功能全开,未更新) 【表现形式】…

php 清理脚本病毒,Autorun 病毒清除工具bat代码

@Echo Off color 2f title Autorun 病毒清除工具-By Phexon Rem 杀进程 taskkill /F /IM SocksA.exe /IM SVOHOST.exe /IM AdobeR.exe /IM ravmone.exe /IM wincfgs.exe /IM doc.exe /IM rose.exe /IM sxs.exe /IM autorun.exe /IM KB20060111.exe /IM tel.xls.exe>nul 2>…

U盘病毒

详细解析U盘病毒、Autorun.inf文件和RavMonE.exe病毒 最近,有关U盘病毒的情况非常严重,以湛江年会为例,在各人递交的U盘上,发现有病毒的比例可以高达90%。 这里记录一下有关此病毒的一些个人看法: 首先,目…