TCP/IP et la sécurité


Pour communiquer, le protocole TCP/IP utilise des numéros de séquence, pour gérer le suivi des connexions. Si ces numéros sont prévisibles, alors, la machine en question est facilement "spoofable", i.e. une machine étrangère peut prendre sa place vis-a-vis des autres machines du réseau.

Le tableau suivant récapitule la réaction de différents OS, et présente sous forme graphique les numéros de séquences. Il affiche sous forme de points les réponses des machines, l'abcisse s'incrémentant avec le temps, l'ordonnée représentant le numéro de séquence.

Le programme génère aussi des statistiques, notamment le nombre de duplications d'un numéro donné, le nombre de duplications de la différence entre 2 séquences données, et enfin le mini et le maxi de ces mêmes numéros. ( si le paquet a été unique, il n'est pas affiché)

Les statistiques ont été effectuées avec 25 000 paquets, sur le port SSH des machines qui le gèrent - toutes sauf les MIPS -, sinon, sur le port ECHO.

N.B. l'échelle graphique est autoadaptative pour l'échelle des ordonnées; donc l'écran peut être complètement rempli sans pour autant que les numéros de séquences se dispersent régulièrement de 0 à 4 000 000 000.
 
Résultats des tests
OS  Test conclusion
NetBSD 1.4
(jessica)

stats: min_seq=639 136 max_seq=4 293 241 496
  • très bonne distribution des numéros
  • la présence de lignes sur le graphique indique un système spoofable; bien que difficilement, puisque sur 25 000 paquets, on n'a pas eu plus de 3 doublons.
  • SunOS 5.7
    (air.lse)

    stats: min_seq=56 873 max_seq=4 294 909 776
  • mêmes remarques que précédemment
  • Linux 2.2.13
    (fasty.lse)

    stats: min_seq=3 932 159 710 max_seq=3 991 365 876
  • le graphique en forme de nuage de points indique une très bonne randomisation des numéros
  • à noter cependant la faible ouverture: environ 60 000 000.
  • Digital UNIX
    (solaria)

    stats: min_seq=91 836 378 max_seq=1 315 412 207
  • les lignes indiquent un système facilement spoofable
  • à noter que les différences entre 2 paquets successifs se situent toutes autours de 64 000. ( système 64k)
  • cette machine est facilement spoofable.
  • RISC/os
    (freon)

    stats: min_seq=96 384 000 max_seq=1 476 928 000
  • mêmes remarques
  • à noter que là, les différences sont toutes égales à 64 000 ( 20 229 / 25 000)
  • cette machine est trivialement spoofable.
  • Windows ??
    stats: min_seq=7 489 967 max_seq=7 521 454
  • noter l'ouverture ridicule: 32 000
  • noter aussi les 3 597 deltas nuls: l'OS réutilise le même numéro de séquence (!).
  • le delta maxi est de 6.
  • cette machine est aussi trivialement spoofable.
  • Quelques remarques:

  • les tests ont été réalisés à partir d'un NetBSD; les premiers essais sur mon Linux ont entrainé le crash de 2 machines; apparamment sous Linux, le TCP/RST n'est pas transmis après le TCP/SYN, ce qui fait un SYN flood; les NetBSD n'apprécient pas du tout ( reboot immediat ).
  • par contre, le SunOS gère correctement, et signale dans les logs une possible attaque SYN flood sur le port en question, sans pour autant le désactiver. ( une connection reste possible).
  • Je n'ai pas testé sur les autres machines.
  • Je ne connais pas le type du Windows testé.
     
    programmes de test réalisés par  Vianney RANCUREL
    tests & page réalisés dans le cadre du LSE par  Nicolas MAWART