吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16652|回复: 50
收起左侧

[PC样本分析] Darkhotel组织攻击套件Ramsay从隔离网中窃取信息

  [复制链接]
Yennfer_ 发表于 2020-6-10 17:28
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 Yennfer_ 于 2020-6-11 17:32 编辑

Ramsay

基本信息

File Nmae File Size File Type MD5
Ramsa1Exe.exe 1,849,905 Byte Spy 186b2e42de0d2e58d070313bd6730243

简介

样本通过感染内网中的exe程序,进而感染word文档,随着Word文档由U盘带入隔离网,感染隔离网的文件并在隔离网内持久化,搜集情报,打包成加密的rar文件,并将rar文档二次加密后附加在word文档尾部,再跟随word文档由U盘带出隔离网,病毒判断每一次Word文档附加的指令,执行不同的代码

动态行为

样本是一个7-Zip安装包,点击运行后释放多个文件并创建了大量进程,其中包含有正常安装7-Zip部分的进程

006o5z8lgy1gfdq91ery0j30pc041q3g.jpg

调用CMD查询计算机信息、网络、查询端口等

2.jpg

在多个目录下释放大量文件

分析

查壳

3.jpg

无壳,样本是一个NSIS打包成的7-Zip压缩包

读取自身

载入OD与IDA中,经过入口点初始化之后,样本会在执行正常安装程序之前先执行恶意代码

申请内存,将自身读取到申请的内存中

4.jpg

判断权限级别

通过获取SID结构,判断当前进程权限,执行不同的代码

sid1.jpg
sid2.jpg

释放并执行多个exe文件

5.jpg

获取%Temp%目录,再拼接出路径

6.jpg

判断%Temp%目录下是否已经存在要释放出的随机字符串.exe文件
7.jpg

拼接出特定字符串“pN64RaafaQfjWXjM3Ku3UkqP”,在最开始将自身读取到申请的内存空间中比较,

匹配上这一段字符串

8.jpg

匹配

9.jpg

在内存中比较到字符串,可以发现字符串后面跟着的就是一个PE文件

10.jpg

后面同样,拼接出另一个字符串,然后再内存中寻找匹配
11.jpg

申请内存,拷贝第一次匹配到的PE文件到申请的内存中

12.jpg

将拷贝的PE文件写入到前面拼接的%TEMP%下的随机字符串.exe中

13.jpg

修改释放出的exe文件的创建时间、修改时间、访问时间

14.jpg

用同样的方法,拼接出另两个字符串"4znZCTTa2J24E64GzUxaUnYg"和"2A2rRhArF6akS9PaRZBwdrbn",在内存中匹配然后将PE文件写到%TEMP%目录下另一个exe中

15.jpg

调用ShellExecuteExW执行刚才释放出的第二个PE文件

16.jpg
17.jpg

判断在C:\Windows\System32目录下是否存在msfte.dll,如果不存在且权限够高的话,则再次从生成随机字符串

利用和前面一样的方法,在内存中匹配字符串"2A2rRhArF6akS9PaRZBwdrbn"和"pN64RaafaQfjWXjM3Ku3UkqP"

得出PE文件
18.jpg
19.jpg

调用CreateProcess执行刚释放出的exe

20.jpg

到这里代码就执行完了,后面的是正常安装7-Zip的代码

moprxlpbpm.exe

moprxlpbpm.exe是被母体释放出的第二个exe文件,在前面通过ShellExecuteExW执行

21.jpg

反调试

样本Winmain开头检测CommandLine,如果不是从母体调用而是双击运行会直接退出程序

22.jpg

用第一次释放的PE文件CopyFile覆盖病毒母体

23.jpg
24.jpg
覆盖之后

25.jpg

然后调用ShellExecuteExW运行病毒母体,实际上是第一次释放出的PE文件

26.jpg

这个是正常的7-z安装器

27.jpg

运行后删除第一次释放出的PE文件

28.jpg

kfzagiqcbu.exe

kfzagiqcbu.exe是第三次释放出的PE文件,Dropper,负责释放其他文件

查壳后UPX的壳,脱掉后
29.jpg

释放文件执行

先检查路径C:\Users\sam\AppData\Roaming\Microsoft\UserSetting是否存在,不存在则创建

30.jpg

判断程序的CommandLine是否有字符串"gQ9VOe5m8zP6",执行不同的代码

判断C:\Windows\system32\msfte.dll是否存在,执行不同的代码

31.jpg

判断文件夹C:\Windows\System32\Identities是否存在,不存在就创建并设置属性为隐藏

32.jpg

并将自身拷贝到C:\Windows\System32\Identities\下并命名为wideshut.exe

33.jpg

写入另一个PE文件到C:\Windows\System32\Identities\Sharp.exe

34.jpg

