begin process at 2010 09 03 22:18:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité

 > INJECTER DLL DANS UN PROCESSUS EN COURS

INJECTER DLL DANS UN PROCESSUS EN COURS


 Information sur la source

Note :
8,2 / 10 - par 5 personnes
8,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité Classé sous :injection, dll, processus Niveau :Initié Date de création :10/07/2006 Vu / téléchargé :12 759 / 1 863

Auteur : elguevel

Ecrire un message privé
Site perso
Commentaire sur cette source (72)
Ajouter un commentaire et/ou une note

 Description

Bon au départ je ne voulais pas poster ce code, mais Forman m'a doubler avec çà source : http://www.delphifr.com/codes/REMPLACER-FONCTION-D LL-IMPORTE-QUELLE-AUTRE_38484.aspx

Du coup je vais vous présenter l'injection de DLL dans un processus, non pas pour remplacer une fonction comme la fait Forman, mais qu'elle tourne indépendemment en tache de fond sur un autre processus. Il faudra biensur crée avant une DLL dynamique qui est une fonction particulière (sorte d'application embarqué).

Cette technique est utilisée par certain malware afin d'ouvrir des canaux (porte d'entrées) sur votre PC, pour y laisser entrer des intrus.

Mon programme est assez généraliste car il permet de selectionner la DLL à injecter et le processus cible. Mais l'avantage de se type d'injection, et que si elle est faite sur votre navigateur internet, les firewall laissant votre navigateur envoyer et recevoir sans confirmation et la socket faisant partie de l'application, le FireWall laissera votre socket embarqué lire et ecrire sur une socket client exterieure en passant outre les protections.

Source

  • // La fonction d'injection
  • function InjectDLL( DLLSource : string; ProcessDestination : string ) : Boolean;
  • var
  • LibName : Pointer;
  • hProcess : THandle;
  • ThreadHandle: THandle;
  • OctEcrit : Cardinal;
  • TheadID : DWORD;
  • begin
  • Result := False;
  • AjustePrivileges; // voir dans le Zip pour cette fonction
  • hProcess := OpenProcess( PROCESS_ALL_ACCESS, FALSE, FindProcess( ProcessDestination ) );
  • if (hProcess = 0) then Exit;
  • LibName := VirtualAllocEx( hProcess, nil, Length(DLLSource) + 1, MEM_COMMIT, PAGE_READWRITE );
  • if ( LibName <> nil ) then
  • begin
  • WriteProcessMemory( hProcess, LibName, PChar(DLLSource), Length(DLLSource) + 1, OctEcrit );
  • if ( (Length(DLLSource) + 1) <> OctEcrit ) then Exit;
  • le process
  • ThreadHandle := CreateRemoteThread( hProcess, nil, 0, GetProcAddress( LoadLibrary('kernel32.dll'), 'LoadLibraryA' ), LibName, 0, TheadID );
  • Result := ( ThreadHandle <> 0 );
  • WaitForSingleObject( ThreadHandle, INFINITE );
  • end else Result := False;
  • VirtualFreeEx( hProcess, LibName, 0, MEM_RELEASE );
  • CloseHandle( hProcess );
  • end;
// La fonction d'injection

function InjectDLL( DLLSource : string; ProcessDestination : string ) : Boolean;
var
    LibName     : Pointer;
    hProcess    : THandle;
    ThreadHandle: THandle;
    OctEcrit    : Cardinal;
    TheadID     : DWORD;
begin
    Result := False;

    AjustePrivileges; // voir dans le Zip pour cette fonction

    hProcess := OpenProcess( PROCESS_ALL_ACCESS, FALSE, FindProcess( ProcessDestination ) );
    if (hProcess = 0) then Exit;

    LibName := VirtualAllocEx( hProcess, nil, Length(DLLSource) + 1, MEM_COMMIT, PAGE_READWRITE );
    if ( LibName <> nil ) then
    begin
      WriteProcessMemory( hProcess, LibName, PChar(DLLSource), Length(DLLSource) + 1, OctEcrit );
      if ( (Length(DLLSource) + 1) <> OctEcrit ) then Exit;
le process
      ThreadHandle := CreateRemoteThread( hProcess, nil, 0, GetProcAddress( LoadLibrary('kernel32.dll'), 'LoadLibraryA' ), LibName, 0, TheadID );
      Result := ( ThreadHandle <> 0 );
      WaitForSingleObject( ThreadHandle, INFINITE );
    end else Result := False;
    VirtualFreeEx( hProcess, LibName, 0, MEM_RELEASE );
    CloseHandle( hProcess );
end;

 Conclusion

