现在的位置: 首页 > 综合 > 正文

计算机病毒原理与剖析

2013年02月10日 ⁄ 综合 ⁄ 共 9007字 ⁄ 字号 评论关闭
计算机病毒原理与剖析
3
复习一下:
ASCII
字符集
以字节为单位,每字节8 bits
ts8 ,标准ASCII
ISAC
取值范围:0~127
,扩展版:0~255
0x00~0x1F (31)
:控制字符/
不可打印字符
0x20 (32)~0x7F (127)
:标准ASCII
ISAC
可打印
字符(printable
ieanpbtrl
0x30~0x39
:数字0~9
09~
0x41~0x5A
:大写字母A~Z
0x61~0x7A
:小写字母a~z
za~
0x80 (128)~0xFF(255)
ASCII
ISAC
扩展字符
4
复习一下:
标准ASCII
字符集
4
4
5
复习一下:常见特殊含义的ASCII
字符
0x1B
<ESC>
0x0D
:回车<CR>
0x0A
:换行<LF>
0x09
tab
<HT>
0x7F
:删除键<DEL>
0x20(32)
:空格,0x24(36)
$
,
0x2A
*
0x2E(46)
.
0x2F(47)
/
0x3A(58)
:
0x5C(92)
/
0x40(64)
@
中文(GB2312
):属于双字节字符集
DBCS
Double Byte Character Set
teraoyhDSBCtcuaerbl
),
两个>0x80
的字节构成一个汉字码
6
复习一下:x86
汇编语言知识
通用寄存器:
ESI/SI
EDI/DI
EBP/BP
ESP/SP
16
位段寄存器:CS
DS
SS
ES
FS
GS
状态寄存器:EFLAGS/FLAGS
EIP/IP
x86
指令集常用指令:mov
,
cmp
,
nop
, push, pop,
jz/jnz/jmp/ja/jb/jg/jl
, add, sub,
sal/sar/shl/shr
,
and/or/
xor
/not, call, ret,
int
,
iret
, in, out, test
寻址方式:立即寻址、寄存器间接寻址、基址寻
址、变址寻址、基址加变址寻址、基址加变址加
偏移量寻址、带比例因子的变址寻址、基址加带
比例因子的变址寻址
AX
al
ah
EAX
DX
dl
dh
EDX
BX
bl
bh
EBX
CX
cl
ch
ECX
7
EICAR Test File
最简单的病毒
欧洲计算机防病毒研究所(EICAR
European
Institute for Computer Antivirus Research,
http://www.eicar.org/
)研制
反病毒厂商将此测试文件的特征码加入病毒
库,用来测试反病毒软件是否工作正常
68
个字节的纯文本(整个病毒体都是可显示字
符)内容如下:
X5O!P%@AP[4/PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H
FPELTZACDNRUVXHO%@
*
8
反汇编下的EICAR
0BE1:0100 58 POP AX
0BE1:0101 354F21 XOR AX,214F
0BE1:0104 50 PUSH AX
0BE1:0105 254041 AND AX,4140
0BE1:0108 50 PUSH AX
0BE1:0109 5B POP BX
0BE1:010A 345C XOR AL,5C
0BE1:010C 50 PUSH AX
0BE1:010D 5A POP DX
0BE1:010E 58 POP AX
0BE1:010F 353428 XOR AX,2834
0BE1:0112 50 PUSH AX
0BE1:0113 5E POP SI
0BE1:0114 2937 SUB [BX],SI
0BE1:0116 43 INC BX
0BE1:0117 43 INC BX
0BE1:0118 2937 SUB [BX],SI
0BE1:011A 7D24 JGE 0140
0BE1:011C~0BE1:013F DB EICAR-STANDARDANTIVIRUS-
TEST-FILE!$
0BE1:0140 48 DEC AX
0BE1:0141 2B482A SUB CX,[BX+SI+2A]
读入com文件的时候,初始的地址偏移保存在AX中。
相当于MOV AX, 214F
AX=214F and 4140 = 0140
BX=0140
AX=0140 xor 005C = 011C
DX=011C
AX=214F (注意堆栈内容)
AX=097B
SI=097B
[BX]=[0140]=2B48, 执行后,[BX]=[0140]=2B48-097B=21CD
翻译成汇编语言就是 0BE1:0140 CD21 INT 21
[BX]=[0142]=2A48, 执行后,[BX]=[0142]=2A48-097B=20CD
翻译成汇编语言就是 0BE1:0142 CD20 INT 20
执行后原来的48 2B 48 2A指令序列变为CD 21 CD 20:
0BE1:0140 CD21 INT 21
0BE1:0142 CD20 INT 20
AH=09H,故INT 21执行显示字符串功能,
字符串内容为DS:DX指向的字符串,以$为结束($不显示)。
9
病毒通常所具有的结构特征
感染标记
感染模块
触发模块
破坏模块
主控模块
10
病毒传播原理
传统方式
利用系统特点或诱骗用户,使得带毒
程序被执行
驻留内存(进入内存才会主动传播)
接管磁盘读写中断服务程序
接管程序入口,先执行病毒代码,然
后跳转到真正的程序代码入口
11
病毒传播原理(续)
传统方式
利用操作系统的漏洞、缓冲区溢出攻击
buffer overflow
)等手段,使得指令指针从
后门代码处开始执行
利用应用程序扩展功能的不安全性(如脚本、
宏的权限检查不严等)
修改注册表,伪装成系统进程,注入系统
社会工程学,利用人们的好奇心,网络谣言
特殊操作系统下固有的弱点(比如智能手机)
12
引导型病毒传播手段
病毒读取正常的引导扇区,并将引导扇区
保存到磁盘的空余位置
在引导扇区填写病毒内容
系统启动时,先将引导扇区的病毒内容读
入内存,然后病毒在完成驻留内存后再将
真正的引导扇区读入内存,进行通常的系
统引导
系统启动后,已经有病毒驻留内存,通过
接管中断服务例程等手段进行传播
13
硬盘数据的组织
硬盘寻址方式:
C/H/S
方式:柱面
(cylinder
0
开始)
、磁头
(head
0
开始)
、扇区
(sector
1
开始)
、磁道
(track)
LBA
方式:Logical Block
Addressing
cylinder
head
track
sector
14
C/H/S
LBA
的转换:
假设C
:当前柱面号,H
:当前磁头号,Cs
起始柱面号,Hs
:起始磁头号,Ss
:起始扇
区号,PS
:每磁道扇区数,PH
:每柱面磁头
数,则:
LBA=(C - Cs)
*
PH
*
PS + (H - Hs)
*
PS + (S - Ss)
C=LBA
div
(PH
*
PS)
+
Cs
H=(LBA
div
PS)
mod
PH
+
Hs
S=LBA
mod
PS
+
Ss
操作系统中最小访问单位:簇(cluster
15
DOS/Windows
soSdnDwOWi
硬盘逻辑结构
LBA:0
MBR
保留(未用)
C/H/S: 0/0/1
Partition 1
FAT
Boot
FAT1
FAT2
Root
DATA
Partition 2
NTFS
Boot
DATA
Extend
Partition
Logical Disk
Info
Logical Disk
Logical Disk
Info
Logical Disk
Logical Disk
Info
Logical Disk
cylinder 0
MFT MFTmirr
16
MBR
(主引导记录)格式
0000 33 C0 8E D0 BC 00 7C FB-50 07 50 1F FC BE 1B 7C 3.....|.P.P....|
0010 BF 1B 06 50 57 B9 E5 01-F3 A4 CB BD BE 07 B1 04 ...PW...........
0020 38 6E 00 7C 09 75 13 83-C5 10 E2 F4 CD 18 8B F5 8n.|.u..........
0030 83 C6 10 49 74 19 38 2C-74 F6 A0 B5 07 B4 07 8B ...It.8,t.......
0040 F0 AC 3C 00 74 FC BB 07-00 B4 0E CD 10 EB F2 88 ..<.t...........
0050 4E 10 E8 46 00 73 2A FE-46 10 80 7E 04 0B 74 0B N..F.s*.F..~..t.
0060 80 7E 04 0C 74 05 A0 B6-07 75 D2 80 46 02 06 83 .~..t....u..F...
0070 46 08 06 83 56 0A 00 E8-21 00 73 05 A0 B6 07 EB F...V...!.s.....
0080 BC 81 3E FE 7D 55 AA 74-0B 80 7E 10 00 74 C8 A0 ..>.}U.t..~..t..
0090 B7 07 EB A9 8B FC 1E 57-8B F5 CB BF 05 00 8A 56 .......W.......V
00A0 00 B4 08 CD 13 72 23 8A-C1 24 3F 98 8A DE 8A FC .....r#..$?.....
00B0 43 F7 E3 8B D1 86 D6 B1-06 D2 EE 42 F7 E2 39 56 C..........B..9V
00C0 0A 77 23 72 05 39 46 08-73 1C B8 01 02 BB 00 7C .w#r.9F.s......|
00D0 8B 4E 02 8B 56 00 CD 13-73 51 4F 74 4E 32 E4 8A .N..V...sQOtN2..
00E0 56 00 CD 13 EB E4 8A 56-00 60 BB AA 55 B4 41 CD V......V.`..U.A.
00F0 13 72 36 81 FB 55 AA 75-30 F6 C1 01 74 2B 61 60 .r6..U.u0...t+a`
0100 6A 00 6A 00 FF 76 0A FF-76 08 6A 00 68 00 7C 6A j.j..v..v.j.h.|j
0110 01 6A 10 B4 42 8B F4 CD-13 61 61 73 0E 4F 74 0B .j..B....aas.Ot.
0120 32 E4 8A 56 00 CD 13 EB-D6 61 F9 C3 49 6E 76 61 2..V.....a..Inva
0130 6C 69 64 20 70 61 72 74-69 74 69 6F 6E 20 74 61 lid partition ta
0140 62 6C 65 00 45 72 72 6F-72 20 6C 6F 61 64 69 6E ble.Error loadin
0150 67 20 6F 70 65 72 61 74-69 6E 67 20 73 79 73 74 g operating syst
0160 65 6D 00 4D 69 73 73 69-6E 67 20 6F 70 65 72 61 em.Missing opera
0170 74 69 6E 67 20 73 79 73-74 65 6D 00 00 00 00 00 ting system.....
0180 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0190 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
01A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
01B0 00 00 00 00 00 2C 44 63-88 95 88 95 00 00 80 01 .....,Dc........
01C0 01 00 07 FE FF FF 3F 00-00 00 FC 8A 38 01 00 00 ......?.....8...
01D0 C1 FF 07 FE FF FF 3B 8B-38 01 3B 8B 38 01 00 00 ......;.8.;.8...
01E0 C1 FF 0F FE FF FF 76 16-71 02 4B CE DF 06 00 00 ......v.q.K.....
01F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............U.
0000 ~01BD
Main Boot Record
主引导记录(446
字节)
01BE~01CD
:分区信息
1(16
字节)
01CE~01DD
:分区信息
2(16
字节)
01DE~01ED
:分区信息
3(16
字节)
01EE~01FD
:分区信息
4(16
字节)
01FE
~
01FF
:标识
55 AA
17
分区表(Partition Table
)结构
4
个分区表项,每个表项16
字节
DWORD 扇区数
0CH
起始LBA
DWORD
08H
06H
的高2
BYTE 位加上本字节)终止柱面
07H
(低6
BYTE 位)终止扇区
06H
终止磁头号(HEAD
BYTE
05H
文件系统类型:如07H
NTFS
0FH
Win95
扩展
分区
BYTE
04H
02H
的高2
BYTE 位加上本字节)起始柱面号
03H
(低6
BYTE 位)起始扇区号
02H
起始磁头号(HEAD
BYTE
01H
分区状态:00H
:非活动分区,80H
BYTE :活动分区
00H
偏移长度所表达的意义
例:80
01
01
00
07
FE
FF FF
3F 00 00 00
FC 8A 38 01
18
FAT
引导扇区格式(DOS622
软盘)
0000 EB 3C 90 4D 53 44 4F 53-35 2E 30 00 02 01 01 00 .<.MSDOS5.0.....
0010 02 E0 00 40 0B F0 09 00-12 00 02 00 00 00 00 00 ...@............
0020 00 00 00 00 00 00 29 FE-11 1E 29 44 4F 53 36 32 ......)...)DOS62
0030 32 20 20 20 20 20 46 41-54 31 32 20 20 20 FA 33 2 FAT12 .3
0040 C0 8E D0 BC 00 7C 16 07-BB 78 00 36 C5 37 1E 56 .....|...x.6.7.V
0050 16 53 BF 3E 7C B9 0B 00-FC F3 A4 06 1F C6 45 FE .S.>|.........E.
0060 0F 8B 0E 18 7C 88 4D F9-89 47 02 C7 07 3E 7C FB ....|.M..G...>|.
0070 CD 13 72 79 33 C0 39 06-13 7C 74 08 8B 0E 13 7C ..ry3.9..|t....|
0080 89 0E 20 7C A0 10 7C F7-26 16 7C 03 06 1C 7C 13 .. |..|.&.|...|.
0090 16 1E 7C 03 06 0E 7C 83-D2 00 A3 50 7C 89 16 52 ..|...|....P|..R
00A0 7C A3 49 7C 89 16 4B 7C-B8 20 00 F7 26 11 7C 8B |.I|..K|. ..&.|.
00B0 1E 0B 7C 03 C3 48 F7 F3-01 06 49 7C 83 16 4B 7C ..|..H....I|..K|
00C0 00 BB 00 05 8B 16 52 7C-A1 50 7C E8 92 00 72 1D ......R|.P|...r.
00D0 B0 01 E8 AC 00 72 16 8B-FB B9 0B 00 BE E6 7D F3 .....r........}.
00E0 A6 75 0A 8D 7F 20 B9 0B-00 F3 A6 74 18 BE 9E 7D .u... .....t...}
00F0 E8 5F 00 33 C0 CD 16 5E-1F 8F 04 8F 44 02 CD 19 ._.3...^....D...
0100 58 58 58 EB E8 8B 47 1A-48 48 8A 1E 0D 7C 32 FF XXX...G.HH...|2.
0110 F7 E3 03 06 49 7C 13 16-4B 7C BB 00 07 B9 03 00 ....I|..K|......
0120 50 52 51 E8 3A 00 72 D8-B0 01 E8 54 00 59 5A 58 PRQ.:.r....T.YZX
0130 72 BB 05 01 00 83 D2 00-03 1E 0B 7C E2 E2 8A 2E r..........|....
0140 15 7C 8A 16 24 7C 8B 1E-49 7C A1 4B 7C EA 00 00 .|..$|..I|.K|...
0150 70 00 AC 0A C0 74 29 B4-0E BB 07 00 CD 10 EB F2 p....t).........
0160 3B 16 18 7C 73 19 F7 36-18 7C FE C2 88 16 4F 7C ;..|s..6.|....O|
0170 33 D2 F7 36 1A 7C 88 16-25 7C A3 4D 7C F8 C3 F9 3..6.|..%|.M|...
0180 C3 B4 02 8B 16 4D 7C B1-06 D2 E6 0A 36 4F 7C 8B .....M|.....6O|.
0190 CA 86 E9 8A 16 24 7C 8A-36 25 7C CD 13 C3 0D 0A .....$|.6%|.....
01A0 4E 6F 6E 2D 53 79 73 74-65 6D 20 64 69 73 6B 20 Non-System disk
01B0 6F 72 20 64 69 73 6B 20-65 72 72 6F 72 0D 0A 52 or disk error..R
01C0 65 70 6C 61 63 65 20 61-6E 64 20 70 72 65 73 73 eplace and press
01D0 20 61 6E 79 20 6B 65 79-20 77 68 65 6E 20 72 65 any key when re
01E0 61 64 79 0D 0A 00 49 4F-20 20 20 20 20 20 53 59 ady...IO SY
01F0 53 4D 53 44 4F 53 20 20-20 53 59 53 00 00 55 AA SMSDOS SYS..U.
0000 ~0002
jmp
指令
01FE
~
01FF
:标识
55 AA
0003~000A
:厂商版本号
000B~000C
:每扇区字节数
000D
:每簇扇区数
000E~000F
:保留扇区数
0010
FAT
数量
0011~0012
:根目录最大目录项数
0013~0014
:分区扇区总数,硬盘一般
00
00
0015
:介质描述,硬盘为F8
0016~0017
:每FAT
扇区数,硬盘一般
00
00
0018~0019
:每道扇区数,硬盘一般为
003F(63 sectors/track)
001A~001B
:每柱面磁头数,硬盘一般
00FF(255 heads/cylinder)
001C~001F
:隐藏扇区数(FAT12
001C~001D
以下内容FAT12/FAT16/FAT32
各不相
同,以FAT16
为例:
0026
:扩展标记0x29
0027~002A
:序列号
002B~0035
:卷标
0036~003D
:文件系统标识
19
NTFS
引导扇区格式(Win2003
0000 EB 52 90 4E 54 46 53 20-20 20 20 00 02 08 00 00 .R.NTFS .....
0010 00 00 00 00 00 F8 00 00-3F 00 FF 00 3F 00 00 00 ........?...?...
0020 00 00 00 00 80 00 80 00-FB 8A 38 01 00 00 00 00 ..........8.....
0030 00 00 0C 00 00 00 00 00-AF 88 13 00 00 00 00 00 ................
0040 F6 00 00 00 01 00 00 00-E6 F7 D0 98 17 D1 98 14 ................
0050 00 00 00 00 FA 33 C0 8E-D0 BC 00 7C FB B8 C0 07 .....3.....|....
0060 8E D8 E8 16 00 B8 00 0D-8E C0 33 DB C6 06 0E 00 ..........3.....
0070 10 E8 53 00 68 00 0D 68-6A 02 CB 8A 16 24 00 B4 ..S.h..hj....$..
0080 08 CD 13 73 05 B9 FF FF-8A F1 66 0F B6 C6 40 66 ...s......f...@f
0090 0F B6 D1 80 E2 3F F7 E2-86 CD C0 ED 06 41 66 0F .....?.......Af.
00A0 B7 C9 66 F7 E1 66 A3 20-00 C3 B4 41 BB AA 55 8A ..f..f. ...A..U.
00B0 16 24 00 CD 13 72 0F 81-FB 55 AA 75 09 F6 C1 01 .$...r...U.u....
00C0 74 04 FE 06 14 00 C3 66-60 1E 06 66 A1 10 00 66 t......f`..f...f
00D0 03 06 1C 00 66 3B 06 20-00 0F 82 3A 00 1E 66 6A ....f;. ...:..fj
00E0 00 66 50 06 53 66 68 10-00 01 00 80 3E 14 00 00 .fP.Sfh.....>...
00F0 0F 85 0C 00 E8 B3 FF 80-3E 14 00 00 0F 84 61 00 ........>.....a.
0100 B4 42 8A 16 24 00 16 1F-8B F4 CD 13 66 58 5B 07 .B..$.......fX[.
0110 66 58 66 58 1F EB 2D 66-33 D2 66 0F B7 0E 18 00 fXfX..-f3.f.....
0120 66 F7 F1 FE C2 8A CA 66-8B D0 66 C1 EA 10 F7 36 f......f..f....6
0130 1A 00 86 D6 8A 16 24 00-8A E8 C0 E4 06 0A CC B8 ......$.........
0140 01 02 CD 13 0F 82 19 00-8C C0 05 20 00 8E C0 66 ........... ...f
0150 FF 06 10 00 FF 0E 0E 00-0F 85 6F FF 07 1F 66 61 ..........o...fa
0160 C3 A0 F8 01 E8 09 00 A0-FB 01 E8 03 00 FB EB FE ................
0170 B4 01 8B F0 AC 3C 00 74-09 B4 0E BB 07 00 CD 10 .....<.t........
0180 EB F2 C3 0D 0A 41 20 64-69 73 6B 20 72 65 61 64 .....A disk read
0190 20 65 72 72 6F 72 20 6F-63 63 75 72 72 65 64 00 error occurred.
01A0 0D 0A 4E 54 4C 44 52 20-69 73 20 6D 69 73 73 69 ..NTLDR is missi
01B0 6E 67 00 0D 0A 4E 54 4C-44 52 20 69 73 20 63 6F ng...NTLDR is co
01C0 6D 70 72 65 73 73 65 64-00 0D 0A 50 72 65 73 73 mpressed...Press
01D0 20 43 74 72 6C 2B 41 6C-74 2B 44 65 6C 20 74 6F Ctrl+Alt+Del to
01E0 20 72 65 73 74 61 72 74-0D 0A 00 00 00 00 00 00 restart........
01F0 00 00 00 00 00 00 00 00-83 A0 B3 C9 00 00 55 AA ..............U.
0000 ~0002
jmp
指令
01FE
~
01FF
:标识
55 AA
0003~000A
:厂商版本号
000B~000C
:每扇区字节数
000D
:每簇扇区数
000E~000F
:保留
0010~0012
:保留,总为
00
00
00
0013~0014
:未用,00 00
0015
:介质描述,硬盘为<

抱歉!评论已关闭.