系统 : 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蠕虫病毒直接脱壳的更多相关文章

  1. [转帖]Docker Hub上镜像发现挖矿蠕虫病毒,已导致2000台主机感染

    Docker Hub上镜像发现挖矿蠕虫病毒,已导致2000台主机感染 https://www.kubernetes.org.cn/5951.html 本来想说可以用 official版本的镜像 但是一 ...

  2. Trick蠕虫病毒来袭!幕后主使竟是一名高中生“黑客”!

    黑客一直是美国电影中的重要元素,很多经典大片中都有黑客的身影,如战争游戏.黑客帝国等.电影中黑客总是神通广大.行侠仗义,<战争游戏>中的年轻黑客大卫•莱特曼利用黑客技术避免引爆核武器,&l ...

  3. srv.exe蠕虫病毒~

    你是否在电脑使用过程中遇到过这样的问题: 1.文件运行后,同目录下会出现一个原名 srv.exe的文件 2.文件运行后会把浏览器打开 3.电脑上的html文件末尾会增加一大堆东西 完了,电脑中了srv ...

  4. Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过

    Kali Linux Web 渗透测试视频教程—第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...

  5. CTF---Web入门第二题 上传绕过

    上传绕过分值:10 来源: Justatest 难度:易 参与人数:5847人 Get Flag:2272人 答题人数:2345人 解题通过率:97% bypass the upload 格式:fla ...

  6. 实验吧_程序逻辑问题(代码审计)&上传绕过

    一开始我先随便输入了几个账号名字进行测试,发现当输入的账号名为admin时会发生报错 经过测试果然是一个注入点 当拿到admin密码后发现根本没用,没办法另寻他路 审查元素时发现提示index.txt ...

  7. WannaCry勒索比特币蠕虫病毒解决方案

    WannaCry ransomware used in widespread attacks all over the world Customer Guidance for WannaCrypt a ...

  8. Window应急响应(二):蠕虫病毒

    0x00 前言 ​ 蠕虫病毒是一种十分古老的计算机病毒,它是一种自包含的程序(或是一套程序),通常通过网络途径传播,每入侵到一台新的计算机,它就在这台计算机上复制自己,并自动执行它自身的程序. 常见的 ...

  9. 服务器中了蠕虫病毒Wannamine2.0小记

    近期用户反馈某台服务器总感觉性能不是很好存在卡顿,于是今天远程上去分析. 打开任务管理器发现CPU使用率非常低,内存使用也在接受范围内(10/64G).不过我有一个偏好就是不喜欢用系统自带的任务管理器 ...

随机推荐

  1. 用jQuery重置用于文件上传的input (type="file")

    页面中有如下标签: <input type="file" id="upload"/> 此标签本用于文件上传,现在有需要将其值重置为空.于是想当然地写 ...

  2. 推荐25个帮助你提高技能的 CSS3 实战教程

    使用 CSS,你能够以极高的效率和易用性创造出美丽的设计.而目前流行的 CSS3 技术更加强大,能够创造更多丰富的效果和功能,而不需要任何外部插件.今天,我为大家收集了25个很有用的 CSS 教程,技 ...

  3. kafka设计原理介绍

    背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐 ...

  4. Windows Azure HandBook (2) Azure China提供的服务

    <Windows Azure Platform 系列文章目录> 对于传统的自建数据中心,从底层的Network,Storage,Servers,Virtualization,中间层的OS, ...

  5. java并发编程(2)--volatile(转)

    转载:http://ifeve.com/volatile/ 作者:方 腾飞 花名清英,并发网(ifeve.com)创始人,畅销书<Java并发编程的艺术>作者,蚂蚁金服技术专家.目前工作于 ...

  6. 实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面

    简介 一个简单的关于页面,有一个图片,版本号,App名称等,着重演示各个系列的文章完整集成示例. 动机与意义 这是系列文章的最后一篇.今天抽空写下,收下尾.文章本身会在第四篇的基础上,简单扩充下代码, ...

  7. GhostDoc Pro v4.9.14093.Cracked.By.SubMain 一款好用的代码注释生成工具——VS插件

    一款比较好用的 VS 插件,能够快速生成注释. 这是 Pro 版本,与标准版本相比,支持对类.文件批量生成注释并且可以生成 CHM 帮助文件. 具体差异请转到: http://submain.com/ ...

  8. [Asp.net 5] DependencyInjection项目代码分析3-Ninject

    Microsoft.Framework.DependencyInjection.Ninject 该工程内部共包含5个类文件,底层使用Ninject实现依赖注入,工程截图如下: 从文件命名可以看出,Ni ...

  9. 基于cookie实现zTree树刷新后,展开状态不变

    1.除了引用jQuery和zTree的JS外,引用cookie的JS: <script type="text/javascript" src="~/Scripts/ ...

  10. .net概念之程序集说明

    一.程序集的一些基本概念: 程序集是包含一个或多个类型定义文件和资源文件的集合.它允许我们分离可重用类型的逻辑表示和物理表示. 程序集是一个可重用.可实施版本策略和安全策略的单元.它允许我们将类型和资 ...