拼接另一个路径并写入文件bindsvc.exe,再调用CreateProcessW执行

35.jpg

释放文件,驱动执行

执行bindsvc.exe后,利用函数iswow64process判断当前系统是32位或是64位,当系统为32位时,判断C:\Windows\System32\Drivers\hfile.sys是否存在,如果存在就把它移动到%temp%目录下随机字符串.dat

36.jpg

不论是否存在C:\Windows\System32\Drivers\hfile.sys,都会createfile,然后写入内容

37.jpg

当C:\Windows\System32\Drivers\hfile.sys已经存在且被移动到%temp%下之后,会用hfile.sys创建一个驱动并启动,设置为开机自动启动服务

38.jpg

已经运行的驱动

39.jpg

运行后,样本会尝试连接\.\HideDriver并尝试使用DeviceIOControl传输buffer

40.jpg

释放msfte.Dll,劫持服务自启

判断C:\Windows\System32\msfte.dll是否存在,还是和前面一样,存在就移动到%TEMP%下随机名.dat,然后再新写入一个msfte.dll

41.jpg
42.jpg
43.jpg

劫持Windows的服务Windows Search,修改为开机自启,因为Wsearch服务开加载msfte.dll,所以样本也能跟随服务实现开机自启

44.jpg

查询C:\Windows\System32\oci.dll是否存在,存在就移动到%TEMP%下随机名.exe,再写入一个C:\Windows\System32\oci.dll

45.jpg
46.jpg

拷贝自身

判断C:\Windows\System32\wimsvc.exe是否存在,存在则复制到%TEMP%目录下的随机名.exe

然后将样本自身拷贝到C:\Windows\System32\wimsvc.exe

47.jpg
48.jpg

释放oci.Dll,劫持服务自启

利用同样的方法,修改服务“MSDTC”为自启动,使前面释放的oci.dll跟随服务自动

49.jpg

调用CMD,拼接参数,修改"MSDTC"的ObjectName="LocalSystem"

50.jpg

删除自身

在%temp%目录下创建一个.bat文件,多次拼接,删除样本自身和bat文件自身

51.jpg
52.jpg

kfzagiqcbu.exe的代码到这里结束

bindsvc.exe

Bindsvc.exe是由Dropper执行的第一个文件

查壳

53.jpg

查询注册表HKEY_CURRENT_USER\Volatile Environment下APPDATA和LOCALAPPDATA环境变量的路径

54.jpg
55.jpg

查询C:\Users\sam\AppData\Roaming\Microsoft\UserSetting是否存在,不存在则创建,这个路径被隐藏了,估计是驱动隐藏的

56.jpg

读取文件C:\Windows\System32\Identities\wideshut.exe,同样这个路径已经被隐藏了,当这个文件不存在的时候有一串提示语“Ramsay is not exist. I will finish."

拼接出五串字符串,读取后通过几组字符串读取数据

57.jpg

读取自身到申请的一块空间中,然后通过前面拼接的第二组和第三组字符串读取数据,第一次读取病毒的StartKit

58.jpg

通过第一组和第二组读取TrnCleaner

59.jpg

判断文件C:\Users\sam\AppData\Roaming\Microsoft\UserSetting\trnmg.sdb是否存在,存在就删除,这个文件是病毒的日志,加密后存储,这个路径也被hfile.sys隐藏,设置有守护线程一直设置隐藏,卸载掉驱动再取消隐藏、系统属性就可以看见

60.jpg
61.jpg

获取系统所有盘符,排除A、B软盘,递归遍历除了系统盘之外的所有盘符

62.jpg

读取到EXE文件后,只感染文件小于256MB的文件,通过判断字符串

"9J7uQTqgTxhqHaGUue5caaEr3KU"和"9J7uQTqgTxhqHaGUue5caaEr"判断文件是否被感染

63.jpg

创建文件夹C:\Users\sam\AppData\Local\Temp{e91461b4-a519-4110-9fae-d2895719dbb1},并设置为隐藏属性

64.jpg

在新建的文件夹下创建一个同名exe,将前面获取的StartKit写入,通过比较,只有文件尾部的零填充字节多少不同,其他部分一致

65.jpg

更新资源,修改代码,将exe感染成为与7z安装器相同的结构

66.jpg

完成后,将被感染的exe覆盖原来的exe文件,并删除新建的exe文件,将被感染文件的时间修改为前面获取到的正常exe的时间

67.jpg

感染exe后的日志解密后

68.jpg

获取计算机网卡信息并写入到日志中

69.jpg

创建新线程,感染网络中共享磁盘

70.jpg
71.jpg

bindsvc.exe的代码到这里结束

Hfile.sys

Hfile.sys是Dropper释放出的驱动文件,载入IDA后会提示有PDB路径,路径为

C:\users\vmware\desktop\hidedriver\bin\Release\i386\HideDriver.pdb

