はじめに
Linux環境にてNTPデーモンを起動してNTPサーバと通信しているパケットを取得し、Windows環境のWiresharkに読ませる流れとそのパケットの中身について説明します。
環境情報
- Debian GNU/Linux 9
- Wireshark 3.2.2
事前情報
NTPサーバは「インターネットマルチフィード(MFEED) 時刻情報提供サービス for Public」を利用しています。
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp3.jst.mfeed. 133.243.236.19 2 u 34 256 377 160.231 -0.137 0.150
ちなみにrefidとは参照しているサーバーの更に上位のNTPサーバを指しているので参照しているNTPサーバのIPアドレスはまた別となります。
# ping ntp.jst.mfeed.ad.jp PING ntp.jst.mfeed.ad.jp (210.173.160.87) 56(84) bytes of data. 64 bytes from ntp3.jst.mfeed.ad.jp (210.173.160.87): icmp_seq=1 ttl=60 time=155 ms ...
パケットキャプチャ
tcpdumpが入っていない場合は以下コマンドでインストールします。
# apt-get install tcpdump
以下がインストールされています。
# tcpdump --version tcpdump version 4.9.3 libpcap version 1.8.1 OpenSSL 1.0.2u 20 Dec 2019
NTPはポート123で通信されているので以下コマンドでtest.capとしてパケットを残します。
# tcpdump -s0 -i eth0 -X port 123 -w test.cap tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes ^C2 packets captured 3 packets received by filter 0 packets dropped by kernel
Ctrl+C
にて停止しますが、上を見れば分かる通り2つのパケットがキャプチャーできています。
ちなみに-w
を外せば標準出力にて確認できます。
# tcpdump -s0 -i eth0 -X port 123 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes ... IP instance-1.hoge.internal.ntp > ntp3.jst.mfeed.ad.jp.ntp: NTPv4, Client, length 48 0x0000: 45b8 ....... ... 0x0040: b0d7 ......
パケットを解析
Wiresharkでtest.capをオープンすると以下のように確かに2つのパケットが確認できます。
UDPにて通信が発生しており送信元も送信先も123であることが分かります。
User Datagram Protocol, Src Port: 123, Dst Port: 123 Source Port: 123 Destination Port: 123 Length: 56 ...
またクライアントのReference IDは指定しているNTPサーバですがサーバからの返答には上位サーバが格納されています。
Reference ID: 133.243.236.19
終わりに
今回は123に絞って通信を取得しましたが以下のようにオプションを変更すれば全てのパケットを取得できます。
# tcpdump -s0 -i eth0 -X -w test.cap
怪しい通信がある際の調査方法の参考になれば幸いです。