GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare il comando tshark di Wireshark per porte personalizzate e file di testo

Wireshark è un analizzatore di pacchetti open source utilizzato per l'analisi di rete.

Può acquisire, sezionare e decodificare vari protocolli.

In questo tutorial discuteremo un paio di scenari problematici e come utilizzare gli strumenti della riga di comando di Wireshark per analizzare il pacchetto.

Scenario 1:utilizzo di una porta non standard con tshark per l'analisi

Wireshark può sezionare e decodificare i protocolli specifici (contenuti nel messaggio di payload) in base al numero di porta assegnato per quel protocollo, che viene salvato nel suo file delle preferenze.

Supponiamo che tshark stia analizzando il pacchetto ldap e che il numero di porta predefinito per il server ldap sia 389. Se un messaggio ha il numero di porta 389 nella porta di origine o nella porta di destinazione, tshark capirà che si tratta di un messaggio ldap e lo decodificherà correttamente.

Ma se ldap è configurato su un altro numero di porta, è necessario specificare esplicitamente il numero di porta nello strumento. Possiamo farlo usando uno dei seguenti due metodi:

Numero di porta hardcode nel file delle preferenze

Il primo metodo consiste nell'elencare tutti gli altri numeri di porta che desideri configurare nel file delle preferenze di wireshark.

Il file delle preferenze di Wireshark è ~/.wireshark/preferences.

Quella che segue è la sezione ldap del file delle preferenze ~/.wireshark/preferences:

Se il tuo server LDAP è configurato sulla porta numero 400, aggiungi semplicemente il numero di porta al valore esistente come mostrato di seguito:

# Set the port for LDAP operations
ldap.tcp.port: 389,400

# Set the port for LDAP operations over SSL
ldap.ssl.port: 636,400

# Set the TCP port for messages (if other than the default of 646)
ldp.tcp.port: 646,400

# Set the UDP port for messages (if other than the default of 646)
ldp.udp.port: 646,400

Usa tshark Command Line -o Opzione

Specificare le informazioni sulla porta utilizzando l'opzione -o. Il formato dovrebbe essere esattamente nello stesso modo in cui è elencato nel file delle preferenze come mostrato nell'esempio.

# tshark -r ../temp.pcap  -o ldap.tcp.port:389

Usiamo il protocollo del diametro come esempio. Se non fornisci le informazioni sulla porta a tshark, non analizzerà la parte del carico utile, poiché la porta no non è presente nel file delle preferenze.

