首页
社区
课程
招聘
[原创]感染形病毒分析与恢复[3]
2011-5-27 01:15 8193

[原创]感染形病毒分析与恢复[3]

2011-5-27 01:15
8193
标 题: 【原创】感染形病毒分析与恢复【3】
作 者: 雪之苏
时 间: 2011-05-27,00:51:09
链 接: http://bbs.pediy.com/newthread.php?do=newthread&f=4

1.病毒描述
前几天在论坛看到一个求助帖,里面是一个被感染的求助
原帖见
http://bbs.pediy.com/showthread.php?t=134487
描述可以去这个帖子看
于是这2天工作之余,抽了点时间,稍微逆了下,写了个专杀,不过还没弄全,只是写出了
检测和恢复,剩下的等明天去公司在完成

2.逆向分析
下了样本后,看了下,是个感染型,由于重点是恢复被感染的文件,所有传染机制我就没看了,有兴趣的可以自己看下

简要分析:
这个感染形很简单,属于加节感染,然后改了oep指到自己的感染区,解密自身执行代码,执行完,跳回原本oep,我们的目的是恢复,所以我们只要看2个地方就可以了
1.解密部分
2.寻找原本程序oep存放地点,然后恢复oep
有了这个思路后,剩下的就很简单

1.刚上来,病毒就开始解密自己的代码

0040B000 > 90 nop
0040B001 BB 81554200 mov ebx, 425581 //key
0040B006 90 nop
0040B007 68 24B04000 push 0040B024 //+10 为oep存放地点
0040B00C 5E pop esi
0040B00D 90 nop
0040B00E BA 98050000 mov edx, 598
0040B013 90 nop
0040B014 90 nop
0040B015 FF3432 push dword ptr [edx+esi]
0040B018 311C24 xor dword ptr [esp], ebx
0040B01B 8F0432 pop dword ptr [edx+esi]
0040B01E 90 nop
0040B01F 83EA 02 sub edx, 2
0040B022 83EA 02 sub edx, 2
0040B025 90 nop
0040B026 ^ 75 ED jnz short 0040B015


3.解决方法
a.识别方法
这个被感染的有个很明显的特征,就是节名 是 3个随即子母 + 一个特殊符号(0x7或者0x6),当然只靠节名,还是可能误杀,所以还要加个点代码判断,那就是开始代码段第一个字节 要么为 nop(0x90) 要么就是push(0x68),结合起来,误杀的可能性就很小了

b.清除方法
我们利用病毒的解密方法,去解密被感染的程序,然后找到原本程序的oep,恢复oep,在把节名擦除掉,避免二次误杀,当然完美的方法应该是清除整个节,我很懒,所以就没搞了,有兴趣的话,可以在我的代码基础上在修改哦

4.专杀工具
目前传上去的不算专杀工具,只是鉴别和恢复部分,界面还没画,我很懒,可能会画,也可能不会画,画的话,明天传上去,不画的话,那就等暗黑3出来或者等韩立到飞升期我再传上来,谁有兴趣的话,可以弄个界面,全盘遍历下就行了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞5
打赏
分享
最新回复 (11)
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猥琐菜鸟 2011-5-27 01:56
2
0
病毒分析,专杀这块..刚开始学..有用.就顶下你..
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
复杂 2011-5-27 08:58
3
0
膜拜高手。。。
雪    币: 2105
活跃值: (399)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
exile 1 2011-5-27 09:03
4
0
膜拜 暗黑3
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
alexy 2011-5-27 09:07
5
0
在识别中可以考虑多加一点特征判断,如
0040B00C    5E              pop     esi
0040B00D    90              nop
雪    币: 122
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
butian 2011-5-27 09:50
6
0
学习。。。。
雪    币: 230
活跃值: (105)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
雪之苏 2 2011-5-27 13:51
7
0

忘了说点
如果是那种完美的清除
还要记得 把导入表中 2个函数恢复下
因为那2个函数被改到感染区
我这么不完美清除倒是不需要
雪    币: 1731
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
komnb 2011-5-27 20:11
8
0
谢谢了。。我下来去杀下。全盘的EXE都感染了。汗
雪    币: 7244
活跃值: (2461)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
logkiller 2011-5-27 20:26
9
0
膜拜,順便說下,打不開程序,出什麼內存錯誤
雪    币: 1731
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
komnb 2011-5-27 22:49
10
0
运行出错。。。。。不知道怎么回事。怎么弄也没发弄。太笨了。怎么使用?
雪    币: 242
活跃值: (16)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
aosemp 2011-5-27 23:21
11
0
"开始代码段第一个字节 要么为 nop(0x90) 要么就是push(0x68)"
不一定,我遇見過mov eax, 0xxxxxx的。

接下來解密的0x80字節左右裏面有IAT和OEP,不過每個exe偏移不一樣(因爲解密頭長度不固定)。

其實恢復IAT才是重點。
雪    币: 230
活跃值: (105)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
雪之苏 2 2011-5-28 00:14
12
0
我只能从他提供的4个被感染的中分析
所以没有兼顾

输入表里面就2个被改了
那个恢复也很简单啊
搜索下
在写进去就是了
而且我这种不清节代码的方法不需要恢复iat
游客
登录 | 注册 方可回帖
返回