Les sources fournies avec le Zip ne contiennent aucun "Malware", et ma DLL contient juste un serveur socket qui renvoi ce que lui envoi le client connecté : donc rien de méchant. Cette source à un but pédagogique, je ne cherche en rien à faire de futur HAcKer, je vous serez grée de ne pas me la supprimer, un avertissement serai suffisant !

J'ai posté cette source un peu rapidement, donc s'il y a des corrections je suis preneur.

Notes et commentaires sont les bienvenues !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip METHODE DE PROPAGATION D'UNE APPLICATION
Source avec Zip Source avec une capture GERER LES SERVICES DE WINDOWS AVEC WINSVC
Source avec Zip Source avec une capture WAKE ON LAN
Source avec Zip Source avec une capture POUR LES DEBUTANTS : NETTOYAGE RECURSIF
Source avec Zip Source avec une capture GESTION DE LA TABLE DE ROUTAGE DE WINDOWS

 Sources de la même categorie

Source avec Zip Source avec une capture LYNX : CHIFFREMENT À BLOC/FLUX, EXEMPLE INCLUS par Bacterius
Source avec Zip FBCREATEUSER par fbalien
Source avec Zip Source avec une capture SCANNER DE MALWARES ( ßE SCANNER ) par MrClock
Source avec Zip Source avec une capture GOLDEN PASSWORDS - STOCKEZ VOS MOTS DE PASSE ! par Bacterius
Source avec Zip Source avec une capture LEA EN MODE CHIFFREMENT (SEA) par Bacterius

 Sources en rapport avec celle ci

SYNCHRONISATION DE THREADS DANS DES DLL par saib
Source avec Zip DYNAMIC LIBRARY LOADER CLASS: GAGNEZ DU TEMPS POUR CHARGER L... par f0xi
Source avec Zip Source avec une capture UTILISER UNE DLL INCLUSE EN RESSOURCES par Bacterius
Source avec Zip Source avec une capture COMPOSANT TLOG UTILISANT UNE DLL par Bacterius
Source avec Zip Source avec une capture HOOK D'API, INJECTION DE DLL, TABLE D'IMPORT par rt15

Commentaires et avis

Commentaire de cirec le 10/07/2006 11:22:13 administrateur CS

Salut,
c'est très intéressant tout ça mais ça me semble également dangereux cette facilité d'injection.

D'ou ma question n'y a t'il pas moyen de contrôler, détecter, empêcher, l'injection "sauvage" ?
Surtout dans la méthode que tu expliques plus haut ... ça fait froid dans le dos ! brrr

Très instructif.
@+
Cirec

Commentaire de elguevel le 10/07/2006 11:31:12

Il parait que certains logiciels et certains anti-virus sont déja équipés de systèmes de surveillances contre le HiJacking (en general).

A mon avis il faudrai surveiller l'utilisation de certaines API fréquemment utilisé par les malwares (surveillance des api native également).

Mais bon certains malware utilise les hooks, ou sont lancés sous forme d'application standard (kelogger, etc...), enfin il en existe tellement de variantes, qu'il faudrai un système de sécurité par type d'appli :-)

Commentaire de Matt 261 le 10/07/2006 11:44:32

Hello,

"il faudrai un système de sécurité par type d'appli" Tu veux pas nous en faire un? Ca pourrait être très utile ;-)

@+
  Matt

Commentaire de elguevel le 10/07/2006 11:47:31

Lol, je travail déja sur un système d'anti-ARP Spoofing ... et j'en chie grave  
!

Bon je prend çà comme un défi ... mais mes connaissances étant tout de même limités ... on verra :-)

Commentaire de cirec le 10/07/2006 11:49:14 administrateur CS

Un sacré boulot (mais tu as beaucoup de chance les vacances approche) lol
plus sérieusement dommage
on nous montre toujours comment on peut se faire "pirater"
mais pas comment s'en proteger :-(

@+
Cirec

Commentaire de Matt 261 le 10/07/2006 11:54:53

Pour ceux qui ne sont pas déja en vacances Cirec :) Ce n'était pas particulièrement un défi Elguevel mais c'est vrai que ca m'interesserait un logiciel de sécurité puisque comme le dit Cirec, "on nous montre toujours comment on peut se faire "pirater" mais pas comment s'en proteger".

Commentaire de elguevel le 10/07/2006 11:56:06

Ba j'aimerai bien vous montrer l'inverse mais c'est beaucoup plus dur à faire et c'est assez hazardeux ...

