Un collègue m’a fournit un petit EXE. Voici une petite histoire fort rigolote. Comme quoi la qualité des droppeurs est bien inégale. À première vue, pfff tendu.. un EXE .NET
$ file stage1.exe
stage1.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
Et bien non, on ne reverse pas. En stringuant les strings unicodes (quoi cela ne se dit pas ? ), on a directement l’emplacement du stage 2.
$ strings -el stage1.exe
http://ledetour.fr/images/bs.exe
/dwm.exe
___ICO
On downloade le stage 2.. et là , rebelotte, le stress. Encore un .Net
$ file bs.exe
bs.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
Là en stringuant l’ascii on tombe sur un ENORME champ intriguant :

Très intriguant n’est-ce pas, ca sens le base64 mais c’est pas du base 64, mais ca sens le PE encodé en base 64, Un peu d’header, et beaucoup de “0”. un vrai base 64 de PE ca ressemble à ca..

En réfléchissant un peu de A à C, ca change de 2. C’est trop beau pour être vrai … Essayons. On découpe cette string magique..
$ grep -boa VXsSCCOCC bs.exe
15584:VXsSCCOCC
$ tail -c+15585 bs.exe > stage3.exe
Ensuite on shifte de -2 char… et oui c’est bien ca, on base64 décode…
$shiftprint.py stage3.exe 64 | head
TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAuAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v
dCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAC3Egfb83NpiPNzaYjzc2mI
GmxkiPJzaYhSaWNo83NpiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBFAABMAQMA
vIh9UAAAAAAAAAAA4AAPAQsBBgAAwAIAABAAAADwBABwuQcAAAAFAADABwAAAEAA
ABAAAAACAAAEAAAAAQAAAAQAAAAAAAAAANAHAAAQAAAAAAAAAgAAAAAAEAAAEAAA
AAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAAoMQHANQAAAAAwAcAoAQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
$shiftprint.py stage3.exe 64 | base64 -d > stage3bis.exe
hooo c’est magique.. et on remet ca dans un vrai exe…on tombe sur un UPX.
$ file stage3bis.exe
stage3bis.exe: PE32 executable (GUI) Intel 80386, for MS Windows, UPX compressed
$ upx -d stage3bis.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2013
UPX 3.09 Markus Oberhumer, Laszlo Molnar & John Reiser Feb 18th 2013
File size Ratio Format Name
-------------------- ------ ----------- -----------
466944 <- 181760 38.93% win32/pe stage3bis.exe
Unpacked 1 file.
Et c’est bingo… c’est plus packé
$ strings stage3bis.exe -el | grep http
http://www.facebook.com/?ref=home
http://www.facebook.com
http://
http\shell\open\command
SOFTWARE\Classes\http\shell\open\command
Software\Classes\http\shell\open\command
https://onlineeast#.bankofamerica.com
On a rarement autant de moule :) Sérieux les gars, utilisez RC4 au moins, c’est pas plus dur à utiliser, mais ca force à ouvrir l’exe pour dépacker.
Spéciale dédicace à Tecamac, grand fan des crypto à deux balles :)
3421020f6cfff96201a15d24976e862a stage1.exe
135c2d12bfa205b6cba13a29329c2f77 stage2.exe
12440f3e323638ba30e78c00b26d4734 stage3.exe