web-dev-qa-db-fra.com

Comment fonctionne la "traceroute sur TCP", quels sont les risques et comment peut-elle être atténuée?

Il existe un utilitaire appelé tcptraceroute , et cette amélioration appelée intrace qui est utilisé comme un traceroute standard, mais il fonctionne sur TCP.

  • Comment le drapeau syn dans TCP est utilisé pour obtenir des fonctionnalités de type traceroute (lorsque ICMP est désactivé)

  • Quelles informations peuvent être divulguées (ou autres risques)?

  • Comment cela peut-il être atténué? (routeurs, hôtes, ... les deux?)

Cela a été décrit comme similaire à la commande nmap lorsque le drapeau -sS est passé. Si cela est exact, qu'est-ce que cela signifie réellement?

24
goodguys_activate

Tous les outils de traçage reposent sur le principe suivant: ils envoient des paquets avec une courte durée de vie et attendent les paquets ICMP signalant la mort de ces paquets. Un paquet IP a un champ appelé "TTL" (comme "Time To Live") qui est décrémenté à chaque saut; lorsqu'il atteint 0, le paquet meurt et le routeur sur lequel cela se produit est censé renvoyer un message ICMP "Time Exceeded" . Ce message ICMP contient l'adresse IP dudit routeur, la révélant ainsi.

Aucun des outils auxquels vous vous connectez ne peut faire quoi que ce soit si un pare-feu bloque les paquets ICMP "Time Exceeded". Cependant, le blocage de ces paquets a tendance à casser Internet (car les hôtes modifient de manière adaptative le TTL dans les paquets qu'ils envoient afin de faire face aux longs chemins d'accès au réseau, et ils ont besoin de ces ICMP pour ce processus), ainsi, sur une base générale, les paquets ICMP "Time Exceeded" ne sont pas bloqués.

Ce qui est souvent bloqué , cependant, c'est le type de paquets de courte durée que traceroute envoie. Ce sont les paquets avec le TTL artificiellement bas. S'ils sont bloqués par un pare-feu, ils ne meurent jamais "de vieillesse", et donc pas de temps dépassé ICMP. Pour le traitement TTL et l'ICMP "Time Exceeded", le type de paquet n'a pas d'importance; cela se produit au niveau IP. Mais les pare-feu examinent également le contenu des paquets. Le but est de tromper les pare-feu afin qu'ils permettent au paquet de courte durée de circuler (puis de mourir).

Plain traceroute utilise soit des paquets UDP, soit des paquets ICMP "Echo", les deux types étant systématiquement bloqués par des administrateurs système (sur) zélés. tcptraceroute utilise à la place un paquet TCP "SYN", c'est-à-dire le type de paquet qui se produirait comme première étape dans le TCP "Poignée de main à trois voies". Ce type de paquet n'est généralement pas bloqué par le pare-feu, au moins tant que le port de destination est "autorisé". tcptraceroute ne terminera aucun TCP poignée de main; il repose simplement sur l'idée que les paquets SYN ne sont pas tirés à vue par les pare-feu.

intrace va encore plus loin en ce qu'elle attend une existante TCP (elle le fait en inspectant tous les paquets, à la tcpdump). Lorsqu'il voit une connexion et que l'utilisateur appuie sur ENTRÉE, intrace enverra des paquets de courte durée qui apparaissent comme faisant partie de la connexion observée. intrace peut le faire car il a vu les paquets et connaît donc les adresses IP, les ports et les numéros de séquence. Tous les pare-feu appropriés laisseront passer ces paquets, car ils (évidemment) autorisent le TCP connexion pour continuer. Les paquets de courte durée sont ajustés de manière à ne pas perturber la connexion TCP (c.-à-d. ce sont de simples paquets "ACK" sans données par eux-mêmes, le système d'exploitation de destination les ignorera simplement).


Edit: Je remarque que je n'ai pas répondu à une partie de la question. Et voilà: il n'y a aucun risque. Il n'y a rien à atténuer.

traceroute révèle les adresses IP des routeurs impliqués dans le routage des paquets. Les adresses IP ne sont pas censées être secrètes et sont plutôt faciles à obtenir pour les attaquants par divers moyens (l'analyse de masse vient à l'esprit, mais aussi la recherche de sacs poubelles pour les impressions de cartes réseau - la mode moderne de recyclage rend la plongée dans les bennes à ordures beaucoup plus facile et activité plus propre que par le passé). Cependant, un mythe relativement répandu est que garder vos adresses secrètes assure en quelque sorte la sécurité. En conséquence, de nombreux administrateurs système considèrent traceroute comme une violation grave, à corriger et à bloquer dès que possible. En pratique, cependant, tout cela n'est que de l'argent. Si révéler quelques adresses IP internes est un problème majeur, cela signifie que votre réseau est condamné.

