Rendre un Virus indétectable Chez les editeurs d'anti virus, il existe des bata
Rendre un Virus indétectable Chez les editeurs d'anti virus, il existe des bataillons d'ingenieurs commandos surentrainés qui sont payés des fortunes pour surveiller l'appariton de nouveaux troyens, et en extraire une signature puis la mettre en update chez l'utilisateur. Sans compter avec les sites bénévoles mais quasi-professionnels de sécurité informatique, bref tout ceci fait qu'il existe une veille telle qu'a partir du release d'un nouveau serveur, au bout d'une semaine environ toutes machine connectée digne de ce nom pourra le détecter. Alors, quelles solutions s'offrent a nous ? premierement, beaucoup répondent qu'il suffit de programmer son propre troyen. C'est vrai, encore faut il savoir sous quelle forme ceci est fait, et quelle est la véritable fonctionnalité du produit en question. Or on voit rarement ces memes personnes publier leur sources, ce qui permet difficilement de se faire une opinion. Deuxièmement, et c'est ce a quoi nous nous attacherons ici, on fera confiance au programmeur d'un server reconnu et éprouvé par tous, et nous allons nous permettre de le modifier afin de changer sa signature. En effet, c'est grace a cette empreinte que les antivirus comparent avec leur base de donnée que la detection se fait. Description d'une attaque par troyen Ce qui sera expliqué ici est un ensemble de techniques. Dans certains cas, l'application d'une d'entre elle seulement suffira, dans les autres il faudra toutes les appliquer, parfois plusieurs fois. Tous les servers sont différents, il vous faudra donc vous adapter a ce sur quoi vous travaillez. Comme dans la nature, ceux qui ne s'adapterons pas...mourrons. voici les outils qu'il va falloir se procurer : ScoolBus Hex workshop éditeur hexadécimal Windasm32 desassembleur win32dsm900 UPXshell compresseur/décompresseur Préparation : Comme on veut manipuler des fichiers contenant un code hostile, il va falloir dire a son chien de garde de se tenir tranquille. Préparons donc notre environnement de travail : avant le travail 1* désactivez l'autoprotect de votre antivirus 2* créez un dossier dans lequel on fera ces manipulations, disons ...\tests 3* dans votre antivirus, excluez ce dossier des scans. Ainsi vous pouvez laisser votre travail tranquillement pour y revenir par la suite. pendant le travail 1* laisser l'autoprotect enlevé. Les tests successifs se feront a la main, en demandant un scan de fichier a l'antivirus. 2* préparez dans le dossier \tests une copie du serveur (on ne la modifiera pas, elle sert de témoins), puis une deuxième (celle ci servira a chaque étape, et sera testée) 3* si plusieurs manipulations sont necessaires, n'hesitez pas a renommer le serveur de test de facon claire, afin de pouvoir s'y retrouver dans les différentes étapes. Par exmple, dans le repertoire test on pourra trouver : copie du server server 1000 bytes 00 server 1000 bytes 00 decompression 1 server 1000 bytes 00 decompression 1 compression 1 server 1000 bytes 00 decompression 1 compression 1 decompression 2 c'est un exemple. Il va falloir avoir une certaine organisation pour ce travail, sinon on s'y perd. Ajout de bytes blancs : le fait d'ajouter un certain nombre de 00 en fin de fichier augmente la taille du serveur, mais a la compression celle ci diminue énormement, sans pour autant modifier le comportement du programme en lui même. De plus, ceci modifie les checksums CRC et MD5, qui sont utilisés par de nombreux serveurs de mails afin de détecter les menaces. Il ne s'agit pas de rajouter le plus grand nombre possible de bytes, cela n'a aucun interet, mais de trouver quel nombre est suffisant pour faire cette modification. Ne rajoutez donc pas 30Mo là ou 30 bytes suffisaient ! Pratique : Dans l'éditeur hexadécimal, ouvrez la copie de travail : voici une vue de la fin du fichier serveur de schoolbus. A ce stade, on peut rajouter les bytes blancs par ::edit::_____::insert:: Sauvegarder, et tester par un scan de votre antivirus préferé. Dans le cas qui nous interresse, vous verrez que cela ne suffit pas a rendre schoolbus indetectable. Cependant ceci marche avec de nombreux serveurs, virii etc... Ce qui m'amène a ma transition vers une autre méthode : la compression... Compression UPX : Si vous avez l'habitude de manipuler des serveurs, vous remarquerez qu'avec des fonctions équivalentes, certains pèsent entre une vingtaine et une cinquantaine de Ko, tandis que d'autres en font quelques centaines. Certains concepteurs de troyens vantent la petite taille de leur serveur, ce qui permet de passer inapercu dans le cas d'un bind avec un autre fichier etc... Ceci est vrai, cependant une autre raison de cette petite taille se trouve rarement expliquée : Il est possible d'appliquer un type de compression de puissances différentes a un executable, et de le rétrécir considérablement tout en ayant comme résultat un nouvel executable, tout aussi fonctionnel (contrairement au cas des archives Zip, Rar, etc qui ne sont pas executables directement, et perdent donc leur interet dans notre cas). Ce type de compression, la compression UPX est une puissante alternative pour leurer les antivirus. Malheureusement, les concepteurs qui fournissent ces servers de quelques dizaines de Ko les ont donc déja compressés car il connaissent cette technique. Résultat : les éditeurs d'antivirus ont relevé la signature du serveur compressé, et comme ils ne sont pas idiots, celle du serveur décompressé. On est mal ? Pas du tout ! en effet, a la compression l'utilisateur choisit la force avec laquelle le fichier sera compressé. En général, la plus élevée (niveau 9, avec compression maxi). En revanche, lorsqu'on a un fichier compressé, il est impossible de savoir avec quel niveau il a été compressé en premier. Conclusion : les antivirus connaissent la signature d'un fichier compressé a une certaine taille, mais pas aux autres niveaux disponibles. Je résume, deux solutions : 1* fichier non compressé : compresser a differents niveaux, en commancant du plus élevé, et essayer jusqu'a trouver le bon. 2* fichier compressé : décompresser avec UPX, puis recompresser a différents niveaux. Au passage, envoyez quelques bytes blancs, ce ne peut pas faire de mal... Comme on a fait pas mal de manipulations jusqu'ici, je vous rappelle de bien nommer intelligament vos fichiers d'essai sinon vous allez etre perdu, appliquer des modifications a un fichier déja modifier, voir annuler les modifications effectuées... Ne venez pas pleurer apres car ce ne marche pas ! Bref, on fait tout ceci. Dans notre cas, le serveur de schoolbus fait 320 Ko, ce qui signifie qu'il n'est pas compressé. On lui applique donc une compression de niveau 9, et on obtient un fichier de 18Ko. Testez-le avec cette méthode...!!! SuRpRiSe !!! Modification assembleur de la signature : Foolfox ayant posté une explication claire a ce sujet, je la livre ici telle quelle : 1.rechercher la signature correspondante a l'AV (je vous rappelle que toutes ces definitions sont sur votre HD) 2.localiser la sequence trouvee dans le soft. 3.modifier le programme au niveau asm pour modifier la signature. Pas besoin d'etre une bete, il suffit de modifier la sequence d'opcodes pour que l'AV ne retrouve pas exactement la sequence qu'il cherche. Il faut toutefois preserver la fonctionnalite. exemple: code original: Code: MOV EAX,0 nouveau code: Code: XOR EAX,EAX Conclusion : L'ensemble de ces approches sera a adapter, tester, utilisées seules ou entre elles selon le serveur sur lequel vous travaillez. Comme d'habitude, si vous avez d'autres idées, des remarques, postez les a la suite de ce tuto. Si vous avez des questions, merci de les poser dans la partie Hacking. Enfin, sauf cas exceptionnel, inutile de me demander en mp un travail particulier, demandez le plutot en publique. Ici on travaille pour tous et non pour un. Bon courage ! By 4n9e Compléments : Au vu des réactions suite à l’explication des méthodes qui permettent de rendre un code hostile indetectable aux antivirus, je me rend compte qu’on est allés un peu vite, en passant directement aux applications pratiques, sans passer par une phase d’explication des mécanismes qui régissent les principes de détection. Je vais donc essayer aujourd’hui de combler ce manque, en esperant être aussi complet que possible. Pour être clair, j’appellerais ici les anti virus AV, et les troyens, virii, etc…, Hostile. Que les puristes ne m’en veuillent pas si j’utilise un vocabulaire parfois tres généraliste dans ce qui va suivre. En effet, je vais essayer de rendre la compréhension de tout ceci accessible au plus grand nombre. Au menu : Méthode de detection de l’anti virus (AV) Le principe de la modification détermination des signatures utilisées par l’AV détermination et localisation au sein de l’hostile Modifier la signature de l’hostile Conclusion Méthode de detection de l’anti virus (AV) Comme pré-requis, vous devez savoir que les Av reconnaissent un élément hostile (un troyen par exemple) par analyse d’un ou plusieurs morceaux de code binaires, qu’on appelle signature. Celle-ci devra être bien sûr caractéristique de l’hostile. On appellera Offset de signature le lieu où est placé ce code dans le programme. Or, le premier problème dans notre démarche future est que chaque AV va utiliser sa propre méthode pour reconnaître l’hostile. Comprennez que tout AV considérera une signature différente. Les opérations qui seront uploads/S4/ rendre-un-virus-indetectable 1 .pdf
Documents similaires
-
14
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 12, 2022
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.2206MB