天台人满为患,不如来看下这个Ramnit蠕虫DesktopLayer.exe分析
今年的世界杯越来越看不懂,想去天台吹吹风都不一定有位置,心凉了,事儿还得做,先从网上抓个可疑样本压压惊!上手分析才发现并没有我想得那么简单……
一、基本信息
| MD5 | ff5e1f27193ce51eec318714ef038bef |
|---|---|
| 文件大小 | 55 KB |
| 运行环境 | Windows |
| SHA256 | fd6c69c345f1e32924f0a5bb7393e191b393a78d58e2c6413b03ced7482f2320 |
拿到可疑文件第一时间扔到“虚拟执行环境”中先让它自己可劲儿折腾一番,咱只需要坐在老板椅上,翘着二郎腿,喝着茶,唱着歌,没一会儿功夫分析报告就出来啦~
图:云沙箱报告截图
简单看下报告的概要信息,有 Ramnit 标签。Ramnit 蠕虫是一种通过可移动驱动器传播的蠕虫。该蠕虫还可以作为后门,允许远程攻击者访问受感染的计算机,通常会寄生在用户的浏览器中,难以察觉,因此每天都有数以万计的用户受其困扰。
二、行为分析
上手之前准备工作要做足,先梳理下流程:

图:流程图
2.1 首先使用 PEid 查壳,发现具有 UPX 壳,UPX 壳比较好脱,T 友们可以自行脱壳。
2.2 过了一层壳之后,接着又是一段解密代码,一直走下去,最终又会回到 0×00400000 地址段中,你会发现,和源程序一样,是经过 UPX 加壳的。

2.3 依照同样的方法跳过 UPX 壳后,就进入到样本的主体程序。
样本首先会查询系统默认的浏览器路径,如果查询失败就使用IE浏览器(后期用来进行进程注入),如果两个方法都失败,就会退出程序。
2.4 通过检查互斥体 KyUffThOkYwRRtgPP 是否已经存在来保证同一时间只有一个实例在运行。
2.5 进程名校验,样本会首先判断自己的进程名是否为 DesktopLayer.exe,如果是的话,就退出此函数,如果不是,就会构造 c:program filesmicrosoft 目录,然后将自身拷贝的此目录下,并命名为 DesktopLayer.exe,然后启动此程序。
2.6 当自身进程名为 DesktopLayer.exe 时,将会对函数 ZwWriteVirtualMemory 进行 Inline Hook,回调函数如下:

2.7 接着创建进程,此进程为开头获得的浏览器进程,在进程创建时会调用 ZwWriteVirtualMemory 函数,而这个函数已经被 hook 并跳转到 sub_402A59,此函数的主要功能就是对启动的目标进程进行进程注入,并将一个 PE 文件写入目标进程,写入的 PE 文件原本是嵌入在自身文件中的。使用 16 进程程序可以发现,脱壳后的样本中嵌入的 PE。
2.8 注入完之后会还原 ZwWriteVirtualMemory 的代码。
三、详细分析
经过这么多的操作,其实它的重点行为才刚刚开始。
3.1 使用 OD 附加到目标程序,经过几个函数的调用就会进入到嵌入的 PE 文件中,程序结构比较清晰。
3.2 创建不同的线程执行不同的功能,下面对其中几个比较重要的线程进行说明:
Sub_10007ACA:将自身文件路径写入注册表
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonUserinit,实现自启动。
Sub_1000781F:在 c:program filesInternet Explorer 下创建 dmlconf.dat 文件,并写入 FILETIME 结构体数据。
Sub_10005906:此线程没有被运行,不过通过对代码的静态分析,发现它会监听 4678 端口,等待连接。收到连接后会接受命令并执行对应的操作。所以猜测此线程为一个后门,用来接收攻击者的命令。
Sub_1000749F:此函数中会创建两个线程。
其中 Sub_10006EA8 用于感染 exe,dll,html,htm文件,总体思路都是将自身文件写入到目标文件中,例如下图感染的 htm 文件。写入的是一个 VB 脚本,变量 WriteData 存储的是一个 PE 文件。
受感染的 PE 文件会多处一个 rmnet 段。

Sub_10006EC2:感染可移动介质,他会将自身写入到可移动介质,并在目录下创建 autorun.ini 文件,然后写入如下数据:
[autorun]..action=Open..icon=%WinDir%system32shell32.dll,4..shellexecute=.RECYCLERS-1-7-42-5416413684-3444774702-722318625-0540AbxOgufK.exe..shellexplorecommand=.RECYCLERS-1-7-42-5416413684-3444774702-722318625-0540AbxOgufK.exe..USEAUTOPLAY=1..shellOpencommand=.RECYCLERS-1-7-42-5416413684-3444774702-722318625-0540AbxOgufK.exe
其中 AbxOgufK.exe 即为自身程序。分析过程中发现的域名 fget-career.com,经查询得知为恶意域名。