# tshark -r ../temp.pcap
Data (204 bytes)
0000  01 00 00 cc 00 00 01 2e 01 00 00 00 86 26 73 df   .............&s.
0010  dc 67 4a 66 00 00 01 07 40 00 00 2c 61 61 61 3a   .gJf....@..,aaa:
0020  2f 2f 31 30 2e 34 39 2e 31 31 2e 31 35 30 3a 34   //10.49.11.150:4
0030  38 37 38 3b 31 33 36 38 37 37 39 35 37 30 3b 32   878;1368779570;2
0040  00 00 01 08 40 00 00 22 68 73 73 2d 32 2e 68 73   ....@.."bss-2.bs
0050  73 62 6c 61 64 65 2e 72 61 6e 63 6f 72 65 2e 63   damadd.anduore.c
0060  6f 6d 00 00 00 00 01 28 40 00 00 1c 68 73 73 62   od.....(@...badb
0070  6c 61 64 65 2e 72 61 6e 63 6f 72 65 2e 63 6f 6d   pale.ramcoe.com
0080  00 00 01 29 40 00 00 20 00 00 01 0a 40 00 00 0c   ...)@.. ....@...
0090  00 00 28 af 00 00 01 2a 40 00 00 0c 00 00 13 89   ..(....*@.......
00a0  00 00 01 15 40 00 00 0c 00 00 00 01 00 00 01 04   ....@...........
00b0  40 00 00 20 00 00 01 02 40 00 00 0c 01 00 00 00   @.. ....@.......
00c0  00 00 01 0a 40 00 00 0c 00 00 28 af               ....@.....(.
    Data: 010000cc0000012e01000000862673dfdc674a6600000107...
    [Length: 204]

Quando usi l'opzione -R, non stamperà nemmeno un singolo carattere.

# tshark -r ../temp.pcap  -V -R diameter
Running as user "root" and group "root". This could be dangerous.

Quando fornisci le informazioni sul numero di porta per il diametro come mostrato di seguito, il comando tshark funzionerà come previsto e visualizzerà le informazioni appropriate.

# tshark -r ../temp.pcap -odiameter.tcp.ports:3868 -R diameter
Running as user "root" and group "root". This could be dangerous.
  1   0.000000 192.168.129.11 -> 192.168.129.68 DIAMETER cmd=Location-InfoRequest(302) flags=R--- appl=3GPP Cx(16777216) h2h=862673df e2e=dc674a66
  2   0.002474 192.168.129.68 -> 192.168.129.11 DIAMETER cmd=Location-InfoAnswer(302) flags=---- appl=3GPP Cx(16777216) h2h=862673df e2e=dc674a66

Scenario 2:analisi utilizzando solo il buffer di byte del pacchetto

Se non hai un file pcap e hai solo il byte buffer del pacchetto, usa questo metodo.

Supponiamo che nel file di registro del tuo server di sviluppo tu abbia trovato un bytearray del pacchetto e desideri analizzarlo usando tshark.

Per prima cosa converti l'array di byte in formato esadecimale, un semplice printf(%2X) lo farà.

3c d9 2b 09 fb 24 00 26 b9 8c 89 a6 08 00 45 00
01 20 d6 cb 40 00 40 06 08 9c ac 10 81 0b ac 10
81 44 c4 96 0f 1c 0a 46 92 fc 64 6e 47 7b 80 18
00 36 32 36 00 00 01 01 08 0a 32 02 45 fa 04 e0
ba f4 01 00 00 ec 80 00 01 2e 01 00 00 00 86 26
73 de dc 67 4a 65 00 00 01 07 40 00 00 2c 61 61
61 3a 2f 2f 31 30 2e 34 39 2e 31 31 2e 31 35 30

Ora vuoi filtrare le informazioni dall'output sopra. La prima cosa che devi fare è impostare gli offset per questo array di byte e aggiungerlo in ogni riga, puoi scrivere un codice per automatizzarlo.

0000   3c d9 2b 09 fb 24 00 26 b9 8c 89 a6 08 00 45 00 
0010   01 20 d6 cb 40 00 40 06 08 9c ac 10 81 0b ac 10 
0020   81 44 c4 96 0f 1c 0a 46 92 fc 64 6e 47 7b 80 18 
0030   00 36 32 36 00 00 01 01 08 0a 32 02 45 fa 04 e0 
0040   ba f4 01 00 00 ec 80 00 01 2e 01 00 00 00 86 26 
0050   73 de dc 67 4a 65 00 00 01 07 40 00 00 2c 61 61 
0060   61 3a 2f 2f 31 30 2e 34 39 2e 31 31 2e 31 35 30 

Usa text2pcap e convertilo in un file pcap:

$ text2pcap a.txt a.pcap
Input from: a.txt
Output to: a.pcap
Wrote packet of 302 bytes at 0
Read 1 potential packet, wrote 1 packet

Usa tshark su questo file pcap:

$ tshark -r a.pcap
  1   0.000000 172.16.129.11 -> 172.16.129.68 DIAMETER 302 cmd=Location-InfoRequest(302) flags=R--- appl=3GPP Cx(16777216) h2h=862673de e2e=dc674a65

Come puoi vedere nell'output di seguito, abbiamo appena decodificato il bytearray in qualcosa di significativo.

$ tshark -r a.pcap -V | grep AVP
    AVP: Session-Id(263) l=44 f=-M- val=aaa://10.20.11.140:4878;1368779570;1
    AVP: Destination-Realm(283) l=28 f=-M- val=pal.core
    AVP: Destination-Host(293) l=21 f=-M- val=192.11.121.35
    AVP: Origin-Host(264) l=20 f=-M- val=10.20.11.140
    AVP: Origin-Realm(296) l=19 f=-M- val=ffix

Linux
  1. Come utilizzo Ansible e anacron per l'automazione

  2. Come utilizzare Awk e le espressioni regolari per filtrare testo o stringhe nei file

  3. Che cos'è un comando Chown in Linux e come usarlo

  4. Che cos'è un comando cURL e come utilizzarlo?

  5. Come utilizzare il comando Grep per trovare testo nei file

Come utilizzare il comando SCP per trasferire file

Come utilizzare il comando SED per trovare e sostituire la stringa nei file

Come installare e utilizzare il comando locate in Linux

Come installare e utilizzare Okteta per file di dati RAW in Linux

Come installare e utilizzare il comando fd in Linux

Come utilizzare più comandi in Linux per leggere file di testo di grandi dimensioni