Aller au contenu

« Attaque de Mitnick » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Hermes7979 (discuter | contributions)
→‎Voir aussi : Normalisation : Section === Notes et références === placée en fin de texte
Hermes7979 (discuter | contributions)
corr deux liens liens erronés
Ligne 104 : Ligne 104 :


==== Nota Bene ====
==== Nota Bene ====
''Des informations et des éléments techniques de cet article peuvent provenir d'articles des [[sites web]] suivants :''
''Des informations et éléments techniques de cet article sont développés dans les [[sites web]] francophones suivants'' ''':'''
[[Image:Virus.gif|right|190px]]
[[Image:Virus.gif|right|190px]]
{|
{|
Ligne 113 : Ligne 113 :
* ''[http://forum.malekal.com/index-des-menaces-programmes-malveillants-malwares-t17042.html Malekal.com (page Menaces malveillantes)]''
* ''[http://forum.malekal.com/index-des-menaces-programmes-malveillants-malwares-t17042.html Malekal.com (page Menaces malveillantes)]''
| valign="top" |
| valign="top" |
* ''[http://www.pearltrees.com/#search=informatique Pearltrees.com (Recherche de pages sur le thème de l'Informatique)]''
* ''[http://www.secuser.com/glossaire/index.htm Secuser.com (page Glossaire Sécurité informatique)]''
* ''[http://www.secuser.com/glossaire/index.htm Secuser.com (page Glossaire Sécurité informatique)]''
* ''[http://www.viruslist.com/fr/viruses/glossary Viruslist.com (page Glossaire Virus et maliciels)]''
* ''[http://www.viruslist.com/fr/viruses/glossary Viruslist.com (page Glossaire Virus et maliciels)]''
* ''[http://www4.gouv.qc.ca/FR/Portail/Citoyens/Evenements/proteger-identite-Internet/Pages/accueil.aspx Grand dictionnaire terminologique (GDT au Canada)]''
* ''[http://www.oqlf.gouv.qc.ca/ressources/bibliotheque/dictionnaires/Internet/Index/index.html Banque de terminologie du Québec (page Vocabulaire d'Internet)]''
* ''[http://www.oqlf.gouv.qc.ca/ressources/bibliotheque/dictionnaires/Internet/Index/index.html Vocabulaire d'Internet (Banque de terminologie du Québec - Canada)]''
|}
|}


=== Articles internes ===
=== Articles internes ===
* [[Usurpation d'adresse IP]]
* [[Attaque par déni de service]]
* [[Attaque par déni de service]]
* [[SYN flood]]
* [[SYN flood]]
* [[SYN cookie]]
* [[SYN cookie]]
* [[Transmission Control Protocol|TCP]]
* [[Transmission Control Protocol|TCP]]
* [[Usurpation d'adresse IP]]


=== Liens externes ===
=== Liens externes ===
Ligne 134 : Ligne 134 :
* {{fr}} [http://www.silicon.fr/dossier-arsenal-secret-nsa-92133.html Tout sur l’arsenal secret des espions de la NSA]
* {{fr}} [http://www.silicon.fr/dossier-arsenal-secret-nsa-92133.html Tout sur l’arsenal secret des espions de la NSA]
* {{fr}} [http://assiste.com/Zombie.html Des ordinateurs transformés en machines "Zombie"]
* {{fr}} [http://assiste.com/Zombie.html Des ordinateurs transformés en machines "Zombie"]

* {{fr}} [http://assiste.free.fr/Assiste/Comment.html Comment se protéger ?]
{{fr}} '''''[http://assiste.free.fr/Assiste/Comment.html Comment bien protéger l'utilisateur et son ordinateur ?] :'''''
[[Fichier:Monitor padlock.svg|left|90px]]
[[Fichier:Monitor padlock.svg|left|110px]]
{{ca}} [http://www4.gouv.qc.ca/FR/Portail/Citoyens/Evenements/proteger-identite-Internet/Pages/accueil.aspx Protéger son identité personnelle sur Internet]<br>
{{fr}} [http://www.malekal.com/2010/11/12/securiser-son-ordinateur-et-connaitre-les-menaces-2/ Sécuriser son ordinateur et connaître les menaces et infections]<br>
{{fr}} [http://www.malekal.com/2010/11/12/securiser-son-ordinateur-et-connaitre-les-menaces-2/ Sécuriser son ordinateur et connaître les menaces et infections]<br>
{{fr}} [https://support.google.com/chrome/answer/95617?p=ui_security_indicator&rd=1 Réaliser les bons réglages de paramètres sécurisants avant toute visite de sites Web]<br>
{{fr}} [http://assiste.free.fr/Assiste/Protection_du_navigateur_de_la_navigation_et_de_la_vie_privee.html Protéger le navigateur, la navigation et la vie privée (Tableau de synthèse)]<br>
{{fr}} [http://assiste.free.fr/Assiste/Protection_du_navigateur_de_la_navigation_et_de_la_vie_privee.html Protéger son navigateur, sa navigation et sa vie privée (Tableau de synthèse)]<br>
{{fr}} [https://support.google.com/chrome/answer/95617?p=ui_security_indicator&rd=1 Connaissance et réglages des paramètres sécurisants des sites Web]<br>
{{fr}} [https://fr.wikipedia.org/wiki/Liste_de_moteurs_de_recherche#Moteurs_de_recherche_Web_s.C3.A9curis.C3.A9s Recherches sécurisées sur pages de navigation privée]
{{fr}} [https://fr.wikipedia.org/wiki/Liste_de_moteurs_de_recherche#Moteurs_de_recherche_Web_s.C3.A9curis.C3.A9s Réaliser des recherches sécurisées sur pages de navigation privée]


=== Bibliographie ===
=== Bibliographie ===
Ligne 164 : Ligne 166 :
{|
{|
| valign="top" |
| valign="top" |
* [[Insécurité_du_système_d'information#Liste_des_risques|Insécurité du système d'information (liste des risques)]]
* [[Insécurité_du_système_d'information#Liste_des_risques|Insécurité du système d'information (liste de risques)]]
* [[Criminalité informatique]], [[Crimeware]]
* [[Criminalité informatique]], [[Crimeware]]
* [[Faille de sécurité informatique|Failles de sécurité]]
* [[Faille de sécurité informatique|Failles de sécurité]]
Ligne 182 : Ligne 184 :


{{Palette|Logiciel malveillant}}
{{Palette|Logiciel malveillant}}
{{Portail|informatique|sécurité informatique|logiciel|internet}}
{{Portail|Informatique|Sécurité informatique|logiciel|Internet}}


[[Catégorie:Sécurité informatique]]
[[Catégorie:Sécurité informatique]]

Version du 9 juillet 2014 à 05:45

L'attaque de Mitnick sur le réseau de Tsutomu Shimomura fait sûrement partie des cas d'intrusion les plus connus dans la sécurité informatique[1]. Elle était connue en théorie dans le milieu universitaire depuis la moitié des années 1980, mais jamais encore mise en pratique. Son côté inédit a donc fortement contribué à sa diffusion. Elle utilisait en réalité deux techniques distinctes: l'inondation de requêtes SYN et le vol de session TCP.

Cadre théorique

Identification d'une liaison de confiance

Pour mettre en œuvre l'attaque, il est nécessaire que la machine cible entretienne une liaison de confiance avec une autre machine, autrement dit, qu'il existe un hôte qui peut se connecter à la machine cible sans besoin d'authentification. L'IP spoofing consiste alors à abuser la machine cible en se faisant passer pour cet hôte de confiance en usurpant son adresse IP.

Dans la pratique, sur les stations de travail UNIX, cette liaison de confiance se fait à l'aide des fichiers /etc/hosts.equiv et .rhosts dans le répertoire principal de l'utilisateur. La syntaxe du fichier /etc/hosts.equiv édité par l'utilisateur root est la suivante :

site.equivalent.1
site.equivalent.2
site.equivalent.3

Dans ce cas, si quelqu'un tente de se connecter sur le site par rlogin, rsh ou rcp, le système vérifie si le message provient d'un site figurant dans /etc/hosts.equiv. Si c'est le cas, il inspecte alors le fichier /etc/passwd pour vérifier s'il possède un compte ayant le même nom d'utilisateur que l'utilisateur du système distant. Si la réponse est positive, l'accès distant est autorisé sans besoin de fournir le mot de passe du compte. Si l'utilisateur distant tente de se connecter sous un autre nom d'utilisateur, le fichier /etc/hosts.equiv ne sera pas consulté. Ce fichier n'est pas suffisant pour se connecter directement en tant que root.

La syntaxe du fichier .rhosts dans le répertoire principal d'un utilisateur est la suivante :

site.autorise.1 tux
site.autorise.2

Dans cet exemple, l'utilisateur tux a le droit de se connecter au compte à partir du site site.autorise.1. La deuxième ligne signifie que seul le même nom d'utilisateur que le propriétaire du fichier .rhosts aura le droit de se connecter à partir de site.autorise.2.

Prévoir le numéro de séquence

La partie la plus délicate de l'attaque réside sans doute dans la prédiction du numéro de séquence lors d'une demande de connexion TCP. L'établissement d'une connexion TCP se fait en trois temps :

  • le client envoie au serveur un paquet avec un drapeau SYN et un numéro de séquence initial (ISN : Initial Sequence Number)
  • le serveur renvoie alors au client un paquet avec un drapeau SYN|ACK de numéro de séquence et un numéro d'acquittement égal à
  • le client répond par un paquet avec un drapeau ACK de numéro de séquence et un numéro d'acquittement égal à

La connexion est alors établie. Le client et le serveur peuvent commencer à échanger des données.

Quand l'attaquant effectue la première étape de ce procédé, il va mettre l'adresse IP de l'hôte de confiance de la cible comme adresse source dans l'en-tête IP du paquet SYN. Mais quand la cible répond par un paquet SYN|ACK, ce dernier va être envoyé au véritable propriétaire de l'adresse à savoir l'hôte de confiance. L'attaquant ignore donc le numéro de séquence envoyé par la cible, or il en a besoin pour établir la connexion. En effet, s'il se trompe de numéro d'acquittement, la cible va envoyer un paquet RESET qui met fin à la procédure. C'est pour cette raison que cette attaque est qualifiée d'« attaque à l'aveugle ».

L'attaquant a donc besoin de prédire le numéro de séquence envoyé par la cible en fonction du numéro de séquence initiale du paquet qu'il a envoyé. Mais s'il arrive à deviner une plage de valeurs possibles, il peut éventuellement « inonder » la cible avec des paquets ACK et espérer que l'un des paquets aura le bon numéro d'acquittement. Si l'attaquant a déjà compromis une machine se trouvant sur le même réseau local que sa cible, il peut aussi par exemple effectuer un sniffing pour intercepter ce paquet et obtenir le bon numéro de séquence.

Rendre silencieux l'hôte de confiance

Arrivé à ce stade, il reste quand même un petit problème d'ordre pratique. Étant donné que la cible renvoie le paquet SYN/ACK à l'hôte de confiance et que ce dernier n'a pas fait de demande de connexion, il va envoyer à la cible un paquet RESET avortant la demande de connexion. L'attaquant doit donc répondre avant que ce paquet n'arrive à la cible. Or un problème se pose par exemple si ces deux sites se trouvent sur le même réseau local, mais pas l'attaquant, le temps de réponse de ce dernier sera probablement supérieur à celui de l'hôte de confiance. L'attaquant doit donc s'arranger pour que l'hôte de confiance ne puisse pas répondre au paquet envoyé par la cible.

L'attaquant va donc mettre hors service l'hôte de confiance pendant la durée de sa procédure de connexion à la cible. Il peut par exemple envoyer une grande quantité de paquets SYN à ce dernier, mais ne pas effectuer la dernière étape de la procédure de demande de connexion. L'hôte ne pourra plus alors traiter d'autres demandes de connexion pendant un certain temps, car toutes les ressources disponibles sont déjà occupées[2]. Cette attaque est appelée SYN flooding. À noter que l'attaquant n'est pas obligé de mettre sa véritable adresse IP dans les paquets envoyés pour pouvoir masquer ses traces.

                                      (hors service)
                                      ┌────────────┐
     ┌────────────┐       SYN/ACK     │    HOTE    │
     │   CIBLE    ╞════════>>═════════╡     de     │
     └─────┬──────┘                   │ CONFIANCE  │
           │                          └────────────┘
           │                                 │
           │                                 │
           │                        inondation de SYN
           │                                 │
           │                                 │
           │             SYN          ┌────────────┐
           └─────────────<<───────────┤ ATTAQUANT  │
                                      └────────────┘

Description de l'attaque

La date de l'attaque choisie par Mitnick à savoir le jour de Noël 1994 n'est pas anodine. Il peut ainsi être à peu près sûr que personne ne sera connecté au réseau cible lui donnant plus de latitude dans sa tentative d'intrusion. Il va d'abord se livrer à une collecte d'informations sur le réseau sur lequel il cherche à s'introduire. Il commence par sonder la machine ARIEL à l'aide de la commande UNIX finger à partir du site toad.com :

14:09:32 toad.com# finger -l @ARIEL

La commande finger permet de savoir qui est connecté au système, l'instant de connexion de la personne, l'instant de sa précédente connexion, l'endroit d'où elle se connecte, le temps durant lequel elle a été au repos, si la personne a un courrier. Il découvre alors qu'ARIEL est actuellement connecté à ASTARTE, RIMMON et OSIRIS.

Il sonde alors à son tour RIMMON et se renseigne en particulier sur le super-utilisateur root du système :

14:10:21 toad.com# finger -l @RIMMON
14:10:50 toad.com# finger -l root@RIMMON

Il inspecte enfin OSIRIS qui est la station de travail de Tsutomu Shimomura :

14:11:07 toad.com# finger -l @OSIRIS
14:11:38 toad.com# showmount -e OSIRIS
14:11:49 toad.com# rpcinfo -p OSIRIS
14:12:05 toad.com# finger -l root@OSIRIS

La commande showmount -e permet de savoir les systèmes de fichiers exportés avec Network File System sur le site. Les crackers s'intéressent surtout à ceux qui peuvent être lus et écrits par tout le monde. Tandis que la commande rpcinfo renseigne sur les services d'appel de procédures à distance (RPC) disponibles sur le système. Mitnick découvre en particulier qu'OSIRIS autorise la commande rsh. En se renseignant enfin avec finger, sur le super-utilisateur root, il découvre une connexion en provenance de RIMMON. Il suppose donc l'existence d'une liaison de confiance entre OSIRIS et RIMMON pour l'utilisateur root[3].

Mitnick va maintenant essayer de connaître le comportement du générateur de numéros de séquence TCP dOSIRIS. Pour cela il va lui envoyer vingt tentatives de connexion à partir du site apollo.it.luc.edu. Les numéros de séquence initiaux (Initial Sequence Number) étant incrémentés à chaque tentative de connexion. Afin de ne pas saturer le fil de connexions dOSIRIS, ce qui le mettrait hors service, un paquet RESET est envoyé en réponse à chaque paquet SYN/ACK envoyé par ce dernier. Il découvre ainsi que pour deux tentatives de connexion successives, la différence entre les numéros de séquence des paquets SYN/ACK envoyés par OSIRIS est de 128 000. Si est donc le numéro de séquence du dernier paquet SYN du groupe de paquet envoyé précédemment et celui du paquet SYN/ACK correspondant, sera le numéro de séquence du paquet SYN/ACK en réponse à un paquet SYN de numéro de séquence .

                                      (hors service)
                       (Nack+128 000)
     ┌────────────┐       SYN/ACK     ┌────────────┐
     │  OSIRIS    ╞════════>>═════════╡   RIMMON   │
     └─────┬──────┘                   │            │
           │                          │┌────┐┌────┐│
           │                          ││    ││    ││
           │                        inondation de SYN
           │                          ││    ││    ││
           │                          │└────┘└────┘│
           │          (Nsyn+1)        │            │
           │            SYN           │   APOLLO   │
           └────────────<<────────────┤  (Mitnick) │
                                      └────────────┘

Tous les ingrédients sont maintenant mis en place pour mettre en œuvre une attaque par spoofing. Mitnick commence par inonder de SYN le fil de connexions de RIMMON 14 secondes avant l'attaque principale mettant la machine dans l'incapacité de traiter d'autres connexions. À 14:18:36, il envoie ensuite à OSIRIS un paquet SYN de demande de connexion de numéro de séquence , mais dont l'adresse source de l'en-tête IP est celle de RIMMON. Il établit ensuite la connexion en envoyant un paquet ACK dont le numéro d'acquittement est . Pour OSIRIS, tout se passe de manière transparente comme si c'était l'utilisateur root de RIMMON qui avait fait une demande de connexion. Mitnick vient donc de prendre le contrôle d'une session TCP censée s'établir entre OSIRIS et RIMMON[4]. Ce dernier étant dans l'incapacité temporaire de répondre à des demandes de connexion.

Il ne reste plus alors à l'attaquant qu'à ouvrir une brèche sur OSIRIS lui permettant de l'explorer ultérieurement. Mitnick lui envoie alors la commande suivante :

14:18:37 [root@apollo /tmp]#rsh OSIRIS "echo + + >>/.rhosts"

Cette commande rajoute la ligne + + dans le fichier /.rhosts d'OSIRIS. Il en résulte que dorénavant OSIRIS accepte n'importe qui à se connecter en tant que root sur le système. Le système est maintenant compromis. Mitnick met alors fin à la connexion, car désormais il peut inspecter à sa guise la machine de Shimomura. Il libère enfin le fil de connexions de RIMMON en envoyant des paquets RESET pour ne pas éveiller le soupçon de quelqu'un qui essaierait de se connecter et qui ne pourrait pas.

Conclusion

Une fois la mise en œuvre pratique de cette technique exposée au grand public, elle a connu une large diffusion. D'autres hackers malveillants se sont alors chargés de coder des outils permettant d'automatiser l'attaque. L'utilisation de la technique s'est alors intensifiée. Seulement de nos jours, pour « inonder » le fil de connexions d'un serveur, il faut envoyer beaucoup plus de paquets SYN. De plus, le serveur peut bloquer le trafic provenant d'un hôte qui effectue de multiples demandes de connexion dans un laps de temps très court. Et enfin, un système de détection d'intrusion peut détecter de multiples demandes de sessions provenant d'un hôte qui renvoie systématiquement un RESET et avertir l'administrateur système sur le fait que quelqu'un essaie sûrement de deviner le comportement du générateur de numéro de séquence d'un site. Par ailleurs, le service, fingerd, sur lequel se base une partie de la recherche d'informations, a presque disparu à l'heure actuelle ; les rares distributions l'intégrant toujours ne l'activent pas.

Voir aussi

Notes et références

  1. Voir le courrier tsutomu@ariel.sdsc.edu posté par Tsutomu Shimomura dans le forum comp.security.misc datant du 25 janvier 1995
  2. Voir Attaque par déni de service
  3. RIMMON est plus précisément un serveur X pour OSIRIS qui est une station de travail sans disque. Les deux machines sont des SPARC tournant sous Solaris 1.
  4. La connexion se fait en fait de manière unilatérale, car Mitnick ne peut pas recevoir de paquets envoyés par OSIRIS.

Nota Bene

Des informations et éléments techniques de cet article sont développés dans les sites web francophones suivants :

Articles internes

Liens externes

(fr) Comment bien protéger l'utilisateur et son ordinateur ? :

(ca) Protéger son identité personnelle sur Internet
(fr) Sécuriser son ordinateur et connaître les menaces et infections
(fr) Réaliser les bons réglages de paramètres sécurisants avant toute visite de sites Web
(fr) Protéger son navigateur, sa navigation et sa vie privée (Tableau de synthèse)
(fr) Réaliser des recherches sécurisées sur pages de navigation privée

Bibliographie

Sur les autres projets Wikimedia :

  1. (ca) Office de la langue française, Dictionnaire d'Internet, de l'informatique, Publications du Québec,
  2. (fr) Kevin BEAVER, Combattre les Hackers - Collection de Poche Pour les Nuls, les Éditions First,
  3. (fr) Gessain A. et Manuguerra J.C., Les virus émergents - Collection « Que sais-je ? », P.U.France,
  4. (fr) Laurent Bloch et Christophe Wolfhugel, Sécurité informatique - Principes et méthode, Eyrolles,
  5. (fr) Dan GOOKIN, L'Ordinateur Essentiel pour les Nuls - Collection L'Essentiel pour les Nuls, First,

Articles connexes