S'inquiéter de la confidentialité des adresses IP, c'est comme déclencher un plan de réponse aux incidents majeurs, car un étranger a appris le menu à la cafétéria de l'entreprise. C'est disproportionné. Certes, une connaissance précise et approfondie de l'infrastructure réseau ne peut qu'aider les attaquants; mais pas en quantités vraiment importantes. Garder les adresses IP secrètes ne vaut pas la peine de rompre la connectivité par un filtrage excessif (par exemple, bloquer la "fragmentation requise" ICMP est mortel pour tout client derrière une liaison ADSL + PPPoE).

44
Thomas Pornin

Traceroute et tcptraceroute fonctionnent sur le même principe de base:

  1. Envoyer un paquet avec un TTL vraiment bas
  2. Voir qui renvoie un ICMP TTL dépassé à TTL expiration
  3. Si l'expéditeur est la destination, arrêtez
  4. Sinon, incrémentez le TTL de 1 et revenez à l'étape # 1

La seule différence est le type de paquet envoyé (par défaut UDP sous Linux, ICMP sous Windows et TCP devient une option plus populaire). Tous généreront des messages d'erreur ICMP à partir de périphériques utiles entre les deux lorsque le TTL expire.

  • En tant que tel, il n'y a rien de spécial dans le paquet UDP/ICMP/TCP qui le rend traceroute-y. L'indicateur SYN est utilisé car les périphériques intervenant comme les pare-feu autorisent souvent SYN mais bloquent les autres paquets TCP qui ne font pas partie d'une connexion établie.
  • Les mêmes informations sont fournies que pour la traceroute régulière, mais peuvent être plus susceptibles d'être autorisées que pour la traceroute régulière. Prenez un site Web comme Amazon.com. La traceroute basée sur UDP s'arrête au 205.251.248.5, qui est probablement un pare-feu en quelque sorte. La traceroute basée sur TCP vers le port 80 - que nous savons que "Amazon.com" autorise - va encore plus loin en 72.21.194.212.
  • Traceroute peut être atténué en n'autorisant pas les paquets ou en bloquant les réponses ICMP. Le premier est la raison pour laquelle tcptraceroute est devenu plus populaire; tout site qui autorise la connectivité sur au moins un TCP - comme un site Web - autorise les paquets à entrer. Le blocage des réponses ICMP a pour effet secondaire de briser les principes fondamentaux du réseau IP, qui varient de légèrement impolis. à follement contre-productif.

nmap -sS effectuera un scan SYN, où seuls les paquets SYN sont envoyés. Cependant, il n'effectuera pas de traceroute en soi; vous devez le combiner avec l'option --traceroute (et je pense que vous êtes toujours en train de numériser, pas seulement d'effectuer un traceroute, donc si vous voulez tracer, je recommande tcptraceroute ou traceroute -T si votre système d'exploitation le prend en charge).

7
gowenfawr
  • Comment est le drapeau syn dans TCP utilisé pour obtenir une fonctionnalité de type traceroute (lorsque ICMP est désactivé)

Tout paquet IP déclenchera une réponse ICMP "Time Exceeded" d'un routeur intermédiaire lorsque la valeur TTL atteint zéro. Cela peut être TCP, UDP, ICMP ou tout autre. Tant que les routeurs intermédiaires passera le paquet, la trace fonctionnera. Le traceroute traditionnel utilise les requêtes d'écho ICMP, mais c'est juste par convention.

Notez que si ICMP est autorisé ou non sur le serveur de destination est tout à fait hors de propos comme ce sont les routeurs intermédiaires qui renvoient les réponses Time Exceeded. La seule chose que vous pourriez manquer est une réponse de l'hôte de destination finale, mais avec traceroute qui est la réponse la moins importante, car ce que traceroute vous fournit est la liste des routeurs intermédiaires.

L'utilisation d'un indicateur SYN sur le paquet TCP vous obtiendra potentiellement un SYN/ACK du serveur de destination, ou peut-être pas, si le port n'est pas ouvert ou si une politique bloque votre paquet. Mais encore une fois , le serveur de destination est le moins important. Vous pouvez tout aussi facilement envoyer un UDP ou une suite TCP si tout ce qui vous intéressait était la liste de sauts).

Certains routeurs sont configurés pour traiter différemment les paquets PING; itinéraire différent, priorité différente, etc. L'utilisation de TCP paquets à la place peut vous donner des résultats différents qui devraient être plus représentatifs de l'itinéraire TCP le trafic prendrait).

  • Quelles informations peuvent être divulguées (ou autres risques)?

Rien qui n'est pas public. Si votre sécurité dépend de la confidentialité de ce type d'informations, vous devez vous asseoir et reconsidérer les décisions qui vous ont amené ici.

  • Comment cela peut-il être atténué? (routeurs, hôtes, ... les deux?)

Il n'y a rien à atténuer. Bien sûr, vous pouvez toujours débrancher votre serveur, ce qui atténuera toutes sortes de choses. Sinon, avant d'utiliser une stratégie d'atténuation, vous devez considérer ce que vous gagnez et ce que vous abandonnez. Dans ce cas, il ne semble pas que vous ayez quelque chose à gagner.

2
tylerl