Petit probleme antivirus avec prog C

Moderator: Mod

Petit probleme antivirus avec prog C

Postby ISARU » Wed Sep 15, 2010 11:07 pm

Bonsoir,
Je suis actuellement sur le développement d un petit trojan en C,non pas pour pirater tous le net mais plus pour m exercer et m améliorer dans le maniement de ce merveilleux languâge.
Mais à peine ai je reussi a coder quelques fonctions (exploration hdd,enregistrement dans la base de registre) que mon antivirus le détecte comme un trojan :evil:
Je souhaiterais savoir comment empecher que mon programme ne soit détecter?
Je précise que j utilise les socket en mode STREAM pour les connexion et que j utilise dirent.h pour l exploration hdd.
Merci d'avance!!
:)
ISARU
Projets
 
Posts: 4
Joined: Thu Sep 09, 2010 10:48 pm

Postby Manu404 » Thu Sep 16, 2010 7:09 am

Un petit recap vite fait :
[quote:7fc50ac3fa] * Les principaux antivirus du marché se concentrent sur des fichiers de signatures et comparent alors la signature virale du virus aux codes à vérifier.
* La méthode heuristique est la méthode la plus puissante, tendant à découvrir un code malveillant par son comportement. Elle essaie de le détecter en analysant le code d'un programme inconnu. Parfois de fausses alertes peuvent être provoquées.
* L’analyse de forme repose sur du filtrage basé entre des règles regexp ou autres, mises dans un fichier junk. Cette dernière méthode peut être très efficace pour les serveurs de courriels supportant les regexp type postfix puisqu'elle ne repose pas sur un fichier de signatures.
[/quote:7fc50ac3fa]
A partir de la renseigne toi sur ces trois méthodes et de la tu trouvera +/- facillement un moyen de contourner le système. Par exemple sous windows le mieux comme architecture c'est :
Un premier processus qui est infecté par ton virus dans lequel tu injecte une dll qui contient un ensemble de fonction permettant de controller d'autres services. Par exemple sur le retour de la fonction open de explorer.exe
De la il vas infecter deux processus avec le virus même et les controller en permanence. Dans le cas ou la DLL est déchargé ou le process killé il le ré-injecte dans un autre.
Les deux autres services, eux, se vérifie l'un l'autre sans se soucier du controller et se répliquent si besoin.
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby ISARU » Thu Sep 16, 2010 11:44 am

Bon ça se complique!!Cool!!
J envisageais pas d insérer mon code dans un processus mais pourquoi pas!
Deux dèrniere question:
Pour insérer un programme dans un autre ,puis je utiliser la méthode des blinder de fichier???
(ca serait bien y a plein de source ou l on peut s inspirer sur le net )
J ai pas bien compris pour la dll.Je dois mettre mon prog dans une dll puis injecter cette dll dans un processus avec un bout de code qui apelle mon programme ????
Merci d avance :D
ISARU
Projets
 
Posts: 4
Joined: Thu Sep 09, 2010 10:48 pm

Postby Manu404 » Thu Sep 16, 2010 2:19 pm

Sous windows oui. Un DLL c'est quoi ? C'est une librairie de fonction compilé ou qui sera compilé JIT (pour le dotnet par exemple). Si tu fait pointé le call de fin de fonction d'un programme vers le point d'entré d'une fonction dans ta DLL, le code de ta DLL sera exécute, tu rend ensuite la main en pointant vers le vrai offset histoire de pas planter le processus. Pourquoi injecter la DLL et pas juste modifier le call ? Parce que sinon, ton programme refuser tout simplement d'aller pointer vers un endroit de la mémoire qui ne lui est pas dédié alors que si tu injecte ta DLL, elle sera dans le même espace mémoire et tu pourras donc y faire appel sans soucis. Et enfin, pourquoi une DLL et pas un "programme", simplement parce que injecter un programme est plus complexe au niveau de la gestion de la mémoire que une DLL. D'un point de vue purement technique, le principe est le même, mais, sans rentrer dans des détails arides que tu trouvera si le coeur t'en dit avec google très facilement, injecter un exe dans un autre processus pause des problème du fait que cette exe est fait pour être exécute depuis son entrypoint et non pour exécuter des fonctions internes de manière sélective depuis "l'extérieur". J'en vois deja lever les yeux et me menacer de mort, vous avez raison et vos menaces sont légitimes, mais je tente de faire simple la ou c'est très compliqué a résumé car beaucoup de paramètres sont a prendre en compte.
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby ISARU » Thu Sep 16, 2010 5:21 pm

Ouah!!
Je pensais pas que ça allait me mener si loin!!!
Mais bon, vu que je fais ça pour apprendre ça tombe bien! lol
Je cherche pas la facilite.
Je vais me documenter sur le fonctionnement des dll.
Je te remercie de m avoir accorder un peu de ton temps et de ton savoir !!!
Merci encore! :)
EDIT:
Desoler mais j ai encore une question,
Je viens de me documenter sur l injection de dll (ca na pas l air trop complique)
Mais le truc que je voudrait savoir, ma dll va contenir mon trojan donc ma boucle d attente de connexion,donc si je l injecte dans un processus ,ce processus va rester bloque sur ma boucle et donc plus fonctionner????
ISARU
Projets
 
Posts: 4
Joined: Thu Sep 09, 2010 10:48 pm

Postby Manu404 » Thu Sep 16, 2010 6:49 pm

Et dieu inventa les thread ! :wink:
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby ISARU » Thu Sep 16, 2010 7:00 pm

OK
Je pense avoir bien compris le principe.
je vais passer a la pratique!!
Merci encore! :D

Edit:(decidement )
Je repost pour exposer mon nouveau probleme(qui est finalemnt le meme que l ancien).
J ai donc mis mon serveur dans une dll et j ai coder un petit injecteur.
Ensuite j ai injecte ma dll dans un processus bidon(un simple prog qui attend Sleep() ).
Tous c est bien passer et mon injection a reussi! cool!
Mais le probleme c est que mon antivirus detect l injecteur comme un trojan :evil:
J en reviens donc a mon premier problème
Merci d avance!
Edit: Pour info, il semblerait qu en noyant mon code dans un autre (plus consequent)mais ne servant pas a grand chose pour mon projet, l antivirus ne le detect plus comme un virus!! Aparamant les antivirus se refereraient au comportement global du prog et non sur quelque fonction qui leur aparaiteraient comme des options
Merci !!!
ISARU
Projets
 
Posts: 4
Joined: Thu Sep 09, 2010 10:48 pm


Return to C/C++

Who is online

Users browsing this forum: No registered users and 2 guests

cron