logo

Knowledge Is Power

 
 

- Reinit des nouveaux posts -

- Recherche -

Messages Privés - Derniers posts
S'enregistrer - Login - Liste des membres
Vous logger : Login Pass

Reverse Engineering >> Le packer polycrypt Newtopic | Reply
1 | 2 | Page suivante
poster txt
tweakie
Inscrit le 01-02-2002
Posté le 22-04-2005 19:56

Amis rev(ers)euses et rev(ers)eurs,

Il paraitrait qu'un packer/crypter du nom de polycrypt est parfois utilise' pour rendre l'analyse de malwares (en particulier de bots IRC plus ardue), et que c'est assez recent. D'apres le(s) concepteur(s) de ce soft, celui-ci poserait des problemes aux AVs a signatures (emulation, codage d'un unpacker). Il utiliserait - selon son auteur - des techniques avancees anti-emulation et anti-debugging. Il paraitrait meme qu'il bruteforcerait son propre cryptage. Je n'ai ni les moyens materiel ni le temps de verifier tout ca par moi meme, du moins pas pour l'instant, mais si ca vous dit de regarder ce que ca vaut, j'ai mis un petit executable de demo (non malveillant, il se contente de se recopier sous le nom de "copied.exe" dans le meme repertoire) ici : http://www.newffr.com/tweakie/testme.exe

(Pouvez aussi considerer ca comme un unpackme, a la difference que je n'ai pas la solution )

Le site ouaibe du developpeur est ici :
http://pc.uid-zero.tk/
profil | Website | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 22-04-2005 21:58

Il est pas compliqué en fait
Je suis à l'oep là.
Preuve :

http://festouilles.free.fr/oep.PNG

Y'a des exceptions sur des instructions illégales mais il suffit de récupérer le seh handler sur la pile et de breaker dessus (2 fois), puis ainsi de suite (après avoir dit à Olly d'ignorer les exceptions)

En fait, 1er hardware breakpoint en 4083B0, on breake 2 fois dessus.
Après la seule autre subtilité c'est un IsDebuggerPresent appelé 2 fois pour chaque couche, 'suffit de vérifier que la valeur de retour est 0 ou d'utiliser le plugin qui va bien pour Ollydbg.
Veut mieux atteindre le rétablissement de la pile avant de poser à chaque fois les prochains hardware breakpoint car sinon
le breakpoint n'est pas "vu".
2eme hardware breakpoint en 4073B0, on breake deux fois.
Rebelotte.
3eme hardware breakpoint en 4063B0, on breake deux fois.
Rebelotte.
4eme hardware breakpoint en 4053B0, on breake deux fois.
Rebelotte.
Le code du loader ets toujours le même, bref tu piges une fois, tu te tapes les 4 couches sans problème et en 2 secondes 30

Après ce dernier breakpoint, tu verras à la fin de la routine un push 00401000, ret (avant, y'avait aussi des push 0040xxxx mais c'était pour jumper à chaque fois sur la nouvelle couche).
Bref, après le ret t'es à l'oep.

Par contre j'ai vu que dans le loader, il détruit complètement en mémoire le PE Header du fichier apparemment.
Donc la phase dumpage est plus tendue.
J'ai tracé trop vite pour dire où ça se trouve etc.
Faudrait que je redebugge

Mais y'a rien de bien compliqué, je te jure.
En tout cas, à part ces instructions illégales, je vois pas trop ce qui peut foutre dans le jus un émulateur
Et ca n'empeche en rien l'analyse "humaine" par reverse engineering non plus vu que le loader est assez facile à passer au final, malgré - le peu - d'antidebugs (ah vi y'a un meltice aussi, enfin rien de bien révolutionnaire )

Sinon le code est juste crypté et le loader decrypte tout ça comme un grand à coup de loops Donc pas de prise de tête

_________________________


[ Ce Message a été édité par: Aegis le 2005-04-22 22:07 ]
profil | mail | Website | edit | quote
tweakie
Inscrit le 01-02-2002
Posté le 22-04-2005 22:31

> Mais y'a rien de bien compliqué, je te jure.

- pour moi, ca serait quand meme complique', j'en suis sur
- ...et de toute facon je n'ai plus qu'une machine et pas le droit d'installer Olly/Ida free/etc. dessus. Donc je peux meme pas essayer par moi meme