Imagine que tu fasse une protection contre cette attaque, il faudra que tu espionne tout ce qui est relatif aux API utilisées par cette methode (système comportemental). Le problème c'est que bcp de programme utilise les mêmes systèmes (LoadLibrary, socket, ecriture/lecture, Hook, etc..) pour faire des choses conformes et légals. Donc il faudrai à chaque tache suspecte afficher un message à l'utilisateur, et celui-ci en recevrait toute les 30 s (événements du à l'anti-virus, au système, etc..).

Après faudrai pousser le developpement plus loin et faire un système ou l'on detecte les malwares "type" (système par signature), mais là çà veut dire qu'il faut sans cesse en chercher de nouveaux et faire des mises à jour (grosse équipe de Dev oblige).

Commentaire de Matt 261 le 10/07/2006 12:03:50

Oui, c'est sur que c'est un boulot énorme qui ne se fait pas seul .

Commentaire de cirec le 10/07/2006 12:13:41 administrateur CS

Trop de travail pour un seul homme :-)

N'empêche que le fossé est immense entre la facilité de mise en oeuvre et la difficulté de la parade.

Aïe Aïe Aïe ... on est pas sauvé :o)

Commentaire de shining le 10/07/2006 14:45:23

pour faire un anti-virus dans le genre Spybot Kill and Search il faut de la volonter mais aussi une équipe c'est sûr !!!, on dispose déja d'une base de données gigantesque grâce à internet :)

http://www3.ca.com/securityadvisor/pest/browse.aspx?cat=Dialer

http://www3.ca.com/securityadvisor/pest/browse.aspx?cat=Hijacker

http://www.simovits.com/trojans/trojans.html

http://www.f-secure.com/sw-desc/b.shtml

pour les BHO/ToolBar/CLSID c'est plus facile tu vas dans ce site
http://www.castlecops.com/CLSID.html ensuite il est possible de choisir la liste complète(près de 10Mo) là suffit de mettre au point un parser html et de transformer la liste en base de données

Alors qui c'est le plus courageux pour mettre au point un soft OpenSource avec le noyau en place ?

pour info cette technique d'injection sert aussi au laboratoire anti-virus pour justement faire le tracage d'un virus, c'est à dire ce que fait l'executable, quel api fait-il appel, qu'est-ce qu'il va modifié(Base de registre, fichier système ?) ect.., bref ça ne sert pas qu'à faire un virus ;)

Commentaire de Matt 261 le 10/07/2006 14:50:49

Et voila le petit message rouge :( Et merci shinnig pour tout ces liens.

Commentaire de elguevel le 10/07/2006 14:51:06

Ah ba enfin ... j'lai eut mon petit avertissement rouge ... et de deux :-D

Commentaire de Forman le 11/07/2006 10:35:00

Je crois qu'il existe des antivirus qui modifient l'API CreateRemoteThread (entre autres, et celles qui permettent de loader un module pour faire des hooks) pour demander confirmation à l'utilisateur qu'il autorise leur utilisation. Mais c'est sûr que ma grand-mère, elle risque de ne pas trop aimer si son antivirus lui demande:
"Le processus de PID 0x0F3A8532 chargé à l'adresse 0x85467D tente de lancer l'API CreateRemoteThread, l'autoriser? Yes, No, Cancel"

Bien joué pour l'avertissement rouge Elguevel        ;-)
Il faudrait que le designer du site mette une balise <MARQUEE></MARQUEE> autour pour le faire clignoter       :D

Commentaire de elguevel le 11/07/2006 10:37:02

Ba c'est ma seconde source avec cette MessageBox :-D ... j'vais essayé de collectionner ;-)

Commentaire de cirec le 11/07/2006 10:55:59 administrateur CS

T'as pris un abonnement au Messages ? lol

Mais pour moi la source n'est ni louche ni dangereuse (en elle même) c'est l'utilisation qui pourrait en être fait qui peut être dangereuse.

Il faudrait peut être revoir le sens du message, d'ailleurs à ce propos je te conseil de mettre un avertissement dans tes sources au sujet de l'utilisation

Par contre ce que je ne comprend pas c'est pourquoi la source d'Elguevel et pas celle de Forman ?

Le danger est le même des deux côté non ?

Commentaire de Matt 261 le 11/07/2006 11:10:20

Je me pose la même question Cirec.

Commentaire de elguevel le 11/07/2006 11:15:48

Ba ouai mais l'admin qui met le message à mon avis il se base surtout sur le descriptif (çà se trouve c'est un developpeur web), et moi j'ai parler de technique utilisé par les MalWare alors forcement ... Blame !

Par contre je comprend pas qu'on met mis ce message pour ma source d'Anonymaileur... je vois pas ce qui à de dangeureux (par contre illégal oui)

Commentaire de Matt 261 le 11/07/2006 11:19:48

Pour ce qui est de dangereux, bein moi non plus je vois pas. Pour l'illégal, des sites proposent ce service de mails anonymes et ils sont encore en ligne. De toutes facons s'il mettent le petit mot charmant, c'est pour ne pas avoir d'ennuis par la suite...

Commentaire de elguevel le 11/07/2006 11:24:23

oui c'est certain mais cette MessageBox c'est chiant non ?

