---[ Phrack Magazine Volume 8, Numéro 54 ,25 décembre 1998, article 09 sur 12 -------------------------[ Détection d'OS distante par prise d'empreinte de pile TCP/IP --------[ Fyodor FingerPrintIRIX 6.2 - 6.3 # Merci a Lamont Granquist Cela dit simplement que l'empreinte de pile couvre la version IRIX version 6.2 a 6.4 et le commentaire précise que Lamont Grandquist m'a gentiment envoyé l'adresse IP ou l'empreinte de la machine IRIX testée. > TSeq(Class=i800) Cela veut dire que l'ISN a été classe dans "la classe i800". Ce qui veut dire que chaque nouveau numéro de séquence est plus grand d'un multiple de 800 que le précédant. > T1(DF=N%W=C000|EF2A%ACK=S++%Flags=AS%Ops=MNWNNT) Le test est nomme T1 (pour test1, intelligent non ?). Dans ce test on envoi un paquet SYN avec un paquet d'options a un port ouvert. DF=N veut dire que le bit "Don't fragment" (**NDT : Ne pas fragmenter) de la réponse ne doit pas être positionne. W=C000|EF2A veut dire que la taille de fenêtre annoncée dans la réponse doit être 0xC000 ou EF2A. ACK=S++ veut dire que l'accuse de réception reçu doit être notre numéro de séquence initial plus 1. Flags = AS veut dire que les flags ACK et SYN doivent être positionnes dans la réponse.Ops = MNWNNT veut dire que les options de la réponse doivent être (dans cet ordre): > T2(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=) Le Test 2 implique un NULL avec les mêmes options sur un port ouvert. Resp=Y veut dire que l'on doit avoir une réponse. Ops= veut dire qu'il ne doit y avoir aucune option inclue dans le paquet de réponse. Si on enlevait '%Ops=' alors n'importe quelle(s) option(s) conviendrai(en)t. > T3(Resp=Y%DF=N%W=400%ACK=S++%Flags=AS%Ops=M) Le Test 3 est un SYN|FIN|URG|PSH sans options a un port ouvert. > T4(DF=N%W=0%ACK=O%Flags=R%Ops=) C'est un ACK a un port ouvert. Notez qu'on a pas un Resp= ici. Ce qui signifie qu'une absence de réponse (due à une une perte de paquet sur le réseau ou un Firewall hostile) ne disqualifiera pas la reconnaissance aussi longtemps que tous les autres tests seront positifs. Nous faisons ca car virtuellement tous les OS enverront une réponse, donc une absence de réponse est généralement due aux conditions réseaux et non pas au système d'exploitation lui-même. Nous mettons le marqueur 'Resp' dans les tests 2 et 3 parce que certains OS ne répondent PAS ! > T5(DF=N%W=0%ACK=S++%Flags=AR%Ops=) > T6(DF=N%W=0%ACK=O%Flags=R%Ops=) > T7(DF=N%W=0%ACK=S%Flags=AR%Ops=) Ces tests sont respectivement des paquets SYN, ACK, et FIN|PSH|URG sur un port ferme. Les mêmes options sont toujours positionnées. Bien sur c'est probablement évident étant donne les noms descriptifs 'T5', 'T6', et 'T7' :). > PU(DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) Celui la (**NDT : J'ai hésité a traduire 'this big sucker' littéralement ;) est le test du message 'port inaccessible'. Vous devriez reconnaître ld DF=N maintenant. TOS=0 veut dire que le type de service IP a pour valeur 0. les 2 champs suivants donnent la valeur hexadécimale des champs IP 'longueur totale' de l'entête des messages émis et renvoyés. RID=E veut dire que la valeur RID que nous obtenons en retour dans la copie de notre message UDP original est celle attendue (c'est dire la même que celle envoyée).RPICK=E veut dire qu'on a pas massacre la somme de contrôle (si on voulait que ca soit le cas on aurait écrit RIPCK=F) UCK=E veut dire que la somme de contrôle UDP est aussi correcte. Ensuite vient la longueur UDP qui est 0x134 et DAT=E veut dire qu'ils ont reproduit les données UDP correctement. Comme la plupart des implémentations (celle ci inclue) ne renvoient pas les données UDP, ils ont DAT=E par défaut. La version de Nmap avec cette fonctionnalité est actuellement dans son 6° cycle de bêta privée. Elle pourrait être disponible au moment ou vous lirez cet article dans Phrack. Mais encore une fois, elle pourrait ne pas être. Voyez http://www.insecure.org/nmap/ pour la dernière version. ----[ INSTANTANE DE SITES CELEBRES Voilà la partie amusante de tous nos efforts. Nous pouvons maintenant prendre des sites Internet au hasard et déterminer quel OS ils utilisent. Beaucoup de ces gens ont éliminé les bannières telnet, etc... pour garder ces informations privées. Mais cela est sans effet avec notre nouveau preneur d'empreinte ! C'est aussi un bon moyen pour montrer les utilisateurs de comme les lamers qu'ils sont :)! La commande utilisée dans ces exemples était: nmap -sS -p 80 -O -v Il faut aussi noter que la plupart de ces scans on été fait le 18/10/98. Quelques personnes ont pu changer/faire évoluer leurs serveurs depuis. Notez que je n'aime pas tous les sites de cette liste. # Sites de "Hacker" ou (dans quelques cas) sites de personnes se prenant pour des Hackers. www.l0pht.com = OpenBSD 2.2 - 2.4 www.insecure.org = Linux 2.0.31-34 www.rhino9.ml.org = Windows 95/NT # Pas de commentaires :) www.technotronic.com = Linux 2.0.31-34 www.nmrc.org = FreeBSD 2.2.6 - 3.0 www.cultdeadcow.com = OpenBSD 2.2 - 2.4 www.kevinmitnick.com = Linux 2.0.31-34 # Liberez Kevin! www.2600.com = FreeBSD 2.2.6 - 3.0 Bêta www.antionline.com = FreeBSD 2.2.6 - 3.0 Bêta www.rootshell.com = Linux 2.0.35 # Ils sont passes à OpenBSD # après avoir été hacké # Vendeurs en Sécurité, Consultants, etc. www.repsec.com = Linux 2.0.35 www.iss.net = Linux 2.0.31-34 www.checkpoint.com = Solaris 2.5 - 2.51 www.infowar.com = Win95/NT # Vendeurs loyaux à leur OS www.li.org = Linux 2.0.35 # Linux International www.redhat.com = Linux 2.0.31-34 # Je me demande # quelle distribution :) www.debian.org = Linux 2.0.35 www.linux.org = Linux 2.1.122 - 2.1.126 www.sgi.com = IRIX 6.2 - 6.4 www.netbsd.org = NetBSD 1.3X www.openbsd.org = Solaris 2.6 # Hem :) www.freebsd.org = FreeBSD 2.2.6-3.0 Bêta # Ivy league www.harvard.edu = Solaris 2.6 www.yale.edu = Solaris 2.5 - 2.51 www.caltech.edu = SunOS 4.1.2-4.1.4 # Coucou ! on est dans les années 90 :) www.stanford.edu = Solaris 2.6 www.mit.edu = Solaris 2.5 - 2.51 # Coïncidence que # beaucoup de grande # écoles semblent aimer SUN? # Peut être est-ce # du à la réduction # de 40% aux .edu :) www.berkeley.edu = UNIX OSF1 V 4.0,4.0B,4.0D www.oxford.edu = Linux 2.0.33-34 # Rock on! # Lamer sites www.aol.com = IRIX 6.2 - 6.4 # On ne se demande plus pourquoi # ils sont si insécurisés :) www.happyhacker.org = OpenBSD 2.2-2.4 # Fatigué d'être hacké , Carolyn ? # Même l'OS le plus sur est # inutile entre les mains # d'un administrateur incompétent. # Divers www.lwn.net = Linux 2.0.31-34 # Ce nouveau site Linux est géant! www.slashdot.org = Linux 2.1.122 - 2.1.126 www.whitehouse.gov = IRIX 5.3 sunsite.unc.edu = Solaris 2.6 Notes: Dans leur White paper sur la sécurité, Microsoft dit au sujet de sécurité laxiste : "Cet état de fait a change ces dernières années comme Windows NT gagnait en popularité largement à cause de ces possibilités en matière de sécurité.". Hmm, d'où je suis, il ne me semble pas que windows soit très populaire dans la communauté de la sécurité :) .Je vois seulement 2 machines Windows dans l'ensemble du groupe, et Windows est _Facile_ a distinguer pour Nmap à cause de ses défauts. Et bien sur, il y a un site de plus que nous devons vérifier. C'est le site web de l'ultra-secrète société Transmeta. Il est intéressant de noter que cette compagnie a été fondée par Paul Allen de Microsoft, mais emploi Linus Torvalds. Donc, sont ils plutôt Paul et utilisent NT ou sont ils du côté des rebelles et et rejoignent la révolution Linux ? Voyons voir : Nous utilisons la commande : nmap -sS -F -o transmeta.log -v -O www.transmeta.com/24 Cela veut dire SYN scan pour des ports connus (à partir du fichier /etc/services) , enregistrement des résultats dans 'transmeta.log', en étant 'verbeux', faire un scan d'OS, et scanner les adresses de classe 'C' de www.transmeta.com. Voici l'essentiel des résultats : neon-best.transmeta.com (206.184.214.10) = Linux 2.0.33-34 www.transmeta.com (206.184.214.11) = Linux 2.0.30 neosilicon.transmeta.com (206.184.214.14) = Linux 2.0.33-34 ssl.transmeta.com (206.184.214.15) = Linux version inconnu linux.kernel.org (206.184.214.34) = Linux 2.0.35 www.linuxbase.org (206.184.214.35) = Linux 2.0.35 # (peut être la même machine qu'au dessus) Bon, je crois que ca répond à notre question plutôt clairement :) . ----[ REMERCIEMENTS La seule raison pour laquelle Nmap est actuellement capable de détecter autant de systèmes d'exploitations est que beaucoup de personnes dans l'équipe de la bêta privée ont dépensé beaucoup d'effort a chercher de nouvelles et excitantes machines pour prendre leur empreinte ! En particulier Jan Koum, van Hauser, Dmess0r, David O'Brien, James W. Abendschan, Solar Designer, Chris Wilson, Stuart Stock, Mea Culpa, Lamont Granquist, Dr. Who, Jordan Ritter, Brett Eldridge, et Pluvius ont envoyés des tonnes d'adresses IP de machines et/ou d'empreintes de machines inaccessibles par Internet. Merci a Richard Stallman d'avoir écrit GNU Emacs. Cet article n'aurait pas été si bien formaté si j'avais utilise vi ou cat et ^D. (**NDT : Effectivement l'article était particulièrement bien présenté avant que je ne massacre la mise en page avec WordPad :( ) Questions et commentaires peuvent être envoyés à fyodor@DHP.com (si ca ne marche pas pour une raison quelconque, utiliser fyodor@insecure.org). Nmap peut être obtenu à http://www.insecure.org/nmap ----[ TRADUCTION FRANCAIS : 28/02/99 Arhuman (arhuman@francemel.com) pour Galaad (http://galaad.deserens.org) ----[ EOF