Come analizzare i pacchetti inviati dal controller in Wireshark?

0

Voglio simulare un attacco di riproduzione sul controller PR402. Ho collegato il mio computer con questo controller via TCP / IP < - > Serial Bridge e vorrei analizzare i pacchetti inviati tra computer e controller.

Prima di tutto, invio un comando "Disarm il sistema" dal software fornito dal produttore e cattura questi pacchetti in Wireshark. Quello che mi piacerebbe fare è catturare questo pacchetto, scoprire come e dove questo comando si trova in questo pacchetto ed eseguire un attacco di replay inviando un frame generato al controller. Sono nuovo di Wireshark e non sono sicuro di come iniziare ad analizzare questi pacchetti - mi sono concentrato sull'interfaccia che è connessa al controller e ho alcuni comandi catturati.

Per essere più specifici, questi sono (a mia conoscenza) i passaggi che devo eseguire:

  • Cattura i dati con Wireshark
  • Analizzali, esegui il dump su un file
  • Genera pacchetto / frame corretto
  • Trasferiscilo al controller e ottieni il sistema di disarmo

Qualcuno potrebbe darmi un consiglio o una raccomandazione su cosa dovrei fare per raggiungere gli obiettivi sopra elencati? Non sono sicuro di come acquisire questi dati in un file e trasferirli accanto al controller. Se aiuta a vedere altri screenshot di Wireshark o la configurazione della connessione, fammelo sapere e li posterò. Carico 2 acquisizioni. Questi sono solo alcuni pacchetti che eseguono lo stesso comando - "Sistema di disinserimento". Ho scoperto che i pacchetti dal 1 ° all'8 ° dal primo schermo e dal 2 ° al 9 ° hanno la stessa lunghezza e penso che sia stato trasmesso questo comando "Sistema di disinserimento". Fammi sapere se questa è la giusta direzione di analisi.

    
posta Pogosek 08.01.2017 - 12:22
fonte

1 risposta

3

I want to mimic a replay attack on controller PR402. I connected my computer with this controller via TCP/IP <-> Serial Bridge and I would like to analyse packets sent between computer and controller.

Poiché hai a che fare con TCP / IP ↔︎ Serial Bridge, puoi supporre che la porzione di dati del pacchetto TCP sia quella che viene trasferita sulla linea seriale. Quindi puoi ignorare tutto tranne la porzione di dati del pacchetto TCP.

First of all, I send a command "Disarm the system" from software provided by the producer and capture these packets in Wireshark

Suppongo che tu stia usando Roger's PR Master software o equivalente. Due cose che vorrai fare:

  1. Ripeti il comando "Disattiva il sistema" più volte, separate dal tempo. Questo ti permetterà di vedere se il comando è un duplicato esatto ogni volta, o se include qualcosa che varia come un contatore incrementale o un timestamp.
  2. Esegui diversi altri comandi, più volte ciascuno. Di nuovo, sono ripetizioni statiche o si trasformano? Hanno aspetti comuni (ad esempio, ognuno inizia con 0xb03e) o sono tutti unici?

I upload 2 captures. These are just some packets from running the same command - "Disarm system". I found out that packets from 1st to 8th from the first screen and from 2nd to 9th have the same length and I think there this "Disarm system" command was transmitted. Let me know if this is the right direction of analysis.

Guardando la prima cattura, vedo diversi piccoli bit di dati scambiati. (Tornando a ciò che ho detto all'inizio, ti interessano solo i dati. Puoi dire quando un pacchetto ha dati in questo esempio perché PSH (TCP "Push" Flag) viene utilizzato su tutti i dati pacchetti e la vista di Wireshark mostra "Len = X" per indicare X byte di dati.

1: You -> PR402 3 bytes (0xbe3e01)
2: You -> PR402 9 bytes (???)
3: PR402 -> You 3 bytes (???)
4: PR402 -> You 7 bytes (???)
6: You -> PR402 3 bytes (???)
7: You -> PR402 3 bytes (???)
9: PR402 -> You 1 byte  (???)

Dove un messaggio da 3 byte inizia comunemente una serie direzionale (1, 3, 6), potrebbe essere il comando, o potrebbe essere un meta-comando - per esempio, il pacchetto 1 significa "RICHIESTA", il pacchetto 2 significa "DISARMO" ", il pacchetto 3 significa" RISPOSTA ", pacchetto significa" FATTO ".

Qui è dove analisi differenziale , il confronto tra l'acquisizione di ripetizioni diverse dello stesso comando e comandi diversi, arriva - se si invia "ARM", e il pacchetto # 1 è ancora 0xb03e01, allora quello è non ARM / DISARM, è un messaggio di attenzione / richiesta / ecc.

Sai che devi:

Analyse them, dump to a file

Con i pacchetti così brevi probabilmente stai anche facendo clic su ogni pacchetto in Wireshark e digitando manualmente i byte di dati 1-10 per pacchetto.

Quindi, passa attraverso le tue catture e riassumi cosa sta dicendo cosa a chi, scrivilo come ho fatto sopra (ma sostituendo ??? con byte effettivi). Fallo per diversi DISARM e diverse sequenze non DISARM. (Se fai qualcosa come aggiungere un utente con il PIN, allora dovresti vedere l'id utente e il PIN in uno dei pacchetti di dati, il che ti aiuterà a capire come questi scambi pensano ai dati mentre stanno scambiandoli.)

Una volta ottenuti questi pattern, sarai in grado di indovinare come implementare il pattern DISARM da solo.

Generate proper packet/frame

Puoi usare qualcosa come scapy per questo. Se si invia un pacchetto TCP con dati 0xb03e01, ad esempio:

# scapy
>>> packet=IP(dst="192.168.0.21")/TCP(dport=771)/"\xb0\x3e\x01"
>>> send(packet)
.
Sent 1 packets.

Mettendo questo nel contesto di una connessione TCP ben strutturata è un poco più lavoro . Se hai bisogno di eseguire più pacchetti attraverso una singola connessione, dovrai scavare un po 'più in profondità nello scapy (ad esempio, riutilizzare socket ), ma questo è lo strumento che farà rapidamente e facilmente ciò che si vuole fare. Ad esempio, potresti anche inserire un wrapper Perl / Python su nmap, anche se questo ti dà un po 'meno controllo per pacchetto.

Dato che hai a che fare con una connessione da TCP a seriale, l'invio di singoli pacchetti come quello - una connessione TCP, un pacchetto e chiuso - probabilmente sta bene. Probabilmente il bridge Serial potrebbe interessare meno il numero di connessioni TCP utilizzate.

Transfer it to the controller and achieve disarming system

Se hai accesso TCP al bridge Serial, allora tutto ciò che devi fare è inviare i pacchetti. Se funziona per il software PR Master, e lo imiti correttamente funzionerà per te. Ricordate, questo è un dispositivo di sicurezza fisica e funziona probabilmente supponendo che tutti gli input seriali siano attendibili perché la linea seriale non è esposta a spazi fisici non attendibili. La dimensione dei dati che stiamo osservando in questi scambi di pacchetti rende improbabile la crittografia o le precauzioni di autenticazione.

    
risposta data 08.01.2017 - 17:58
fonte

Leggi altre domande sui tag