GNU/Linux >> Linux の 問題 >  >> Linux

カスタム ポートとテキスト ファイルに Wireshark tshark コマンドを使用する方法

Wireshark は、ネットワーク分析に使用されるオープンソースのパケット アナライザーです。

さまざまなプロトコルをキャプチャ、分析、およびデコードできます。

このチュートリアルでは、いくつかの問題のあるシナリオと、wireshark コマンド ライン ツールを使用してパケットを分析する方法について説明します。

シナリオ 1:分析のために tshark で非標準ポートを使用する

Wireshark は、設定ファイルに保存されている、そのプロトコルに割り当てられたポート番号に基づいて、特定のプロトコル (ペイロード メッセージに含まれる) を分析およびデコードできます。

tshark が LDAP パケットを分析していて、LDAP サーバーのデフォルトのポート番号が 389 であるとします。メッセージの送信元ポートまたは宛先ポートにポート番号 389 がある場合、tshark はそれが LDAP メッセージであることを認識し、適切にデコードします。

ただし、ldap が他のポート番号で構成されている場合は、そのポート番号をツールに明示的に指定する必要があります。次の 2 つの方法のいずれかを使用して実行できます。

設定ファイルにハードコードされたポート番号

最初の方法は、wireshark 設定ファイルで構成したい他のすべてのポート番号をリストすることです。

Wireshark 設定ファイルは ~/.wireshark/preferences です。

以下は、設定ファイル ~/.wireshark/preferences の LDAP セクションです:

LDAP サーバーがポート番号 400 で構成されている場合は、以下に示すように、既存の値にポート番号を追加するだけです:

# 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

tshark コマンド ライン -o オプションを使用する

-o オプションでポート情報を指定します。形式は、例に示されているように、設定ファイルにリストされている方法とまったく同じでなければなりません。

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

例として直径プロトコルを使用してみましょう。ポート情報を tshark に提供しない場合、設定ファイルにポート番号が存在しないため、tshark はペイロード部分を分析しません。

# 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]

-R オプションを使用すると、1 文字も出力されません。

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

以下に示すように、diameter のポート番号情報を指定すると、tshark コマンドは期待どおりに機能し、適切な情報が表示されます。

# 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

シナリオ 2:パケットのバイト バッファのみを使用して分析する

pcap ファイルがなく、パケットのバイト バッファしかない場合は、この方法を使用してください。

開発サーバーのログ ファイルでパケットの bytearray を見つけ、tshark を使用してそれを分析したいとします。

最初にバイト配列を 16 進形式に変換します。単純な printf(%2X) でそれが行われます。

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

ここで、上記の出力から情報をフィルターで除外します。最初に行う必要があるのは、このバイト配列のオフセットを設定し、これをすべての行に追加することです。これを自動化するコードを記述できます。

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 

text2pcap を使用して、これを 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

この pcap ファイルで tshark を使用します:

$ 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

以下の出力でわかるように、バイト配列を意味のあるものにデコードしただけです。

$ 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. 自動化のためにAnsibleとanacronを使用する方法

  2. Awkおよび正規表現を使用してファイル内のテキストまたは文字列をフィルタリングする方法

  3. LinuxでのChownコマンドとは何ですか?その使用方法

  1. Rangerを使用してコマンドラインからファイルをナビゲートする方法

  2. cURLコマンドとは何ですか?その使用方法は?

  3. Grepコマンドを使用してファイル内のテキストを検索する方法

  1. Ansibleでカスタムファクトを作成して使用する方法

  2. Linuxテールコマンド:それは何であり、それを使用する方法

  3. SFTPコマンドを使用してファイルを転送する方法