【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【次世代】ゲーム専用データ分析エンジン『ThinkingEngine』

【次世代】ゲーム専用データ分析エンジン『ThinkingEngine』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

1からはじめる Wireshark

こんにちは。
うっかりecho "" > /etc/passwd システムソリューション部のかわです。

今回は、以前公開したネットワーク系ツールの記事で紹介したWiresharkについて書きたいと思います。
ちなみに好きなサメ映画はディープブルーです。

Wiresharkって?

ネットワークエンジニアには必需品とも言える有名なツールです。
WindowsとmacOSに対応しており、基本的にはインストールしたPC上のパケットをキャプチャして、めちゃくちゃ簡単に可視化できます。
トラブルシューティング等でネットワーク調査に使用されることが多いです。

ダウンロードとインストール

公式サイト(https://www.wireshark.org/)の「Download」から対応するOSのファイル名をクリックしてダウンロードします。

ダウンロードができたら実行ファイルを開き、インストーラに沿って「Next」を押していきます。

(↑の項目も基本的にデフォでok)

インストールが終わったらWiresharkを開き、以下のような画面が表示されれば完了です。

ニョロニョロと波形ができているネットワークアダプタをダブルクリックして、メインで繋いでいるインターフェイスのキャプチャを見てみましょう。

Windowsのキャプチャデータの見方

インターフェイスを選択すると、すぐにキャプチャされたインバウンド/アウトバウンドのパケットが流れてきます(IPとかの情報はボカしてあります)⬇。

なんのこっちゃですね。

試しに弊社ウェブサイト宛(beyondjapan.com)にコマンドプロンプトからpingを送信してみましょう。

> ping beyondjapan.com

上部にある検索窓に「icmp」と入力しエンターを押します。

ping結果だけがソートされ、弊社ホームページ宛のICMPパケットが確認できるようになります。

下部の文字列の部分を右クリック→「すべて展開」を選ぶとパケットの中身が確認できます。

オレンジ部分:ソース/宛先アドレスや、経由しているルータの機種やMACアドレス等
緑部分:IPバージョン(今回はv4やヘッダー長)
ピンク部分:フラグ、TTLやプロトコル
赤部分:ICMPタイプやチェックサム

今回はICMPなので情報が豊富とは言えないですが、パケットが暗号化されてない限りはペイロード等詳しいデータを見ることができます(悪用厳禁)。

ちなみにかの有名な阿部寛氏のhttpサイトを見ると、どこにアクセスしたかがモロバレルです。

オレンジ部分:リクエストメソッドやHTTPのバージョン
緑部分:ホスト情報、ブラウザのユーザエージェント情報、言語、リファラなど
ピンク部分:アクセスURL、一連のアクセスに関連するフレーム番号

httpサイトで特に気をつけないといけないのはフォームに入力した情報です。
暗号化されていない状態でフォームにパスワード等を送信してしまうと、パケットキャプチャからパスワードの文字列が確認できてしまいます。
(野良Wi-Fiに繋ぐのは良くないよ、というのはこういう理由です)

フィルタのあれこれ

検索にはWiresharkの記述を使用します。
今回はよく使う記法を紹介します。正規表現など色々な書き方ができるので、APIとのやり取りにおけるトラブルシューティングにも活用できそうです。

・IPアドレスでフィルタ

ip.addr == xx.xx.xx.xx
!(ip.addr==xx.xx.xx.xx)  #特定IPを除外

試しに「1.1.1.1」宛にpingを送信した結果を検索します。

ping request → replyのやり取りが確認できます。

・ポート番号でフィルタ

tcp.port == xx
udp.port == xx
tcp.port == xx || udp.port == xx  #orで複数検索
!(tcp.port == xx)  #特定ポートを除外
!(tcp.port==xx) && ip.addr==xx.xx.xx.xx  #and条件

試しにTCP/443の通信を確認してみます。

IPを調べると、Google検索を行った際の流れが確認できます。
「Info」部分の説明やフラグ部分を見るとTCPハンドシェイクのやり取りが見えます(ACKやFINなど)。

Linuxマシンのパケットキャプチャ

WiresharkのインストールされたPCがあれば、Linuxマシンで取得したパケットキャプチャファイルを閲覧することができます。

今回は、以前紹介したtcpdumpを使用します。
(yumやaptで事前にtcpdumpをインストールしておいてください)

この記事ではUbuntuを使用し、任意のファイルを作成しキャプチャデータを出力します。
「test.pcap」というファイルに書き出します(pcapはパケットキャプチャファイルの拡張子です)。
※ifconfig等でインターネット抜けしているインターフェイス名を確認し指定します。

> tcpdump -i ens33 -w test.pcap

キャンセルするまではキャプチャが継続されるので、取得している間に確認したい通信を発生させます(ブラウザアクセス等)。
「Ctl+C」でtcpdumpを終了させ、出力されたファイルをWindows/macOSマシンに移します。
引っこ抜いてきたpcapファイルをWiresharkで開けばキャプチャデータが可視化されます。

↑キレイなクリスマススキャンのパケットが可視化できました(良い子は真似しないでね)。

読み方さえわかれば誰でも簡単にパケットの流れがキャプチャできるのがWiresharkの強みですね。

使用しているPCの他にも、スイッチを噛ませてミラーポートを用意すればローカルネットワーク内を流れるパケットをすべてキャプチャできたりもするので、実際の現場でもよく活用されるソフトです。
TCP/IPの勉強にもなるのでぜひインストールしてみてください。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
6
読み込み中...
6 票, 平均: 1.00 / 16
207
facebook twitter はてなブックマーク
【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア / サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

かわ けん

システムソリューション部所属
好奇心旺盛ポケ○ン