Commentaire de elguevel le 11/07/2006 11:25:09

Sinon pour ce programme ... des commentaires sur le code ? Une note ?

Commentaire de Matt 261 le 11/07/2006 11:25:35

Oui, c'est super chiant de devoir cilquer à chaque F5 pour voir les commentaires... Mais il faudra faire avec :(

Commentaire de Matt 261 le 11/07/2006 11:26:44

Oui c'est vrai Elguevel, jusque là, on a seulement parlé du message rouge et de créer des protections contre les virus...

Commentaire de elguevel le 11/07/2006 11:32:19

Moi j'ai déja trouvé des améliorations sur mon propre code, je reposterai quand çà sera nickel.. et vous ?

Y'en a qui en chie pour le faire fonctionner ?

Commentaire de cirec le 11/07/2006 11:44:23 administrateur CS

Oui je confirme c'est chiant …
Mais bon comme le dit Matt il faudra bien faire avec

Et pour le code ... comme toujours c'est bien codé c'est propre et commenté. Sinon le code en soit me dépasse un peut par sa facilité de mise en oeuvre.

En ce qui concerne le fonctionnement je n'ai pas encore pris le temps de compiler et d'exécuter la source mais cela ne saurait tarder

Affaire à suivre :-)

Commentaire de elguevel le 11/07/2006 12:15:52

Arf j'ai pas commenté des masses .. de ce coté la je suis assez feignant, sinon c'est vrai que j'essai toujours de faire au plus simple, et faire des unités cohérentes et indépendante. En plus des unités bien construitent peuvent être réutilisées par simple importation sans avoir à modifier tout le code.

Sinon ya un petit bug, c'est quand on ferme le processus injécté.. des fois le PC Freeze pendant 30 secondes => à voir !

Mais je doit avoué que la où j'en est chié c'est pour la DLL : impossible de faire tourné une socket la dedans en receptionant les message clients ... J'ai fini par mettre un thread mais sinon le TServerSocket seul pas moyen ..

Commentaire de cirec le 11/07/2006 12:42:34 administrateur CS

Pas des Masses ... c'est pas le dieu de la pauvreté Grec ... non ? lol

Ben je constate que toutes les fonctions et procédures dans ElgInject.pas sont commentées en début d'implémentation et la fonction principale donc la plus intéressante à pratiquement un commentaire par ligne de code. Et toutes les unités suivent le même model.

Tu te trouves peut être assez fainéant mais ça reste quand même très claire.

Tu es trop modeste, une simple description suffit bien souvant, pas la peine de rédiger un roman. Trop de commentaire tue le commentaire :-)

Commentaire de Francky23012301 le 11/07/2006 19:01:54

Salut Elguevel,

C'est simple : le message d'avertissement est mis quand l'auteur du post est recherché par Interpole.

Ben il est passé ou Elguevel ?? Il s'est fait streamer via un protocole TCP/IP en Antartique ??

Cette source n'est pas dangereuse. Quand à son détournement qui pourrait lui etre dangereux, ce n'est pas à la portée de tous.

Bon travail Elguevel.

@+

Commentaire de shining le 11/07/2006 19:27:19

Salut,

je viens de retrouver un lien intéressant et qui est en rapport avec ce post(à ne pas mettre entre toutes les mains), ceci-dit pas de soucis car il y'a la barrière du langage(C++) mais à voir quand même, vous trouverez le code source avec des fonctions pour l'injection d'une dll dans un processus, l'injection de code dans un processus(plsu dangereux), et pleins de fonctions intérréssantes !!!

Attention notion en "C" voir "C++" obligatoire mais si vous êtes curieux ;o)

WinAPIOverride32
http://jacquelin.potier.free.fr/

@+

Commentaire de f0xi le 12/07/2006 05:37:19 administrateur CS

hop retiré, il est vrai que ce message pus un peu du cul, il en faudrait des nouveaux ...
^^

bon code en tout cas.

Commentaire de elguevel le 12/07/2006 07:55:06

Et ma note ? car çà me dit toujours pas si j'ai mon Bac ou pas !!!

Merci Shining pour le site, mais au niveau language c'est pas le C/C++ qui me rebute .. c'est l'anglais LoL

Commentaire de Matt 261 le 12/07/2006 09:39:03

Et moi je dit en grand merci à f0xi ;) ! ! !

Commentaire de elguevel le 12/07/2006 09:43:17

Ah oui au faite, un grand merci fOxy pour cette fluidité :-)

Commentaire de cirec le 12/07/2006 09:57:54 administrateur CS

C'est quand même mieux comme ça.
"hop retiré, il est vrai que ce message pus un peu du cul"
Mon chère F0xi, cette phrase pourrait servir de légende à ton avatar ... Mdr