Mais en tout cas, merci pour ta reponse bien documentee
profil | Website | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 22-04-2005 22:39

Quote:

- pour moi, ca serait quand meme complique', j'en suis sur


Il te faut juste de l'entrainement Tweakie.
On retrouve quasimment toujours les mêmes sortes d'anti-debugs dans les packers, ce qui rend finalement la tache assez facile, ou entout cas abordable, à part quand le codeur a de l'imagination, mais à ce moment là il faut bien tracer le loader et bien essayer de comprendre son fonctionnement, et en général on finit toujours par avancer
Plus tu t'entraineras à tracer dans le code des loaders de fichiers packés, plus tu seras à même de passer à des packers plus compliqués, voire des packers soit disant nouveaux ou inédits.
Quote:

- ...et de toute facon je n'ai plus qu'une machine et pas le droit d'installer Olly/Ida free/etc. dessus. Donc je peux meme pas essayer par moi meme


Tu peux pas installer vmware, histoire à la rigueur de séparer tout ça ? Et puis ça te permet de "cacher" tous tes outils dans le snapshot, c'est plus discret
_________________________

profil | mail | Website | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 23-04-2005 01:47

J'ai redebuggé

Donc j'ai d'autres infos, et j'ai un dump valide (hu tiens marrant ça, l'est valide sur xp sp2, mais pas sur xp sp1 apparemment, bizarre bizarre...
Ah non, je sais pourquoi
En fait la grosse partie du code du programme il l'a rappelle via un jump (jump [addr]) et [addr] contient l'adresse qui pointe sur la suite du code, et comme ça m'a saoulé j'ai patché en jump addr_debut_code directement.
Mais du coup, le reste de l'import table (copyfile, setfilepointer tout ca), a été loadé en live quand j'ai tracé dans olly (sous xp sp2), du coup dans mon dump, j'ai les adresses des fonctions d'api en dur.
Et les adresses de ces fonctions sont évidemment différentes d'un os à l'autre.
Enfin bref de toutes facons on s'en fout, le but c'etait d'obtenir un dump fonctionnel de la bête pour pouvoir l'analyser à maintes reprises rapidement. Suffit de lancer tout le temps sur le meme OS durant l'analyse.
Pas envie de rebuilder le reste *flemme* )

http://festouilles.free.fr/dumped.exe

En fait, voilà mes observations :
Code:

00407123 51 push ecx
00407124 6A 40 push 40
00407126 6A 01 push 1
00407128 53 push ebx
00407129 FF95 56554000 call dword ptr [ebp+405556] ; VirtualProtect
0040712F 8B95 FD584000 mov edx, dword ptr [ebp+4058FD]
00407135 03D3 add edx, ebx
00407137 66:C742 06 FFFF mov word ptr [edx+6], 0FFFF
0040713D C742 20 0000000>mov dword ptr [edx+20], 0
00407144 C742 28 0000000>mov dword ptr [edx+28], 0 ; destruction de Pe header a coup de 0FFFFFFFF
0040714B C742 2C FFFFFF0>mov dword ptr [edx+2C], 0FFFFFFF
00407152 C742 34 FFFFFF0>mov dword ptr [edx+34], 0FFFFFFF
00407159 039D F5584000 add ebx, dword ptr [ebp+4058F5]
0040715F 8BFB mov edi, ebx
00407161 8B8D F9584000 mov ecx, dword ptr [ebp+4058F9]
00407167 B0 FF mov al, 0FF
00407169 F3:AA rep stos byte ptr es:[edi]
0040716B 83BD 1D594000 0>cmp dword ptr [ebp+40591D], 1 ; test si derniere couche ou pas
00407172 74 36 je short 004071AA
00407174 68 04010000 push 104
00407179 8D85 F1574000 lea eax, dword ptr [ebp+4057F1]
0040717F 50 push eax
00407180 6A 00 push 0
00407182 FF95 6E554000 call dword ptr [ebp+40556E]
00407188 6A 00 push 0
0040718A 6A 00 push 0
0040718C 6A 04 push 4
0040718E 6A 00 push 0
00407190 6A 00 push 0
00407192 68 00000080 push 80000000
00407197 8D85 F1574000 lea eax, dword ptr [ebp+4057F1]
0040719D 50 push eax
0040719E FF95 6A554000 call dword ptr [ebp+40556A] ; si derniere couche, createfile sur le fichier -> pas de dump possible
004071A4 8985 03594000 mov dword ptr [ebp+405903], eax
004071AA E8 0B000000 call 004071BA ; changer eip ici tout le tps pour sauter les merdes au dessus



