0x00前言

Ramnit 蠕虫是一种通过可移动驱动器传播的蠕虫。该蠕虫还可以作为后门,允许远程攻击者访问受感染的计算机,通常会寄生在用户的浏览器中,难以察觉,因此每天都有数以万计的用户受其困扰。

分析工具:PEID、火绒剑、IDA、OD

分析环境:Win7 x86 Vmware

0x01样本信息

File name      DesktopLayer.exe

File Size  55 KB

File Type Win32 EXE

File Version:106.42.7

MD5: FF5E1F27193CE51EEC318714EF038BEF

SHA1: B4FA74A6F4DAB3A7BA702B6C8C129F889DB32CA6

CRC32: 40C57347

Packers: UPX 2.90

0x02样本分析

一、 脱壳

1.一层脱壳

样本被加了UPX 2.90壳。UPX壳最主要的目的是减小程序的体积,其特点是较高的压缩率和较快的解压速率,与TMD、VMP这类壳的设计理念完全不同,直接手动脱壳就可以了,其脱壳后的入口点模样如下:

2.二层脱壳

脱壳之后的跳转点并非OEP样本仍然压缩了大量的代码,深入分析之后,可以判断为是变形UPX壳。该变型壳首先解码UPX解码部分的代码,然后利用UPX的解码代码再次解码恶意功能的代码。解码代码解码完成后,会跳入该地址第二层的UPX继续执行,等二层UPX完成其解码之后,可以再次Dump,其最终的入口点如下:

二、 第一次执行分析

首先是获取测试机的默认浏览器及其位置,其获取方式是查找注册表中,HKCR\http\shell\open\command的键值:

此处默认的浏览器为C:\Program Files\Google\Chrome\Application\chrome.exe。而后会通过FindFirstFile()函数判断是否存在该文件如果不存在,那么会在几个默认位置进行查找使用IE浏览器(后期用来进行进程注入),如果两个方法都失败,就会退出程序:

接下来会创建互斥体,检验KyUffThOkYwRRtgPP 是否已经存在来保证同一时间只有一个实例在运行:

通过GetModuleFileName()函数获取自身执行体所在位置和文件名,将自身执行体的文件名与DesktopLayer.exe比较,然后会在C:\Program Files目录下,创建Microsoft文件夹。并将Csrv.exe重命名为DesktopLayer.exe,并复制到C:\Program Files\Microsoft文件夹下最后,调用CreateProcess()创建该进程:

创建该进程之后,程序就调用ExitProcess()退出了。

三、 第二次执行分析

通过比较确认名称为DesktopLayer.exe,程序改变了执行流程。将会对ntdll.dll中的ZwWriteVirtualMemory ()进行Hook操作:

调用CreateProcess()函数,启动根据通过查询注册表找到的chrome.exe进程:

Createprocess()函数内部会调用ZwWriteVirtualMemory()函数,从而执行其经过Hook的代码:

四、 HookCode执行分析

HookCode完成正常的WriteVirtualMemory()函数功能,通过ReadProcessMemory()函数获取chrome.exe进程的内存信息, 根据读取到的内存可以找到后续对chrome.exe的hook点。 然后自身进程内,解码出rmnsoft.dll,手动加载,并根据导入表和重定位表进行相应的操作:

五、rmnsoft.dll分析

将DLL从内存中Ddump出来。由于该DLL并未有混淆或者加壳等措施,且程序结构比较清晰,易于分析,实现以下功能:

Sub_10007ACA:将自身文件路径写入注册表SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit,实现自启动。

Sub_1000781F:在C:\Program Files\Google\Chrome\Application下创建 dmlconf.dat 文件,并写入 FILETIME 结构体数据。

Sub_10005906:监听 4678 端口,等待连接。收到连接后会接受命令并执行对应的操作。疑似后门,用来接收攻击者的命令.

Sub_1000749F:此函数中会创建两个线程。感染可移动介质及文件,他会将自身写入到可移动介质,并在目录下创建 autorun.ini 文件,在PE文件中写入一个 PE 文件;

0x03总结

分析比较仓促,应该遗留了不少东西,DesktopLayer.exe为样本主要是通过Hook ZwWriteVirtualMemory()函数,然后在启动默认浏览器进程的的时候运行HookCode,直接将所有相关的代码和数据直接写到被注入的进程空间中。其注入的DLL只在内存中出现,具有一定的隐蔽性。

转载于:https://www.cnblogs.com/Schicksal/p/10406899.html