En tous cas, merci (il n'était vraiment pas justifié ce message)

Commentaire de shining le 12/07/2006 19:34:57

Bon la voilà ta note lol, alors heureux ? ^^

Commentaire de Matt 261 le 13/07/2006 09:42:54

Voila aussi ma note !

Commentaire de elguevel le 13/07/2006 09:48:12

ah oui ..Très heureux :-) MerKi !

Commentaire de Rudy3212 le 16/07/2006 15:38:50

Superbe Programme Bravo, allez je Note :)

Commentaire de elguevel le 17/07/2006 11:24:23

Merci bcp Rudy3212 pour ce 10 ;-)

Commentaire de Forman le 17/07/2006 22:11:49

Une méthode pour se protéger de cette méthode d'injection:

1/Au démarrage du système, utiliser mon source
http://www.delphifr.com/codes/REMPLACER-FONCTION-DLL-IMPORTE-QUELLE-AUTRE_38484.aspx
pour "patcher" tous les processus lancés (dont Explorer.exe notemment...) et remplacer les fonctions suivantes dans chacuns des process lancés:
CreateProcess -> CreateProcess2
CreateRemoteThread -> CreateRemoteThread2
LoadLibrary -> LoadLibrary2

2/La fonction CreateProcess2 fait la même chose que l'originale, mais en plus elle remplace les fonctions suivantes dans le processus lancé:
CreateProcess -> CreateProcess2
CreateRemoteThread -> CreateRemoteThread2
LoadLibrary -> LoadLibrary2

3/La fonction LoadLibrary2 fait la même chose que l'originale, mais en plus elle remplace les fonctions suivantes dans la DLL loadée:
CreateProcess -> CreateProcess2
CreateRemoteThread -> CreateRemoteThread2
LoadLibrary -> LoadLibrary2

4/Si tout s'est bien passé, à tout instant, tous les processus et les modules chargés en mémoire ont leur fonction CreateRemoteThread remplacée par CreateRemoteThread2 (en supposant que tout processus puisse être uniquement lancé par CreateProcess à un moment ou à un autre, et toute librairie chargée avec LoadLibrary à un moment ou à un autre). Finallement, la fonction CreateRemoteThread2 affiche une boîte de dialogue du genre:

"le processus machin.exe est en train de faire une opération louche en tentant d'utiliser CreateRemoteThread, technique classique utilisée par les malwares pour s'infiltrer dans un système, voulez-vous le laisser faire?
*Yes* *No*"

Si l'utilisateur clique sur "no" alors la fonction CreateRemoteThread2 échoue (ou ne fait rien) sinon la fonction CreateRemoteThread2 fait la même chose que l'original.


Pourquoi remplacer les 3 fonctions citées et pas seulement CreateRemoteThread (en mettant à jour la liste des processus toute les secondes par exemple)? Tout simplement car injecter une DLL peut se faire très rapidement ni vu ni connu en même pas une milliseconde. Puisqu'une dll injectée devra nécessairement être chargée préalablement avec LoadLibrary (du moins dans un monde idéal, voir plus bas!), et que tous les exécutables ont été préalablement patchés, l'antivirus a une longueur d'avance sur le virus présumé (et de plus ne consomme pas de resources processeur supplémentaires).

La méthode précédante pourrait être encore améliorée en patchant aussi l'autre API bien connue des hackers pour injecter une DLL (je ne me souviens plus de son nom, elle sert à faire un "hook" des windowprocs d'un exécutable) qui je crois ne passe pas par LoadLibrary mais utilise des fonctions kernel plus bas niveau. Là encore, la méthode que je propose ne fonctionnera pas si le processus qui va lancer le code d'infection n'est pas lancé avec CreateProcess (mais par exemple par une de ces nombreuses API non documentées dont Microsoft a le secret [littéralement] et qui sont autant de failles de sécurité potentielles...)

Si quelqu'un se sent le courage d'essayer de le programmer         <8=P

Commentaire de Forman le 17/07/2006 22:17:53

Au fait je suis très très jaloux elguevel, j'avais moi aussi posté un source sur cette méthode d'injection l'an dernier, et un des admins l'avait purement et simplement supprimée environ 5 minutes après que je l'aie posté       :-(

Il faut dire que le reste du code expliquait comment injecter une DLL dans internet explorer (pour passer le firewall sans se faire remarquer  ;) ) et se connectait sur un programme de "télécommande" qui permettait de prendre le contrôle de l'ordinateur infecté à distance (clavier/écran/souris). C'est même suite à ça que j'ai eu l'idée de programmer mon serveur d'accès à distance par HTTP (http://www.delphifr.com/codes/ACCEDER-SON-ORDINATEUR-DEPUIS-IMPORTE-QUELLE-MACHINE-CONNECTEE_27224.aspx), comme quoi, programmer un trojan ça peut servir!!!

