OVH Cloud OVH Cloud

Re-: Décompression et execution d'un programme

5 réponses
Avatar
AMcD®
> Si quelqu'un a du nouveau sur ce thème, je suis toujours intéressé ;-)
> Maître AMcD® svp ?

Lol. Et après, d'aucuns vont trouver que j'ai la grosse tête :-).

Bon, assez rigolé.

En fait, on peut tout faire concernant les divers problèmes évoqués dans vos
posts. Inutile de saliver d'avance, je ne vais pas tout vous dire non plus,
ça va, j'en ai marre de recevoir des mails du genre "t'es fou, faut pas
détailler ça !". En gros voici. Je parle de Win2K/XP hein.

A) Exécuter un programme depuis la mémoire

Oui, c'est faisable, sans passer par des fichiers temporaires.

B) Charger et mapper des DLLs depuis la mémoire

Oui, c'est faisable, là aussi sans fichier temporaraire.

A) et bien plus simple que B). B) c'est assez pénible, il faut reconstruire
l'IAT, mapper correctement les sections (c'est pas toujours facile, il y a
le problème des relocations), etc. Pour B), faut faire joujou avec
VirtualAlloc(). Pour A) il faut s'amuser en plus avec VirtualProtect() et
Write/ReadProcessMemory().

C) Self-Modifying code

Là aussi c'est possible. Et c'est pas dur. Il y a plusieurs types de
modification, au runtime, par maj, etc.

Notons que pour A), B) et C) il risque parfois d'y avoir des problèmes de
privilège. Un hacker correct saura comment obtenir les droits qu'il faut...

En fait, c'est un peu là que réside le problème. Il faut hacker pas mal et
si on divulgue un peu trop les techniques, il y aura toujours un neuneu qui
va s'en servir pour faire des bêtises. Et vu que les lois ont changées
depuis quelques années, je reste donc "évasif"...

Beaucoup de techniques sont issues du monde des malwares. Par exemple, quand
on écrit un cheval de Troie, il faut bien faire attention au problèmes de
détection, aux pare-feu, etc. La détection, c'est, par exemple, lors de
l'injection d'un processus. Un soft prudent pourra toujours scanner les DLLs
de son espace mémoire et deceler facilement une nouvelle DLL. Je ne
conseille d'ailleurs pas cette méthode d'injection. Plus rusé était
d'injecter un processus via CreateRemoteThread() et WriteProcessMemory(),
mais, là aussi, ça se detecte.

Le top, c'est quand même de tout faire en mémoire. Peu de softs scannent
leur mémoire en temps réel :-). Et puis, ce sont des techniques qui trompent
facilement les outils de detection. Je ne vais pas donner de mauvaises idées
ici, mais, par exemple, supposons un malware qui doit se mettre à jour de
temps en temps. Il n'est pas envisageable, pour un codeur sérieux,
d'utiliser des fichiers temporaires (ça, c'est du niveau des journaux de
hack français, c'est à dire que ça fait rire tous les pros...), ni même de
DLL (pas discret, il suffit de scanner les adresses de mapp de DLL, etc).
Une des techniques, parmi tant d'autres, est de modifier le code du malware
direct en mémoire. C'est vraiment furtif. Rien n'apparaît de nouveau dans
l'espace mémoire, pas de DLL, pas d'augmentation de taille (si si, on peut
:-) ), rien. Et il y a bien pire...

Sinon, si ça intéresse quelqu'un je peux poster un exemple de code
self-modifying. Simple hein.

--
AMcD®

http://arnold.mcdonald.free.fr/

5 réponses

Avatar
Patrick 'Zener' Brunet
Bonjour.

Je réponds à AMcD® qui a écrit :
Si quelqu'un a du nouveau sur ce thème, je suis toujours intéressé
;-) Maître AMcD® svp ?



Lol. Et après, d'aucuns vont trouver que j'ai la grosse tête :-).

Bon, assez rigolé.

En fait, on peut tout faire concernant les divers problèmes évoqués
dans vos posts. Inutile de saliver d'avance, je ne vais pas tout vous
dire non plus, ça va, j'en ai marre de recevoir des mails du genre
"t'es fou, faut pas détailler ça !". En gros voici. Je parle de
Win2K/XP hein.




