|
Oggi ho realizzato un exe crypter ossia un programma che prende in input un .exe
e ne cripta il contenuto: il risultato è un exe che una volta lanciato, verrà
eseguito esattamente come il .exe originale. Esistono vari modi per ottenere una
versione criptata di un .exe. Quello che ho usato fa riferimento principalmente
alla teoria sviluppata nell'articolo articolo75.htm
e quindi alla possibilità di creare un processo facendo riferimento non ad un .exe
presente su disco ma alla sua sequenza di byte presente in memoria. In pratica,
il .exe viene criptato usando un qualsiasi algoritmo di criptazione (nel caso
specifico ho usato l'algoritmo di Rijndael già implementato nell'articolo
articolo76.htm, ma può essere usato un qualsiasi
altro algoritmo) ed il risultato viene poi salvato come risorsa in un .exe che
chiameremo stub. Lo stub , quando andrà in esecuzione estrarrà il
contenuto della risorsa, ne effettuerà la decriptazione e la sequenza di byte
risultante (che corrisponde quindi al .exe originale) verrà eseguita come
processo utilizzando le procedure all'articolo
articolo75.htm. Non è il caso di dilungarsi troppo nelle procedure, i
sorgenti parlano per tutto; il crypter è stato implementato usando la libreria
Kol/MCK per fargli avere una dimensione ridotta; lo stub invece non ha
requisiti particolari. Lo stub viene inglobato come risorsa nel crypter.
Modifiche (26 Ottobre 2007)
Ho fatto un pò di modifiche al crypter; diciamo che in sostanza la modifica
principale consiste nell'utilizzo delle funzioni esposte nell'articolo
articolo99.htm per ottenere l'indirizzo delle api
win32 utilizzate per il Memory Run (esecuzione di un .exe da un buffer in
memoria invece che da disco) e per la manipolazione delle Risorse di un PE
Executable.
Sorgenti
Eseguibile
Update (25 Ottobre 2008)
Aggiorno con piacere dopo un anno questo articolo postando un video tutorial
di Joker_Italy su come ottenere
l'exe originale partendo dall'exe criptato: ovviamente il metodo di crittazione
che ho esposto non rende impossibile ottenere l'exe originale (per andare in
esecuzione, l'exe originale da qualche parte deve andare a finire) e questo
video demo spiega in maniera chiara e dettagliata come ottenere l'exe originale
con OllyDbg.
Unpacking_Example__Joker_Italy.7z
Update (7 dicembre 2008)
Ho fatto un pò di modifiche: ho aggiunto il controllo sull'output delle win32
e conseguente log dei vari eventuali errori, cambiato alcune parti di codice,
...ma soprattutto la modifica principale è il fatto che l'eseguibile criptato
ora ha l'icona del programma originale; questa potrebbe sembrare una cosa
stupida da farsi ma in realtà la gestione delle icone è
sufficientemente complicata da farti perdere alcuni giorni se la cosa non l'hai
mai affrontata; fortunatamente il web è pieno di gente degna di nota che
contribuisce con documentazioni e sorgenti. Di seguito il pacchetto con sorgenti
ed exe di questa versione che ho battezzato come la 1.0: buon divertimento.
CryptExe_1_0.7z
Data ultimo aggiornamento: 07/12/2008
| |
| |
|