Commentaire de elguevel le 18/07/2006 08:12:30

Ba désolé pour toi, mais moi aussi j'explique cette histoire d'injecté IExplorer (voir en haut) et personne n'a rien dit. Enfin si, au départ j'ai eut un message rouge, et après fOxy me l'a viré. En fait je crois que çà dépend de l'admin sur lequel tu tombe (ouverture d'esprit oblige).

Mais je te rassure, on m'a également supprimé des sources, notemment une qui été un floodeur de page web multi-thread. Cà permettai d'augmenter ses statistiques de visite sur les blogs et autres trombinoscope du web, celà afin d'etre premier dans le top 10 :-)(elle à pas tenu 2 minutes).

J'ai d'ailleur jamais osé poster certaines sources comme des Worms etc...

Un conseil, change le titre et la description .. c'est con mais pour deux sources identiques si l'une  s'appel "Penetrer inconito la base de registre d'un tier" çà passera pas, alors que si tu met "Démonstration de l'API RegConnectRegistry" bizzarement c'est pas vu de la meme façon.

Aller perd pas courage, et code ;-)

Commentaire de elguevel le 18/07/2006 08:16:39

Sinon très bon ta technique de subtiliser les API windows. On peut aussi controler à un niveau plus bas en redirigant les API natives (mais là c'est clair, c'est pas documenté :-)

Mais je pense pas que tout le monde y arrive vu que tu as bridé ta source pour qu'on ne  puisse pas injécté un autre process que le programme d'injection lui même.

Commentaire de Forman le 18/07/2006 22:28:23

Argh...

Je ne connaissais pas la fonction RegConnectRegistry, je viens de lire la rubrique MSDN associée et je ne sais vraiment pas quoi dire, ça me laisse sans voix... Pourquoi s'embêter à programmer des virus et trojans super évolués et subtils alors que tout est déjà là en natif dans Windows?

Heureusemenr que j'utilise WinLSD, ce stupide service de "partage du registre à distance" (ou quelque chose comme ça) est désactivé par défaut, ouf!

J'ai une question bête à poser:
les 2 API dont on parle sur cette page (CreateRemoteThread et RegConnectRegistry), en toute honnêteté, qui pourrait me dire vraiment quelle utilité elles pourraient avoir dans le cadre d'une utilisation "normalle" de l'OS? Sincèrement, je n'en vois vraiment aucune, si ce n'est de les exploiter en tant que failles de sécurité...

Commentaire de elguevel le 19/07/2006 07:57:21

L'administration.. c'est pour l'administration. Et je peux te dire qu'en entreprise çà sert. L'admin n'a plus à bouger son gros derrière et à devoir fermer son IExplorer connecté sur "GrosseCochone.com". L'utilisateur lui soumet le problème, et lui le dépanne à distance.. c'est çà le progrès :-D

Et puis tu sait toutes les API comme RegConnectRegistry necessite quand meme que tu es les droits d'administration donc bon l'implémenter comme çà ne te servira à rien de plus qu'utiliser les programmes déja fait par Microsoft.

En parlant de faille, s'en est pas vraiment une, mais une manip à l'epoque permettait sans les droits d'admin d'ouvrir le lecteur de CD d'une autre machine sur le reseau et je m'apperçoi qu'elle n'a jamais été corrigé. Bon c'est pas bien méchant mais quand meme, çà aurai pu être fait !



Commentaire de kalif le 25/07/2006 11:02:26

salut

bravo pour ta source elle est interessante, j'avais déjà vu ca en c++ mais pas en delphi ... d'un autre coté ca aurai été mieux si on pouvais injecter une procedure ou dll déjà incluse dans notre exe ... jsais pas si j'ai été clair,  @+

Commentaire de elguevel le 25/07/2006 11:08:28

Heuu explique nous çà :-)

Commentaire de kalif le 25/07/2006 11:22:49

ben en fait je pensais où alors juste quelques ligne de code qui font partie de notre exe sans devoir prendre une dll déjà créé ... ou alors une dll déjà incrustée dans le code via bitarts fusion...

Commentaire de Rudy3212 le 25/07/2006 12:00:34

Ce qu'il veut dire c'est que le code à injecter ne soit pas dans une dll mais dans l'exe lui même.

Commentaire de kalif le 25/07/2006 12:04:40

oui lol excuser moi j'ai du mal a m'exprimer aujourd'hui :)

Commentaire de elguevel le 25/07/2006 13:12:00

Ok Ok, L'exe HiJacking :-) Jamais fait mais c'est bcp plus chaud.

Voila un exemple en C++ : http://www.codeguru.com/cpp/w-p/win32/security/article.php/c11393/

