Code Source d'un virus en JAVA.... - Programmation
Marsh Posté le 07-03-2002 à 09:05:37
Salut doudou. Ton virus doit nécessairement infecter qqch. As-tu des contraintes, ou es-tu libre de faire ce que tu veux ?
Marsh Posté le 07-03-2002 à 09:48:22
Pour le virus, je sais pas trop (faut voir) mais pour l'antivirus, Il y a simple: tu vires la VM et il ne viendra plus te faire chier .
Non, mais à part ça, c'est pourquoi ?
Tu peux donner plus de détails ?
Marsh Posté le 07-03-2002 à 10:09:51
Deepcore a écrit a écrit : Pour le virus, je sais pas trop (faut voir) mais pour l'antivirus, Il y a simple: tu vires la VM et il ne viendra plus te faire chier . Non, mais à part ça, c'est pourquoi ? Tu peux donner plus de détails ? |
y a pas a dire c securisé java
Marsh Posté le 07-03-2002 à 11:47:14
bah j'ai pas trop de contrainte...le virus peut par exemple modifier le nom d'un fichier sans pour autant devoir l'infecter...
Le but de la manoeuvre est de réaliser celà dans le cadre de mes études...je sais çà peut paraitre bizarre....
Merci Bcq.
Marsh Posté le 07-03-2002 à 11:49:28
Ben je serais toi, la première chose à faire serait de savoir ce que va faire ton virus; parceque là, c'est vague.
Marsh Posté le 07-03-2002 à 11:50:50
Bon, un truc qui pète bien et qu'est pas trop dur à faire en java, c'est d'infecter les *.java du répertoire courant en injectant par exemple une ligne du genre :
Code :
|
Ton code ajoute une instruction d'affichage et le commentaire t'assures de retrouver facilement une ligne infectée avec ton antivirus maison.
Marsh Posté le 07-03-2002 à 12:44:11
ok Cherrytree, çà me parait pas mal comme truc...
mais comment faire ?
:-(
Marsh Posté le 07-03-2002 à 12:47:17
doudou007 a écrit a écrit : ok Cherrytree, çà me parait pas mal comme truc... mais comment faire ? :-( |
y vient de te donner le code !!!
Marsh Posté le 07-03-2002 à 13:16:33
doudou007 a écrit a écrit : ok Cherrytree, çà me parait pas mal comme truc... mais comment faire ? :-( |
En gros tu voudrais que quelqu'un le fasse à ta place, faut pas pousser non plus
Marsh Posté le 07-03-2002 à 14:05:22
Bon, je suis sympa, j'en rajoute une couche. Tu dois dans un premier temps te débrouiller pour récupérer un fichier java. Tu peux les récupérer tous et les stocker dans un Vector si ça te chante.
Ensuite pour chaque fichier que tu as, tu localises la méthode main. C'est facile, car la signature de la méthode est :
Code :
|
Cela dit, j'ai vu des gens écrire :
Code :
|
Bon, pour localiser le main, tu choisis. Tu peux y aller comme un barbare ou finasser un peu. De toutes manières, c'est pas très important.
Ensuite tu insères la ligne infectante. Le mieux étant de copier le fichier ligne à ligne dans un autre fichier, insérer au bon endroit, puis écraser. Voilà.
Pour le code, cherche un peu tout seul.
[jfdsdjhfuetppo]--Message édité par Cherrytree--[/jfdsdjhfuetppo]
Marsh Posté le 07-03-2002 à 14:16:30
Et puis je vois pas trop dans quel cadre d'etude on peux avoir a faire ça
Marsh Posté le 07-03-2002 à 14:27:56
ok cherrytree....
je vais essayer...
pour répondre à la question dans quel cadre d'étude on me demande çà...bah en fait je devais faire un mémoire technique sur les Virus...avec démo d'un virus en java sous linux...
sachant qu'on a eu 3 cours de Java...de quoi écrire un hello.java...
Donc j'estime ne pas avoir vraiment le niveau pour developper un virus et antivirus...
Merci.
Marsh Posté le 07-03-2002 à 14:36:21
Dans ce cas, il va falloir y mettre beaucoup de bonne volonté. C'est un mémoire pour quelle classe/étude/école ?
Pour la lecture des fichiers, cherche dans l'API Java (http://java.sun.com/ ou http://www.google.com/) les classes PrintWriter, BufferedReader, File, StreamTokenizer, pour l'algo proprement dit, tes 3 cours devront suffire.
Marsh Posté le 07-03-2002 à 14:41:17
Cherrytree a écrit a écrit : Bon, un truc qui pète bien et qu'est pas trop dur à faire en java, c'est d'infecter les *.java du répertoire courant en injectant par exemple une ligne du genre :
|
C'est pas "Bâh pourquoi !" qui faut afficher, c'est plutôt "Veuillez recompiler ce source afin d'activer le virus. Merci"
OK, je sors
Marsh Posté le 07-03-2002 à 14:43:54
doudou007 a écrit a écrit : bah j'ai pas trop de contrainte...le virus peut par exemple modifier le nom d'un fichier sans pour autant devoir l'infecter... Le but de la manoeuvre est de réaliser celà dans le cadre de mes études...je sais çà peut paraitre bizarre.... Merci Bcq. |
Tu connais les virus .bat ?
Marsh Posté le 07-03-2002 à 14:43:58
cycojesus a écrit a écrit : C'est pas "Bâh pourquoi !" qui faut afficher, c'est plutôt "Veuillez recompiler ce source afin d'activer le virus. Merci" |
Marsh Posté le 07-03-2002 à 14:48:48
cycojesus a écrit a écrit : C'est pas "Bâh pourquoi !" qui faut afficher, c'est plutôt "Veuillez recompiler ce source afin d'activer le virus. Merci" OK, je sors |
mettez a jour votre classpath et redemarré votre machine
Marsh Posté le 07-03-2002 à 17:46:22
veryfree a écrit a écrit : mettez a jour votre classpath et redemarré votre machine |
Bon, j'ai pas trop le temps, mais il peut aussi directement injecter le bytecode dans le .class
Mais c'est sur que tu fais pas ca avec 3 cours de Java.
Renaud
Marsh Posté le 07-03-2002 à 19:04:54
- Renaud - a écrit a écrit : Bon, j'ai pas trop le temps, mais il peut aussi directement injecter le bytecode dans le .class Mais c'est sur que tu fais pas ca avec 3 cours de Java. Renaud |
a mon avis il suffis de changer ne serait ce qu une lettre ds le byte code pour que le fichier soit inexploitable
Marsh Posté le 07-03-2002 à 19:35:05
Ouais, pourquoi pas. Ça c'est du point de vue altération de données.
Moi je vois aussi un virus comme propagation: infecter du code pour que s'il est lancé que le programme correspondant tente d'en infecter d'autres pour qu'ils fassent de même.
Marsh Posté le 07-03-2002 à 20:25:52
veryfree a écrit a écrit : a mon avis il suffis de changer ne serait ce qu une lettre ds le byte code pour que le fichier soit inexploitable |
Non, tu peux injecter du bytecode qui correspond a System.out.prinln("virus" ); dans le main
Et ca marchera encore.
Marsh Posté le 07-03-2002 à 21:02:56
- Renaud - a écrit a écrit : Non, tu peux injecter du bytecode qui correspond a System.out.prinln("virus" ); dans le main Et ca marchera encore. |
et ca correspond a quoi System.out.prinln("virus" ); en bytecode?
et je doute serieusement que ce soit aussi simple
Marsh Posté le 07-03-2002 à 23:44:14
veryfree a écrit a écrit : et ca correspond a quoi System.out.prinln("virus" ); en bytecode? et je doute serieusement que ce soit aussi simple |
Pour avoir décompilé un .class, je peux t'assurer qu'après compilation, tout est gardé en dur dans le fichier, y compris les noms de variables. En fait le fichier compilé n'est pas (trop) altéré. Mais il est vrai que je ne suis pas rentré dans les détails. Je dis juste qu'en décompilant on retrouve le source intact !
Marsh Posté le 08-03-2002 à 00:49:28
Cherrytree a écrit a écrit : Pour avoir décompilé un .class, je peux t'assurer qu'après compilation, tout est gardé en dur dans le fichier, y compris les noms de variables. En fait le fichier compilé n'est pas (trop) altéré. Mais il est vrai que je ne suis pas rentré dans les détails. Je dis juste qu'en décompilant on retrouve le source intact ! |
oui ca je le sait deja puisque j ai un decompilateur ce que je voulait dire c est qu ecrire dans un fichier .class( sans le deocmpilé donc) ne peu qu alteré celui ci et le rendre inutilisable...
Marsh Posté le 08-03-2002 à 09:16:40
Heu mais le bytecode c'est pas comme un sorte d'assembleur pour la JVM? Il suffirait donc d'ajouter les bonnes instructions au bon endroit, non?
Marsh Posté le 08-03-2002 à 09:24:18
bin le but est de le rendre inutilisable. Donc tant mieux si il se crashe entièrement. Mais bon pour l'antivuirus après
Marsh Posté le 08-03-2002 à 11:30:40
Krueger a écrit a écrit : Heu mais le bytecode c'est pas comme un sorte d'assembleur pour la JVM? Il suffirait donc d'ajouter les bonnes instructions au bon endroit, non? |
fait un test tu vera que j'ai raison
Marsh Posté le 08-03-2002 à 20:40:01
veryfree a écrit a écrit : fait un test tu vera que j'ai raison |
Euh j'avais pas lance ca en l'air.
J'ai travaille' sur un patcheur de bytecode.
J'injectais du code en debut et fin de methode. et rajouter un System.out.println, c'est vraiment plus simple que ce que je faisais (marquage des attributs prives modifies pour une persistence par attachement transparente dans une base de donnees)
Renaud
Marsh Posté le 08-03-2002 à 21:39:19
ReplyMarsh Posté le 08-03-2002 à 22:52:33
- Renaud - a écrit a écrit : Euh j'avais pas lance ca en l'air. J'ai travaille' sur un patcheur de bytecode. J'injectais du code en debut et fin de methode. et rajouter un System.out.println, c'est vraiment plus simple que ce que je faisais (marquage des attributs prives modifies pour une persistence par attachement transparente dans une base de donnees) Renaud |
Mais si je t ecoute tu peux permettre a une applet de lire sur le fichier d un client vu que si j ai bien compris en java c'est a la compilation que la securité des applet est géré
jme trompe?
Marsh Posté le 08-03-2002 à 23:15:12
veryfree a écrit a écrit : Mais si je t ecoute tu peux permettre a une applet de lire sur le fichier d un client vu que si j ai bien compris en java c'est a la compilation que la securité des applet est géré jme trompe? |
La je suis septique...
Je n'ai jamais etudie' le probleme, mais si la secu des applet est gere'e a la compil, il suffit de faire de la reflexion pour passer outre ce qui me parait un peu simple..., pas besoin de patcher le bytecode.
Marsh Posté le 08-03-2002 à 23:34:06
- Renaud - a écrit a écrit : La je suis septique... Je n'ai jamais etudie' le probleme, mais si la secu des applet est gere'e a la compil, il suffit de faire de la reflexion pour passer outre ce qui me parait un peu simple..., pas besoin de patcher le bytecode. |
faut que tu en dise plus parce que la t en a pas assez dit
Marsh Posté le 09-03-2002 à 19:06:58
J'suis mal là....
malgrès mes recherches et mes lectures, je n'arrive à rien...
Genial j'arrive à copier un fichier, à dire hello, et c'est à peu près tout...
On me parle de flux d'entré / sortie, de inputstream, de filereader,....de tableaux de byte...mais j'arrive pas à mettre en pratique...
On devient pas developpeur comme çà...
Personnes n'aurait le code source pour écrire dans un fichier ?
Merci de votre aide.
Doudou.
Marsh Posté le 09-03-2002 à 19:11:13
veryfree a écrit a écrit : faut que tu en dise plus parce que la t en a pas assez dit |
Ce que je veux dire, c'est que je ne pense pas que la securite' des applets soit geree a la compilation. En effet il serait trop facile d'utiliser la reflexion pour executer du code qui n'aura pas ete "directement" compile' mais execute' a la volee.
Et si tu peux passer outre la secu via la reflexion alors tu peux aussi le faire avec injection de bytecode.
A mon avis la verification est double:
- la passe compil permet de verifier que l'utilisateur ne fait pas d'acces disque.
- a l'execution, la JVM interdit les acces disque pour les applets.
en tout cas ca se passe comme ca pour les attributs prives:
- a la compil une autre classe ne peut y acceder, donc tu ne peut pas compiler
- a l'execution, si tu as reussi a passer outre la phase de compil (reflexion / ancienne classe pour laquelle l'attibut n'etait pas alors prive), la JVM te jette quand meme.
Ai je ete assez clair?
Renaud
Marsh Posté le 10-03-2002 à 01:14:16
- Renaud - a écrit a écrit : Ce que je veux dire, c'est que je ne pense pas que la securite' des applets soit geree a la compilation. En effet il serait trop facile d'utiliser la reflexion pour executer du code qui n'aura pas ete "directement" compile' mais execute' a la volee. Et si tu peux passer outre la secu via la reflexion alors tu peux aussi le faire avec injection de bytecode. A mon avis la verification est double: - la passe compil permet de verifier que l'utilisateur ne fait pas d'acces disque. - a l'execution, la JVM interdit les acces disque pour les applets. en tout cas ca se passe comme ca pour les attributs prives: - a la compil une autre classe ne peut y acceder, donc tu ne peut pas compiler - a l'execution, si tu as reussi a passer outre la phase de compil (reflexion / ancienne classe pour laquelle l'attibut n'etait pas alors prive), la JVM te jette quand meme. Ai je ete assez clair? Renaud |
yes thanx
[jfdsdjhfuetppo]--Message édité par veryfree--[/jfdsdjhfuetppo]
Marsh Posté le 06-03-2002 à 22:40:48
Salut tt le monde !
je suis en panique !
je dois développer un virus et un anti-virus en JAVA sous Linux pour une démo...
Biensûr je suis une guiche en dev...
Est-ce que quelqu'un pourrait m'aider s'il vous plait...c'est assez urgent en plus...
Merci bcq.
Doudou.