Qui c'est qui a dit que c'était dur ?

_________________________


[ Ce Message a été édité par: Aegis le 2005-04-23 01:56 ]
profil | mail | Website | edit | quote
Kaine
Inscrit le 19-07-2004
Posté le 23-04-2005 12:31

Bonjour,
J'ai également regardé et je l'ai unpacké. Je confirme les dires d'elooo, je ne vois pas ce qui peut bloquer un émulateur ou un debugger... L'anti dump consistant à modifier l'Image Size ne fonctionne plus face à un tool comme LordPE, le IsDebuggerPresent est largement géré et contré par des plugins. Seul l'effacement sauvage de l'en tête peut poser problème bien qu'il faille juste s'arranger pour éviter son effacement en breakant par exemple sur VirtualProtect ou bien en sauvegardant l'en tête original et en le restaurant avant de dumper.
De plus ce que je trouve mal fichu c'est que une couche = une section supplémentaire. Il aurait mieux valu injecter toutes les couches dans une seule et même section, c'est quand même plus propre.
profil | Website | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 23-04-2005 17:44

Quote:

Le 23-04-2005 12:31, Kaine a écrit :
___________________________________________________
De plus ce que je trouve mal fichu c'est que une couche = une section supplémentaire. Il aurait mieux valu injecter toutes les couches dans une seule et même section, c'est quand même plus propre.



Je me suis dit la même chose
D'autant plus que sur le site du gars, on voit qu'on peut choisir de faire jusqu'à 10 layers voire plus.
J'imagine bien la gueule de mon petit binaire à 3 sections et 4000 bytes qui passe à 13 sections et 4000 + 10 * 0xC00 = 53000 bytes et des poussières
(chaque section rajoutée par couche fait quand même 0xC00 bytes en raw )

Je pense qu'il a surtout pas trop voulu se prendre la tête
Une boucle et c'est parti
Je vais pas trop critiquer par ce que je suis du genre à coder pareil... du moment que ça marche...
Par contre, il l'a sorti publiquement, je pense que s'il veut que son crypteur ait davantage de succès un petit changement de ce coté là ne ferait pas de mal pour sa prochaine version

_________________________


[ Ce Message a été édité par: Aegis le 2005-04-23 18:00 ]
profil | mail | Website | edit | quote
drak-
Inscrit le 02-05-2005
Posté le 02-05-2005 17:15

You are picking on an infant! This cryptor is still in development and the one you had was old.

http://www.uid-zero.tk/SOWHAT.EXE <-- crackme

better? =]

</english>

Note des modos :
Traduction : Vous vous moquez d'un nouveau ne' ! Ce crypteur est encore en developpement et celui que vous aviez etait obsolete

Mise en garde : bien sur, nous n'avons pas encore eu le temps de verifier que l'executable soumis etait inoffensif. En consquence, si vous n'etes pas absolument sur de vous, ne lancez pas cet executable, meme pas sous debugger.



[ Ce Message a été édité par: tweakie le 2005-05-02 17:35 ]
profil | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 02-05-2005 18:31

I'm going to investigate this one.
Thanks for the link, drak- !

BTW, I know this cryptor is still in development

----------------------------------------------------------
Je vais étudier celui-là.
Merci pour le lien drak- !

BTW, je sais que ce crypteur est toujours en développement

_________________________

profil | mail | Website | edit | quote
donotboreme
Inscrit le 28-12-2004
Posté le 02-05-2005 19:45

Ok, cool !
---------------
Ok, cool!
profil | mail | Website | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 02-05-2005 20:06

Yes it's more difficult now but not impossible It's more annoying.

Moreover the file crashes under win XP sp1 (vmware), even if I don't use a debugger.
In fact, the address of ExitWindowsEx is wrong (one byte too far, I suppose the problem is here), so the processes are not terminated. I get a drwatson error instead (thanks ^^).
But it is not important, because I don't want to take this way anymore

I haven't yet finished to unpack the file

PS : sorry for my bad english...

----------------------------------------------------------