En tout cas c'est redoutable !!!

Commentaire de kalif le 25/07/2006 16:50:53

c'est exactement ce que je disais mais ca serai bien de l'avoir en delphi

Commentaire de Forman le 25/07/2006 21:54:15

lol c'est pas du Delphi c'est de l'assembleur, tu peux tout reprendre (ou presque) avec l'assembleur intégré de Delphi!

Commentaire de kalif le 25/07/2006 21:55:36

je sais très bien que c'est pas du delphi, je dis juste que ca serai bien si quelqu'un le refasse en delphi...

Commentaire de Rudy3212 le 25/07/2006 22:55:43

Grrr ce que FORMAN veut dire je pense, c'est que c'est fonction ne peuvent pas être fait en delphi car trop complèxe, mais on peut quand même l'utiliser dans delphi mais en le gardant en assembleur (asm inline ^^).
Bientôt je crois que je vait faire mon traducteur en ligne a force que redevoir expliquer les messages lol

Commentaire de elguevel le 28/07/2006 08:10:14

HiJacjink ... qui s'y colle ?

Assembleur Inline, à part faire une addition j'y connait rien ... faudra que je m'y mette !

Commentaire de Forman le 08/08/2006 11:53:46

Je me suis encore choppé un virus...

Je suis allé voir l'adresse que tu donnes pour le exe-jacking Elguevel, à la fin de l'article ils parlent de Morphine (pour crypter le contenu d'un exécutable) et ils donnent l'adresse d'un site où tu peux télécharger les sources de morphine:
http://www.hxdef.org/download.php

J'ai bêtement voulu télécharger un soi-disant programme pour énumérer les ports ouverts d'une machine:
http://www.hxdef.org/download/OpPorts12.zip
Et il s'avère qu'il contient 3 jolis virus, et pas des moindres.
Entre autres: "Trojan.Horse.BackDoor.Generic.3.BQX"

Il m'a fallu une demi-journée pour me débarasser de cette m****, je ne suis même pas sûr qu'il n'en reste rien...!

Commentaire de Matt 261 le 08/08/2006 11:55:39

Quelle idée de télécharger tout ce qui passe aussi... lol

Commentaire de Rudy3212 le 08/08/2006 12:00:25

Lol, forman pour enuméré les ports ouverts il suffit de faire :
netstat -a
dans une invite de commande msdos.

Sinon tu peut télécharger le logiciel Tcview :
http://www.zdnet.fr/telecharger/windows/fiche/0,39021313,11011228s,00.htm

Commentaire de Forman le 08/08/2006 12:58:29

En fait il y a les sources avec le prog compilé, c'est juste qu'elles étaient en C++ et j'avais pas de compilateur C++ installé... C'est pour ça que j'ai lancé l'exe, en me disant naïvement qu'il correspondrait au source...

Je ne connaissais pas netstat, merci Rudy

Commentaire de Rudy3212 le 08/08/2006 13:02:57

Derien ^^

Commentaire de Matt 261 le 08/08/2006 14:37:36

C'est pas mal cette commande Rudy ! Merci :D

Commentaire de Rudy3212 le 08/08/2006 15:48:30

Sinon Tcpview :
http://www.zdnet.fr/telecharger/windows/fiche/0,39021313,11011228s,00.htm

Pareil mais graphique avec quelque option en plus

Commentaire de elguevel le 10/08/2006 10:28:07

Tu peux meme faire un "netstat -an" pour voir la destination.

Sinon TcpView est un programme de Mark Russinovich (un gourou), il à un site : http://www.sysinternals.com/

Vous trouverez sur ce site tout un tas de programmes systèmes très utiles et particulièrement puissants comme le fameux "Process Explorer" ou les "PsTools" (qui permettent d'administrer des machines à distances) etc..

A+

Commentaire de cirec le 10/08/2006 11:03:55 administrateur CS

Oui très très bon site,
on y trouve également une démo pour accéder aux valeurs cachés de la BDR
et plus encore (si affinités) :-)

@+
Cirec

Commentaire de Rudy3212 le 10/08/2006 12:07:25

Ou iya plein de programme sur ce site.
Et pour ce qui veule ya même les sources :)
http://download.sysinternals.com/Files/NetstatpSource.zip

Commentaire de Thepuple le 05/11/2006 19:47:14

salut à tous, bonne source mais à quoi bon utiliser les fonctions pour allouer de la mémoire et écrire le chemin de la dll, pourquoi ne pas directement donner DLLSource au lieu de LibName comme parametre a CreateRemoteThread ça marche aussi mais il y a peu être une différence, si quelqu'un peu m'éclairer la desssus.
Bonne continuation.

Commentaire de skyluke92 le 20/12/2006 17:06:19