学习笔记-Ramnit 蠕虫分析相关推荐

  1. Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...

    Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...

  2. oracle in查询 一直等待,学习笔记:Oracle awr 分析解决inactive transaction branch等待事件...

    天萃荷净 通过Oracle AWR报告分析inactive transaction branch等待事件的原因 分析一份awr,发现不太熟悉的等待事件"inactive transactio ...

  3. RT-1052学习笔记 - GPIO架构分析

    RT-1052学习笔记 - GPIO架构分析 一.RT1052之GPIO与IOMUX 二.GPIO架构分析 分析GPIO的外设框架 库函数操作 1.初始化MUX 2.初始化PAD 3.初始化GPIO外 ...

  4. ARM学习笔记--LPC1788引脚分析

    http://zgmgypb.blog.163.com/blog/static/962028192012730104640980/ RM学习笔记--LPC1788引脚分析 一.电源分析 要弄清楚单片机 ...

  5. HFSS学习笔记 21 扫频分析

    HFSS学习笔记之扫频分析-----------锋锋的快乐小窝 通过求解设置,可以对模型结构进行自适应网格剖分,并计算指定的网络剖分频率点处的 S S S参数和场解 b如果需要分析或计算某个频段范围内 ...

  6. Replica Island 学习笔记 03 - Activity分析

    MainMenuActivity Activity界面 MainMenuActivity启动的时候,会用fade in动画逐个显示菜单按钮,并在屏幕最下方显示一个Ticker:     点击任一菜单按 ...

  7. 学习笔记 | 独立成分分析(ICA, FastICA)及应用

    学习笔记 | 独立成分分析[ICA, FastICA]及应用 1 背景说明 2 算法原理 2.1 ICA简介 2.2 形式化表达 3 算法步骤与代码 4 算法改进:FastICA 5 ICA实例与应用 ...

  8. Ramnit 蠕虫分析

    0x00前言 Ramnit 蠕虫是一种通过可移动驱动器传播的蠕虫.该蠕虫还可以作为后门,允许远程攻击者访问受感染的计算机,通常会寄生在用户的浏览器中,难以察觉,因此每天都有数以万计的用户受其困扰. 分 ...

  9. 自控原理学习笔记-系统稳定性分析(2)-环路分析及Nyquist-Bode判据

    自控原理学习笔记 自控原理学习笔记专栏 文章目录 3. 环路分析 3.1环路分析基本思想: 3.2 稳定程度的性能指标(相对稳定) 3.3 环路整形 4.Nyquist判据 4.1 与幅角原理关系 4 ...

最新文章

  1. 访问系统相册或调用摄像头
  2. C++中的 Round(),floor(),ceil()
  3. linux ln(link) 命令详解
  4. 【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★
  5. Java基础知识:代理
  6. .NET Standard 2.1 公布
  7. python爬虫实例手机_Python爬虫实现爬取京东手机页面的图片(实例代码)
  8. android选择多个文件_一分钟合并多个Excel、PDF文件,3种方法任你选择,好用到没朋友...
  9. android studio yasea,yasea: RTMP streaming client for Android.
  10. bzoj1293 [SCOI2009]生日礼物 单调队列
  11. python sns绘制回归线_【干货!】用Python演绎5种常见可视化视图
  12. 力扣-590. N 叉树的后序遍历
  13. android使用cpu软解,Android 使用自带的MediaCodec 框架进行本地视频压缩,速度嗖嗖的,亲测有效!!!...
  14. 康奈尔大学计算机硕士要求,申请康奈尔大学计算机硕士需要什么条件呢
  15. GFP:新一代多业务传输技术(转)
  16. cdn 中移集采_中兴通讯中标中国移动融合CDN四期集采新建项目
  17. 微软Surface Pro笔记本如何设置u盘启动教程
  18. Unity的toggle与toggle group
  19. 会计计算机敲打大赛,2017上半年会计实操技能竞赛“荣耀对决”总决赛!
  20. linux 字符集转换命令,Linux下GBK编码到UTF-8文件编码转换方法

热门文章

  1. Netty的深入浅出--79.Netty官方Reference Counted Objects文档说明
  2. Chapter 8 中医证型关联规则挖掘
  3. 狄拉克δ函数的数学迷思
  4. 16进制图片数据转JPG格式和BMP格式
  5. MATLAB梯度和拉普拉斯算子在图像边缘检测中的应用
  6. Mac下制作Linux Centos7启动盘
  7. mac 下安装swoole
  8. ESP32_学习笔记(一)NVS的操作(存储和读取大数组)(为什么存入数据成功,读取却为零的原因)
  9. ESP32 学习笔记(二十六)NVS
  10. linux exchange 账号,linux exchange服务器配置