Upgrade to Pro — share decks privately, control downloads, hide ads and more …

パケット解析入門-勉強会資料

Dbe2b5015fd7fa1e4e7772abcff534e0?s=47 Azunyan
December 11, 2018

 パケット解析入門-勉強会資料

パケット解析勉強会で使用した資料です。

https://goo.gl/2FsqTJ/

https://student-kyushu.connpass.com/event/103277/

Dbe2b5015fd7fa1e4e7772abcff534e0?s=128

Azunyan

December 11, 2018
Tweet

Transcript

  1. 九州学⽣エンジニア勉強会 パケット解析⼊⾨ Azunyan1111

  2. 講義情報 • まだインストールしてない奴なんていないよなぁ? • Wireshark • https://goo.gl/yRwKp1 • Burp Suite

    • https://goo.gl/mz1Tzo • 本⽇の講義資料(講義で使うパケットファイルもあります) • https://goo.gl/2FsqTJ • Wi-if情報 • SSID: • Pass:
  3. ツイッター実況OK! • ハッシュタグ #student_kyushu をつけてツイートしよう!

  4. もくじ(時間が許す限り最後までやる) • 本⽇のみんなの⽬標発表 • 軽く⾃⼰紹介(みんなもやる?) • 注意事項 • パケット解析に必要な最低限の知識 •

    パケット解析ツールの紹介 • Wiresharkを使ってパケットを⾒てみよう! • Burp Suiteを使ってHTTPリクエストを編集してみよう! • Burp Suiteを使ってHTTPSリクエストの中⾝を覗いてみよう! • スマホのパケットを覗いてみよう! • その他のツール紹介 • 質問orこれやってくれ
  5. 本⽇のみんなの⽬標 パケット解析完全に理解した とツイートする

  6. 本⽇のみんなの⽬標 パケット解析完全に理解した とツイートする ↓ パケット解析⼊⾨完全に理解した と⾔えるレベルになろう!

  7. ⾃⼰紹介 • 名前:Azunyan1111 • ツイッター:@Azunyan1111_ ←アンダーバー1つに注意 • 職種:サーバーサイドエンジニア • ⼤学:福岡⼯業⼤学・学部4年

    • ⾔語:Golang • 趣味:Webセキュリティ • 研究:Tor(匿名化ブラウザの奴) • セキュリティキャンプ2018全国⼤会 参加 • セキュリティキャンプ2016福岡 参加 • セキュリティキャンプ2018⼭梨 参加 • Micro hardening Fukuoka 2018 参加 • Micro hardening Ube 2018 参加
  8. みんなも⾃⼰紹介するときのテンプレ • 名前 • ⼤学or仕事or趣味で何してる? • Web系とかOS系とかIoT系とか • 勉強会への意気込み •

    以下あったら • 好きなエディタ • 好きな⾔語 • パケット解析ができるようになったら◯ ◯がしたい! • etc…
  9. 注意事項 • 講義資料は外部配布禁⽌(気分次第) • お⾦払ってきてる社会⼈もいるのでダメです • スクショを上げる程度ならOK • 講義で勉強したことを悪⽤しないように •

    やろうと思えば⾊んな攻撃ができます。 • 犯罪幇助(ほうじょ)とかしたくないのでダメ絶対! わからない単語が出てきたらすぐに調べるのを推奨 ※わからなくなったら⼿を上げてチューターに助けてもらってください! 質問は随時受け付けてます。⼿を上げて質問だと⾔ってください(⻑くな りそうだったらあとにします。) 間違ってる知識があるかもしれないので違うっぽかったら指摘してくださ い
  10. パケット解析に必要な最低限の知識

  11. パケット解析に必要な最低限の知識 • パケットとは • TCP/IP • MACアドレス • OSI参照モデル

  12. パケットとは • 情報伝送の⼀単位。伝送・交換に必要な情報を付したもの。 • Wikipediaより • 以下おっさんがJKに可愛いって情報を送ってる図 To:JK 君可愛いね♪ 君可愛いね♪という情報が⼊ってるパケット

    From:おっさん 君可愛いね♪
  13. 補⾜情報 • パケットは必ずしも⼀つではない。 • パケットの最⼤サイズは1500byte(任意に変更可能) • もし1024KBのデータを送る場合1500byteでは⾜りないので複数のパケッ トに分割して送る • 単純計算で

    • 1,048,576byte/1500byte = 699.05066667パケットを送る必要がある • ツールが良い感じにつなげてくれるので700個もパケット⾒る必要は無い
  14. TCP/IP • ⼀般的に広く使われているプロトコル群 • TCPとIPv4を使って通信をする⽅法 • IP • パソコン1台に割り当てられるIPアドレスを元にルーターがリレーをし て相⼿に到達する

    • TCP • 3way ハンドシェイクでコネクションを確⽴して通信を⾏う • パケットは必ずしも相⼿に到達するとは限らない。 • なので再送信とかする必要がある。そういうのをやってくれる奴
  15. TCP/IP • IPにはローカルIPとグローバルIPが現代では普及している • DHCPとかでググると出る • ルーカルIPとはルーターのLAN内での擬似的なIPアドレス的な感じ • 192.168.~.~が⼤体ローカルIPアドレス。 •

    グローバルIPアドレスはLANの代表となるIPアドレスみたいな感じ 192.168.1.2 150.43.0.0 133.5.0.0 192.168.1.2 その他のルーター (インターネット)
  16. MACアドレス • 通信端末に世界で唯⼀割り当てられた識別⼦ • パソコンのインターフェースと呼ばれるパーツに割り当てられ る IP:192.168.1.2 MAC:98:01:a7:d0:b7:5b 150.43.0.0 133.5.0.0

    IP:192.168.1.2 MAC:58:52:8a:1b:08:fd その他のルーター (インターネット)
  17. OSI参照モデル • 正直ざっくりと分かってれば良い • リンク層 • Mac:Macアドレスを元に通信をする(LANの中での通信な雰囲気) • ネットワーク層(インターネット層) •

    IP:IPアドレスを元に通信する(インターネットな雰囲気) • トランスポート層 • TCP:コネクションを確⽴して通信をする(通信形式みたいな) • リンク層の上にネットワーク層が乗ってその上にトランスポー トが乗っての繰り返し。
  18. パケット解析ツールの紹介

  19. パケット解析に必要なツール • 現状私がこれだけのツールで事⾜りているので他ツールもある。 • Wireshark 無料 • パケット解析の定番。これさえあれば⼤体なんでもできる • BurpSuite

    無料・有料 • パケットを編集するのに優れたツール • Charles 試⽤・有料 • http/httpsのパケット解析に特化したツール • Pkttools 無料 • セキュリティキャンプでおなじみ坂井弘亮⽒が作った純国産 • 簡易分析の位置付けだがパケットを直接編集や送信などできる超神ツール • Chrome 開発者ツール Networkタブ 無料 • ブラヴザに⼊るhttp/httpsリクエストを分析できる。 • Curlを⽂を⾃動⽣成するのでワンクリックでリクエストを再現可能。
  20. Wiresharkを使ってパケットを⾒てみよう!

  21. Wiresharkとは • 世界的に有名なパケット解析ツール • これがあれば⼤体何でもできる。 • 鍵があればHTTPS中⾝も観れる

  22. サンプルパケットのダウンロード • Google Driveからダウンロードしてね。 • https://goo.gl/2FsqTJ • sampleHTTPをWiresharkで開く

  23. 開き⽅

  24. 開き⽅

  25. 開き⽅

  26. 開き⽅

  27. Wiresharkの⾒⽅ これら⼀つ⼀つがパケット パケットの中⾝を表⽰している 本当に流れている実際のパケットの中⾝

  28. Wiresharkの⾒⽅ 送信先IPアドレス 送信元IPアドレス プロトコルの種類(⼀番上に乗ってるの) パケットをデコードした結果

  29. Wiresharkのフィルタ ここに「http」と⼊⼒してHTTPリクエストだけをフィルタして表⽰する

  30. Wiresharkでフィルタした後 フィルタの中⾝ HTTPでフィルタしたのでHTTPのみ

  31. TCP/IPパケット解説 • わかりやすい図などはこちら • IP • https://www.infraexpert.com/study/tcpip1.html • TCP •

    https://www.infraexpert.com/study/tcpip8.html
  32. TCP/IPパケット解説 • リンク層 • ▪⾚:送信先macアドレス( 58:52:8a:1b:08:fd ) • ▪⻩:送信元macアドレス( 98:01:a7:d0:b7:5b

    ) • ▪⻘:イーサタイプ(IPv4なのかIPv6なのか)https://goo.gl/HqZa2h • 0x0800だとIPv4 • 0x86DDだとIPv6 • 0x0806だとARP(MACアドレスを教えあうプロトコル)
  33. Wiresharkだと

  34. TCP/IPパケット解説 • ネットワーク層 • ▪⾚:送信元IPアドレス( 192.168.1.7 ) • ▪⻩:送信先IPアドレス( 219.94.163.38

    ) • ※リンク層とは別で送信元と送信先が逆な所注意 • 192.168.1.7の部分はルーターがグローバルIPに置き換えてネッ トに出て⾏く。
  35. Wiresharkだと

  36. Wiresharkワンポイントアドバイス • バイナリをクリックするとそれが何の情報なのかを真ん中のタ ブで表⽰してくれる。(逆もしかり)

  37. Wireshark で HTTP GETリクエストを追ってみよう

  38. フィルタを消そう! ここの×をクリックするか フィルタの中⾝の⽂字列を消してエンター!

  39. HTTP GETを追う フィルタが何も無いことを確認

  40. HTTP GETを追う HTTP GETと書かれているのを右クリック 追跡→HTTPストリーム

  41. HTTP GETを追う ⾚:実際に送っているリクエスト ⻘:リクエストに対する返答 リクエストしたHTMLの中⾝

  42. HTTP GETを追う ⾚:実際に送っているリクエスト ⻘:リクエストに対する返答 ⽂字化けはここから⽂字コード変換 (⽇本語不可)

  43. HTTP GETを追う ここからリクエスト送った側と送られた側でフィルタできる ⽂字化けはここから⽂字コード変換 (⽇本語不可) 検索を使うと該当⽂字列がドラッグされる

  44. HTTP GETを追う パケットサイズを⾒ると1つのHTMLを1468byteで分割して 複数のパケットで送っているのがわかる

  45. 唐突の課題! • 北九州市のIPアドレスをWiresharkを使って調査せよ!

  46. どうやるの? • コントールキー+Wキーを押すとこちらの画⾯に戻ります。

  47. どうやるの? • パケットをキャプチャするインターフェイスを選択 ここにインターフェイスのリストがある ここの波形が⼀番波打ってるのが⼤体メインのインターフェイス

  48. どうやるの? パケットキャプチャが即座に⾏われパソコンに⼊ってるパケット全てを羅列する

  49. どうやるの? • パケットがキャプチャされ始めたらブラウザを使って福岡市の ホームページへアクセス! • すると福岡市のホームページに対してHTTP GETリクエストを ⾏います。 • コツ:アクセス前にキャプチャを⼀旦停⽌してクリアする。キャ

    プチャを開始すると同時にブラウザでアクセス。 • HTMLが表⽰れたら即座にキャプチャ停⽌
  50. どうやるの? パケットキャプチャ開始 パケットキャプチャ停⽌

  51. どうやるの? 記録したパケットをクリアする 最後のパケットを追尾 最後or最初のパケットに⾶ぶ 記録したパケットの順番

  52. パケット多すぎ!!! • 知らない間にパソコンにはいろいろなパケットがあります。 • さっき使ったフィルタを使ってみましょう。 • 演習時間15分(休憩込み)

  53. 答え合わせ • 実際にやります

  54. は?こんなの余裕でしょw • そんな⼈たちへ • 福岡市のホームページにGETリクエストを送ってWiresharkで 表⽰してみよう! • 条件:左下の画像と同じストリームを表⽰しよう!

  55. 答え合わせ • 実際にやります。

  56. よく使うパケットフィルタリスト • よく使うパケットフィルタ • http • ip.addr == 192.168.1.7 •

    というかここを⾒れば良い • フィルタの右側の書式を押す • 検索にそれっぽい単語を⼊れる
  57. Burp Suiteを使って HTTPリクエストを編集してみよう!

  58. Burp Suiteとは • Java製の脆弱性診断ツール • Burp Suiteがプロキシとなって⼊ってくるHTTPパケットを書 き換えたり覗いたりすることができる。 • パケット解析というかどっちかいいうと中間者攻撃

    HTTP GET プロキシ。ここでリクエストを⽌める 127.0.0.1:8080
  59. Burp Suiteでリクエストを編集 • /index.htmlのGETリクエストを編集して /shisei/menu05_0045.htmlをGETリクエストさせる HTTP GET index.html Index.htmlをshisei/menu05_0045.htmlに編集して流す index.html

    shisei/menu05_0045.html
  60. Burp Suiteでリクエストを編集 • 正常な状態

  61. Burp Suiteでリクエストを編集 • 編集されたリクエスト(URLを注⽬)

  62. Burp Suiteでリクエストを編集 起動中

  63. Burp Suiteでリクエストを編集 Nextをクリック

  64. Burp Suiteでリクエストを編集 Start Burpをクリック

  65. Burp Suiteでリクエストを編集 起動中

  66. Burp Suiteでリクエストを編集 起動完了!

  67. Burp Suiteでリクエストを編集 プロキシタブを選択

  68. Burp Suiteでリクエストを編集 オプシュンタブを選択 チェックが⼊ってるのを確認。127.0.0.1:8080かを確認 違う場合はEdit

  69. Burp Suiteでリクエストを編集 画像と同じにできたらOK

  70. Burp Suiteでリクエストを編集 オンにするとリクエストをせき⽌める オフにすると普通にネットできる せき⽌めたリクエストをみる

  71. Burp Suiteでリクエストを編集 プロキシを通過したHTTPリクエスト

  72. Burp Suiteでリクエストを編集 GETリクエストパケットの中⾝。ここのタブは全部編集可能 ヘッダーごとに⾒れる

  73. プロキシを設定する • Mac

  74. プロキシを設定する 詳細をクリック

  75. プロキシを設定する プロキシタブ Webプロキシ 127.0.0.1と8080を⼊⼒ 終わったらOK

  76. プロキシを設定する • Windwos

  77. プロキシを設定する コントロール パネルかなんかで検索 インターネットのプロパティ LANの設定をクリック

  78. プロキシを設定する チェック 127.0.0.1と8080を⼊⼒ OK

  79. 編集してみよう!

  80. Burp Suiteでリクエストを編集 • Intercept is onにしてリクエストをせき⽌める • 即座にhttp://www.city.kitakyushu.lg.jp/index.htmlにブラウザ でアクセス

  81. Burp Suiteでリクエストを編集 /index.html HTTP/1.1が出る でなかったらForwardで次のパケットをせき⽌める

  82. Burp Suiteでリクエストを編集 /shisei/menu05_0045.html HTTP/1.1に書き換える 先頭の/に注意 編集したらForwardで編集したパケットを流す

  83. Burp Suiteでリクエストを編集 • やったぜ(URLを注⽬)

  84. Burp Suiteを使って HTTP4リクエストの中⾝を覗いてみよう!

  85. HTTPSとは • HTTPS (Hypertext Transfer Protocol Secure) は、HTTPによ る通信を安全に(セキュアに)⾏うためのプロトコルおよび URIスキームである。厳密に⾔えば、HTTPS⾃体はプロトコル

    ではなく、SSL/TLSプロトコルによって提供されるセキュアな 接続の上でHTTP通信を⾏うことをHTTPSと呼んでいる。 • Wikipediaより • つまりWiresharkで⾒ることができない。
  86. 試しに⾒てみる データの中⾝がEncrypted Application Dataとなって何⼀つ読めない プロトコルはIP→TCP→TLSv1.2→HTTP(HTTPは暗号化されているので分からない)

  87. 試しに⾒てみる TCPストリームを⾒ても何⼀つ読めない

  88. どうすれば⾒られるか? • 通常は サイト側の公開鍵で暗号化 サイト側の公開鍵で暗 号化されたパケット

  89. どうすれば⾒られるか? • 中間者攻撃的なことをする Burp Suiteの公開鍵で暗号化 BS暗号化さ れたパケット サイト側の公開鍵で暗 号化されたパケット ブラウザから送られたパケットを

    復号して中⾝を⾒る。 ↓ インターネットに流す前にサイト 側の公開鍵で暗号化
  90. やる

  91. HTTPSリクエストを覗く • プロキシを刺した状態でhttp://burp/にアクセスする ここをクリックして証明書をダウンロード

  92. HTTPSリクエストを覗く • ⼤体ダブルクリックしたらインストールされる。 • ルート証明書としてインストールすればいい • 警告がよく出るので承認しましょう • Windowsはここら辺⾒て •

    https://jp.globalsign.com/support/faq/10.html
  93. HTTPSリクエスト覗く • https://www.city.fukuoka.lg.jp/ • にアクセスしよう!

  94. HTTPSリクエストを覗く 443番ポートを使ってる=HTTPS通信 HTTPとして復号している(編集可能)

  95. スマホのパケットを覗いてみよう!

  96. スマホのパケットを覗いてみよう! • ピンと来る⼈はわかったと思う • LAN (wi-fi)内にBurp Suiteのプロキシを⽴てる。 • ↓ •

    スマホに設定でプロキシを通るように設定する(証明書も忘れずに) スマホにプロキシ設定 192.168.1.7:8080 LAN内のPCヘ 192.168.1.7 Burp Suiteへ :8080
  97. その他のツール紹介

  98. その他のツール紹介 • Charles 試⽤・有料 • http/httpsのパケット解析に特化したツール • ドメインごとにリクエストを⾒られるので⽬的のパケットを⾒つけやすい • Curlを⽂を⾃動⽣成するのでワンクリックでリクエストを再現可能。

    • Pkttools 無料 • セキュリティキャンプでおなじみ坂井弘亮⽒が作った純国産 • 簡易分析の位置付けだがパケットを直接編集や送信などできる超神ツール • CLIでパイプを使ってフィルタする • Chrome 開発者ツール Networkタブ 無料 • ブラヴザに⼊るhttp/httpsリクエストを分析できる。 • Curlを⽂を⾃動⽣成するのでワンクリックでリクエストを再現可能。
  99. Charles

  100. pkttools

  101. chrome

  102. Chrome curl

  103. Chrome curl

  104. 質問orこれやってくれ!

  105. 最後に • 九州学⽣エンジニア連合 • イベントの場所確保など⼤変な作業ありがとうございました。 • 特に東くん • さくらインターネット福岡オフィス様 •

    この度は会場をご提供いただきありがとうございました。 • プロキシ設定解除を忘れずに