Bjr à tous! c mon premier post sur le site, mais ça fait un bail que je fréquente CodeSource (8ans au -) LOL
Merci à Elguevel déjà pour son source.

Juste une question justement:
Je sais tout à fait à quoi sert la fonction "WaitForSingleObject" le problème c'est que je ne sais vraiment pas pourquoi tu l'as mise ici??????
Sutout après ton " result := "  !

Merci pour l'info et bon coding ! ;)

Commentaire de elguevel le 21/12/2006 09:04:47

Le Result ne signifie pas la fin de la fonction, je vais donc avoir un resultat avec mon
"Result := ( ThreadHandle <> 0 );" mais la fonction continue à être executé.
Et là problème si je continue on retrouve :
"VirtualFreeEx( hProcess, LibName, 0, MEM_RELEASE );"
"CloseHandle( hProcess );"

Et mon CreateRemoteThread se termine là.
C'est pour çà que j'ai ajouter : "WaitForSingleObject" qui permet au thread de durée pendant  X temps ( X exprimé en milisecondes ), vu que je ne veux pas que celui-ci se termine j'utilise la constante INFINITE qui permet d'avoir une durée infinie.

Mais c'est vrai que dans ce cas les lignes :
"VirtualFreeEx( hProcess, LibName, 0, MEM_RELEASE );"
"CloseHandle( hProcess );"

... ne servent à rien puisque mon programme se stop au "WaitForSingleObject" !

A revoir ...

Sinon je n'avais pas vu le message de Thepuple, mais effectivement je n'ai pas essayé de passer la DLL directement, je ne sais pas si çà marche, mais il me semble plus naturelle d'alloué avant d'ecrire.

Merci, et bon code.

Commentaire de Bacterius le 04/01/2009 01:10:27

Très interessant code ... Puis-je m'en servir dans mon application à venir ? Je l'inclurai dans mon unité ProcessUtils, je la modifierai juste un peu pour la rendre compatible avec mon système de types et de classes (TProcess=class(TObject)) ?
Merci d'avance :)

Cordialement, Bacterius !

Commentaire de elguevel le 04/01/2009 09:00:46

Aucun problème, c'est là pour çà ...

Commentaire de Bacterius le 04/01/2009 12:36:43

Merci beaucoup Elguevel, je te citerai dans le code, devant ta fonction (je crois avoir pris également AdjustPrivileges pour pouvoir obtenir des droits suffisants).

Merci :)

Cordialement, Bacterius !

Commentaire de randriano le 30/01/2009 11:57:49

=> Bonjour,

Je me demande si une telle injection peut se faire dans une session non Administrateur?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Dll injection dans iexplore [ par achraf1986 ] Salut a tous !!! j'ai chercher dans tous le net mais j'ai pas trouver un source qui montre comment ajouter un boutton dans Internet explorer alors aid comment declarer une fonction privé dans une dll delphi [ par jayceblaster ] Bonjour,je suis en train de créer un dll via l'expert de DLL delphi et je souhaite déclarer une fonction privé comme je peux le faire dans un projet V Handle & Processus [ par flo160fr ] Bonjour !Je voudrais savoir :Comment savoir si un processus est en cours d'execution (avec le nom de l'executable si possible)Comment obtenir le handl bdd mysql [ par amine_koubba ] bonjour,j ai un ptit pb(si ce n est un gros) en effetj ai développé une application delphi utilisant une base de données mysql,j aimerais savoir si il Convertir fonction DLL en Delphi [ par nitrique ] Bonjour à tous,J'ai une DLL qui possède cette fonction selon la doc:NoMangle long DLL_IMPORT_EXPORT csp2GetCodeType(unsigned char CodeId<font face="Ar Bug avec une fiche dans une dll et thème XP [ par rt15 ] Bonjour,Je ne parviens pas à utiliser une fiche dans une dll possédant un GroupBox utilisée dans une appli utilisant le thème XP. (Rien n'est option Envoyer un message d'une dll à un service windows [ par octavianus_1 ] Bonjour à tousJe dois adapter un projet (transformer un application en service, le tout en Delphi7) où une dll transmet un message à destination de l' Port Parallele [ par coquenpate ] J'ai fait pas mal de recherches pour savoir comment lire et écrire sur mon port parallèle LPT1.J'ai trouvé des méthodes pour Windows XP, et notamment Supprimer la DLL Delphi qui tourne [ par EricDD ] Bonjour,Je ne vois pas de question sur ce thème, pourtant cela doit arriver à tout le monde :Quand vous arrivez avec une nouvelle version de votre DLL Décharger une DLL de la mémoire [ par EricDD ] Bonjour,Je travaille avec une appli ecommerce en asp, qui fait appel à une DLL Delphi, enregistrée comme composant COM+  : Je n'ai pas d'exe.Je suis a


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales