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