Votre réseau est l’épine dorsale des activités de votre entreprise. Assurez-vous de savoir ce qui s’y passe.
À bien des égards, le paysage des entreprises numériques a connu une ou deux révolutions. Ce qui a commencé par de simples scripts CGI écrits en Perl s’est transformé en déploiements en cluster entièrement automatisés sur Kubernetes et d’autres frameworks d’orchestration (désolé pour le jargon lourd – je ne l’invente pas du tout ; c’est juste la façon dont les choses se passent de nos jours !)
Mais je ne peux m’empêcher de sourire en pensant que les principes fondamentaux sont toujours les mêmes que dans les années 1970.
Tout ce que nous avons, ce sont des abstractions sur des abstractions soutenues par des câbles physiques qui forment le réseau (d’accord, il y a aussi des réseaux virtuels, mais vous voyez l’idée). Si nous voulons faire preuve de fantaisie, nous pouvons diviser le réseau en couches selon le modèle OSI, mais tout ce qui est dit et fait, c’est que nous avons toujours, toujours affaire à des protocoles TCP/IP (attention, lecture difficile en perspective !), à des pings, à des routeurs, qui ont tous un objectif en commun : la transmission de paquets de données.
Qu’est-ce qu’un paquet réseau ?
Peu importe ce que nous faisons – bavardage, streaming vidéo, jeux, surf, achats – il s’agit essentiellement d’un échange de paquets de données entre deux ordinateurs (réseaux). Un “paquet” est la plus petite unité d’information circulant dans un réseau (ou entre des réseaux), et il existe une méthode bien définie de construction et de vérification des paquets réseau (qui dépasse le cadre de cet article, mais si vous vous sentez d’humeur aventureuse, voici plus d’informations).
En termes plus simples, chaque paquet représente un maillon de la chaîne, et est correctement transmis à la source et validé à la destination. Même si un seul paquet arrive dans le désordre, le processus est suspendu jusqu’à ce que tous les paquets dans le bon ordre aient été reçus, et ce n’est qu’alors qu’ils sont assemblés pour former les données qu’ils représentaient à l’origine (une image, par exemple).
Maintenant que nous savons ce qu’est un réseau, il convient de comprendre ce que fait un analyseur de réseau. Il s’agit d’un outil qui vous permet de jeter un coup d’œil sur les paquets individuels de votre réseau.
Mais pourquoi voudriez-vous vous donner cette peine ? C’est ce que nous allons voir maintenant.
Pourquoi devons-nous analyser les paquets ?
Il semble que les paquets soient les éléments de base du flux de données d’un réseau, tout comme les atomes sont la base de toute matière (oui, je sais, ce ne sont pas de vraies particules fondamentales, mais l’analogie est suffisamment bonne pour nos besoins). Lorsqu’il s’agit d’analyser des matériaux ou des gaz, nous ne nous préoccupons jamais de ce que fait un atome individuel ; alors pourquoi se préoccuper d’un seul paquet réseau au niveau individuel ? Que pouvons-nous savoir d’autre que ce que nous savons déjà ?
Il est difficile de faire comprendre l’importance de l’analyse au niveau des paquets lorsque vous n’avez jamais été mordu dans le dos auparavant, mais je vais essayer.
L’analyse des paquets implique de se salir les mains et d’aller jusqu’au bout de la plomberie pour comprendre quelque chose. En général, vous devez analyser les paquets du réseau lorsque tout le reste a échoué. Il s’agit généralement de scénarios apparemment sans espoir, tels que les suivants :
- Perte inexplicable de données secrètes alors qu’il n’y a pas de violation évidente
- Diagnostic d’applications lentes alors qu’il ne semble y avoir aucune preuve
- S’assurer que votre ordinateur/réseau n’a pas été compromis
- Prouver ou infirmer qu’un attaquant n’est pas en train de se bran cher sur votre WiFi
- Comprendre pourquoi votre serveur est le goulot d’étranglement malgré un faible trafic
Dans l’ensemble, l’analyse des paquets relève de certains types de preuves tangibles. Si vous savez comment effectuer une analyse des paquets et que vous disposez d’un instantané, vous pouvez éviter d’être accusé à tort d’un piratage ou simplement d’être considéré comme un développeur ou un administrateur de réseau incompétent.
En ce qui concerne une histoire réelle, je pense que ce commentaire sur l’article de blog trouvé ici est exceptionnel (reproduit ici au cas où) :
Une application critique pour mon entreprise présentait des problèmes de performance et tombait en panne lors des déploiements chez les clients. Il s’agissait d’une application de tarification des actions utilisée à la tête des installations de téléscripteurs dans les sociétés financières du monde entier. Si vous aviez un plan 401(k) vers 2000, il dépendait probablement de cette application. J’ai effectué des analyses du type de celles que vous avez décrites, en particulier sur le comportement des TCP. J’ai identifié le problème dans l’implémentation de TCP par le fournisseur du système d’exploitation. Le comportement bogué était que chaque fois que la pile d’envoi passait en contrôle de congestion, elle ne se rétablissait jamais. Il en résultait une fenêtre d’envoi comiquement petite, parfois juste quelques multiples de MSS.
Il a fallu un certain temps pour se battre avec les responsables de compte et les développeurs du fournisseur du système d’exploitation qui ne comprenaient pas le problème, mon explication, ou le fait que le problème ne pouvait pas être dans l’application parce que l’application ignore complètement les machinations de TCP. C’était comme parler à un mur. J’ai recommencé à zéro à chaque conférence téléphonique. J’ai fini par avoir un interlocuteur avec qui j’ai pu avoir une bonne discussion. Il s’est avéré qu’il avait intégré les extensions de la RFC1323 dans la pile ! Le lendemain, j’avais entre les mains un correctif pour le système d’exploitation et le produit fonctionnait parfaitement à partir de ce moment-là.
Le développeur a expliqué qu’il y avait un bogue qui faisait que les ACK entrants *avec des charges utiles* étaient mal classés en tant que DUPACKs lorsque la pile était en contrôle de congestion.
Cela ne se produirait jamais avec des applications half-duplex comme HTTP, mais l’application que je supportais envoyait des données de manière bidirectionnelle sur le socket à tout moment.
Je n’avais pas beaucoup de soutien de la part de la direction à l’époque (mon directeur m’a même reproché de “toujours vouloir utiliser un renifleur” pour résoudre les problèmes), et personne d’autre que moi ne considérait l’implémentation TCP du fournisseur du système d’exploitation comme la source du problème. Le fait d’avoir obtenu par moi-même la correction du fournisseur du système d’exploitation a rendu cette victoire particulièrement agréable, m’a permis de disposer d’un capital considérable pour faire mon propre travail et m’a amené à rencontrer les problèmes les plus intéressants sur mon bureau.
Au cas où vous n’auriez pas envie de lire ce pavé de texte, ou si cela n’avait pas beaucoup de sens, cet homme était confronté à des problèmes de performance qui étaient imputés à son application, et la direction, comme on pouvait s’y attendre, ne lui apportait aucun soutien. Seule une analyse approfondie des paquets a prouvé que le problème ne venait pas de l’application, mais de la manière dont le système d’exploitation traitait le protocole de réseau !
La solution n’était pas une mise au point de l’application, mais un correctif apporté par les développeurs du système d’exploitation 😮
Bon sang, bon sang… Sans l’analyse au niveau des paquets, où pensez-vous que cette personne se trouverait ? Probablement au chômage. Si cela ne vous convainc pas de l’importance de l’analyse des paquets (également appelée reniflage de paquets), je ne sais pas ce qui le fera 🙂
Maintenant que vous savez que l’analyse des paquets est un superpouvoir, j’ai une bonne nouvelle : il n’est pas si difficile de le faire !
Grâce à des outils de reniflage de paquets puissants mais simples à utiliser, il peut être aussi facile de glaner des informations à partir de l’analyse des paquets que de lire un tableau de bord des ventes. Cela dit, il vous faudra un peu plus qu’une connaissance superficielle de ce qui se passe à l’intérieur d’un réseau. Mais là encore, il n’y a pas de science infuse, pas de logique tordue à maîtriser – juste du bon sens.
Si vous commencez à lire la documentation de l’un de ces outils au fur et à mesure que vous l’utilisez sur votre réseau, vous deviendrez rapidement un expert
Wireshark
Wireshark est un vieux projet (il a été lancé en 1998) qui est pratiquement la norme de l’industrie lorsqu’il s’agit de pénétrer en profondeur dans les réseaux. C’est impressionnant quand on sait qu’il s’agit d’une organisation purement bénévole, soutenue par quelques généreux sponsors. Wireshark reste open-source (pas sur GitHub, mais le code peut être trouvé ici) et a même une conférence technique à son nom !
Parmi les nombreuses fonctionnalités de Wireshark, on peut citer
- Prise en charge de centaines de protocoles réseau.
- Interopérabilité avec de nombreux formats de fichiers (tcpdump (libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, Microsoft Network Monitor, Network General Sniffer® (compressé et non compressé), Sniffer® Pro, NetXray®, etc.)
- Fonctionne sur pratiquement toutes les plateformes existantes (Linux, Windows, macOS, Solaris, FreeBSD, etc.).
- Lecture de données en direct à partir d’Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetooth, USB, Token Ring, entre autres.
- Décompression gzip à la volée.
- Prise en charge de nombreux protocoles de décryptage (WPA/WPA2, SNMPv3, etc.)
- Analyse approfondie de la VoIP
- Règles de coloration pour une analyse visuelle plus rapide
Vous cherchez Wireshark dans votre terminal ? Bien sûr, essayez Termshark
tcpdump
Si vous êtes de la vieille école (c’est-à-dire un accro de la ligne de commande), tcpdump est fait pour vous.
C’est un autre de ces utilitaires Linux emblématiques (comme curl) qui reste plus que jamais d’actualité, à tel point que presque tous les autres outils “plus sophistiqués” s’appuient sur lui. Comme je l’ai dit précédemment, il n’y a pas d’environnement graphique, mais l’outil compense largement.
Mais l’installer peut s’avérer pénible ; bien que tcpdump soit fourni avec la plupart des distributions Linux modernes, si ce n’est pas le cas de la vôtre, vous devrez construire à partir des sources.
les commandes de tcpdump sont courtes et simples, et visent à résoudre un problème particulier, comme par exemple
- Afficher toutes les interfaces disponibles
- Capturer une seule des interfaces
- Sauvegarder les paquets capturés dans un fichier
- Capturer uniquement les paquets qui ont échoué
. . et ainsi de suite.
Si vos besoins sont simples et que vous avez besoin d’effectuer une analyse rapide, tcpdump peut être une excellente option à considérer (surtout si vous tapez tcpdump
et que vous découvrez qu’il est déjà installé !) Consultez cet article pour des exemples de commandes tcpdump en temps réel.
Tproxy
Tproxy est un outil simple, open-source, en ligne de commande, qui permet d’établir un proxy pour les connexions TCP sur le réseau. Tproxy est écrit dans le langage de programmation Go et est un outil en ligne de commande Go. Il est empaqueté en tant que binaire Go et est donc disponible sur toutes les plateformes Linux et macOS modernes.
L’image ci-dessous montre la ligne de commande pour surveiller les connexions Mysql :
Son utilisation principale est de surveiller les connexions HTTP et d’inspecter le contenu des requêtes HTTP et des réponses. Il peut également être utilisé pour proxyer d’autres protocoles, comme SOCKS ou TCP. Il peut être utilisé pour établir des connexions TCP entre deux hôtes, ou pour analyser le trafic sur une connexion en cours. Il est utile pour déboguer et tester les applications qui utilisent TCP comme protocole de transport, et pour construire des services proxy TCP.
Il a été écrit dans le but de fournir une interface facile à utiliser pour l’utilitaire de ligne de commande tcpdump, permettant aux utilisateurs d’établir des connexions TCP par proxy et d’effectuer d’autres analyses réseau avancées sans avoir besoin de comprendre le protocole TCP sous-jacent.
La ligne de commande ci-dessous affiche les connexions gRPC :
Il agit comme un proxy TCP, vous permettant de vous connecter à des services et applications distants comme si vous étiez sur la machine locale. Il permet de créer des services TCP personnalisés sur des hôtes distants, à l’instar d’un proxy TCP inverse, ce qui permet d’améliorer la sécurité, le dépannage et les performances des applications utilisant le protocole TCP.
Vous trouverez ci-dessous quelques autres utilisations de Tproxy
- Il est utile pour déboguer et optimiser les connexions TCP.
- Il est également utile pour comprendre le fonctionnement d’autres programmes proxy, tels que Burp Suite et ZAP.
- Il peut être utilisé pour établir des connexions TCP entre deux hôtes, ou entre un hôte et un service TCP distant, comme une base de données ou un service web.
- Il surveille les connexions MySQL et les connexions gRPC et vérifie également la fiabilité de la connexion en termes de taux de retransmission et de RTT
La plupart des utilisateurs trouveront que Tproxy simplifie leur flux de travail et leur permet d’effectuer des analyses réseau complexes et d’analyser des applications web sans avoir à modifier l’application ou le réseau lui-même. L’outil peut être téléchargé depuis GitHub.
NetworkMiner
Se présentant comme un outil d’analyse de réseau judiciaire (FNAT), NetworkMiner est l’un des meilleurs analyseurs au niveau des paquets que vous rencontrerez. Il s’agit d’un outil open-source capable d’analyser un réseau de manière passive et doté d’une interface graphique impressionnante pour l’analyse, qui peut afficher des images individuelles et d’autres fichiers transférés.
Mais ce n’est pas tout. NetworkMiner est livré avec d’excellentes autres fonctionnalités telles que :
- Prise en charge d’IPv6
- Analyse des fichiers PCAP
- Extraction de certificats X.509 à partir du trafic crypté SSL
- Pcap-over-IP
- Fonctionne avec plusieurs types de trafic, tels que FTP, TFTP, HTTP, SMB, SMB2, SMTP, POP3, etc.
- Empreinte du système d’exploitation
- Localisation géographique de l’IP
- Prise en charge des scripts de ligne de commande
Notez que certaines de ces fonctionnalités sont disponibles dans la version commerciale.
Fiddler
Contrairement à d’autres renifleurs de réseau passifs, Fiddler est un outil qui s’intercale entre votre appareil et le monde extérieur et qui nécessite donc une certaine configuration (c’est pour cela qu’il s’appelle “Fiddler” ? 😉 ).
C’est un outil gratuit personnalisable (en utilisant FiddlerScript) qui a une longue et brillante histoire, donc si votre but est de sniffer le trafic HTTP/HTTPS comme un patron, Fiddler est la voie à suivre.
Il y a beaucoup de choses que vous pouvez faire avec Fiddler, surtout si vous êtes d’humeur à enfiler la capuche du hacker :
- Manipulation de session: Ouvrez les en-têtes HTTP et les données de session, et modifiez-les à votre guise.
- Tests de sécurité: Permet de simuler des attaques de type “man-in-the-middle” et de décrypter tout le trafic HTTPS pour vous.
- Tests de performance: Analysez les temps de chargement des pages (ou les temps de réponse des API) et voyez quelle partie de la réponse est le goulot d’étranglement.
Au cas où vous vous sentiriez perdu, la documentation est très bonne et nous vous la recommandons vivement.
WinDump
Si la simplicité de tcpdump vous manque et que vous souhaitez l’appliquer à vos systèmes Windows, dites bonjour à WinDump. Une fois installé, il fonctionne à partir de la ligne de commande en tapant “tcpdump” de la même manière que l’utilitaire fonctionne sur les systèmes Linux.
Notez qu’il n’y a rien à installer en soi ; WinDump est un binaire qui peut être exécuté directement, à condition qu’une bibliothèque Pcap soit installée(npcap est recommandé car winpcap n’est plus en développement).
BruteShark
BruteShark est un outil efficace d’analyse légale du réseau (NFAT) que vous pouvez utiliser pour traiter et inspecter le trafic réseau tel que les fichiers PCAP et les captures directement à partir des interfaces réseau .
Il comprend la reconstruction de sessions TCP, la construction de cartes de réseau, l’extraction de hachages de mots de passe fortement cryptés, la conversion de hachages dans un format Hashcat pour effectuer une attaque Brute Force hors ligne.
L’objectif principal de ce projet est d’aider les administrateurs de réseau et les chercheurs en sécurité chargés d’analyser le trafic réseau et d’identifier les faiblesses.
Deux versions de BruteShark sont disponibles : une application basée sur une interface utilisateur graphique (GUI) pour Windows et un outil CLI pour Linux et Windows. Certains des projets inclus dans cette solution peuvent même être utilisés indépendamment pour analyser le trafic réseau sur les machines Windows et Linux.
BruteShark peut également effectuer diverses opérations telles que l’extraction de requêtes DNS, le découpage de fichiers, l’extraction d’appels VoIP (SIP, RTP), la construction de diagrammes de réseau pour les utilisateurs et les nœuds de réseau, l’extraction de hachages d’authentification à l’aide de Hashcat (NTLM, HTTP-Digest, CRAM-MD5, Kerberos, etc.), ainsi que l’extraction et l’encodage de mots de passe et de noms d’utilisateur.
Tous les projets sont mis en œuvre via .Net Standard et .Net Core pour une prise en charge multiplateforme et moderne. Cette solution offre une architecture à trois niveaux et comprend un ou plusieurs projets, y compris PL, BLL et DAL à chaque niveau.
Grâce à la couche d’accès aux données (DAL), le projet permet de lire les fichiers bruts de PCAP à l’aide de pilotes tels que WinPcap, libpcap et de bibliothèques d’encapsulation telles que SharpPcap. De même, la couche BLL (Business Logic Layer) est responsable de l’analyse des informations du réseau (TCP, paquets, etc.), et PL utilise un projet transversal et se réfère à la fois aux couches BLL et DAL.
OmniPeek
Pour les réseaux de grande taille, où des tonnes de Mo de données circulent chaque seconde, les outils utilisés par les autres peuvent s’avérer insuffisants. Si vous êtes dans le même cas, OmniPeek peut vous intéresser.
Il s’agit d’un outil de performance, d’analyse et de criminalistique pour l’analyse des réseaux, en particulier lorsque vous avez besoin de capacités de bas niveau ainsi que de tableaux de bord complets.
Capsa
Si vous ne vous intéressez qu’à la plateforme Windows, Capsa est également un concurrent sérieux. Il existe en trois versions : gratuite, standard et entreprise, chacune offrant des fonctionnalités différentes.
Cela dit, même la version gratuite prend en charge plus de 300 protocoles et offre des fonctionnalités intéressantes telles que des alertes (déclenchées lorsque certaines conditions sont remplies). L’offre standard est un cran au-dessus, car elle prend en charge 1 000 protocoles et vous permet d’analyser les conversations et de reconstituer les flux de paquets.
Dans l’ensemble, il s’agit d’une option solide pour les utilisateurs de Windows.
EtherApe
Si vous recherchez des visualisations puissantes et un logiciel libre, EtherApe est une excellente option. Bien que les binaires préconstruits ne soient disponibles que pour une poignée de distros Linux, les sources sont disponibles (à la fois sur SourceForge et GitHub), et il est donc possible de les construire soi-même.
Voici ce qui fait la force d’EtherApe à mon avis :
- Surveillance multi-nœuds avec code couleur.
- Prise en charge d’un grand nombre de formats de paquets tels que ETH_II, 802.2, 803.3, IP, IPv6, ARP, X25L3, REVARP, ATALK, AARP, IPX, VINES, TRAIN, LOOP, VLAN, etc.
- Lisez les données en direct sur le “fil” ou à partir d’un fichier tcpdump.
- Prise en charge de la résolution de noms standard
- Depuis les dernières versions, l’interface graphique a été déplacée vers GTK3, ce qui rend l’expérience plus agréable.
CommView
Si vous êtes un magasin exclusivement Windows et que vous appréciez la commodité d’un support prioritaire, CommView est recommandé. Il s’agit d’un puissant analyseur de trafic réseau doté de fonctions avancées telles que l’analyse VoIP, le suivi à distance, etc.
Ce qui m’a le plus impressionné, c’est sa capacité à exporter des données dans des formats utilisés par plusieurs formats ouverts et propriétaires, tels que Sniffer®, EtherPeek™, AiroPeek™, Observer®, NetMon, Wireshark/Tcpdump, et Wireshark/pcapng, et même de simples dumps hexagonaux.
Wifi Explorer
Le dernier sur la liste est Wifi Explorer, qui dispose d’une version gratuite pour Windows et d’une version Standard pour Windows et macOS. Si l’analyse du réseau WiFi est tout ce dont vous avez besoin (ce qui est pratiquement la norme de nos jours), Wifi Explorer vous facilitera la vie.
C’est un outil magnifiquement conçu et riche en fonctionnalités qui permet d’aller directement au cœur du réseau.
Mention honorable : Ce serait un mauvais service à rendre que de terminer ce billet sans mentionner un analyseur de réseau exclusif à macOS sur lequel je suis tombé : Little Snitch. Il intègre un pare-feu, ce qui lui confère l’avantage supplémentaire de vous permettre immédiatement de contrôler parfaitement tout le trafic (ce qui peut sembler pénible, mais s’avère très avantageux en fin de compte).
Que faire ensuite ?
La meilleure façon d’apprendre à connaître les outils ci-dessus est d’essayer de les installer et d’analyser les paquets. Quel que soit l’outil que vous utilisez, vous ne pouvez pas ignorer Wireshark. Commencez donc par lui !