Retrouvez cet article dans : Misc 20
Introduction
La lutte antivirale repose entièrement sur la capacité de disposer d'une copie de chaque code malicieux et celle de pouvoir l'étudier. En général, il s'agit de désassembler/débugger le binaire correspondant. Ce travail permet alors de mettre à jour les différents moteurs de chaque antivirus, grâce aux connaissances que l'analyse du code a permis d'acquérir. Comme cela a été présenté dans le numéro précédent avec le virus Whale [2], certains auteurs de virus ont vite compris l'utilité de mettre en œuvre des techniques permettant de contrarier voire d’interdire une telle analyse. Si le virus Whale eut un effet très limité, il atteignit cet objectif dans la mesure où son analyse nécessita plus d'une semaine. De nos jours, le moindre ver informatique se propage, au niveau mondial, en une quinzaine de minutes, pour les vers simples de type Slammer ou en une poignée d'heure pour un simple ver de courrier électronique de type MyDoom. Avec ces ordres de grandeur, il serait inimaginable de devoir attendre ne serait-ce que quelques jours pour disposer d'antivirus mis à jour. C'est la raison pour laquelle les techniques de blindage sont à prendre très au sérieux, même si par chance aucune attaque réelle utilisant du blindage efficace n'est connue à ce jour 1. Les techniques de blindage rencontrées jusqu'à présent (voir l'analyse du virus Whale) utilisent, en général, des techniques qui s'apparentent directement ou indirectement aux techniques de la cryptologie :- l'obfuscation de code (cf. [4] dans ce même dossier).
- le polymorphisme par réécriture de code (voir [4]).
- le polymorphisme par chiffrement (cf. [1] dans ce dossier).
- Tout d'abord parce que les analystes de virus parviennent toujours à disposer d'une copie d'un code binaire (fichier infecté) à analyser. Cela tient à la virulence très élevée des codes malicieux actuels, lesquels circulent en de multiples copies. Dans le cadre d'attaques ciblées (voir note 1), cette facilité est plus discutable voire totalement illusoire.
- Les techniques de blindage proprement dites relèvent toutes de classes de problèmes (ceux qu'il faut résoudre pour contourner ces techniques) de complexité polynomiale. Par exemple, soit les systèmes de chiffrement sont faibles soit l'espace clef est trop restreint et permet une approche exhaustive. Le plus souvent, la gestion des clefs est si catastrophique que le problème initial de cryptanalyse du code devient un simple problème de décodage.
La gestion environnementale des clefs
En 1998, B. Schneier et J. Riordan [5] ont introduit la notion de " gestion environnementale " des clefs cryptographiques. Tout agent logiciel ou matériel mobile évoluant dans un milieu hostile ne peut contenir des clefs statiques sous peine de les voir compromises par analyse de cet agent, en cas de capture. En d'autres termes, ils ont imaginé des protocoles permettant de construire, par l'agent, la clef à partir de données issues de son environnement, uniquement quand ces clefs sont nécessaires à son action et dont la validité est limitée à la durée de l'action elle-même. L'agent évolue de plus en aveugle car il ignore en permanence quand les clefs sont disponibles (autrement dit quand l'environnement est propice à leur génération). Le modèle décrivant ce type de gestion de clefs suppose également que tout attaquant (dans notre cas, l'analyste qui étudie le code malveillant) peut avoir un contrôle total sur l'environnement immédiat dans lequel évolue l'agent. L'attaquant peut leurrer ce dernier et lui fournir toutes les données qu'il souhaite (attaque par dictionnaire par exemple) afin de deviner lesquelles interviennent dans l'élaboration des clefs utilisées par l'agent. Les auteurs ont proposé plusieurs constructions pour ce type de protocole. Présentons-en, quelques-unes des plus basiques. SoientLes codes Bradley
Les codes Bradley modélisent des attaques ciblées (virulence limitée et contrôlée des codes), et mettent en œuvre un blindage total.Description générale
La version que nous détaillons comporte deux variantes principales :- Un code viral générique ayant pour cible un groupe limité de quelques centaines de cibles (utilisateurs/machines) (variante A).
- Un code viral attaquant de manière très ciblée quelques utilisateurs seulement (variante B).

Figure 1 : Structure générale des codes Bradley.
La structure générale des codes Bradley est indiquée sur la figure 1 et se résume comme suit : 1 Rappelons toutefois qu'en matière d'attaque virale, et plus généralement informatique, on ne peut parler que de ce qui a été détecté et identifié. Qui sait si certaines ne sont pas restées " invisibles ".- Une procédure de déchiffrement
Da pour fonction de collecter les données environnementales d'activation, de les tester et le cas échéant de procéder au déchiffrement des différentes parties du code. - Une première partie de code
EVP1chiffrée avec une clefK1. Une fois déchiffrée, cette partie du code installe toutes les fonctionnalités, actives et passives, de lutte anti-antivirale. - Une deuxième partie de code
EVP2chiffrée avec une clefK2. Cette partie contient les procédures d'infection proprement dites et de polymorphisme/métamorphisme 3. Le code se propage sous une forme à chaque fois différente (procédure D incluse). - Une troisième partie
EVP3(optionnelle) contenant la ou les charges finales. Cette partie est chiffrée avec une clefK3.
La gestion de clef dans Bradley
La procédure- L'adresse DNS locale de la machine cible (par exemple ma-compagny.com ; nous la noterons
α; - l'heure (
hhseulement) et la date (mmdd) système ; cette donnée est notée δ ; - Une donnée particulière, notée
ι, supposée être présente dans toute machine éligible pour l'attaque (dans notre cas, la présence d'un fichier particulier) ; - une donnée spécifique,
πsous le contrôle exclusif de l'auteur du code viral (celui qui lance l'attaque), disponible à l'extérieur du système (canal public) mais accessible au virus (dans notre cas, une page web contenant une donnée particulière dont la présence dans la page est limitée dans le temps et en relation avec la valeurδ). La valeurπest obtenue par hachage de l'information d'activation (le hash de la page web, en l'occurrence) 4.
- La procédure D collecte les données d'activation (valeurs
α,δ,ιetπ). Elle calcule ensuite une valeur V de 160 bits (dans le reste du texte, le signe + désigne l'addition modulo 2, bit à bit) :
- Si
V = M(Mest la valeur d'activation détenue par l'agent) alors
Ddéchiffre ensuiteEVP1, produisant
Ddéchiffre ensuiteEVP2, produisant
- Une fois, l'action du code viral terminée, le virus s'auto-désinfecte de la machine.
- De copie en copie (mécanisme de duplication assuré par une partie du code contenue dans
VP2), la totalité du code a complètement été changée (mais reste fonctionnellement identique). Cela concerne également la procédureDet la valeurM. Le polymorphisme/métamorphisme est conditionné par le protocole de gestion de clef (en pratique, par l'intermédiaire des valeursδetπ). - Le rôle des valeurs
νetνiest de s'assurer que les valeurs d'entrée de la fonction de hachage décrivent le plus possible l'espace de définition de la fonction. Le but est d'éviter que l'attaquant puisse réduire le champ des possibilités dans le cadre d'une cryptanalyse de cette fonction (essais exhaustifs par exemple). - les clefs
Kipeuvent être rendues indépendantes les unes des autres en considérant des données environnementales supplémentaires.
Analyse théorique
Pour évaluer la complexité de l'analyse d'un code de type Bradley, deux situations doivent d'abord être considérées :- L'analyste n'a pas de copie du code. Le problème de l'analyse ne se pose même pas. Le code a agi sans qu'aucun système de détection ne le repère (la détection interviendra éventuellement pour un virus ou un ver programmé de manière trop classique ou malhabile).
- L'analyste dispose d'une copie du code binaire. Cette hypothèse est très improbable dans le cas de codes de type Bradley. En effet, le code viral limite au maximum sa présence dans la machine, sa virulence est très fortement limitée. Enfin, les IDS et autres antivirus restent muets.
Conclusion
Les codes Bradley démontrent que le blindage total est une chose opérationnellement réalisable, en particulier dans le cadre d'attaques virales ciblées, dans lesquelles la virulence des codes utilisés est maîtrisée. À l'heure actuelle, il semble ne pas y avoir de solutions techniques au problème que posent des codes de ce type. À moins de disposer d'un réseau mondial de pots de miel pour tenter d'anticiper et de gérer en direct de telles attaques, il n'y a pas d'autres moyens de contrer de tels codes, l'approche cryptanalytique étant hors de portée. L'existence de tels codes et la possibilité d'attaques ciblées (contre des entreprises sensibles, des administrations, des personnes...) montrent encore une fois que la solution n'est pas technique. Ces codes illustrent le fait qu'un antivirus peut toujours être contourné : en amont par l'absence de détection face à un code innovant et en aval avec un blindage viral efficace qui non seulement interdit toute mise à jour mais également de déterminer éventuellement l'origine de l'attaque et la nature des actions offensives. Cela illustre encore une fois les risques du " tout connecté ". À ce titre, l'attaque par le ver Slammer des réseaux d'une centrale nucléaire américaine, connectés sur Internet (janvier 2003) est particulièrement parlante. Les réseaux les plus sensibles doivent rester hermétiquement isolés. Cela suppose en outre une politique de sécurité drastique pour interdire l'import incontrôlé de données extérieures et les connexions avec de l'informatique mobile. Cette politique de sécurité doit faire l'objet de contrôles fréquents et impliquer des sanctions pour les personnels qui ne l'auraient pas respectée. C'est le prix à payer pour avoir une sécurité adaptée face à des codes de type Bradley. Références- [1] BRULEZ, N. et RAYNAL, F., " Le polymorphisme viral : quand les opcodes se mettent à la chirurgie esthétique ", Journal de la sécurité informatique MISC 20, juillet 2005.
- [2] FILIOL, E, " Whale : le virus se rebiffe ", Journal de la sécurité informatique MISC 19, mai 2005.
- [3] FILIOL, E. " Strong Cryptography Armoured Computer Viruses Forbidding Code Analysis: the “ Bradley” virus ", in Proceedings of the 14th EICAR Conference, Malte, Mai 2005. Disponible sur : http://papers.weburb.dk/archive/00000136/
- [4] JOSSE, S. " Techniques d'obfuscation de codes : chiffrer du clair avec du clair ", Journal de la sécurité informatique MISC 20, juillet 2005.
- [5] RIORDAN J. et SCHNEIER B, " Environmental key generation towards clueless agents ", Mobile Agents and Security Conference'98, Lecture Notes in Computer Science, pp. 15-24, Springer-Verlag, 1998.
Retrouvez cet article dans : Misc 20





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.