Faut attendre encore un peu, j'ai pas fini de développer mon super système
alternatif ;-)

[Techniques survolées]

(si si, on peut :-) ), rien. Et il y a bien pire...




Je n'en doute pas ;-)

D'ailleurs je me suis toujours demandé par quelle perversion une primitive
telle que CreateRemoteThread() avait pu se retrouver disponible dans l'API
standard !
J'essaie d'imaginer à quoi ça peut servir en dehors de l'écriture de
debuggers - ce qui dépasse de loin le standard - et la mise en oeuvre
facilitée de pacatolikwares divers...

Cordialement,

--
/***************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
***************************************/
Avatar
Pierre Maurette
Patrick 'Zener' Brunet, le 25/06/2005, a écrit :
[...]
Faut attendre encore un peu, j'ai pas fini de développer mon super système
alternatif ;-)


Le Coran (alternatif) ?

--
Pour répondre directement: enlever une lettre sur deux
wwaannaaddoooo -> wanadoo

Pierre Maurette
Avatar
Patrick 'Zener' Brunet
Bonjour.

Je réponds à Pierre Maurette
qui a écrit :
Patrick 'Zener' Brunet, le 25/06/2005, a écrit :
[...]
Faut attendre encore un peu, j'ai pas fini de développer mon super
système alternatif ;-)


Le Coran (alternatif) ?



Vous cherchez à susciter des tensions...

Il faut décoder l'actualité et chercher à sortir de la Matrice. C'est
peut-être devenu ringard, mais ça reste très sérieux...

Mais la partie intéressante de mon post portait sur CreateRemoteThread().

Cordialement,

--
/***************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
***************************************/
Avatar
Vincent Burel
"AMcD®" wrote in message
news:42bd58f9$0$7699$
> Si quelqu'un a du nouveau sur ce thème, je suis toujours intéressé ;-)



En fait, on peut tout faire concernant les divers problèmes évoqués dans


vos
posts. Inutile de saliver d'avance, je ne vais pas tout vous dire non


plus,
ça va, j'en ai marre de recevoir des mails du genre "t'es fou, faut pas
détailler ça !". En gros voici. Je parle de Win2K/XP hein.



Ben il faut dire que tu sais même pas a qui tu parle !
pour ma part, y'a des infos que je donne uniquement si je sais à qui je
parle...
et y'en a d'autre que je donne uniquement si je suis en contrat...

Bref, je pense que ca a du sens de faire un peu attention...

A+
VB
Avatar
Thierry
Bonjour,

AMcD® a écrit :

Le top, c'est quand même de tout faire en mémoire. Peu de softs
scannent leur mémoire en temps réel :-). Et puis, ce sont des
techniques qui trompent facilement les outils de detection. Je ne vais
pas donner de mauvaises idées ici, mais, par exemple, supposons un
malware qui doit se mettre à jour de temps en temps. Il n'est pas
envisageable, pour un codeur sérieux, d'utiliser des fichiers
temporaires (ça, c'est du niveau des journaux de hack français, c'est
à dire que ça fait rire tous les pros...), ni même de DLL (pas
discret, il suffit de scanner les adresses de mapp de DLL, etc). Une
des techniques, parmi tant d'autres, est de modifier le code du
malware direct en mémoire.



Mais justement il me semble qu'on s'achemine vers des processeurs gerant
les segments de code en read only, pour justement contrer les malwares,
mais mets a mal toute tentative d'obfuscation.
Non ?

Sinon, si ça intéresse quelqu'un je peux poster un exemple de code
self-modifying. Simple hein.



OK.

--
« Le travail est probablement ce qu'il y a sur cette terre de plus bas et
de plus ignoble. Il n'est pas possible de regarder un travailleur sans
maudire ce qui a fait que cet homme travaille, alors qu'il pourrait nager,
dormir dans l'herbe ou simplement lire ou faire l'amour avec sa femme. »
Boris VIAN
Mon blog RSS : http://yarglah.free.fr/monblog_rss.php <<