Copy Link
Add to Bookmark
Report
Vana Imago 1 32
VIRUS POLIMORFI Techno Knight Un virus polimorfico un virus che cambia forma ad ogni infezione, quindi con un codice che modifica se stesso. Ad esempio un virus come COMA (virus di esempio nel numero 0) di questo tipo : - cerca il primo file .COM della directory - salva i primi tre bytes del file trovato - sovrascrivi i primi tre bytes con un salto alla fine del file - scrivi il virus alla fine del file - ripristina i primi 3 bytes del file infettato nell'infezione precedente - esegui il file infettato nell'infezione precedente Questo virus non polimorfico perch si riscrive sempre uguale in ogni infezione. Cio se prendiamo due files infetti ed eliminiamo tutti i byte appartenenti al file originale (prima che fosse infettato) ci ritroviamo con due file uguali (a parte ovviamente il jump iniziale il cui valore dipende dalla dimensione del file originale), ma anche se dovesse risultare uguale una piccola parte (non troppo piccola per) gli antivirus potrebbero trovare semplicemente il nostro virus, se avessero memorizzato nel loro archivio le stringhe contenute nel nostro virus che restano costanti. Un virus polimorfo invece si cripta prima di scrivere se stesso alla fine del file da infettare, e ogni volta si cripta con una chiave casuale, in modo che ad ogni infezione cambia forma. Quindi lo schema diventa : - cerca il primo file .COM della directory - salva i primi tre bytes del file trovato - sovrascrivi i primi tre bytes con un salto alla fine del file * - genera una chiave casuale * - cripta te stesso con la chiave generata * - salva la chiave in uno spazio che verr
copiato nel file infettato - scrivi il virus (criptato) alla fine del file - ripristina i primi 3 bytes del file infettato nell'infezione precedente - esegui il file infettato nell'infezione precedente Per criptare il virus possiamo usare uno XOR, o un ADD, o un SUB. Io preferisco lo XOR perch cos si pu scrivere una sola routine che funzioni sia da criptatore che da decriptatore, dato che : decriptato XOR chiave = criptato criptato XOR chiave = decriptato Poi per i file infettati non potrebbero essere eseguiti, perch il codice virale (che deve essere eseguito per primo) criptato, e quindi non corrisponde pi alle istruzioni originali del nostro virus. Quindi dobbiamo inserire un decriptatore che venga eseguito per primo (e che non sia criptato) e che decripti il resto del codice con la chiave. Quindi.... PARTE NON CRIPTATA * 1 - leggi la chiave generata nella precedente infezione * 2 - usa la chiave per decriptare il resto del codice PARTE CRIPTATA 3 - cerca il primo file .COM della directory 4 - salva i primi tre bytes del file trovato 5 - sovrascrivi i primi tre bytes con un salto alla fine del file 6 - genera una chiave casuale 7 - cripta te stesso (dal 3 in poi) con la chiave generata 8 - salva la chiave in uno spazio che verr
copiato nel file infettato 9 - scrivi il virus (criptato) alla fine del file 10 - ripristina i primi 3 bytes del file infettato nell'infezione precedente 11 - esegui il file infettato nell'infezione precedente Vediamo che per resta ancora una parte che deve essere inevitabilmente eseguibile dal microprocessore, e quindi non criptata. Certo una parte molto pi piccola rispetto al virus intero, ma sono pur sempre dei byte che restano costanti ad ogni infezione. Per risolvere questo problema dovremo usare un opcode generator, cio una routine (presente nella parte criptata quindi che non rimane costante) che ogni volta si occupi di riscrivere il criptatore/decriptatore in modo che facciano sempre la stessa cosa, ma con istruzioni differenti. In questo modo il nostro virus cambier
completamente forma ad ogni infezione. Ricordatevi per che alcuni antivirus riconoscono il codice che sembra non essere stato generato da un assembler ma da un opcode generator, ad esempio il TBAV usa un flag apposito per indicare ci, ma tutto questo dipende solo dalla qualit
della routine usata (la continua battaglia di intelligenza tra viruswriters e AVers :) Ad ogni modo lo schema diventa : PARTE NON CRIPTATA 1 - leggi la chiave generata nella precedente infezione 2 - usa la chiave per decriptare il resto del codice PARTE CRIPTATA 3 - cerca il primo file .COM della directory 4 - salva i primi tre bytes del file trovato 5 - sovrascrivi i primi tre bytes con un salto alla fine del file 6 - genera una chiave casuale 7 - cripta te stesso (dal 3 in poi) con la chiave generata 8 - salva la chiave in uno spazio che verr
copiato nel file infettato * 9 - riscrivi le parti 1 e 2 con codice differente 10 - scrivi il virus (criptato) alla fine del file 11 - ripristina i primi 3 bytes del file infettato nell'infezione precedente 12 - esegui il file infettato nell'infezione precedente Techno Knight(techno83@freemail.it)