这个文件是一个Rootkit,用来隐藏创建的各种文件和文件夹,不卸载掉Hfile.sys这驱动,在RING3下对文件夹去除隐藏操作无效的

msfte.dll、oci.dll

msfte.dll、oci.dll两个文件基本一致,只有一个字节差别

msfte.dll是Dropper释放出劫持服务"Windows Search"的文件,跟随服务“Windows Search”的自启而被加载实现自启

无壳

72.jpg

创建文件夹C:\Users\sam\AppData\Roaming\Microsoft\UserSetting,获取系统硬件配置文件全局标识符GUID

73.jpg

查询当前加载该DLL的程序,并判断是SearchIndexer.exe、explorer.exe、msdtc.exe,执行不同代码

当进程为SearchIndexer.exe时

一个死循环新线程,创建一个和explorer.exe同样TOKEN的SearchProtocolHost.exe,然后程序结束

74.jpg

75.jpg

当进程为explorer.exe时

获取到路径"C:\Users\sam\AppData\Roaming\Microsoft\Office\Recent",然后进行死循环

76.jpg

从路径中拼出C:\Users\sam\AppData\Roaming\Microsoft\Office\Recent*.doc.lnk,文件夹中保存着最近打开过的Word文档的.lnk快捷方式

77.jpg

从.lnk快捷方式得出指向的原文件

78.jpg

拼接出路径"C:\Users\sam\AppData\Roaming\Microsoft\UserSetting\MediaCache"后创建这个文件夹,然后将文件夹设置为隐藏

79.jpg

硬编码Doc文件的文件头标志,判断文档后缀为.doc还是.docx,读取文档,与硬编码的标志头比较前21字节,确认是否为文档

80.jpg
81.jpg

拼接出路径C:\Users\sam\AppData\Roaming\Microsoft\UserSetting\NetworkDiagnos,在这个文件夹下创建一个生成的随机字符串.dat文件

82.jpg

向其中写入将读取到的doc文件加密后的十六进制数据

83.jpg

将读取到的doc文件拷贝到%APPDATA%\Microsoft\Word\123.docx

84.jpg

创建文件夹%APPDATA%\Microsoft\Word,在文件夹内创建一个vbs文件,写入内容
85.jpg
86.jpg

调用Wscript.exe执行VBS,CommandLine:

C:\Windows\System32\wscript.exe  C:\Users\sam\AppData\Roaming\Microsoft\Word\winword.vbs  C:\Users\sam\AppData\Roaming\Microsoft\Word.

用于将doc文档转换为txt文本

87.jpg

然后删除vbs文件,并将C:\Users\sam\AppData\Roaming\Microsoft\Word下转换出的txt文件移动到隐藏文件夹C:\Users\sam\AppData\Roaming\Microsoft\UserSetting\MediaCache中

88.jpg

当进程为msdtc.exe时

msdtc.exe是服务MSDTC的程序,对应前面劫持MSDTC服务

Dll跟随服务开机自启,然后找到Dropper的备份C:\Windows\System32\wimsvc.exe执行,实现Dropper的开机自启

89.jpg

当进程为HTON.exe、BON.exe、Cover.exe时

创建文件夹C:\Users\sam\AppData\Roaming\Microsoft\UserSetting\BjDJTPvUnpqrxxKx9OXL

90.jpg
91.jpg

调用前面释放的Sharp.exe,Sharp.exe是WINRAR的程序,将Recent目录下的所有文件打包,密码PleaseTTakeOut6031416!!@@##
92.jpg
93.jpg

遍历"C:\Users\sam\AppData\Roaming\Microsoft\UserSetting"将前面得到的doc转txt文件复制到C:\Users\sam\AppData\Roaming\Microsoft\UserSetting\BjDJTPvUnpqrx0012CF68xKx9OXL下

94.jpg

将所有txt、刚才打包后的recent文件夹内内容和日志文件复制后打包到上级目录,密码为PleaseTakeOut6031416!!@@##,打包后调用CMD删除整个文件夹
95.jpg
96.jpg

将rar数据读取到内存,删除压缩包,然后对压缩包进行加密

99.jpg

加密前

97.jpg

加密后

98.jpg

HOOK函数WriteFile

100.jpg

正常的WriteFile

101.jpg

被HOOK后的WriteFile,jmp到了病毒代码

102.jpg

103.jpg

HOOK后的代码对Word文档写入隐藏数据

104.jpg

创建死循环线程,保持窃密和日志更新

105.jpg

导出表中有函数AccessDebugTracer和AccessRetailTracer

遍历进程目录查找到进程"explorer.exe",远线程注入将自身注入到"explorer.exe"中

106.jpg

窃密

调用CMD执行大量拼接出的数据,获取网络相关信息,将相关内容加密后写入文件夹Media下计算机名-时间.rtt文件中

