Jeannette Jean-Yves
Poggi Jérôme
La sécurité des systèmes sous Internet.
Internet : le moyen le plus rapide de communication !
Remerciements
Sujet et introduction
1. Sujet :
2. Introduction :
Les différents moyens de communication sur Internet :
1. Le courrier électronique :
1.1 Le principe des adresses
1.2 Envoyer et recevoir des courriers
1.3 L'en-tête d'un courrier
1.4 Les courriers en erreur
1.5 Listes de distribution
1.6 Listservs et Majordomo
1.7 Les Services de changement d'adresse
1.8 Quand le courrier remplace ftp
1.9 Récupérer des pages Web par le courrier
1.10 Protocoles courrier
Les 7 méthode de Piratages les plus répendues
1- Le système D ou " ingénierie sociale "
1.1 Le contexte :
1.2 L’audace, le Bluff :
1.3 La chance :
1.4 La patience calculée
2- Spoofing - Usurpation d’adresse IP
Cible :
But :
Méthode :
Riposte et adresse :
3- Ping de la Mort
Cible :
But :
Méthode :
Riposte et adresse :
4- Attaque frontale
Cible :
But :
Méthode :
Riposte :
5- Le " cheval de Troie " ou " mouchard "
Cible :
But :
Méthode :
Riposte :
6- Contournement du Firewall
Cible :
But :
Méthode :
Riposte :
7- l’espionnage de trame
Cible :
But :
Méthode :
Riposte :
Les bons geste à faire lors d’une attaque
Outils pour surveiller votre système
Intrusion: quoi faire par la suite?
Intrusion en cours
Intrusions passées
Infections informatiques: comment s'en prémunir?
Tableau sur la sécurité de divers sites
Les quelques règles à respecter pour un Administrateur
La sauvegarde
Les trousses de maintenance (patches)
Sécurité des codes d'accès et des mots de passe
Serveur FTP anonyme
Sécurité des systèmes de fichiers
Sécurité réseau
La recherche d’intrusions
A. Rechercher des signes que votre système peut avoir été attaqué avec succès
Examinez les fichiers "log" à la recherche des connexions de provenance inhabituelle ou des activités non usuelles.
Cherchez partout sur votre système des fichiers ayant un "setuid" ou "setgid" (surtout "setuid root").
Testez les binaires de votre système afin d'être sûr qu'ils n'ont pas été modifiés.
Vérifiez vos systèmes, pour ce qui concerne l'utilisation non autorisée d'un programme de monitorisation réseau, communément appelé le sniffeur ou sniffeur de paquet.
Examinez tous les fichiers lancés par cron et at.
Vérifiez les services non autorisés.
Examinez le fichier /etc/passwd sur le système et vérifiez les modifications apportées au fichier.
Vérifiez les entrées non autorisées dans vos fichiers de configuration système et réseau.
Cherchez partout dans votre système des fichiers inhabituels ou cachés (fichiers dont le nom commemce par un point et ne sont normalement pas affichés par la commande ls)
Examinez toutes les machines sur le réseau local lorsque vous recherchez des signes d'une intrusion
B. Consulter d'autres documents du CERT
Où trouver des informations supplémentaires
Glossaire
Bibliographie
Le sujet de ce projet, est d’établir une liste des multiples moyens de communication sur le réseau mondial qu’est Internet, et de répertorier les moyens de protéger les serveurs d’informations.
La plupart des systèmes de gestion, de stockage et de distribution de l’information sont des machines Unix. C’est pour cela que nos recherches se tourneront exclusivement vers les systèmes d’exploitation Unix.
Pour nos recherches nous avons à disposition la plus grosse base de donnée du monde : Internet, ainsi qu’une expérience personnelle sur l’administration d’un système Unix.
L'Internet fait partie de notre avenir : il apporte la promesse de sa contribution au commerce, à l'enseignement, au marketing et à la publicité, entre autres activités. Mais les ordinateurs et les réseaux connectés à l'Internet sont menacés. Les pirates pullulent ; ils s’enorgueillissent de leur capacité à s'introduire dans les systèmes de sécurité les plus complexes. Certains ne recherchent qu'une simple satisfaction personnelle : ils pénètrent sans dommages dans un ordinateur uniquement pour démontrer leur habileté. D'autres ont des intentions plus malveillantes : vol d'informations, saccage, etc. Tant que nous serons incapables de contrer ces intrusions, l'Internet ne pourra pas réaliser ses promesses. Au cours de ces dix dernières années, l'Internet a été la cible de tentatives d'intrusions nombreuses et variées. L'Internet Worm de 1988 a réussi à pénétrer plus de 6000 ordinateurs sous UNIX et à bloquer presque entièrement le fonctionnement du réseau. Quelques années plus tard, les pirates, connus sous les "pseudos " Gandalf, Phoenix, RGB, etc., s'introduisaient dans de nombreux sites sous UNlX et déclenchaient l'intervention des équipes de sécurité comme le CERT (Computer Emergency Response Team), le GIAC (Computer Incident Advisory Capability) et le NASIRC (NASA Automated Systems Incident Response Capability). Plusieurs centaines d'ordinateurs de sites ont ainsi été atteints sur une période de deux ans.
Si les signatures et les origines des agressions changeaient à chaque fois, la méthode restait généralement la même : deviner les mots de passe, se connecter sur un compte par défaut, ou exploiter les faiblesses du système, souvent en recherchant à obtenir un accès privilégié aux données.
Les gouvernements des pays connectés se sont généralement dotés de cyberpolice, pour surveiller le réseau et prendre les pirates sur le fait.
Les différents moyens de communication sur Internet :
Le courrier électronique ou E-Mail est le premier, et le plus utilisé de tous les moyens de communication sur Internet. Il existe plusieurs moyens dérivés de cette méthode.
Le courrier électronique est l'outil le plus répandu d'abord dans l'Internet des entreprises puis pour le particulier. Il permet d'acheminer des notes courrier entre personnes éloignées. Le nom anglais e-mail est resté dans le langage, et les utilisateurs parlent de leur adresse e-mail. Nous essaierons d'employer le mot courrier électronique tout au long de ce guide.
L'avantage du courrier électronique sur le téléphone ou sur le fax est considérable. En effet, il permet de joindre un correspondant avec des informations écrites tout comme le fax, mais qui peuvent être recopiées dans un document en mode texte. Par rapport au téléphone, les courriers électroniques permettent d'aller droit à l'essentiel, évitent les aléas des répondeurs et permettent de laisser des traces écrites.
Les logiciels de courrier électronique permettent d'envoyer des documents attachés à la note principale. Ainsi par le courrier les utilisateurs d'Internet peuvent échanger des fichiers non ASCII (documents Word, logiciels etc.) qui peuvent aller jusqu'à des fichiers sonores.
Pour le particulier, il faudra attendre la généralisation de l'outil pour permettre une utilisation aussi universelle que le téléphone.
Le logiciel le plus utilisé aujourd'hui pour le courrier électronique, que ce soit sur PC Windows ou sur Macintosh, est Eudora de la société Qualcomm.
Chaque connecté à Internet possède une ou plusieurs adresses de courrier Internet. On les appelle e-mail address, et le premier réflexe à avoir lorsque vous discutez avec un connecté est de lui donner votre adresse e-mail ou de lui demander la sienne. A la différence du téléphone, le courrier électronique n'est pas anonyme dans la mesure ou votre correspondant connaît votre adresse dès que vous lui adressez un message.
Ces adresses sont de la forme nom@domaine.organisation.
! Parfois l'adresse d'un destinataire correspond en fait à un groupe de destinataires. Quelle hilarité provoqua le message envoyé au fameux groupe Veronica (qui est un index de recherche pour les serveurs Gopher de bases de données Gopher) lorsque chacun de ses éminents développeurs reçut le courrier d'un jeune homme qui cherchait une relation et faisait des avances à Veronica via le courrier électronique!
1.2 Envoyer et recevoir des courriers
Un mail contient toujours :
Le dernier point n'est pas supporté par tous les logiciels de courrier électronique.
Lorsque vous interrogez votre boîte aux lettres électronique, vous rapatriez tous les courriers qui se trouvent sur votre serveur de courrier. Lorsque vous expédiez un courrier à quelqu'un, ce courrier sera envoyé dans la boîte aux lettres de votre destinataire, jusqu'à ce que celui-ci lise son courrier.
Il faut remarquer que la boîte aux lettres de votre correspondant peut être située sur :
son ordinateur, s'il possède un ordinateur connecté au sein d'une entreprise et qu'il dispose d'un logiciel serveur de courrier, sur un serveur de courrier, dans le cas contraire. Ce deuxième cas est le plus fréquent, et il est donc important de vous souvenir que le courrier électronique sera stocké sur un serveur tant que vous ne lisez pas votre courrier. Ceci en fait un outil moins sécurisé que le courrier ordinaire qui en France est garanti confidentiel par des clauses légales.
Un courrier électronique a un en-tête de la forme :
X-Sender: Jerome.Poggi@usa.net
Date: Sat, 24 Feb 1997 21:54:35 +0000
To: root@msb31u01.u-3mrs.fr
From: Jerome.Poggi@usa.net (Jerome Poggi)
Subject: Problème de configuration..
Le système de gestion des utilisateurs est mal configuré
La première ligne donne l'émetteur du courrier, dans le champ X-Sender.
La deuxième ligne donne la date de début de composition du courrier, dans le champ Date. Il est parfois intéressant de connaître l'heure de début de composition d'un courrier et non pas sa date d'expédition.
La troisième ligne donne le destinataire du courrier, dans le champ To.
La quatrième ligne donne les noms réels de l'émetteur, dans le champ From. Le champ From n'est pas forcément le même que le champ Sender, en effet, les adresses électroniques réelles sont parfois légèrement différentes de celles qui ont été utilisées. Par exemple, parce que l'adresse réelle ne comprend pas de majuscule alors que l'adresse communiquée en comprend.
La cinquième ligne comprend le sujet du message qui apparaît dans la liste des courriers lorsque vous les récupérez. Ce champ est le champ Subject.
Ensuite il arrive, en fonction du logiciel de courrier utilisé, que vous trouviez un numéro dans un champ Message-ID (ce n'est pas le cas ici). Ce numéro est un numéro donné par le système pour garantir une signature d'unicité du courrier.
L'expéditeur trouve dans son logiciel de courrier un champ cc: (Carbon Copy) ce champ est réservé à une liste d'utilisateurs qui recevront le courrier en copie. Dans cette liste de destinataires, chaque adresse sera séparée par une virgule.
Dans le même ordre d'idée, un champ bcc: (Blind Carbon Copy) permet de donner une liste de destinataires, mais à l'inverse du champ cc: chacun des récipiendaires n'aura pas connaissance de la liste des autres lecteurs de ce même courrier.
Si vous utilisez une liste de distribution, c'est-à-dire une liste de plusieurs adresses, c'est dans ce champ qu'il faut mettre la liste, évitant à l'ensemble des récipiendaires de trouver la liste de tous les destinataires.
On trouve également, un champ attachment dans lequel l'expéditeur peut donner un nom de fichier qui sera expédié en même temps que le courrier. Ceci vous permet d'envoyer à votre correspondant un programme, un message sonore, une séquence vidéo, des images.
Il existe un champ reply-to qui permet de donner l'adresse de la personne à qui le courrier sera renvoyé après utilisation de la commande reply. Si ce champ est vide, c'est l'expéditeur du message qui verra la réponse adressée.
Le dernier champ qui s'étale sur plusieurs lignes est en fait le corps du message.
Enfin il est bon de savoir que certains de ces champs sont remplis par le système automatiquement, d'autres doivent l'être par vous.
Les champs From, Sender, Message ID, Date sont remplis automatiquement
Il est obligatoire que ce champ soit en ASCII , et il est recommandé qu'il ne comprenne pas de caractères accentués.
Si vous désirez utiliser des caractères accentués vous devez :
Il arrive parfois, lorsqu'on ne dispose pas de logiciel avec l'option d'attachement, qu'on utilise le corps du message pour envoyer un programme qui n'est pas en ASCII.
La méthode utilisée consiste à:
Il arrive encore que les serveurs de courrier décomposent les gros messages en plusieurs parties. Ainsi lorsque vous recevez un courrier multi-parties avec un fichier éclaté : doc1/3, doc2/3, doc3/3, il vous faudra recomposer le fichier éclaté en un fichier unique.
Quand vous avez rempli une adresse d'un destinataire qui se trouve être erronée, le serveur de courrier vous renvoie le courrier avec la raison du refus.
En général vous trouverez dans la zone sujet et dans le corps du courrier la raison du refus, que le domaine ne soit pas valable ou que la personne soit inconnue dans le domaine par exemple.
Heureusement le serveur vous renvoie le message que vous aviez expédié, vous permettant ainsi de le réexpédier sans avoir à le reformuler.
Il est important, lorsque vous expédiez un courrier volumineux demandant quelques secondes ou minutes d'envoi (cas d'un attachement), de vérifier l'adresse de votre correspondant avec un petit courrier le précédant. Cela évitera en cas d'erreur de recevoir le courrier avec un temps de réception équivalent au temps d'envoi.... et de voir ce temps tripler; par un nouveau temps de réexpédition.
Les personnes qui partagent un centre d'intérêt peuvent se rassembler pour en discuter. Il existe plusieurs méthodes (IRC, les News, les Listes de distribution, les Listservs, les pages Web). Les Listes de distribution contiennent un certain nombre d'adresses et lorsque vous écrivez à cette liste tous les destinataires recevront votre courrier.
Vous pouvez sans le savoir, être inscrit dans certaines listes de distribution, soit par votre fournisseur Internet, soit par l'administrateur réseau de votre entreprise qui les utilise pour vous prévenir des éventuelles informations qui peuvent vous être utiles.
Si vous voulez répondre à un tel courrier, faites attention à bien répondre à l'auteur et non pas à l'ensemble des récipiendaires.
Les Listservs sont un cas particulier de liste de distribution qui ne sont plus maintenues par un administrateur mais par un programme (robot) qui gère la liste.
Ceci vous donne la liberté de vous inscrire dans la liste par un certain nombre de commandes que l'on place dans la zone body du courrier que l'on adresse au robot.
! Les courriers de souscription (SUBSCRIBE) doivent être envoyés au robot et non pas à l'adresse de la liste elle-même. Sinon vous enverrez un message SUBSCRIBE à l'ensemble des abonnés à la liste!
La première commande est subscribe, elle vous permet de vous inscrire dans la liste de distribution, elle a la syntaxe:
subscribe votre nom.
! Le programme qui recevra votre courrier connaît votre adresse, inutile de la lui rappeler (sauf bien sûr dans les cas où vous n'écrivez pas à partir de votre adresse habituelle).
Le programme saura par votre adresse que vous devez être ajouté dans la liste et vous le confirmera par retour du courrier.
Si vous voulez avoir des informations sur un Listserv, envoyez un message contenant uniquement le mot help dans son champ sujet ainsi que dans le corps du message. Il est inutile de poser des questions précises dans votre corps de message puisque personne ne les lira.
Lorsque vous vous êtes inscrit à plusieurs Listservs, vous serez probablement assaillis par les courriers et désirerez vous retirer du Listserv. Ceci se fait en envoyant le message unsubscribe. Une des difficultés réside dans le fait qu'il existe des variantes entre les différents Listserv.
Certains vous permettent de vous enregistrer ou de vous retirer de la liste, en envoyant un courrier depuis une autre adresse que la vôtre.
Donc le mieux est de se faire envoyer le mode d'emploi précis par le courrier help.
Enfin l'adresse du serveur Web de Rennes [http://sir.univ-rennes1.fr/LISTES/] donne la liste des listes de distribution françaises.
1.7 Les Services de changement d'adresse
Vu le nombre de fournisseurs d'accès et leur cortège d'offres gratuites, vous serez peut-être tenté d'en essayer plusieurs. Or ceci pose un problème de taille, celle de votre adresse courrier, en effet, à chaque changement de fournisseur, votre adresse viendra à changer.
Vous pouvez résoudre ce problème en choisissant un service qui vous fournira une adresse courrier indépendante de votre fournisseur. Certain sites vous font payer cette adresse, tandis que d’autres non.
Nous citerons :
1.8 Quand le courrier remplace ftp
Il est de nombreux cas d'utilisateurs qui ont une connexion à Internet limitée au courrier. C'est le cas de la plupart des employés de société dont le réseau interne est protégé par un FireWall très restrictif ou qui utilisent un réseau interne et une passerelle vers Internet.
Certains serveurs e-mail comprennent des commandes à l'intérieur des courriers qu'ils reçoivent, ces commandes permettant d'accéder à des serveurs par ftp.
L'avantage de ces serveurs e-mail n'apparaît pas au novice, mais en y regardant de plus près, vous en comprendrez l'intérêt. Lorsque vous vous connectez sur un serveur ftp qui comprend la dernière version d'un logiciel fort convoité, il y a fort à parier que le serveur reçoit un très grand nombre de connexions.
Et si vous êtes relié à votre fournisseur par une ligne modem à 28 800 bits par seconde, il est possible que la ligne entre votre fournisseur et le serveur ftp convoité soit d'un débit réel beaucoup plus bas.
Ainsi si vous demandez à un serveur e-mail-ftp de faire le transfert pour vous, le courrier sera rapatrié pendant un temps où vous n'êtes pas connecté. Une fois que vous lirez votre courrier, le fichier ftp sera rapatrié vers votre ordinateur personnel à une vitesse de 28 800 bits par seconde.
Pour accéder aux serveurs ftp mondiaux vous pouvez accéder au serveur de mail du NIC [mailto:service@nic.ddn.mil].
Les serveurs ftp par mail mondiaux les plus connus sont les suivants :
Si vous expédiez à ces serveurs un courrier contenant le mot help, vous recevrez les commandes disponibles sur ces serveurs.
1.9 Récupérer des pages Web par le courrier
Il est parfois intéressant de lire un Web localement, surtout lorsque celui-ci comprend de nombreux niveaux. Là encore le courrier électronique fournit quelques services fort utiles, puisque c'est le seul outil capable de rapatrier tous les niveaux d'un Web.
Bien sûr si vous souhaitez rapatrier tous les niveaux de Yahoo, vous serez limité par la taille démesurée du serveur.
Il est nécessaire de connaître l'URL de la page Web que vous souhaitez rapatrier.
Ensuite il vous suffit d'envoyer un e-mail à l'un des serveurs suivants :
Vous verrez souvent les noms SMTP, POP3 apparaître dans vos logiciels de courrier; sans vous expliciter le détail de chacun de ces protocoles nous allons en donner les grandes lignes.
1.10.1 SMTP
SMTP (Simple Mail Transport Protocol) regroupe tous les protocoles concernant le courrier électronique sur Internet. Le protocole SMTP est un protocole point à point, c'est-à-dire qu'il met en communication deux serveurs : celui de la personne qui envoie un courrier et celui de la personne qui le reçoit. Ces serveurs sont des machines qui sont chargées de la gestion de votre courrier et de celui de vos collègues. Ainsi si votre nom est dupont@imaginet.fr, vous serez géré par un serveur de courrier qui aura un nom (sans doute mail.imaginet.fr). Ce serveur de courrier aura la charge d'acheminer votre courrier vers le serveur de votre destinataire.
Il se peut que la liaison point à point ne concerne qu'un serveur, quand une personne vous envoyant un courrier est gérée par le même serveur que le vôtre.
Le protocole SMTP spécifie le format des adresses des utilisateurs, les champs de vos courriers (from: to: etc.), les possibilités d'envoi groupé, la gestion des heures.
Si vous êtes connecté chez vous de façon intermittente, votre serveur utilisera SMTP pour recevoir votre courrier, et vous utiliserez POP3 pour lire les courriers qui vous attendent sur le serveur.
Pour expédier votre courrier, selon la version de votre logiciel, vous utiliserez SMTP directement, ou une procédure extension de POP3 pour demander à votre serveur d'envoyer votre courrier.
1.10.2 POP3
Le protocole POP3 a été conçu pour vous permettre de récupérer votre courrier sur une machine distante quand vous n'êtes pas connecté en permanence à Internet.
Voilà pourquoi dans votre logiciel de courrier vous devrez donner l'adresse de votre serveur POP.
Le protocole POP gère l'envoi de messages identifiés par une clé et un argument, ainsi que la réception de messages d'erreur (ERR) ou d'acquittement (OK).
Le protocole POP gère les messages suivants:
D'autres messages comme TOP (pour voir les titres des messages) ou APOP (qui permet de ne pas envoyer de multiples mots de passe dans le cas des connexions périodiques) sont en marge du protocole.
L'envoi de messages (par les extensions XTND XMIT) n'est pas non plus supporté par le protocole POP3 de base. Le protocole POP gère l'authentification, c'est-à-dire la vérification de vos nom et mot de passe. Il bloque, également, votre boîte aux lettres pendant que vous y accédez, ne permettant pas à une autre connexion d'accéder en même temps à votre courrier.
Notons que le protocole POP3 n'est pas sécurisé, et qu'en vous connectant en telnet sur le port 110 vous pouvez voir les messages de réception en clair.
Toutes ces informations permettent de comprendre certaines options de vos logiciels, mais elles ne sont pas implémentées sur tous.
Au niveau d'une utilisation normale vous n'aurez en principe qu'à connaître l'adresse de votre serveur POP pour renseigner votre logiciel.
1.10.3 IMAP
IMAP(Interactive Mail Access Protocol) est un autre protocole moins utilisé que POP parce que moins répandu mais qui offre plus de possibilités.
Il gère plusieurs accès simultanés, ainsi que plusieurs boîtes aux lettres sur le serveur et il permet les recherches de courrier selon critère. Il est donc plus riche, mais étant plus complexe, il est moins utilisé.
1.10.4 Sécurité
Le courrier électronique n'est pas sécurisé au niveau de la confidentialité car les messages sont stockés en clair sur votre serveur de courrier. D'autre part vous n'êtes jamais sûr à cent pour cent que votre courrier va atteindre son destinataire. Les solutions pour y remédier consistent en deux points :
1.10.5 Cryptage
Il existe plusieurs façons de crypter les messages, mais, quelle que soit la méthode retenue, le principe est le même. Il consiste, en effet, à coder le corps du courrier, avec une ou plusieurs clés de protection. Le cryptage par un seul mot de passe suppose que vous donniez le mot de passe à vos destinataires par un canal de communication sûr et qu'eux-mêmes ne laissent pas traîner sous les regards indiscrets ce mot de passe. Si on suppose que vos destinataires auront plusieurs correspondants, ils devront connaître un certain nombre de mots de passe.
Un moyen plus sûr est de disposer de deux clés, l'une dite publique et l'autre dite privée.
La clé publique sera utilisée pour coder le message, et la clé privée sera utilisée pour le décoder.
Si l'expéditeur utilise sa clé privée pour coder le message, le destinataire devra entrer la clé publique pour le décoder, on parlera dans ce cas de signature électronique ou digitale.
Tout ceci permet de s'assurer que les e-mails n'ont pas été modifiés ou lus pendant leur transport.
Les logiciels de cryptage offrent des annuaires de clés de vos correspondants, accessibles par un mot de passe et une option offrant une visualisation uniquement des premiers caractères de ces clés, ceci afin d'abriter les clés des regards indiscrets. Une grande difficulté dans la cryptologie consiste en un problème légal, dans la mesure où les autorités américaines n'autorisent pas la diffusion en dehors du sol américain des algorithmes de cryptage.
En outre la législation de certains pays francophones (en particulier la France) n'autorise pas les communications quand elles ne peuvent pas être écoutées (bien que l'écoute soit interdite). Nous explicitons comment tout cela marche, en informant le lecteur du guide qu'il est interdit de crypter et pour rester tout à fait dans le cadre de la loi nous vous demandons de ne pas crypter.
Bien entendu, sur Internet ces algorithmes existent et ils sont visibles sur des serveurs publics. Nous préférerons vous donner les adresses de ces serveurs, plutôt que de donner les détails dans le présent manuel.
Parlons de différents algorithmes :
1.10.5.1 PGP
PGP (Pretty Good Privacy) est une solution de cryptage mise au point par Philip Zimmermann. PGP est devenu très vite le standard de cryptage des messages, parce qu'il est gratuit, d'une part et parce que le MIT soutient le protocole. Standard ne veut cependant pas dire unique, puisqu'il existe d'autres systèmes, moins répandus il est vrai.
PGP comprend des procédures utilisées par la société RSA (qui fournit également des éléments à Netscape pour ses clés de protection).
La dernière version de PGP est 2.62 pour les US et 2.62i pour les pays extérieurs aux US, cette version étant incompatible avec les versions précédentes. Ceci veut donc dire que, si vous utilisez PGP, il est important que vous informiez votre correspondant de la version utilisée.
PGP s'utilise sur Unix, VMS, MS-DOS, OS/2, Macintosh, Amiga, Atari mais nous bornerons nos exemples aux mondes PCWindows et Macintosh.
Comme d'autres logiciels de cryptage, PGP utilise deux clés, l'une publique et l'autre privée. La clé publique permet un premier niveau de sécurité dans la mesure où seules les personnes qui connaissent cette clé peuvent vous écrire ou vous lire.
PGP utilise un code de validation en fin de codage qui permet de valider la cohérence du message crypté. Mais c'est la clé privée que votre correspondant devra posséder qui permettra la parfaite sécurité du protocole.
1.10.5.2 Viacrypt
Viacrypt est une version commerciale de PGP, dont on ne peut pas obtenir les sources, et qui utilise les algorithmes RSA et IDEA.
C'est la seule version de PGP tournant sous Windows.
Des informations sur Viacrypt peuvent être obtenues en écrivant à la personne chargée de la commercialisation de ce logiciel : viacrypt manager [mailto:viacrypt@acm.org]
1.10.5.3 RIPEM
Ripem est un autre logiciel gratuit permettant le cryptage, il est disponible sur le site ftp de MSU [ftp://ripem.msu.edu/pub/GETTING_ACCESS]
Les 7 méthode de Piratages les plus répendues
1- Le système D ou " ingénierie sociale "
Pour mieux contrer l’ingénierie sociale, il faut connaître les méthodes d’approche des agresseurs. Voici quatre grands principes à retenir :
En connaissant l’organigramme de l’entreprise, on a déjà un pied dans la cible : connaître les " réseaux d’accointances ", qui connaît qui, les collaborateurs proches, les conflits de personnes, savoir le prénom de la secrétaire... L’objectif est de connaître l’identité de ceux qui pourraient demander l’information de façon légitime. Et se faire passer pour eux.
Le bagout et l’art de la parlotte sont d’indispensables qualités. " C’est machin, de Transpac. Nous faisons des vérifications de routeurs. Vous avez les adresses IP, que je check sur mon listing ? " Parfois, en baratinant des termes techniques, ça impressionne l’interlocuteur, qui se soulage en divulguant l’information réclamée.
Comme tout acte de vol physique, usurper quelqu’un et soutirer une information a besoin de chance, toujours quelque chose à voir avec un heureux coup de bol.
Il faut savoir attendre, mais pas trop pour ne pas alerter les soupçons. Dans les grandes entreprises, certains pirates n’hésitent pas à identifier des dizaines de cibles et les appellent en rafale, en moins d’une heure, pour éviter à l’alerte de se propager.
2- Spoofing - Usurpation d’adresse IP
Serveur de l’entreprise, même derrière une passerelle sécurisée (firewall).
Tromper la machine cible pour obtenir un droit d’accès au réseau protégé.
Le spoofing est un stratagème encore difficilement décelable qui fit la une de la presse en février 1995 : Kevin Mitnick, pirate patenté, était friand de cette technique d’intrusion, mais sa victime d’un jour, Tsutomo Shimomura, s’en est servi pour le reconnaître, avant d’organiser avec le FBI sa traque et son arrestation.
Les méandres de l’attaque sont très complexes, mais le principe plus simple : le pirate s’arrange pour un autre, en envoyant un paquet dont l’adresse IP est " autorisée " par le serveur interne de l’entreprise ; la source IP du hacker trompe la cible, qui croit avoir affaire à une machine de confiance.
La finesse revient alors à se connecter (via telnet ou autre) et de laisser traîner cette fausse identité, pour échanger des données avec une machine interne. L’intrus habile saura même " piquer " les commandes d’une machine utilisée à distance par l’administrateur ! Il peut même passer " root " (c’est la personne qui a les pleins pouvoirs sur un serveur), avertit le CERT (Janvier 1995), qui parle de " highjacking " en ajoutant que les passerelles de sécurité mal configurées peuvent se laisser leurrer.
La deuxième note du CERT (septembre 1996) fait le lien entre cette technique et SYN flooding, attaque par dénis de service (voir cas N°3).
Serveurs et routeurs.
Paniquer la machine cible et la bloquer en déclenchant une série de refus de connexion (denial of service)
C’est une nouvelle variante des raz-de-marée (flooding) provoqués par une batterie d’agresseurs, qui inondent de requêtes un routeur ou un serveur. Panix, un prestataire de New York, en a fait les frais l’an dernier. Aucune donnée n’est détournée, mais le système bloqué crée de nouvelles failles dans la panoplie de sécurité de l’entreprise. Affaiblir l’adversaire, l’empêcher d’agir.
Ping est une commande unix (dotée du standart RFC-791), qui permet de calculer le temps mis par les paquets entre deux machines distantes. Le ping ne peut accepter un paquet (un datagramme) plus long que 65535 octets. Mais des petits malins savent comment envoyer un paquet juste plus lourd - un octet en plus suffit. Au-delà, ça plante : certains systèmes délirent lorsqu’ils reçoivent ces trops longs paquets. En " bitouillant " (les hackers tiennent au " t ") la fragmentation que le ping subit pendant le transport, à l’arrivée le serveur se bloque en tentant le recoller les fragments. L’écho répond dans le vide.
" C’est un problème sérieux, parce qu’on peut reproduire la manoeuvre très facilement ", explique Malachi Kenney, un informaticien anglais qui a monté un site très complet sur " Ping ‘O Death ", qui s’est répandu comme un virus à l’automne 96. " Vous pouvez flipper. Depuis le 18 Octobre pas moins de 18 systèmes d’exploitation se sont avérés vulnérables ", expliquait-il le 22 janvier. MacOS, Windows NT et 95, Sun Solaris, Linux (Il n’a fallut pas plus de 4 heures entre l’annonce de la faille et la mise à disposition du patche de mise à jour de Linux) et Novell Netware...
Toute machine connectée à l’internet protégée par un identifiant (login) et un mot de passe.
Obtenir les droits sur cette machine, pour remonter vers le serveur central.
C’est un peu l’âge de pierre de l’intrusion informatique. Le petit monde des pirates ont leurs outils de " crackage ", des moulinettes qui travaillent toute une nuit pour tester des mots communs, des prénoms ou d’autres dates de naissance. La tentative se passe par telnet ou ftp, deux protocoles de base de l’échange de données via l’internet. Des versions sécurisées de telnet existent, mais des petits malins ont réussi à les contourner, a prévenu le CERT en 1995.
5- Le " cheval de Troie " ou " mouchard "
Un recoin du système d’exploitation de la machine déjà attaquée..
Récupérer les données qui transitent en local à l’insu de l’administrateur ; rapatrier les données lors d’une autre session.
L’ancêtre des fichiers espions à la mode Java ou ActiveX.
Dans le dernier livre de Jean Guisnel, les militaires l’avaient surnommé " la femme de ménage ". Mais c’était sur une disquette, il fallait lancer une application, sortir la disquette et revenir le lendemain relever le " mouchard ". A distance, après avoir déjà un pied dans la cible, le cheval de Troie peut être un bon moyen de gagner plus de droit : on " écoute " le trafic du serveur cible, et on capte ce qu’il y a d’intéressant. Comme le fichier " /etc/passwd " du serveur central, un fichier que l’on ira " craquer " au chaud, à la maison (voir cas N°4).
Les langages Java et ActiveX présentent ces temps-ci des failles sérieuses avec ce principe : un site web envoie un applet à un navigateur client ; l’applet va jouer aussi aux espions. Le Chaos Computer Club, en Allemagne, vient de montrer comment, grâce à ActiveX, on peut violer Quicken, populaire logiciel de gestion en ligne : l’applet lance un ordre de virement à l’insu de l’usager.
Un PC connecté au réseau local de la société cible ; le PC se connecte à l’Internet par modem (RTC), non protégé par le firewall.
Avec l’adresse IP du PC, c’est la source d’une attaque par spoofing (voir cas N°4)
D’abord il faut choisir sa cible. Le salarié d’un groupe industriel prend l’habitude de prendre au bureau son modem personnel. Il surfe de temps en temps, se connectant sur une prise analogique. Dans les news, il laisse sa signature professionnelle. Il y a de grande chance pour que son PC ne passe pas par la passerelle de sécurité. L’adresse IP du PC serait une bonne entrée pour contourner le firewall (cas N°2). Il lance une commande d’écho (ping, voir cas N°3), mais en continu. La réponse arrive quand le salarié est connecté. L’agresseur lui envoie alors un E-Mail, mais " bitouillé "pour que le serveur de courrier renvoie au pirate aussitôt un message d’erreur. Dans lequel figure le fameux numéro IP. La porte ouverte, très souvent, au réseau local.
Toute machine ayant une adresse sur Internet et étant sur un même brin réseau. Il ne faut pas de pont filtrant, sinon les trames restent en dehors du sous réseau où nous nous trouvons. On ne peut espionner, dans ce cas là, que les trames à destination de notre sous réseau.
Ecouter le réseau et sauvegarder les trames à destination de la machine cible, ou en partance de la machine cible.
Sous Unix il existe un programme qui se nomme TCPDUMP, qui permet de suivre, écouter les trames qui circulent sur le réseau. Cet utilitaire a un nombre d’arguments, de commandes de filtrage, d’analyses très variées. Il permet de ne surveiller que certaines machines, certaines trames, certains protocoles...
Nous avons personnellement utilisé cette méthode et en moins d’une semaine nous avons obtenu plus de 10 noms de login et mots de passe. Une fois cette méthode utilisée, nous sommes entré dans certains systèmes et nous avons récupéré les fichiers systèmes sensibles. A partir de ce moment nous pouvions faire des attaques plus sensibles, plus ciblées. Nous n’avons jamais fait de destruction, de blocages lors de nos essais. Les serveurs visés étaient au courant de nos futures attaques, pour rester dans un minimum de légalité.
Cette méthode est très efficace pour les communications non cryptées : Telnet, Le Mail, le FTP. Par contre TCPDUMP ne donne pas les informations de façons évidentes, il faut faire un programme en C qui remet en forme les informations. Voici le programme que nous avons utilisé :
#include <sys/types.h>
#include <stdio.h>
void main(void)
{
int i = 0, pt, ch, tmp ;
int fin = 84;
pt = open("trame.tcp",O_RDONLY);
while (read(pt, &tmp, 1) == 1) {
i++;
if (tmp < 32 ) {tmp = 0x2E;}
if (tmp > 127) {tmp = 0x2E;}
printf("%c",(char)tmp);
if (i % fin == 0) {
printf("\n");
i = 0;
}
if ((i +fin - 10) % fin == 0) printf(" >>> ");
if ((i +fin - 11) % fin == 0) printf(" <<< ");
}
close(pt);
}
Ce programme remplace les caractères non imprimables par un " . " et met des marques autour du premier caractère. Il rajoute aussi un retour chariot en fin de ligne pour que le résultat soit plus lisible.
Il suffit de crypter les communications. Mais le cryptage est strictement interdit en France, à condition de demander l’autorisation au gouvernement Français. Le problème est que il faut avoir vraiment une bonne raison de crypter, car le gouvernement Français fait passer en avant la sécurité du territoire, plutôt que la sécurité des sociétés.
Les bons geste à faire lors d’une attaque
Votre système UNIX n'est pas construit avec des alarmes qui peuvent vous signaler des intrusions. Votre meilleur système d'alarme est votre vigilance dans la surveillance des activités inhabituelles qui sont en train de se produire. Vous devez savoir comment déterminer que quelque chose est de travers. Vous devez également essayer de découvrir qui est coupable et, si possible, boucher par vous-même le trou par lequel l'intrus est rentré (déconnecter la connexion, changer immédiatement votre mot de passe...). Sinon, rapportez vos soupçons à votre administrateur de système ou de sécurité et demandez-lui de faire le nécessaire.
Ce paragraphe traite des outils que vous pouvez utiliser pour surveiller votre système. Il décrit quoi faire en cas d'intrusion et comment faire pour diminuer les risques de contamination par infections informatiques.
Outils pour surveiller votre système
Les outils de surveillance sur les systèmes UNIX ne sont pas réservés aux initiés. Vous allez vite vous familiariser avec ces outils en vous en servant le plus souvent possible. Bien sûr, il y a des outils dont l'exécution demande des privilèges root; d'autres, par contre, peuvent être exécutés par des utilisateurs ordinaires. Ce sont ces derniers que nous allons décrire.
La commande who est peut-être la première commande que tout nouveau utilisateur UNIX doit apprendre. Elle affiche les noms des utilisateurs, les noms des ports de connexion, et les dates de login:
hvovan@dragon[43] who
hvovan console Dec 8 07:57
sit pts/4 Dec 8 14:19 (nemesis)
Cette information est obtenue à partir du fichier /usr/adm/utmp (sur BSD) et elle est entretenue par les programmes init et login et la commande date. L'utilisation de l'option -u de la commande affiche plus d'informations (temps d'inactivité, PID):
hvovan@dragon[44] who -u
hvovan console Dec 8 07:57 6:28 930
sit pts/4 Dec 8 14:19 0:06 2135 (nemesis)
S'il existe, un enregistrement cumulatif de tous les changements apportés à /usr/adm/utmp est conservé dans le fichier /usr/adm/wtmp. Vous ne pouvez pas lire ces deux fichiers avec un éditeur de texte. Vous pouvez toutefois utiliser la commande who -a avec le nom du fichier pour lire ces enregistrements binaires:
hvovan@dragon[48] who -a /usr/adm/wtmp
...
ttymon - console Dec 7 15:08 6:31 650 id=co (sphinx)
LOGIN - console Dec 7 15:08 6:31 650
hvovan - pts/4 Dec 7 15:46 0:09 784
.telnet ? /dev/pts/4 Dec 7 16:32 839
sit - pts/4 Dec 8 14:19 0:09 2135
...
La commande ps affiche l'état des processus. L'information est présentée en colonnes et comprend toujours les points suivants: le numéro d'identification du processus, le port utilisé par l'utilisateur qui a créé le processus, le temps CPU utilisé par ce processus, et le nom du fichier exécutable utilisé comme base par ce processus. Par défaut, seuls les processus appartenant à l'utilisateur qui lance la commande ps sont affichés:
hvovan@dragon[48] ps
PID TTY TIME COMD
1745 pts/2 0:00 csh
2172 pts/2 0:01 ps
Sous System V, l'option -e listera tous les processus. Sous BSD, les options -ax doivent être utilisées. L'ajout de l'option -l affichera plus d'informations sur chaque processus:
hvovan@dragon[49] ps -el
F S UID PID PPID C PRI NI SZ TTY TIME CMD
19 T 0 0 0 76 0 SY 0 ? 0:01 sched
8 S 0 1 0 80 99 20 185 ? 0:56 init
8 S 100 1700 1698 13 44 20 177 console 0:00 sh
8 S 100 1721 1700 80 40 20 491 console 0:01 olwm
...
La colonne PPID indique le numéro du processus père. En tuant le processus père (avec la commande kill -9 #PPID, par exemple), vous pouvez souvent envoyer le même signal à tous les processus fils. Sur les système basés sur System V, la commande ps -ef signale tout processus avec un affichage "amical":
hvovan@dragon[51] ps -ef
UID PID PPID C STIME TTY TIME COMD
root 0 0 76 Dec 07 ? 0:01 sched
root 1 0 80 Dec 07 ? 0:56 /etc/init -
root 2 0 23 Dec 07 ? 0:00 pageout
root 3 0 80 Dec 07 ? 6:54 fsflush
root 235 1 15 Dec 07 ? 0:00 /usr/lib/saf/sac -t 300
hvovan 1698 1694 11 07:57:22 console 0:00 /usr/openwin/bin/xinit --
/usr/openwin/bin/X :0 -auth /home/hvovan/.xsun.dragon...
Les commandes whodo de System V et w de BSD combinent les caractéristiques de who et ps:
hvovan@dragon[52] whodo
Fri Dec 8 15:18:51 EST 1995
dragon
console hvovan 7:57
console 930 0:00 csh
console 1694 0:00 openwin
pts/1 1739 0:00 csh
console 1748 0:03 filemgr
console 1699 1:42 Xsun
pts/4 sit 14:19
pts/4 2135 0:00 csh
hvovan@dragon[53] w
3:19pm up 1 day(s), 4:25, 2 users, load average: 0.04, 0.07, 0.07
User tty login@ idle JCPU PCPU what
hvovan console 7:57am 7:22 1:59 1:42 rlogin nemesis
hvovan pts/1 7:57am 7:22 /bin/csh
hvovan pts/2 7:57am 32 9 w
hvovan pts/3 2:18pm 56 rlogin nemesis
sit pts/4 2:19pm 1:00 -csh
Des ports utilisés pour les systèmes de fenêtres sont appelés des pseudo-ports et sont indiqués par un "p" dans le nom de périphérique.
Le noyau UNIX peut produire des rapports détaillés, appelés comptabilité des processus, sur chaque processus: la commande exécutée, l'identité de l'utilisateur, le SUID...Un utilisateur ordinaire ne peut pas exécuter les commandes de comptabilité.
En plus des fichiers de comptabilité, BSD et System V entretiennent d'autres fichiers de consignation (fichiers log).
Les systèmes BSD gardent une copie de tous les messages envoyés à la console, y compris les tentatives su réussies ou échouées, dans le fichier /usr/adm/messages. En étudiant le fichier, vous pouvez voir qui connaît votre mot de passe:
hvovan@dragon[36] more /usr/adm/messages
Dec 2 13:29:50 dragon su: 'su root' succeeded for hvovan on /dev/pts/2
Dec 2 13:31:46 dragon su: 'su sit' succeeded for hvovan on /dev/pts/3
Dec 2 17:00:18 dragon su: 'su sit' succeeded for hvovan on /dev/pts/2
Dec 2 17:10:58 dragon su: 'su root' failed for hvovan on /dev/pts/4
Dec 7 10:54:10 dragon unix: panic: asynchronous memory fault: MFSR=81802040 MFAR=6792ec0
...
Le System V n'entretient pas un fichier des messages, mais il garde un fichier de consignation des tentatives su, appelé /usr/adm/sulog:
hvovan@dragon[38] ls -l /usr/adm/sulog
-rw------- 1 root root 11902 Dec 7 10:53 /usr/adm/sulog
hvovan@dragon[39] su
Password:
# more /usr/adm/sulog
SU 01/24 12:21 + console root-sys
SU 01/26 10:48 - pts/2 hvovan-root
...
Après la date et l'heure, un plus ou un moins indique soit une tentative réussie soit un échec dans l'utilisation de su.
Il est utile d'apprendre qu'il y a un autre moyen pour observer un utilisateur particulier exécuter des commandes. Les shells Korn et C peuvent garder des fichiers d'historique.
Intrusion: quoi faire par la suite?
Les intrusions sont toujours possibles, même si vous avez pris soin de sécuriser convenablement votre système. Il y a vraiment deux catégories d'intrusions: une qui est en cours et une découverte après coup.
Si vous détectez un intrus, votre premier élan peut être de déconnecter l'offenseur en tuant son shell de login. Bien que ceci arrête sans aucun doute la plupart des activités endommageantes, il empêche la réalisation d'autres buts. Vous voulez peut-être identifier l'intrus, ou bien savoir comment il s'est introduit. Une approche courante consiste à utiliser les commandes write ou talk pour communiquer avec l'intrus suspect. Par exemple, vous vous êtes connecté à votre système tard dans la soirée et vous remarquez que quelqu'un de régulier, contrairement à son habitude, est également connecté. Vous pouvez essayer de vérifier l'identité de cette personne en lui envoyant directement un message du genre:
hvovan@dragon[44] who
hvovan pts/2 Dec 8 19:34
hvovan pts/3 Dec 8 21:27
sit pts/4 Dec 8 21:28 (nemesis)
hvovan@dragon[45] write sit pts/4
Bonjour sit. C'est réconfortant de voir quelqu'un d'autre travailler aussi tard.
Message from sit on dragon (pts/4) [ Fri Dec 8 21:46:41 ] ...
Salut hvovan. Juste pour lire mon courrier. A demain.
Bien entendu, l'échange montré ne prouve pas réellement que l'utilisateur sit est vraiment celui qui apparaît l'être. Si vous connaissez assez bien la personne, vous pouvez toujours poser quelques questions personnelles, qui identifient sans aucun doute l'individu. Si vous êtes sur place et l'utilisateur suspect l'est également, la meilleure chose à faire serait de localiser cet utilisateur. La commande who identifie un terminal ou une machine hôte, et si vous avez un plan de vos ports de connexion et des machines, il devrait être facile de localiser cet individu pour une identification physique.
Si un intrus entre par Internet, le nom de la machine hôte de l'utilisateur apparaît entre les parenthèses à la fin de l'affichage who. Vous pouvez utiliser la commande finger pour essayer d'obtenir des informations sur la machine de cet utilisateur.
hvovan@nemesis[35] who
hvovan pts/1 Dec 9 13:49 (dragon)
hvovan@nemesis[36] finger hvovan@dragon
[dragon]
Login Name TTY Idle When Where
hvovan Hung Vovan pts/1 9 Sat 13:47
Observer ce que l'intrus est en train de faire, ce n'est pas une chose facile. Si vous voyez que votre intrus vous échappe, vous pouvez déconnecter sa connexion en tuant le shell de login. La commande ps -t avec un nom de terminal imprime tous les processus associés au port mentionné. Ensuite une commande kill permet de déconnecter l'intrus.
Sur les systèmes chargés, les intrusions peuvent se produire et passent souvent inaperçues. Si vous avez des doutes d'intrusions, voici ce qu'il faut faire: vérifier la date de modification de l'inode de vos fichiers qui ont suscité le doute, et utiliser le fichier wtmp pour déterminer les utilisateurs qui étaient connectés à ce moment là.
Date de modification de l'inode
Le descripteur de fichier (inode) contient trois date: la date d'accès, la date de modification, et la date de modification de l'inode. La date d'accès fournit la date de création ou de lecture du fichier. La date de modification donne la date de création, d'écriture, ou de modification du fichier. La commande touch permet de changer la date d'accès et la date de modification d'un fichier à n'importe quelle date du passé (après 1970) ou du futur. Elle ne peut cependant pas modifier la date de modification de l'inode du fichier:
sit@dragon[13] ls -l message
-rw-r--r-- 1 sit autre 18 Dec 4 13:52 message
sit@dragon[14] touch 0815134594 message
sit@dragon[15] ls -l message
-rw-r--r-- 1 sit autre 18 Aug 15 1994 message
sit@dragon[16] ls -lc message
-rw-r--r-- 1 sit autre 18 Dec 9 14:06 message
Faites confiance seulement à la date de modification de l'inode qui est le seul moyen précis pour déterminer la dernière fois qu'un fichier a été modifié.
Qui était connecté?
La date de modification de l'inode vous dit quand un événement a eu lieu. Le fichier /usr/adm/wtmp vous indique qui était connecté à ce moment là.
Sur BSD, la commande last lit le fichier et sort les dernieres dates de login et d'autres événements;
hvovan@nemesis[37] last
hvovan pts/1 dragon Sat Dec 9 13:49 still logged in
gbrochu pts/1 ppp-b12.ulaval Sat Dec 9 10:07 - 13:49 (03:41)
jgarsena console :0 Thu Dec 7 08:34 - 08:39 (00:04)
eguindon pts/1 odin Wed Dec 6 16:25 - 10:24 (17:59)
reboot system boot Wed Nov 29 08:39
root console Wed Nov 29 08:25 - 08:26 (00:00)
jgarsena pts/1 batman.sit.ula Tue Nov 28 16:30 - down (16:08)
...
Vous pouvez utiliser la commande grep pour filtrer la sortie de last suivant une date ( last | grep "Nov 28"), le nom d'un utilisateur ( last | grep "hvovan"), ou d'un port ( last | grep "console"), par exemple. Le System V ne dispose pas de la commande last. On peut toutefois utiliser la commande who -a à sa place.
Trouver les fichiers cachés
Un intrus qui a réussi à obtenir le privilège d'un autre utilisateur peut chercher à maintenir ce privilège. La méthode la plus courante consiste à créer un fichier SUID appartenant à l'utilisateur victime. Ce fichier est souvent caché sous un nom de fichier piège qui, dans la plupart des cas, commence par un point (.). Le point rend le nom du fichier "caché", car la commande ls et l'expansion du shell (avec l'astérisque) n'affichent normalement pas ce fichier. L'option -a de la commande ls affiche toutes les entrées du répertoire, sans tenir compte du point précédant le nom du fichier. Rappelez-vous que le nom de fichier point représente le répertoire courant et le fichier point-point représente le répertoire père. Cependant, "..." n'est pas un nom spécial utilisé par UNIX, mais un nom favori des craqueurs. Les autres noms favoris comportent un espace, une tabulation, ou un caractère non imprimable. Utilisez les options -b ou -q de ls pour afficher ces fichiers bizarres.
Pour chercher les nouveaux fichiers SUID ou SGID, dans le répertoire courant, par exemple, utilisez la commande find . \( -perm -4000 -o -perm 2000 \) -print. Vous pouvez également déterminer les fichiers créés la veille (depuis un jour) à l'aide de la commande find . -ctime -1 -print. Après avoir découvert les fichiers cachés ou bizarres, faites un grand ménage en les supprimant tous à l'aide de la commande rm.
Vérification des programmes
Puisque les programmes sont des fichiers binaires, vous ne pouvez pas les visualiser. Certains utilitaires UNIX permettent d'examiner des parties des fichiers exécutables; les symboles et les chaînes de caractères. La commande nm affiche les symboles utilisés dans un fichier exécutable, tandis que la commande strings affiche le texte trouvé dans les fichiers binaires.
Infections informatiques: comment s'en prémunir?
Une infection informatique est une modification ou un ajout non autorisé d'un objet ou d'un sujet sur un système informatique. Les virus, les chevaux de Troie, les vers, le passage secret, les bombes, les bactéries sont les infections informatiques.
Les Virus
Un virus est une petite partie de code qui se recopie toute seule à l'intérieur d'un autre programme en le modifiant et qui ne peut s'exécuter que lorsque le programme hôte est lui-même en cours d'exécution. Son mode de reproduction lui permet d'infecter tous types de supports: disques, disquettes, mémoire, cassettes... et de se propager à travers un réseau de communication. Son objectif principal est d'altérer et de modifier le comportement des programmes qu'il touche et des systèmes dans lesquels il sévit.
Un virus sous UNIX ne peut se propager qu'en exploitant les mauvais accès du système.. Il faudrait qu'il arrive à écrire dans un programme (permission d'écriture w), et ensuite que d'autres utilisateurs exécutent ce programme (permission d'exécution x) avec leurs propres privilèges. Pour ces raisons, il est très difficile de réaliser un virus sous UNIX. L'expérience de Tom Duff (AT&T Bell Laboratories) en 1987 l'a prouvé.
Les cheval de Troie
Un cheval de Troie, comme son étymologie le sous-entend, est conçu et fonctionne comme un virus, mais en se faisant passer pour un autre programme. Il porte le même nom qu'un programme utilitaire banal du système et si possible fréquemment utilisé (su, login, par exemple). Il donne à l'utilisateur l'impression de fonctionner normalement et réalise pendant son exécution toutes sortes d'opérations généralement dommageables pour le système.
Les vers ou worm
Un ver (worm) est un programme illicite autonome qui se reproduit tout seul avec une très grande rapidité. Le cas du ver de l'Internet du 3 novembre 1988 en est un exemple type, devenu un classique. L'objectif du ver est d'immobiliser à son profit le maximum de ressource de la machine, qui demeure dès lors difficilement utilisable.
Les passages secrets
Le passage secret est un moyen pour le concepteur ou le développeur d'un système de se réserver une voie accès pour s'introduire dans le système une fois ce dernier opérationnel. Ce n'est pas forcément néfaste, car il peut servir à dépanner, surveiller ou corriger le comportement du programme qui le contient. Les options debug, wiz dans les anciennes versions de sendmail en sont des exemples.
Les bombes logiques
Une bombe peut être considérée comme un cheval de Troie dont le rôle est de relâcher dans le système, à une date donnée ou après un événement particulier, le programme de type virus ou autre qu'il contient.
Les bacteries
Une bactérie est un programme qui, en se multipliant par copie d'elle-même, parvient à mobiliser la plus grande partie des ressources de la machine et à rendre cette dernière inutilisable.
Exemple :
#!/bin/sh
# Fichier : .bacterie
sleep 1
.bacterie &
.bacterie &
Il existe d'autres variétés de nuisibles plus ou moins apparentées aux infections informatiques présentées ici. Il n'y a pas de remèdes miracles, il existe toutefois quelques précautions et règles de base à respecter pour diminuer les risques de contamination:
Tableau sur la sécurité de divers sites
|
Type de site |
Nombre de sites visités |
Sites vulnérables (%) |
Graves problèmes de sécurité |
|
Banques |
660 |
68,33 |
35,61 |
|
Autres établissement de crédit |
274 |
51,09 |
20,44 |
|
Sites gouvernementaux |
47 |
61,70 |
38,30 |
|
Médias |
312 |
69,55 |
38,78 |
|
Sites pornographiques |
451 |
66,08 |
25,50 |
|
Totaux |
1734 |
64,94 |
31,08 |
|
Attaques au hasard |
169 |
33,05 |
17,27 |
Les quelques règles à respecter pour un Administrateur
Si obligé:
A. Rechercher des signes que votre système peut avoir été attaqué avec succès
À noter que toutes les actions entreprises au cours de la recherche des indices d'intrusion doivent être conformes à la politique et procédures de sécurité de votre organisation.
Par exemple, surveillez votre "last log", les processus de comptabilité système, tous les "logs" générés par syslog, et d'autres "logs" de sécurité. Si votre garde-barrière ou routeur envoie des "logs" dans un endroit autre que le système victime de l'attaque, n'oubliez pas de vérifier également ces "logs". Notez que ceci n'est pas fiable à toute épreuve car, à moins que l'enregistrement des "logs" ne soit permis qu'à la fin du fichier de stockage, beaucoup d'intrus éditent les fichiers de "logs" afin de cacher leur activité.
Les intrus laissent souvent des copies de /bin/sh ou /bin/time avec "setuid" afin d'avoir un accès "root" ultérieurement. La commande UNIX find (1) peut être utilisée pour rechercher des fichiers "setuid" ou "setgid". Par exemple, vous pouvez utiliser les commandes suivantes pour trouver des fichiers "setuid root" et "setgid kmem" sur tout le système de fichier:
find / -user root -perm -4000 -print
find / -group kmem -perm -2000 -print
Il est à noter que les exemples précédents recherchent sur toute l'arborescence de répertoire, y compris les systèmes de fichiers NFS/AFS montés. Certaines commandes find (1) supportent l'option "-xdev" pour éviter la recherche sur ces répertoires. Par exemple:
find / -user root -perm -4000 -print -xdev
Une autre façon de chercher les fichiers "setuid" est d'utiliser la commande ncheck (8) sur chaque partition de disque. Par exemple, utilisez la commande suivante pour rechercher les fichiers "setuid" et les fichiers spéciaux sur la partition /dev/rsd0g:
ncheck -s /dev/rsd0g
Testez les binaires de votre système afin d'être sûr qu'ils n'ont pas été modifiés.
Il s'est produit par le passé que des pirates ont réussi à modifier les programmes du système UNIX tels que login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync, n'importe quels binaires référencés dans /etc/inetd.conf, et autres programmes critiques réseau et système ou tout autres sous-programmes des librairies partageables de système. Comparez les versions sur votre système avec de bonnes copies telles que celles fournies sur les médias d'initialisation. Soyez circonspect vis à vis de vos copies de sauvegarde (backup); elles peuvent elles aussi contenir des chevaux de Troie.
Les programmes des chevaux de Troie peuvent produire les mêmes "checksum" standard et date que la version légitime. C'est pourquoi la commande UNIX standard sum (1) et les dates associés aux programmes ne sont pas suffisants pour déterminer si les programmes ont été remplacés. L'utilisation de cmp (1), MD5, Tripwire, et autres outils "checksum" cryptographiques est tout désignée pour détecter ces programmes de cheval de Troie, à condition que ces outils "checksum" eux-mêmes sont gardés dans un lieu sûr et ne sont pas modifiables par les intrus. En plus, vous pouvez peut-être envisager d'utiliser un outil (PGP, par exemple) afin de signer la sortie générée par MD5 ou Tripwire pour une référence future.
Les pirates peuvent utiliser un sniffeur pour capter les compte et mot de passe d'utilisateur. Pour information sur le sujet, voir l'avis CA-94:01 du CERT disponible à:
ftp://info.cert.org/pub/cert_advisories/CA-94:01.network.monitoring.attacks
Examinez tous les fichiers lancés par cron et at.
Les pirates peuvent laisser des portes dérobées (back doors) dans les fichiers lancés par cron ou soumis à at. Ces techniques peuvent permettre le retour des intrus sur le système (même après que vous pensez que vous aviez réussi à redresser votre système). Vérifiez bien aussi que tous les fichiers et programmes référencés (directement ou indirectement) par les "jobs cron et at", et les fichiers "job" eux-mêmes ne sont pas accessibles en écriture pour tout le monde.
Vérifiez les services non autorisés.
Examinez les additions ou modifications non autorisées dans le fichier /etc/inetd.conf. En particulier, recherchez les entrées qui exécutent un programme "shell" (par exemple, /bin/shell ou /bin/csh) et testez tous les programmes qui sont spécifiés dans /etc/inetd.conf pour vérifier qu'ils sont corrects et n'ont pas été remplacés par des programmes cheval de Troie.
Vérifiez également les services légitimes que vous avez désactivés dans /etc/inetd.conf. Les pirates peuvent réactiver un service que vous croyez avoir désactivé, ou remplacer le programme "inetd.conf" par un programme cheval de Troie.
Examinez le fichier /etc/passwd sur le système et vérifiez les modifications apportées au fichier.
En particulier, recherchez les créations de nouveaux comptes non autorisées, les comptes sans mot de passe, ou les changements d'UID (surtout UID 0) sur les comptes existants.
Vérifiez les entrées non autorisées dans vos fichiers de configuration système et réseau.
En particulier, recherchez le signe '+' et les noms de machines extérieures dans /etc/hosts.equiv, /etc/hosts.lpd, et dans tous les fichiers .rhosts (spécialement root, uucp, ftp, et autre compte système) sur le système. Ces fichiers doivent être protégés en écriture pour tout le monde. De plus, assurez-vous que ces fichiers existaient avant toute intrusion et n'ont pas été créés par un intrus.
Cherchez partout dans votre système des fichiers inhabituels ou cachés (fichiers dont le nom commemce par un point et ne sont normalement pas affichés par la commande ls)
car ils peuvent servir à cacher des outils et information (programmes de craquage des mots de passe, fichiers de mots de passe en provenance d'autres systèmes, etc.). Une technique commune sur les systèmes UNIX est de placer un répertoire caché dans un compte utilisateur avec un nom inhabituel, quelque chose comme '...' ou '.. ' (2points espace) ou '..^G' (2points control-G). Encore, une fois de plus, la commande find (1) peut être utilisée pour rechercher les fichiers cachés, par exemple:
find / -name ".. " -print -xdev
find / -name ".*" -print -xdev | cat -v
Des fichiers avec '.xx' ou '.mail' comme nom ont été également utilisés (c'est à dire des fichiers qui ressemblent à des fichiers normaux).
Examinez toutes les machines sur le réseau local lorsque vous recherchez des signes d'une intrusion
La plupart du temps, si une machine a été piratée, les autres sur le réseau l'ont été aussi. Ceci est spécialement vrai dans le cas des réseaux où tourne NIS et où les machines font mutuellement confiance, les uns aux autres, à travers l'usage des fichiers .rhosts ou /etc/hosts.equiv. Vérifiez donc toutes les machines avec lesquelles vos utilisateurs partagent des accès via .rhosts.
B. Consulter d'autres documents du CERT
Pour plus d'informations sur les types d'attaque qui ont été récemment rapportés au Centre de coordination du CERT et pour avoir la liste des nouveaux fichiers ou des mises à jour accessibles via FTP anonyme, voir:
ftp://info.cert.org/pub/cert_summaries
Si vous soupçonnez que votre système a été attaqué avec succès, suivez les instructions données dans "Steps for Recovering from a UNIX Root Compromise" disponible à:
ftp://info.cert.org/pub/tech_tips/root_compromise
Consultez aussi les autres fichiers appropriés dans le répertoire tech_tips.
Pour rapporter un incident de sécurité informatique au Centre de coordination du CERT, complétez et retournez une copie du formulaire "Incident Reporting Form" disponible à:
ftp://info.cert.org/pub/incident_reporting_form
Les informations dans le formulaire nous aident à fournir de meilleure assistance car elles nous permettent de mesurer l'ampleur de l'incident, de déterminer si l'incident est lié à d'autres incidents qui ont été rapportés, et d'identifier l'orientation dans les activités des intrus.
Où trouver des informations supplémentaires