Dépacking sans IDA :) vive les strings

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 :

Screen Shot 2014-02-06 at 23.17.39

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..

Screen Shot 2014-02-06 at 23.23.36

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

This entry was posted in Malware, Reverse and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

AlphaOmega Captcha Classica  –  Enter Security Code