110.jpg

111.jpg

窃取获取IE临时文件

112.jpg

通过判断doc文档被感染后的特有标志,执行不同的内容

113.jpg

如果没有特有的标记,则判断word的创建或访问时间在一个月内,对word文档进行感染,将前面打包得到的加密后的RAR的十六进制数据添加在word文档尾部

114.jpg
115.jpg

总结

样本通过感染内网中的exe程序,进而感染word文档,随着Word文档由U盘带入隔离网,感染隔离网的文件并在隔离网内持久化,搜集情报,打包成加密的rar文件,并将rar文档二次加密后附加在word文档尾部,再跟随word文档由U盘带出隔离网,病毒判断每一次Word文档附加的指令,执行不同的代码。并使用自定义的文件传输协议而不是传统的网络协议。

基于自定义的文件传输控制指令完整过程:

​        攻击者当前位置可能是位于目标内网,能控制一定数量的机器和共享目录上的文件。

​        步骤1. 感染正常的EXE文件,通过受害者携带进入隔离网络的机器中执行。

​        步骤2. 被攻陷的隔离网络机器中的窃密数据,被附加到正常Word文档的末尾;

​        1) 附加窃密数据的Word文档被受害者携带撤出隔离网络;

​        2) 攻击者找到这些Word 文档,读取附加的窃密数据;

​        步骤3. 攻击者感染新的Word文档,附加命令和执行对象。

​        1) Word文档被受害者携带进入隔离网络;

​        2) 附加的命令和执行对象在隔离网络中已被攻陷的机器中得到执行;

​        3) 执行结果的日志随着步骤2也被带出隔离网络。

84.jpg

免费评分

参与人数 38吾爱币 +41 热心值 +35 收起 理由
白羽小试 + 1 + 1 我很赞同!
danielau + 1 + 1 大神请接收我的膜拜!
woshishiqi + 1 牛逼就完事了
xing2828 + 1 + 1 谢谢@Thanks!
繁华如画 + 1 热心回复!
poisonbcat + 1 + 1 谢谢@Thanks!
chenjingyes + 1 + 1 谢谢@Thanks!
fec7de + 1 + 1 我很赞同!
绿雪羚羊 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
fei8255 + 1 + 1 谢谢@Thanks!
Mouse + 1 + 1 谢谢@Thanks!
挥汗如雨 + 2 + 1 热心回复!
天蝎浪花 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hgfty1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
kinglightsecond + 1 + 1 谢谢@Thanks!
x51zqq + 2 + 1 感谢分享,建议配个整体流程图可以更直观一点哦
Dectiny + 1 + 1 谢谢@Thanks!
WW0947558 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
xiaorr + 1 + 1 谢谢@Thanks!
clarice1213 + 1 热心回复!
yixi + 1 + 1 我很赞同!
山上的冷 + 1 + 1 谢谢@Thanks!
yAYa + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
女萝岩 + 1 + 1 我很赞同!
kerwincsc + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
siuhoapdou + 1 + 1 用心讨论,共获提升!
zhoumeto + 1 + 1 用心讨论,共获提升!
kentish + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
jnez112358 + 1 + 1 谢谢@Thanks!
也许我不够坚强 + 1 + 1 用心讨论,共获提升!
fengbolee + 1 + 1 谢谢@Thanks!
gaosld + 1 + 1 用心讨论,共获提升!
victos + 1 + 1 热心回复!
养鸡场厂长 + 1 + 1 用心讨论,共获提升!
生有涯知无涯 + 1 用心讨论,共获提升!
smile1110 + 3 + 1 谢谢@Thanks!
大白痴先生 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
WWB0224 + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2020-6-10 18:07
最好可以添加一些代码和截图来配合说明,前段时间好像看到过哪家厂商发过这个样本的报告?
smile1110 发表于 2020-6-10 19:51
chmod755 发表于 2020-6-10 17:47
pandorazx 发表于 2020-6-10 20:23
很厉害的样子- -!
 楼主| Yennfer_ 发表于 2020-6-11 08:50
Hmily 发表于 2020-6-10 18:07
最好可以添加一些代码和截图来配合说明,前段时间好像看到过哪家厂商发过这个样本的报告?

好像是安天
shenshouaowu 发表于 2020-6-11 10:19
清早起床,谢谢分享,学习下思路
 楼主| Yennfer_ 发表于 2020-6-11 13:37

嗯?没有图吗
 楼主| Yennfer_ 发表于 2020-6-11 13:41
本帖最后由 Yennfer_ 于 2020-6-11 13:53 编辑

emmmmm,微博的图床好像不显示,我晚上再重新补图
sssjcccz01a 发表于 2020-6-11 14:27
不错哦,思路奇特学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 12:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表