四、总结
深知自己分析能力有限,其实就是想抛块砖嘛(内心无比的鄙视自己…),样本分析是个技术活,也要耐得住寂寞,没有一款解闷的好工具怎么行?这次用的云沙箱提前为我多维度的检测样本,省力又省心,感兴趣的朋友可以多用用哈~
P.S. 天台上的 T 友们快下来吧!这么多恶意软件等着你们来分析呢!世界需要你们来守护~
也可以直接查看分析报告,继续深度分析,报告地址如下:
fd6c69c345f1e32924f0a5bb7393e191b393a78d58e2c6413b03ced7482f2320
天台人满为患,不如来看下这个Ramnit蠕虫DesktopLayer.exe分析的更多相关文章
- Ramnit蠕虫病毒分析和查杀
Ramnit是一种蠕虫病毒.拥有多种传播方式,不仅可以通过网页进行传播,还可以通过感染计算机内可执行文件进行传播.该病毒在2010年第一次被安全研究者发现,从网络威胁监控中可以看出目前仍然有大量的主机 ...
- Ramnit 蠕虫分析
0x00前言 Ramnit 蠕虫是一种通过可移动驱动器传播的蠕虫.该蠕虫还可以作为后门,允许远程攻击者访问受感染的计算机,通常会寄生在用户的浏览器中,难以察觉,因此每天都有数以万计的用户受其困扰. 分 ...
- (4)一起来看下mybatis框架的缓存原理吧
本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码,其他不重要非关键的就不贴了 我们知道.使用缓存可以更快的获取数据,避免频繁直接查询数据库,节省资源. MyBatis ...
- RPC 是通信协议吗 ?→ 我们来看下它的演进过程
开心一刻 一实习小护士给我挂针,拿着针在我胳膊上扎了好几针也没找到血管 但这位小姑娘真镇定啊,表情严肃认真,势有不扎到血管不罢休的意思 十几针之后,我忍着剧痛,带着敬畏的表情问小护士:你这针法跟容嬷嬷 ...
- linux下利用elk+redis 搭建日志分析平台教程
linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm elk 日志分析+redis数据库可以创建一个不错的日志分析平台了 ...
- 痞子衡嵌入式:在IAR开发环境下RT-Thread工程函数重定向失效分析
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下RT-Thread工程函数重定向失效分析. 痞子衡旧文 <在IAR下将关键函数重定向到RAM中执行的方法> ...
- 大并发连接的oracle在Linux下内存不足的问题的分析
大并发连接的oracle在Linux下内存不足的问题的分析 2010-01-28 20:06:21 分类: Oracle 最近一台装有Rhel5.3的40G内存的机器上有一个oracle数据库,数据库 ...
- DEBUG模式下, 内存中的变量地址分析
测试函数的模板实现 /// @file my_template.h /// @brief 测试数据类型用的模板实现 #ifndef MY_TEMPLATE_H_2016_0123_1226 #defi ...
- mac ox下android 通过battery-historian进行电量分析
简单介绍下如何用battery-historian进行电量分析,因为battery-hostorian是基于go语言的框架,所以需要安装go 1.安装go 2.配置go环境变量到.bash_profi ...
随机推荐
- 【python】pymongo中正则查询时的转义问题
在查询mongo时用到了正则查询 设字符串为 str = '/ab/cd.ef?g=' 直接用正则查询没有匹配. collection.find({"re":{'$regex' ...
- POJ-2778
DNA Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12726 Accepted: 4862 Des ...
- AC日记——[SCOI2009]游戏 bzoj 1025
[SCOI2009]游戏 思路: 和为n的几个数最小公倍数有多少种. dp即可: 代码: #include <bits/stdc++.h> using namespace std; #de ...
- JS框架的实现
众多流行的JS库都不同程度的污染了原生JS,最典型的如Prototype ,Mootools .JQuery则完全例外,一个匿名函数执行后便诞生了集所有API为一身的强大 $ .虽然如此,JQuery ...
- ubuntu16.04下安装docker
原文地址:传送门 本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即Docker社区版,是 ...
- 我一直记不住的vim用法
一.多行编辑进入visual block模式一般模式下Crtl+v组合键以块的形式选中待编辑的文本 进入visual line模式一般模式下大写V以行的形式选中待编辑的文本 上述两种模式的复制用y,删 ...
- 洛谷P3975 跳房子 [DP,单调队列优化,二分答案]
题目传送门 跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一 ...
- 货币金额javascript正则表达式
最多保留两位小数,货币金额(不能为0): /^(([1-9]\d*)(\.\d{1,2})?)$|^(0\.0?([1-9]\d?))$/
- HZAU 1203 One Stroke(倍增)
题目链接:http://acm.hzau.edu.cn/problem.php?id=1203 [题意]给你一颗完全二叉树每个节点都有一个权值,然后要你从上往下找一条链,值得链上权值的和<K,且 ...
- 【Java NIO】一文了解NIO
Java NIO 1 背景介绍 在上一篇文章中我们介绍了Java基本IO,也就是阻塞式IO(BIO),在JDK1.4版本后推出了新的IO系统(NIO),也可以理解为非阻塞IO(Non-Blocking ...