Nella pillola precedente ho parlato dei
malware metamorfici e della loro capacità di modificare il proprio codice sorgente. Le principali techiche utilizzate sono la
Dead Code Insertion, il
Soubroutine Reordering o la
Code Transposition.
La tecnica del
Dead Code Injection prevede di inserire codice, nel proprio codice sorgente, che non fa nulla.
Questo si può fare inserendo delle istruzioni
NOP che anche non modificando il comportamento del malware,ne modificano il sorgente
Un'altro esempio di
dead code insertion è la seguente sequenza di istruzioni:
1 INC EDX2 PUSH EDX3 DEC BYTE PTR SS:[ESP]4 DEC EDXIn pratica questa sequenza prevede di
(1) incrementare il valore del registro EDX, (2)
inserirlo nello stack (questo comporta l'incremento di un BYTE del registro ESP), (3)
decrementare il registro ESP (in pratica si annulla il push precedente) ed infine (4)
si decrementa EDX che con la prima istruzione era stato incrementato.
Ecco fatto, una sequenza di 4 instruzioni che alla fine non fa nulla!
Inserendo questa sequenza all'interno del proprio codice sorgente il malware di fatto si automodifica polimorficamente senza alterare il proprio comportamento