Oui, c'est plus difficile maintenant mais ce n'est pas impossible. C'est plus agaçant.

D'ailleurs le fichier crashe sous win XP sp1 (vmware), même si je n'utilise pas de debugger.
En fait, l'adresse de ExitWindowsEx est fausse (un byte trop loin, je suppose que le problème est ici), donc les process ne sont pas terminés. J'ai une erreur drwatson à la place (merci ^^).
Mais c'est pas important, car je ne veux plus prendre ce chemin

Je n'ai pas encore fini d'unpacker le fichier

PS : désolée pour mon anglais de merde (enfin c'est à peu près ça ahah )

________________

lol donotboreme
Ca saoule de faire les deux langues je t'assure
En plus tout le monde va voir comme je suis une quiche en anglais Ca craint
_________________________


[ Ce Message a été édité par: Aegis le 2005-05-02 20:11 ]
profil | mail | Website | edit | quote
donotboreme
Inscrit le 28-12-2004
Posté le 02-05-2005 20:51

I want you to write esperanto too.

Mon Ollydbg semble avoir des moments de fatigue. Il capte plus les chaines SEH. Un coup il me voit les deux, un coup un, et l'autre plus rien. Pris d'un instant de solitude devant mon écran (et dans le noir car l'amoule de ma lampe a cramé), je décide de poser un breakpoint hardware lors de la mise en place du SEH. Blam... il break pas mais m'affiche la messagebox. Break, retour dans le user code et hop... voilà le 401000 en vue. J'ai rien compris à ce qui lui a pris au grand.

Ouais, c'est pas un bon tut pour l'unpacking. Je regarderai sur une machine moins pourrite. :|

[ Ce Message a été édité par: donotboreme le 2005-05-02 21:03 ]
profil | mail | Website | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 02-05-2005 21:04

J'ai même pas la chance de voir une messagebox
Sur mon xp ça veut rien savoir, le truc il tourne pas, quand je clique dessus simplement, boum drwatson

Enfin là du coup j'ai sauté le passage récalcitrant et je reconnais les layers de la version précédente, donc je trace, je verrai bien.

Mais à la base le truc est buggé où alors il aime pas vmware, mais j'en doûte (ceci dit j'ai pas scruté le probleme plus que ça)... Pour un malware je comprendrais, pour un crypteur, c'est peut-être pas le but recherché quoi...

En tout cas le coup des 256 passages sur l'int3 c'est salaud... Et on peut pas les sauter sauvagement vu que ça décrypte le code.
J'ai la flemme de me faire le script, je me les tape tous à la main en pas à pas *motivée*, car au bout d'un moment soit y'a un changement de seh handler, soit je ne sais pas encore, mais ça breake plus (et moi vu que j'ai pas la messagebox, je crashe, mais toi j'imagine que tu as la messagebox à ce moment)

Donotboreme, vu que dans les 1er seh ca decrypte le code à l'oep, à la rigueur toi vu que tu bugges pas, tu peux essayer de faire le bourrin : t'as foutu un bp on access ou memory sur la section code ?

Question à la con : t'es sous quel OS donotboreme ?

_________________________


[ Ce Message a été édité par: Aegis le 2005-05-02 21:26 ]
profil | mail | Website | edit | quote
donotboreme
Inscrit le 28-12-2004
Posté le 02-05-2005 21:26

J'ai pris ma machine moins pourrite pour refaire le test (un windows 2000SP4). J'ai rien qui s'affiche.

Il y a un truc que je comprends pas d'ailleur. Il fait un pop dword fs:[edi] pour défaire le SEH mais edi n'est plus à 0 ce qui pose un problème. EDI pas sauvegardé, XP powered programmé.

Nan franchement, j'ai le même problème avec le IsdebuggerPresent home made qui a fs:[eax+30] avec eax!=0. Je veux bien unpacker mais pas tout le temps mettre les registres à 0.

La machine qui faisait son boxon avec les SEH, c'était un XP SP2

[ Ce Message a été édité par: donotboreme le 2005-05-02 21:37 ]
profil | mail | Website | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 02-05-2005 21:34

C'est peut-etre xp powered codé , mais en tout cas c'est pas xp powered executé quand même
Ou alors ca aime juste xp sp2.... mais je lancerai pas sur ma machine saine...
Tant que j'aurai pas unpacké totalement le binaire je fais pas confiance en plus (d'autant plus qu'il crashe dans mon vmware donc je suis pas capable de voir ce qui fait, donc il est hors de question que je teste en dehors de vmware... des fois que ça marche sur la machine saine mais que ce soit une saloperie... (il fait quoi concrètement donotboreme ? ) oui-oui je sais... 'parait que je suis parano )

