首页
社区
课程
招聘
[原创]感染型木马的分析与恢复 - “艾丽莎”
发表于: 2011-4-20 21:06 18163

[原创]感染型木马的分析与恢复 - “艾丽莎”

2011-4-20 21:06
18163

标 题: 【原创】【申精】感染型木马的分析与恢复 - “艾丽莎”
作 者: 雪之苏
时 间: 2011-04-20,18:27:09
链 接: http://bbs.pediy.com/newthread.php?do=newthread&f=4

写在前面的话:
上次那个鬼影驱动,本来是准备分析的,可是不知道是我虚拟机环境有问题还是什么,死活感染不了MBR,过了几个反调后,就没继续分析,今天是写的一个东西,发上来
病毒全名:Virus.Win32.Alisa.a
捕获时间:2007-9-27
算比较老的病毒了

病毒感染说明:
病毒感染文件后,会修改入口前十个字节,修改成自己的代码,然后在最后一个节加上0x1000大小的代码段,将自身复制到里面,而且还会多重感染

1、病毒首先把自身代码解密出来


004049AE    0F31            rdtsc                                ; 取时间戳
004049B0    8985 9E000000   mov     dword ptr [ebp+9E], eax
004049B6    8995 A2000000   mov     dword ptr [ebp+A2], edx
004049BC    8B8D BB000000   mov     ecx, dword ptr [ebp+BB]      ; 原始的解密KEY
004049C2    8BC1            mov     eax, ecx
004049C4    F7E1            mul     ecx
004049C6    8BD0            mov     edx, eax
004049C8    F7D2            not     edx
004049CA    3195 BF000000   xor     dword ptr [ebp+BF], edx
004049D0    F7D2            not     edx
004049D2    8D9D C3000000   lea     ebx, dword ptr [ebp+C3]
004049D8    B9 70030000     mov     ecx, 370
004049DD    8DB5 92000000   lea     esi, dword ptr [ebp+92]
004049E3    8DBD 96000000   lea     edi, dword ptr [ebp+96]
004049E9    FF33            push    dword ptr [ebx]              ; 保存第二次解密的用的KEY
004049EB    52              push    edx
004049EC    0F31            rdtsc                                ; 想减得到运行时间,用来检测单步
004049EE    8985 A6000000   mov     dword ptr [ebp+A6], eax
004049F4    8995 AA000000   mov     dword ptr [ebp+AA], edx
004049FA    5A              pop     edx
004049FB    2B85 9E000000   sub     eax, dword ptr [ebp+9E]
00404A01    7D 02           jge     short 00404A05
00404A03    F7D8            neg     eax
00404A05    C1F8 19         sar     eax, 19
00404A08    F7D0            not     eax
00404A0A    33D0            xor     edx, eax
00404A0C    3113            xor     dword ptr [ebx], edx         ; 解密
00404A0E    5A              pop     edx                          ; 取出第二次解密用的KEY
00404A0F    60              pushad
00404A10    8DB5 A6000000   lea     esi, dword ptr [ebp+A6]
00404A16    8DBD 9E000000   lea     edi, dword ptr [ebp+9E]
00404A1C    6A 08           push    8
00404A1E    59              pop     ecx
00404A1F    FC              cld
00404A20    F3:A4           rep     movs byte ptr es:[edi], byte>
00404A22    61              popad
00404A23    8D85 9A000000   lea     eax, dword ptr [ebp+9A]
00404A29    DB06            fild    dword ptr [esi]
00404A2B    DB07            fild    dword ptr [edi]
00404A2D    DEC1            faddp   st(1), st
00404A2F    DB18            fistp   dword ptr [eax]
00404A31    0318            add     ebx, dword ptr [eax]
00404A33  ^ E2 B4           loopd   short 004049E9               ; 循环解密



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (22)
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢分享。偶拿了一次。。
2011-4-21 02:25
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
感谢分享~
对于病毒/木马分析类的文章,很希望看到这样的文章结构:
1.病毒/木马的描述
2.病毒/木马 逆向分析,如感染机制、破坏机制等
3.再给出解决方法,如病毒/木马的清除等
4.如果可能,写个专杀工具,最好带源码。
2011-4-21 10:53
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
受益匪浅啊。
2011-4-21 12:38
0
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
5
谢谢分享。这个病毒的破坏思路都很平常,呵呵
2011-4-21 12:44
0
雪    币: 1040
活跃值: (1293)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
………………
2011-4-21 12:54
0
雪    币: 1040
活跃值: (1293)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
鬼影那里……虚拟机硬盘设置不能是sata……必须是ide
2011-4-21 12:55
0
雪    币: 99
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼主源码给力呀,佩服
学习
2011-4-21 12:59
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
9
你朋友不老实啊,毕设要别人帮。。。。
2011-4-21 13:34
0
雪    币: 195
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
怎么又是个 毕设 写病毒的?
2011-4-21 14:37
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
病毒学校????折磨病毒的??
2011-4-21 15:24
0
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
12
不错,不错~~嘿嘿~~
2011-4-21 20:42
0
雪    币: 136
活跃值: (1475)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
13
学习分析完,写出对应的清除代码才是高手,学习
2011-4-21 21:29
0
雪    币: 210
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
水平不够,不太看得懂
2011-4-22 01:15
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
向楼主学习,多谢分享
2011-4-22 02:13
0
雪    币: 116
活跃值: (316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
回头我也调试看看
2011-4-22 10:51
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
太强了!感谢分享!
2011-4-23 16:15
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
测试鬼影的时候,把虚拟机硬盘接口调成IDE,在配置文件上加上
monitor_control.disable_directexec = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
这两句话就可以感染MBR了!
2011-4-25 10:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
好吧,学习ing
2011-4-26 05:06
0
雪    币: 1602
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
很神奇,贴些代码观赏
//获取节点个数
	_asm
	{
		PUSHAD
		MOV EAX,PeAddr
		ADD EAX,0x6
		MOV EDX,0x0
		MOV DX,WORD PTR [EAX]
		MOV jienum,EDX
		POPAD	
	}

lastjie  =  (int)PeAddr + 0xF8 + (jienum -1)*0x28;											//获取最后一个节偏移
	lastjieV =  *(int*)(lastjie + 0xc) + *(int*)((int)PeAddr +0x34);							//虚拟偏移
	lastjieF =  *(int*)(lastjie + 0x14) + (int)p;												//文件偏移

//向前遍历寻找第一个感染节
	for(int i = 0;i<10000;i++)
	{
		relvur -= 0x1000;
		if( *(int*)relvur != 0xE8)
		{
			//就是第一个节
			relvur += 0x1000;
			i = 10001;
		}
	}

//恢复真正入口点
	*(int*)(relentry + 0x0) = *(int*)(relvur + 0xB2A + 0x0);
	*(int*)(relentry + 0x4) = *(int*)(relvur + 0xB2A + 0x4);
	*(int*)(relentry + 0x8) = *(int*)(relvur + 0xB2A + 0x8);
	*(int*)(relentry + 0xc) = *(int*)(relvur + 0xB2A + 0xc);

为什么不是EXE?
2011-4-26 09:00
0
雪    币: 292
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习,谢谢楼主分享
2011-4-26 10:58
0
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
恩 获益匪浅
2011-4-27 01:34
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
学习鸟
2011-4-29 12:45
0
游客
登录 | 注册 方可回帖
返回
//