刀锋上前行!绕过Ramint蠕虫病毒直接脱壳
系统 : Windows xp
程序 : 某游戏客户端
程序下载地址 :不提供
要求 : 脱去压缩壳
使用工具 : OD & PEID & LordPE & Import REC
被感染客户端中的是Ramint蠕虫病毒,感染速度非常快,危害相当大。建议在虚拟机环境下进行逆向分析。
相关资料:
Ramnit(W32.Ramnit)的初始形态是蠕虫病毒,首次出现于2010年,激进的自繁殖策略使其得到迅速传播。一旦入侵计算机,该病毒就会找出本地硬盘和移动硬盘上所有的EXE、DLL、HTM和HTML文件,通过自身副本感染这些文件。
本文参考了这篇帖子的12L回复:
会有一个新段位 rmnet的sfx段
取现在EP地址-(【EP+】得到的偏移数)= 原始OEP 动态劫持脱壳
EP处直接粘贴该二进制
E8 5D ED 2B AD 6C 1C FF E0 静态脱壳
先提取rmnet区段数据。然后取得 EP+328数据用ep减即可。。。然后删除rmnet区段。
客户端入口点在病毒区段,其内容为:
> pushad
E8 call
5D pop ebp
8BC5 mov eax, ebp
81ED 326F0120 sub ebp, 20016F32
0062200F 2B85 sub eax, dword ptr [ebp+]
4C720120 mov dword ptr [ebp+2001724C], eax
0062201B B0 mov al,
0062201D 9E740120 xchg byte ptr [ebp+2001749E], al
3C cmp al,
0F85 DE020000 jnz
按照帖子回复所说静态修改代码,其内容变为:
> pushad
E8 call
5D pop ebp
83ED sub ebp,
0062200A 2BAD sub ebp, dword ptr [ebp+]
896C24 1C mov dword ptr [esp+1C], ebp
popad
FFE0 jmp eax
以上指令找出了oep的位置,并直接跳转进入oep。也就是说,根本不用分析病毒行为,我们直接绕过它就可以。
脱壳时,运行到客户端真正的oep再完整转存内存映像,并在重建输入表的时候选择正确的oep,那么病毒代码就并不会执行。
紧接上部,jmp eax之后来到了程序的upx壳部分:
0060D080 pushad
0060D081 BE mov esi,
0060D086 8DBE 00C0E8FF lea edi, dword ptr [esi+FFE8C000]
0060D08C push edi
0060D08D 83CD FF or ebp, FFFFFFFF
0060D090 EB jmp short 0060D0A2
0060D092 nop
0060D093 nop
0060D094 nop
0060D095 nop
0060D096 nop
0060D097 nop
0060D098 8A06 mov al, byte ptr [esi]
0060D09A inc esi
0060D09B mov byte ptr [edi], al
0060D09D inc edi
0060D09E 01DB add ebx, ebx
0060D0A0 jnz short 0060D0A9
0060D0A2 8B1E mov ebx, dword ptr [esi]
单步执行pushad之后,esp指向0012FFA4 ,键入命令hr 12FFA4下硬件断点,F9运行程序断在此处:
0060D207 8D4424 lea eax, dword ptr [esp-]
0060D20B 6A push
0060D20D 39C4 cmp esp, eax
0060D20F ^ FA jnz short 0060D20B
0060D211 83EC sub esp, -
0060D214 - E9 93D9EFFF jmp 0050ABAC
直接在60D214出下断,跟入真正的oep:
0050ABAC push ebp
0050ABAD 8BEC mov ebp, esp
0050ABAF 6A FF push -
0050ABB1 90C35100 push 0051C390
0050ABB6 60D65000 push 0050D660
0050ABBB :A1 mov eax, dword ptr fs:[]
0050ABC1 push eax
0050ABC2 : >mov dword ptr fs:[], esp
0050ABC9 83EC sub esp,
0050ABCC push ebx
0050ABCD push esi
0050ABCE push edi
0050ABCF E8 mov dword ptr [ebp-], esp
0050ABD2 FF15 A8B15100 call dword ptr [51B1A8] ; kernel32.GetVersion
此时单击菜单Debug->hardware breakpoints删除之前设置的硬件断点。
打开LordPE选择客户端程序并单击右键选择“完整转存”。
保存dump文件之后,再打开输入表重建工具Import REC附加到客户端程序。
填写OEP为“10ABAC”,依次单击“自动查找IAT”、“获取输入表”,最后,单击“修复转存文件”,选中之前的dump文件,则脱壳成功。
刀锋上前行!绕过Ramint蠕虫病毒直接脱壳的更多相关文章
- [转帖]Docker Hub上镜像发现挖矿蠕虫病毒,已导致2000台主机感染
Docker Hub上镜像发现挖矿蠕虫病毒,已导致2000台主机感染 https://www.kubernetes.org.cn/5951.html 本来想说可以用 official版本的镜像 但是一 ...
- Trick蠕虫病毒来袭!幕后主使竟是一名高中生“黑客”!
黑客一直是美国电影中的重要元素,很多经典大片中都有黑客的身影,如战争游戏.黑客帝国等.电影中黑客总是神通广大.行侠仗义,<战争游戏>中的年轻黑客大卫•莱特曼利用黑客技术避免引爆核武器,&l ...
- srv.exe蠕虫病毒~
你是否在电脑使用过程中遇到过这样的问题: 1.文件运行后,同目录下会出现一个原名 srv.exe的文件 2.文件运行后会把浏览器打开 3.电脑上的html文件末尾会增加一大堆东西 完了,电脑中了srv ...
- Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过
Kali Linux Web 渗透测试视频教程—第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...
- CTF---Web入门第二题 上传绕过
上传绕过分值:10 来源: Justatest 难度:易 参与人数:5847人 Get Flag:2272人 答题人数:2345人 解题通过率:97% bypass the upload 格式:fla ...
- 实验吧_程序逻辑问题(代码审计)&上传绕过
一开始我先随便输入了几个账号名字进行测试,发现当输入的账号名为admin时会发生报错 经过测试果然是一个注入点 当拿到admin密码后发现根本没用,没办法另寻他路 审查元素时发现提示index.txt ...
- WannaCry勒索比特币蠕虫病毒解决方案
WannaCry ransomware used in widespread attacks all over the world Customer Guidance for WannaCrypt a ...
- Window应急响应(二):蠕虫病毒
0x00 前言 蠕虫病毒是一种十分古老的计算机病毒,它是一种自包含的程序(或是一套程序),通常通过网络途径传播,每入侵到一台新的计算机,它就在这台计算机上复制自己,并自动执行它自身的程序. 常见的 ...
- 服务器中了蠕虫病毒Wannamine2.0小记
近期用户反馈某台服务器总感觉性能不是很好存在卡顿,于是今天远程上去分析. 打开任务管理器发现CPU使用率非常低,内存使用也在接受范围内(10/64G).不过我有一个偏好就是不喜欢用系统自带的任务管理器 ...
随机推荐
- Nutch源码阅读进程2---Generate
继之前仓促走完nutch的第一个流程Inject后,再次起航,Debug模式走起,进入第二个预热阶段Generate~~~ 上期回顾:Inject主要是将爬取列表中的url转换为指定格式<T ...
- 实例演示Android异步加载图片
本文给大家演示异步加载图片的分析过程.让大家了解异步加载图片的好处,以及如何更新UI.首先给出main.xml布局文件:简单来说就是 LinearLayout 布局,其下放了2个TextView和5个 ...
- .net, java, c/c++ 和钱
.net, java, c/c++ 和钱 最近有一段时间没有写博客了,原因是没时间,项目需要在短时间内增加一些安全性的支持,为此我花了近两个月的时间做基础研究,现在路已经跑通了,稍闲下来,看到园子里面 ...
- Elasticsearch增删改查 之 —— Get查询
GET API是Elasticsearch中常用的操作,一般用于验证文档是否存在:或者执行CURD中的文档查询.与检索不同的是,GET查询是实时查询,可以实时查询到索引结果.而检索则是需要经过处理,一 ...
- SQL Server 存储(4/8):理解Page Free Space (PFS) 页
我们已经讨论了GAM与SGAM页,数据页(Data Page) ,现在我们来看下页面自由空间页(Page Free Space (PFS) ). PFS在数据文件里是第2页(页号1,页号从0开始),接 ...
- 理解SQL Server是如何执行查询的 (1/3)
查询执行的总图: 根据总图的流程,详细说明每个部分: 1. 请求(Request) SQL Server是C/S架构的平台.与它交互的唯一方式就是发送包含数据库命令的请求.应用程序和数据库之前的通信协 ...
- Ionic2学习笔记(0):HelloWorld
作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5529153.html 操作系统: Windows 10 环境配置: Node.js Java SE D ...
- 3种Java从文件路径中获取文件名的方法
package test; import java.io.File; public class FileName { /** * @param args */ public static void m ...
- 初探Spring - IOC原理
一.IOC是什么 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来降低代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency ...
- STM32L系列单片机内部EEPROM的读写
STM32L系列单片机内部提供了EEPROM存储区域,但实质上,其FLASH也是EEPROM类型,只不过有一块区域被开放出来专门用作EEPROM操作而已.STM32L的EEPROM使用寿命设计为100 ...