0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kali Linux2022.1 でハッキングラボをつくってみる8 Wiresharkでパケットキャプチャ1

Last updated at Posted at 2022-05-10

はじめに

「ハッキング・ラボのつくりかた」を参考に、同書の内容がKaliLinux2022.1でも有効なのか試行錯誤している記事です。今回からは、Wiresharkでのパケットキャプチャ・分析を行ってきたいと思います。この記事は、同書のp.422-435に対応しています。

注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。

プロミスキャスモード

他のホストのパケットをキャプチャするには、LANアダプタをプロミスキャス・モードにする。
メニューバーの「キャプチャ」>「オプション」へとすすみ、インターフェースの一覧からプロミスキャス・モードが適用されているか、確認できる。
モードを適用したいネットワークインターフェースにチャックマークを入れることで、プロミスキャス・モードを適用する。
VirtualBox_kali-linux-2022プロミスキャス.png

wiresharkの起動

wiresharkコマンドを実行。
同書では、wiresharkから「rootで起動したため一部の機能がロードできなかった」というエラーが表示されること、その解決方法が呈示されますが、kalilinux2022.1では、デフォルトでkaliユーザーでログイン・操作するため、このエラーを考慮する必要はないでしょう。

キャプチャの開始

メニューの「キャプチャ」>「オプション」(ショートカットキーCtrk + k)をクリックする。「すべてのインターフェースにおいてプロミスキャスモードを有効化します」か有効化したいインターフェースにチェックを入れて、キャプチャしたいネットワークインターフェイスを選択して開始する。

フィルタ

httpのパケット

「表示フィルタ」に"http"と入力することで、httpのパケットを抽出することが可能
。「Protocol」にOCSPが表示されることがあるが、これは公開鍵証明書の執行状態を取得するためのプロトコル。
SSDP(httpを利用するネットワーク上の機器を自動的に発見・接続するUPnP(Universal Plug and Play)で用いられる通信プロトコル)が抽出されることもある。それが必要ない場合、"http &&tcp"で除外する。
getメソッドは、"http.request.method=="GET""で指定する。

表示フィルタ

キャプチャしたパケットの中から、特定のパケットを抽出・表示してくれるフィルタ
同書p.429の表とWiresharkの表示フィルタから引用すると、次のようなフィルタの構文がよく使用される。

フィルタの構文 説明
ip.addr == 10.0.0.1
または
ip.addr eq 10.0.0.1
送信元あるいは宛先が10.0.0.1であるパケットを表示する。
ip.addr != 10.0.0.1 送信元あるいは宛先が10.0.0.1でないパケットを表示する
ip.addr == 10.0.0.1 && ip.addr == 10.0.0.2
または
ip.addr == 10.0.0.1 and ip.addr == 10.0.0.2
10.0.0.1と10.0.0.2間の通信を表示する。
ip.src == 10.0.0.1/24 送信元IPアドレスが10.0.0.1/24のパケットを表示する
http HTTPプロトコルを表示する。
http or dns
または
http || dns
HTTPまたはDNSを表示する
tcp.port == 80 ポート80(TCP)のパケットを表示する
tcp.srcport == 80 送信元ポートが80のパケットを表示する
tcp.dstport == 80 宛先ポートが80のパケットを表示する
tcp.port < 1024
あるいは
tcp.port<=1023
ポート番号が1024(TCP)未満(well-known)のパケットを表示する
tcp.flags.ack == 1 ACKフラグが立っているTCPを表示する。
tcp.flags.rest == 1 リセットフラグが立っているTCPを表示する。
http.request HTTP要求
(http.request.method == "GET") || (http.request.method == "POST") HTTP要求におけるGETメソドまたはPOSTメソッドを表示する
tcp contains traffic "traffic"という文字列を含むtcpパケットを表示する。ユーザーIDといった特定の文字列を含んでいるパケットを調べる際に便利
tcp.matches "(traffic|network)" "traffic"あるいは"network"という文字列を含むtcpパケットを表示する。正規表現を利用するときに用いる
not http HTTPプロトコルを含ませない
!(arp or icmp or dns) ARP、ICMP、DNSのプロトコルを表示しない
udp contains 33:27:58 "0x33 0x27 0x58"を含むUDPを表示する
tcp.analysis.retransmission TCPのRetransmission(再送)を表示する。パケットロスのトラブルシューティング、ソフトウェアのパフォーマンスの調査に活用できる

おおむね、=がeq、&&がand、||がorといった感じで、演算子どうしが等価とされる。

キャプチャフィルタ

特定のパケットのみを収集したい場合に使用するフィルタ
メニューの「キャプチャ」>「キャプチャフィルタ」をクリックして、適用したいキャプチャフィルタを選択する。
同書のp.430-431とWiresharkのキャプチャフィルタから引用。

フィルタの構文 説明
host 192.168.1.10 (送信元や宛先の)IPアドレスが192.168.1.10のパケットをキャプチャする。
ip src host 10.0.0.2 送信元IPアドレスが10.0.0.2のパケットだけをキャプチャする。
tcp dst port 80 宛先ポート番号が80のパケットだけをキャプチャする
not icmp ICMPパケット以外をキャプチャする
ether proto \ip EthernetフレームのタイプがIPのものをキャプチャする。"ip"はキーワードに使われているので、値(ここではフレームタイプ)として使う場合には、バックスラッシュをつける
tcp portrange 1-1024 tcpポート1から1023までを指定する
not broadcast and not multicast ブロードキャストやマルチキャストのトラフィックを除外する

他、and,not,or,<,>,=,!=などの演算子が表示フィルタと同様に利用できる。

キャプチャしたデータの保存

基本的にpcapかpcapng形式で保存する。
pcapngはpcapよりも高機能だが、サポートしているソフトウェアが少ない。
テキストエディタで処理した場合は、テキスト形式でエクスポートすることもできる。
メニューの「ファイル」>「エキスパートパケット解析」>「プレインテキストとして」をクリックする。

ストリームを表示

巨大なデータの送受信の際には、セッション内で何が起きたのかを把握するには、1つ1つのパケットを見るより。全体の流れを見たほうが良い。
メニューの「分析」>「追跡」に「TCPストリーム」「UDPストリーム」「TLSストリーム」といった項目がある。これらを選択する。
これで、データ内にテキストがあれば、読み取れる。

おわりに

参考にしたもの
「ハッキング・ラボのつくりかた」(IPUSIRON著)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?