Bon tant que j’y était, histoire de plus perdre de temps avec certains packer à deux balles ou des dumps encrypté à la chinoise (Xor de base ou Xor shifté).
Voici une version de «decrottePE.py» qui bruteforce; C’est pas joli, mais ce qu’il y a trouver est pas non plus joli-joli !
Exemple , j’encrypte à la chinoise un PE avec un xor shifté et la clef 0x42 (évidemment la fameuse solution universelle).
$ xor.py monPE.exe 0x42 inc data, key, inc, base, result (77, 66, 1, 0, 15) (90, 67, 1, 0, 25) (144, 68, 1, 0, 212) (0, 69, 1, 0, 69) (3, 70, 1, 0, 69) (0, 71, 1, 0, 71) (0, 72, 1, 0, 72) (0, 73, 1, 0, 73) (4, 74, 1, 0, 78) ... writing output to monPE.exe.xor
Je cache mon PE xoré au millieu d’un champ de random.
$ dd if=/dev/urandom of=random bs=1 count=768 768+0 records in 768+0 records out 768 bytes (768 B) copied, 0.00350417 s, 219 kB/s $ cat random monPE.exe.xor random > data
Bon… c’est le plus chiant qu’il soit possible d’extraire avec ce truc, lançons le décrotteur et allons lire un livre.
$ decrottePE.py data -xor [i] Ok I Will Brutalizing the XorCipher [i] Scanning toto [!] No PE found, will try the chinese style; SIMPLE XOR [!] No PE found, will try the chinese style; XOR Shifted [!] No PE found, will try the chinese style; XOR Shifted looking every offsets >Seeking / 8Bits Xor Inc key 62 offset 4 [*] Found PE_768.exe 144896 bytes saved [i] I was victorious...
Bingo… et le fichier est en état.
$ diff PE_768.exe monPE.exe -s Files PE_768.exe and monPE.exe are identical
Amis du XOR, merci de passer a RC4…
Pingback: Outils, services, sites à (re)découvrir 2015 S05 | La Mare du Gof