Clair, moi je veux bien unpacker aussi mais si ça bug plus
En tout cas de ce que j'en ai vu pour le moment, c'est un peu plus interessant qu'avant déjà

_________________________


[ Ce Message a été édité par: Aegis le 2005-05-02 21:40 ]
profil | mail | Website | edit | quote
donotboreme
Inscrit le 28-12-2004
Posté le 02-05-2005 21:47

Il affiche un messagebox et se copie. T'as la résolution des imports juste avant les antisices si tu veux voir . En fait le programme en lui même fait une 30aine de ligne et ne semble pas dangereux (Toujours ces call XXXXX, comme dans ton image à l'OEP, donc tu n'as pas un bon aperçu).

Je ne le sens pas du tout comme malware.

[ Ce Message a été édité par: donotboreme le 2005-05-02 21:47 ]
profil | mail | Website | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 02-05-2005 21:49

Bon, vais tenter alors
Mici !

--- edit ---
DrWatson sous xp sp2 en dehors de vmware.
Bon moi je regarde que si ça tourne son truc

_________________________


[ Ce Message a été édité par: Aegis le 2005-05-02 21:54 ]
profil | mail | Website | edit | quote
donotboreme
Inscrit le 28-12-2004
Posté le 02-05-2005 22:16

Je trace (...dans le talweg. pfff) son programme, il y a des erreurs et des portions qui sont pas franchement utiles (Un GetProcAddress qui foire, des répétitions de IsDebuggerPresent).

On dirait qu'il aime bien détruire ses données, son code et le PE Header à grands coups de rep stosb.

Pour en revenir au sujet : il n'y a pas de raison pour qu'il embête un antivirus. J'espère qu'il va grandir pour devenir un packer connu. Je pourrais alors dire : celui là je l'ai connu quand il était jeune.

Il va embêter les anti-spyware du genre de humhumhum (:)), mais sans plus. Faut d'abord que l'auteur corrige les problèmes d'écrasement de registres parce que là on boucle à donf dans les SEH.

Hi John, there are some register stalls inside the SEH (XP preserves register value, not 2000) => recursive SEH loops.

[ Ce Message a été édité par: donotboreme le 2005-05-02 22:27 ]
profil | mail | Website | edit | quote
Kaine
Inscrit le 19-07-2004
Posté le 02-05-2005 22:36

Coucou
Pareil que donotboreme pour le pop dword ptr [edi], ça crashe avec les handlers qui nous font tourner en bourrique. J'ai lancé ça dans ma VM xp powered et boum crash

Si l'envie m'en prend je regarderai mieux, mais en tous cas ça m'a l'air d'être bien buggé.

P.S.: Sympa la boucle à 200000000 de répétitions


[ Ce Message a été édité par: Kaine le 2005-05-02 22:39 ]
profil | Website | edit | quote
donotboreme
Inscrit le 28-12-2004
Posté le 02-05-2005 22:47

Bloqué dans un SEH terminé par un ret. La valeur dans la pile va dans ntdll qui me renvoit dans ce handler. Pas moyen d'en sortir.

Adieu Aegis... ne m'attends pas, laisse moi ici.

C'est là => 00405626 64:8B40 30 mov eax, dword ptr fs:[eax+30]

[ Ce Message a été édité par: donotboreme le 2005-05-02 22:51 ]
profil | mail | Website | edit | quote
Newtopic | Reply 1 | 2 | Page suivante

Online : Arisurasina, oducaki, ozigipuxen, tiguelapaccinue, varaben et 101 Guests


Retour Index NewFFR Repository : http://taz.newffr.com
Cagades à Stick : http://alcane.newffr.com
Forum HTML et Archive -> ici
ForumFR Sql/Xml (2006/04) (SF pas à jour du tout...) - Alive since 2001 Newffr.com
Pour toute plainte ou problème -> Contacter Borax, Hyatus, Tweakie ou Stick par message privé (ou Gueulez sur le forum :) )
Retour haut de page