Comment nous avons perdu 230 euros chez CJ Affiliate (Conversant)

vers Virus Info


[accueil]  [menu]  [suivez-nous !]  [chercher]


Paru dans Pirates Magazine n°12
2002-08-02 00:00

Les secrets de Viguard


Après notre premier article (lire Pirates Mag' 9), la polémique sur le "firewall antiviral" Viguard ne s'est pas totalement calmée. L'éditeur Tegam avait notamment mis en doute les propos de Guillermito qui prétendait avoir compris le fonctionnement et les limitations du logiciel. Blessé, celui-ci a entrepris de démontrer ses affirmations sur son site Internet. En voici les détails.
Alain Godet, Saint-Emilion, Marc Rees et Olivier Aichelbaum

Si l'on en croit ses publicités, Viguard, de l'éditeur français Tegam, est un logiciel capable d'arrêter toutes les menaces virales auxquelles peuvent faire face les ordinateurs actuels (virus Boot, EXE, macros, vers et trojans). Pour parvenir à cette prouesse, l'éditeur se fait le chantre du principe de la white list : tout ce qui n'est pas explicitement bon pour l'ordinateur (déclaré comme tel par l'utilisateur ou déterminé automatiquement par le programme) est mauvais. Sa démarche est originale dans le sens où elle va à l'encontre de celle utilisée par les éditeurs d'antivirus traditionnels, pour lesquels tout ce qui n'est pas explicitement mauvais (répertorié comme une menace par le programme) est bon. Cependant, comme nous l'avions vu dans Pirates Mag' 9, Viguard ne détecte pas tous les virus : nous avions trouvé lors de nos tests d'anciens codes malfaisants sous Dos ou de plus récents sous Windows qui passaient au travers. À quoi l'éditeur avait répondu que ces souches étaient anciennes, issues de laboratoire et inconnues dans la nature : elles ne représentent selon lui aucun danger.
Ne partageant pas cet avis, Guillermito, un des détracteurs de l'éditeur français, a mis à profit ses connaissances du fonctionnement des virus informatiques pour décortiquer Viguard (édition monoposte) et nous en dit un peu plus sur son site web (www.pipo.com/guillermito/viguard/index.html). A-t-il ou non averti l'éditeur avant de propager ses découvertes, comme il est d'usage ? Selon l'éditeur, non. Selon Guillermito, oui, mais pas systématiquement.

Des fichiers sensibles insuffisamment protégés

Premier constat, et le plus important : nombre de fichiers sensibles de Viguard sont peu ou pas protégés. Ce qui faciliterait grandement le travail d'un développeur de code malicieux qui souhaiterait s'attaquer aux PC protégés avec ce produit. Cependant, l'absence de protection est, en partie, due aux lacunes de Windows 9x/Me en matière de gestion de droits sur les fichiers : les démonstrations de Guillermito pourraient être moins réussies sur un système d'exploitation plus sécurisé, comme Windows NT et ses descendants (2000 et XP). Selon lui, l'absence de protection est particulièrement gênante sur les fichiers certify.bvd, dans lesquels Viguard stocke les données de vérification d'intégrité et de reconstruction des fichiers surveillés : laissé dans sa configuration par défaut, Viguard n'empêche théoriquement pas leur effacement ou leur modification et, au besoin, les régénère automatiquement ! Idem pour les fichiers vistart.ini, viundo.ini et pcpass.def, tous trois très importants pour la surveillance du système : ils ne semblent protégés par aucun moyen ! En particulier, pcpass.def contient les hashes cryptographiques MD5 des fichiers réputés inoffensifs pour le système. Il suffit à un programme d'ajouter le hash de son choix dans ce fichier pour que l'application correspondante soit considérée comme inoffensive par Viguard, qui la laissera tourner (voir plus loin). À ces remarques, Tegam signale simplement qu'en environnement multiposte, les fichiers originaux sont conservés au niveau du serveur central et régénérés sur chaque poste s'ils sont modifiés en local. Mais ne semble pas contredire les découvertes de Guillermito sur la version monoposte, commercialisée auprès du grand public.

Des traces de signatures
 
Plus drôle : Guillermito a procédé à un dump mémoire des fichiers sdmain32.exe et sdload32.exe. Il y a trouvé des chaînes de caractères correspondant à des textes que l'on trouve dans certains virus. Cela pourrait s'apparenter à des signatures (primitives, il est vrai) ! Un comble quand on sait que Tegam se bat depuis des années contre le système des signatures, qu'il juge insuffisant…
Enfin, le bidouilleur a analysé la recherche de fichiers exécutables considérés comme vérolés par Viguard. Sa conclusion : ce dernier se contente simplement de vérifier la structure du programme. Si celle-ci correspond à un critère précis (point d'entrée supérieur ou égal à l'offset de la dernière section), il estime le programme potentiellement dangereux. D'où de fausses alertes, comme sur les applications Kazaa et Morpheus ou encore le programme d'installation de certains jeux d'Ubi Soft. Tegam indique que, sur demande de ses utilisateurs, il ajoute les programmes incriminés dans les listes d'exception des nouvelles versions de son programme. On pourrait se demander si un virus se faisant passer pour une des applications contenues dans cette liste d'exception pourrait passer les protections de Viguard… Difficile à dire, l'éditeur n'ayant pas répondu à cette question. Mais, plus grave : les virus non construits selon cette structure passent inaperçus aux yeux de Viguard !

Des protections trop perméables

Fort de ces observations, Guillermito a entrepris de tenter de désactiver Viguard, comme pourrait le faire un virus. Il propose deux méthodes, douce et forte. La première est un simple programme simulant l'appui sur les boutons adéquats, afin de fermer naturellement Viguard. La seconde est plus brutale puisqu'elle consiste en une fermeture sauvage des processus de l'application. Cependant, la méthode douce ne fonctionnera pas sur un poste où le programme est protégé par un mot de passe administrateur, sauf à retrouver le moyen de désactiver ce fameux mot de passe (moyen trouvé par le hacker, mais non publié pour des raisons légales). Quant à la méthode dure, outre d'éventuels problèmes de droits utilisateurs sous Windows NT, elle implique un reboot automatique du PC, qui ne manquerait pas d'être remarqué par l'utilisateur. Cependant, étant donnée l'instabilité de Windows, un tel phénomène pourrait passer pour « normal » à des yeux non avertis !
Évidemment, si le logiciel est paramétré en mode blocage, un exécutable qui tenterait d'effectuer n'importe laquelle de ces manipulations serait théoriquement bloqué. Théoriquement. Car Guillermito est parvenu à exécuter n'importe quel fichier dans le mode de protection maximale, à cause de l'absence de protection des fichiers clés cités au début ! En particulier, les fichiers batch n'étant pas interdits d'exécution par défaut par le logiciel, il a ­trouvé là un moyen simple de tromper sa vigilance : le fichier batch génère l'exécutable contenant la charge « destructrice » et le fichier de certification de Viguard correspondant. L'exécutable dangereux est ainsi automatiquement considéré comme sain par le logiciel de Tegam qui n'y voit que du feu (voir encadré) !

Si l'utilisateur, prévoyant, ajoute les fichiers BAT à la liste des extensions à bloquer, il ne sera pas pour autant protégé. En effet, cela ne fonctionne pas ! Un bogue involontaire ou une erreur de conception plus profonde ? Tegam écrit qu'un « un virus dont l'infection repose sur la modification d'autres fichiers BAT, par exemple, n'a aucune chance de survivre ». Mais ici, on pourrait avoir un virus BAT qui génère un EXE prétendu sain, qui génère un BAT, et le logiciel n'y verrait rien !

Des virus qui passent trop inaperçus

Après toutes ces analyses théoriques, Guillermito a confronté plusieurs versions de Viguard à un panel de véritables virus. Première alerte : le logiciel ­semble ne pas réagir aux virus compagnons. Pourquoi ? La réponse est simple : selon Tegam, un virus exécutable ne modifie pas l'intégralité d'un fichier, mais seulement une partie. Dans l'autre cas, il s'agit selon les concepteurs, par exemple, de mises à jour, théoriquement saines. Dans les faits, plutôt que d'alerter l'utilisateur, Viguard se contente simplement de recertifier silencieusement le fichier modifié. Guillermito a ainsi réussi à infecter un PC protégé avec les virus Win32.Pilsen, Win32.Parrot, Win32.Companion.HLLC.4096, Win32.Eclipse.8192, Win32.Emotion.4608 et Win32.StupRed.HLLC.321536 (autant de virus que Tegam qualifie soit de virus de laboratoire, soit de faibles menaces pour l'utilisateur). En testant d'autres virus, Guillermito a mis en avant d'autres failles de Viguard : avec le virus stealth et résident Win95.Craddle_Of_Filth, l'application laisse infecter le disque dur et ne signale les problèmes qu'au redémarrage. On aurait préféré qu'il bloque l'infection ! Ensuite, un nettoyage avec la disquette créée à l'installation montre que le programme oublie de nettoyer les drivers audio, les codecs et d'autres fichiers PE aux extensions non répertoriées. L'utilisateur pourra corriger cet oubli en ajoutant, dans le menu Options/Exécutables, les extensions adéquates (.AX, .ACM et .WPC au minimum).

Une nouvelle version mise au point

N'oubliez pas qu'en cas d'infection non bloquée sur un disque dur NTFS, les disquettes Dos ne permettent pas, par défaut, d'accéder aux partitions de ce type (ce problème est lié à la plupart des programmes qui créent des disquettes de démarrage) ! Il faudra donc veiller à acquérir un utilitaire adéquat, comme l'outil libre de notre collègue Christophe Grenier (www.cgsecurity.org).
Quant au virus Win95.Zerg (qui, selon Tegam, ne fonctionne correctement que sur Windows 95, ce qui limiterait sa propagation), il ne déclenche aucune alerte. Le nettoyage avec la disquette Viguard, permet de réparer presque tous les dégâts. Presque, puisqu'une vingtaine de fichiers résistent au nettoyeur. Le PC n'est pas désinfecté ! Avec Win98.Dammit, l'infection du fichier notepad.exe est signalée, mais non stoppée. La désinfection par la disquette de Viguard n'est pas autorisée, puis le fichier n'est plus signalé comme vérolé ! L'infection peut donc continuer. Enfin, le logiciel ne surveille pas les fichiers HLP successibles de contenir une charge malicieuse, ainsi que le montre le test avec HLP.Puma.
Bref, beaucoup de failles pour un produit censé être une panacée universelle ! C'est d'autant plus dommage qu'il y a dans Viguard plusieurs bonnes idées (voir encadré), notamment la white list. Affiner leur implémentation et mieux les protéger pourrait en faire un bien meilleur produit (Guillermito va même jusqu'à faire des suggestions). L'éditeur a mis au point un correctif. Reste à savoir s'il est suffisamment complet et s'il a été distribué à tous les clients.


Les bonnes idées de Viguard

Bien qu'il se soit employé à montrer les déficiences de Viguard, Guillermito a trouvé dans ce programme quelques bonnes idées. Ainsi, il estime que le système de surveillance du boot est une idée intelligente, même si elle est insuffisamment protégée et donc trop facilement contournable par un programme dédié. Rappelons que ce système permet d'avertir l'utilisateur lorsqu'une application (commerciale ou code malfaisant) décide de se charger automatiquement au démarrage, par quelque biais que ce soit.
Guillermito apprécie également le système d'extraction de macros, qui permet de les analyser sans les exécuter. Il souligne toutefois l'insuffisance de cette technologie face aux virus qui ne font pas appel aux macros auto-exécutables, voire ceux non basés sur les macros (voir Pirates Mag' 9). Viguard se montre malgré tout assez performant au niveau de la prévention des virus macros auto-exécutables classiques, même si on pourra objecter la présence de « fausses alertes » (à nos yeux rares en utilisation courante, ces macros étant rarement employées, surtout chez les particuliers) !
Enfin, dans une certaine mesure, nous apprécions le système d'analyse des scripts. Viguard se base sur une analyse statistique de la présence de certains mots-clés : qu'un fichier rentre dans les critères de cette analyse et il sera déclaré comme dangereux. Après, libre à l'utilisateur de certifier les scripts qu'il souhaite. Une méthode somme toute plus fine que de tout bloquer au niveau du serveur ou du client mail. Bien sûr, là encore le concept pourrait être amélioré notamment pour limiter les fausses alertes.

VGTotalBaise, ou comment faire du neuf avec du vieux

Pour parfaire sa démonstration des failles de Viguard, Guillermito a développé un programme sur mesure. Ce programme est en apparence un simple fichier batch, VGTOTALBAISE.BAT (finesse, quand tu nous tiens !). Ce programme de quelques Ko génère un fichier binaire (le fichier de certification de Viguard) et un fichier exécutable (le programme avec l'éventuelle charge destructrice.
Les techniques utilisées par ce fichier .BAT sont très simples. Tout d'abord, la commande « echo » permet d'afficher du texte. Si vous tapez « echo Bonjour » à la ligne de commande du Dos, le mot « Bonjour » apparaîtra sur la ligne suivante. Par défaut le texte est envoyé à l'écran, mais vous pouvez l'écrire dans un fichier, sur l'imprimante, etc. Pour le cas qui nous intéresse (l'écriture dans un fichier), il suffit d'ajouter à la suite de la commande echo le signe « > », suivi du nom du fichier. Ainsi, « echo Bonjour >toto.txt » créera un fichier « toto.txt » contenant le mot « Bonjour ». Attention, si un fichier « toto.txt » était déjà présent dans le répertoire courant, il sera écrasé sans pitié ! Si on remplace le « > » par un « >> », on pourra ajouter du texte à la fin de notre fichier. Si on tape « echo Salut >>toto.txt », le fichier « toto.txt » contiendra deux lignes : Le « Bonjour » de tout à l'heure, plus « Salut ». À noter, la redirection « > nul » permet d'empêcher tout affichage de texte. Par exemple, « dir >nul » n'affiche pas le contenu du répertoire courant à l'écran, bien que la commande ait été exécutée correctement.
Un autre type de redirection nous servira également : « < » sert à simuler une saisie de texte au clavier depuis un fichier (dans notre cas). En utilisant toutes ces redirections, VGTOTALBAISE.BAT génère un fichier automatisé contenant l'ensemble des commandes à taper dans l'utilitaire Debug. C'est ce dernier qui va générer à son tour les deux fichiers souhaités. Enfin, l'exécutable est lancé, sans intervention de Viguard qui a été trompé par la présence du fichier certify.bvd parfaitement valide ! Il est clair qu'un tel système tombe à l'eau si l'utilisateur supprime le fichier debug.exe de son disque dur. Mais on pourrait alors utiliser la méthode vue dans Pirates Mag' 9, en générant les fichiers depuis un tableau XLS ou depuis un fichier HLP, par exemple.


Extrait du trojan BAT

Echo E 01B0 FA CD BF 53 25 14 67 86 C1 92 74 FC 59 60 56 3B>>scr2bin
Echo E 01C0 CA 9C 32 3E 5D AC D0 CF 9B CE F8 14 CD F1 A6 82>>scr2bin
Echo E 01D0 03 50 A4 92 F2 BF 4C 25 3E 67 86>>scr2bin

Echo RCX>>scr2bin
Echo 1db>>scr2bin
Echo W 0>>scr2bin
Echo Q>>scr2bin
debug < scr2bin > nul
del scr2bin

Les commandes de Debug

N <nom> permet de donner le nom du fichier qu'on veut créer.
E <adresse> <octets en hexadécimal séparés par un espace> placera les 16 valeurs en mémoire à l'adresse définie. Par exemple « e 0000 01 CD 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 » mettra l'octet 0 à la valeur 01, l'octet 1 à CD, etc.
RCX suivi d'un chiffre permet d'indiquer le nombre d'octets que contient le fichier qu'on veut sauvegarder.
W <adresse> permet d'enregistrer le fichier qu'on vient de générer via nos lignes de datas.
Q quitte Debug

Une démonstration universelle

Sur bien des points, la démonstration de Guillermito pourrait s'appliquer à n'importe quel antivirus. Elle pourrait simplement être rendue plus difficile en fonction du niveau de protection des fichiers de données des autres éditeurs (cryptage efficace ou surveillance par l'antivirus). On notera que le virus Klez parvient à décharger de la mémoire les principaux antivirus du marché, d'AVP à Norton Antivirus, par une instruction TerminateProcess similaire à celle utilisée par Guillermito pour sa démonstration. De même, on se souviendra du logiciel MS Antivirus de Microsoft et de son frère Central Point Software Antivirus, de l'éditeur éponyme : ces programmes étaient automatiquement désactivés par le virus Tremor qui se contentait d'écrire trois instructions NOP (rien) à certains emplacements de la mémoire ! Et on pourrait trouver d'autres exemples.
Les trojans batches ? Hormis Norton Antivirus qui peut bloquer tous les BAT (option désactivée par défaut), les solutions en amont restent rares. Les modules heuristiques, qui commencent à apparaître suite à notre précédent article, ne sont pas la panacée, comme pour les EXE, à cause de nombreuses fausses alertes ou des codes malfaisants non détectés. Et, dans bien des cas, seule la signature pourra alors s'avérer efficace. Mais, comme d'habitude, ces signatures interviennent a posteriori : les utilisateurs qui auront perdu leurs données entre temps apprécieront !
Et on ne parlera pas de ces antivirus qui se désactivent entre eux...

Et pendant ce temps, au tribunal...

Dans Pirates Mag' 9, nous vous présentions Roland Garcia à l'origine des messages sur l'internet les plus virulents concernant Viguard et son éditeur, Tegam International. La société, longtemps silencieuse, a finalement demandé en référé l'intervention de la justice. Le défendeur a vainement tenté de soulever l'incompétence territoriale du juge et fait valoir son droit à la liberté d'expression. Après avoir reconnu sa pleine compétence, le TGI de Paris a estimé au contraire que les « propos tenus, par leur fréquence et leur répétition, excède [...] la libre critique [...] et participe d'une opération de dénigrement ». Le fait que M. Garcia soit, d'après le juge, consultant auprès d'un distributeur d'antivirus concurrent, Alphasys, n'est peut être pas étranger à cette solution. Il est condamné à cesser ce trouble sous astreinte de 100 par nouvelle infraction constatée et à 1.000 au titre de l'article 700 du Nouveau Code de Procédure Civile. Aucune des parties n'a souhaité s'exprimer sur cette ordonnance, mais les deux laissent entendre qu'il y aura un jugement sur le fond... En attendant, personne n'a fait appel du référé.




Vous voulez soutenir une information indépendante ? Rejoignez notre Club privé !


[homepage]  [RSS]  [archives]
[contact & legal & cookies]  [since 1997]