Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
パケット解析入門-勉強会資料
Search
Azunyan
December 11, 2018
Technology
6
2.2k
パケット解析入門-勉強会資料
パケット解析勉強会で使用した資料です。
https://goo.gl/2FsqTJ/
https://student-kyushu.connpass.com/event/103277/
Azunyan
December 11, 2018
Tweet
Share
More Decks by Azunyan
See All by Azunyan
Wireshark&パケット解析入門@ハンズオン@サポーターズCoLab用資料
azunyan1111
0
450
Other Decks in Technology
See All in Technology
[2024年3月版] Databricksのシステムアーキテクチャ
databricksjapan
7
1.9k
株式会社EventHub・エンジニア採用資料
eventhub
0
1.9k
次世代Web認証「パスキー」 / mo-zatsudan-passkey
nkzn
22
13k
ここが嬉しいABAC ここが辛いよABAC #再解説+補足編
masahirokawahara
0
180
「ふりかえりのふりかえり」をふりかえり、実のあるふりかえりにする
naitosatoshi
0
210
TransitGatewayの基礎
toru_kubota
0
230
Janus
bkuhlmann
0
480
エンタープライズ環境下での Active Directory の運用 TIPS
tamaiyutaro
1
1.5k
DevOpsDays History and my DevOps story
kawaguti
PRO
7
1.4k
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
3
150
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
490
CSSDAY 2024
kevinshallvari
0
180
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.8k
Rebuilding a faster, lazier Slack
samanthasiow
72
8.2k
Large-scale JavaScript Application Architecture
addyosmani
503
110k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
The Mythical Team-Month
searls
214
42k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Designing the Hi-DPI Web
ddemaree
276
33k
How to train your dragon (web standard)
notwaldorf
71
5.1k
Transcript
九州学⽣エンジニア勉強会 パケット解析⼊⾨ Azunyan1111
講義情報 • まだインストールしてない奴なんていないよなぁ? • Wireshark • https://goo.gl/yRwKp1 • Burp Suite
• https://goo.gl/mz1Tzo • 本⽇の講義資料(講義で使うパケットファイルもあります) • https://goo.gl/2FsqTJ • Wi-if情報 • SSID: • Pass:
ツイッター実況OK! • ハッシュタグ #student_kyushu をつけてツイートしよう!
もくじ(時間が許す限り最後までやる) • 本⽇のみんなの⽬標発表 • 軽く⾃⼰紹介(みんなもやる?) • 注意事項 • パケット解析に必要な最低限の知識 •
パケット解析ツールの紹介 • Wiresharkを使ってパケットを⾒てみよう! • Burp Suiteを使ってHTTPリクエストを編集してみよう! • Burp Suiteを使ってHTTPSリクエストの中⾝を覗いてみよう! • スマホのパケットを覗いてみよう! • その他のツール紹介 • 質問orこれやってくれ
本⽇のみんなの⽬標 パケット解析完全に理解した とツイートする
本⽇のみんなの⽬標 パケット解析完全に理解した とツイートする ↓ パケット解析⼊⾨完全に理解した と⾔えるレベルになろう!
⾃⼰紹介 • 名前:Azunyan1111 • ツイッター:@Azunyan1111_ ←アンダーバー1つに注意 • 職種:サーバーサイドエンジニア • ⼤学:福岡⼯業⼤学・学部4年
• ⾔語:Golang • 趣味:Webセキュリティ • 研究:Tor(匿名化ブラウザの奴) • セキュリティキャンプ2018全国⼤会 参加 • セキュリティキャンプ2016福岡 参加 • セキュリティキャンプ2018⼭梨 参加 • Micro hardening Fukuoka 2018 参加 • Micro hardening Ube 2018 参加
みんなも⾃⼰紹介するときのテンプレ • 名前 • ⼤学or仕事or趣味で何してる? • Web系とかOS系とかIoT系とか • 勉強会への意気込み •
以下あったら • 好きなエディタ • 好きな⾔語 • パケット解析ができるようになったら◯ ◯がしたい! • etc…
注意事項 • 講義資料は外部配布禁⽌(気分次第) • お⾦払ってきてる社会⼈もいるのでダメです • スクショを上げる程度ならOK • 講義で勉強したことを悪⽤しないように •
やろうと思えば⾊んな攻撃ができます。 • 犯罪幇助(ほうじょ)とかしたくないのでダメ絶対! わからない単語が出てきたらすぐに調べるのを推奨 ※わからなくなったら⼿を上げてチューターに助けてもらってください! 質問は随時受け付けてます。⼿を上げて質問だと⾔ってください(⻑くな りそうだったらあとにします。) 間違ってる知識があるかもしれないので違うっぽかったら指摘してくださ い
パケット解析に必要な最低限の知識
パケット解析に必要な最低限の知識 • パケットとは • TCP/IP • MACアドレス • OSI参照モデル
パケットとは • 情報伝送の⼀単位。伝送・交換に必要な情報を付したもの。 • Wikipediaより • 以下おっさんがJKに可愛いって情報を送ってる図 To:JK 君可愛いね♪ 君可愛いね♪という情報が⼊ってるパケット
From:おっさん 君可愛いね♪
補⾜情報 • パケットは必ずしも⼀つではない。 • パケットの最⼤サイズは1500byte(任意に変更可能) • もし1024KBのデータを送る場合1500byteでは⾜りないので複数のパケッ トに分割して送る • 単純計算で
• 1,048,576byte/1500byte = 699.05066667パケットを送る必要がある • ツールが良い感じにつなげてくれるので700個もパケット⾒る必要は無い
TCP/IP • ⼀般的に広く使われているプロトコル群 • TCPとIPv4を使って通信をする⽅法 • IP • パソコン1台に割り当てられるIPアドレスを元にルーターがリレーをし て相⼿に到達する
• TCP • 3way ハンドシェイクでコネクションを確⽴して通信を⾏う • パケットは必ずしも相⼿に到達するとは限らない。 • なので再送信とかする必要がある。そういうのをやってくれる奴
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 その他のルーター (インターネット)
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 その他のルーター (インターネット)
OSI参照モデル • 正直ざっくりと分かってれば良い • リンク層 • Mac:Macアドレスを元に通信をする(LANの中での通信な雰囲気) • ネットワーク層(インターネット層) •
IP:IPアドレスを元に通信する(インターネットな雰囲気) • トランスポート層 • TCP:コネクションを確⽴して通信をする(通信形式みたいな) • リンク層の上にネットワーク層が乗ってその上にトランスポー トが乗っての繰り返し。
パケット解析ツールの紹介
パケット解析に必要なツール • 現状私がこれだけのツールで事⾜りているので他ツールもある。 • Wireshark 無料 • パケット解析の定番。これさえあれば⼤体なんでもできる • BurpSuite
無料・有料 • パケットを編集するのに優れたツール • Charles 試⽤・有料 • http/httpsのパケット解析に特化したツール • Pkttools 無料 • セキュリティキャンプでおなじみ坂井弘亮⽒が作った純国産 • 簡易分析の位置付けだがパケットを直接編集や送信などできる超神ツール • Chrome 開発者ツール Networkタブ 無料 • ブラヴザに⼊るhttp/httpsリクエストを分析できる。 • Curlを⽂を⾃動⽣成するのでワンクリックでリクエストを再現可能。
Wiresharkを使ってパケットを⾒てみよう!
Wiresharkとは • 世界的に有名なパケット解析ツール • これがあれば⼤体何でもできる。 • 鍵があればHTTPS中⾝も観れる
サンプルパケットのダウンロード • Google Driveからダウンロードしてね。 • https://goo.gl/2FsqTJ • sampleHTTPをWiresharkで開く
開き⽅
開き⽅
開き⽅
開き⽅
Wiresharkの⾒⽅ これら⼀つ⼀つがパケット パケットの中⾝を表⽰している 本当に流れている実際のパケットの中⾝
Wiresharkの⾒⽅ 送信先IPアドレス 送信元IPアドレス プロトコルの種類(⼀番上に乗ってるの) パケットをデコードした結果
Wiresharkのフィルタ ここに「http」と⼊⼒してHTTPリクエストだけをフィルタして表⽰する
Wiresharkでフィルタした後 フィルタの中⾝ HTTPでフィルタしたのでHTTPのみ
TCP/IPパケット解説 • わかりやすい図などはこちら • IP • https://www.infraexpert.com/study/tcpip1.html • TCP •
https://www.infraexpert.com/study/tcpip8.html
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アドレスを教えあうプロトコル)
Wiresharkだと
TCP/IPパケット解説 • ネットワーク層 • ▪⾚:送信元IPアドレス( 192.168.1.7 ) • ▪⻩:送信先IPアドレス( 219.94.163.38
) • ※リンク層とは別で送信元と送信先が逆な所注意 • 192.168.1.7の部分はルーターがグローバルIPに置き換えてネッ トに出て⾏く。
Wiresharkだと
Wiresharkワンポイントアドバイス • バイナリをクリックするとそれが何の情報なのかを真ん中のタ ブで表⽰してくれる。(逆もしかり)
Wireshark で HTTP GETリクエストを追ってみよう
フィルタを消そう! ここの×をクリックするか フィルタの中⾝の⽂字列を消してエンター!
HTTP GETを追う フィルタが何も無いことを確認
HTTP GETを追う HTTP GETと書かれているのを右クリック 追跡→HTTPストリーム
HTTP GETを追う ⾚:実際に送っているリクエスト ⻘:リクエストに対する返答 リクエストしたHTMLの中⾝
HTTP GETを追う ⾚:実際に送っているリクエスト ⻘:リクエストに対する返答 ⽂字化けはここから⽂字コード変換 (⽇本語不可)
HTTP GETを追う ここからリクエスト送った側と送られた側でフィルタできる ⽂字化けはここから⽂字コード変換 (⽇本語不可) 検索を使うと該当⽂字列がドラッグされる
HTTP GETを追う パケットサイズを⾒ると1つのHTMLを1468byteで分割して 複数のパケットで送っているのがわかる
唐突の課題! • 北九州市のIPアドレスをWiresharkを使って調査せよ!
どうやるの? • コントールキー+Wキーを押すとこちらの画⾯に戻ります。
どうやるの? • パケットをキャプチャするインターフェイスを選択 ここにインターフェイスのリストがある ここの波形が⼀番波打ってるのが⼤体メインのインターフェイス
どうやるの? パケットキャプチャが即座に⾏われパソコンに⼊ってるパケット全てを羅列する
どうやるの? • パケットがキャプチャされ始めたらブラウザを使って福岡市の ホームページへアクセス! • すると福岡市のホームページに対してHTTP GETリクエストを ⾏います。 • コツ:アクセス前にキャプチャを⼀旦停⽌してクリアする。キャ
プチャを開始すると同時にブラウザでアクセス。 • HTMLが表⽰れたら即座にキャプチャ停⽌
どうやるの? パケットキャプチャ開始 パケットキャプチャ停⽌
どうやるの? 記録したパケットをクリアする 最後のパケットを追尾 最後or最初のパケットに⾶ぶ 記録したパケットの順番
パケット多すぎ!!! • 知らない間にパソコンにはいろいろなパケットがあります。 • さっき使ったフィルタを使ってみましょう。 • 演習時間15分(休憩込み)
答え合わせ • 実際にやります
は?こんなの余裕でしょw • そんな⼈たちへ • 福岡市のホームページにGETリクエストを送ってWiresharkで 表⽰してみよう! • 条件:左下の画像と同じストリームを表⽰しよう!
答え合わせ • 実際にやります。
よく使うパケットフィルタリスト • よく使うパケットフィルタ • http • ip.addr == 192.168.1.7 •
というかここを⾒れば良い • フィルタの右側の書式を押す • 検索にそれっぽい単語を⼊れる
Burp Suiteを使って HTTPリクエストを編集してみよう!
Burp Suiteとは • Java製の脆弱性診断ツール • Burp Suiteがプロキシとなって⼊ってくるHTTPパケットを書 き換えたり覗いたりすることができる。 • パケット解析というかどっちかいいうと中間者攻撃
HTTP GET プロキシ。ここでリクエストを⽌める 127.0.0.1:8080
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
Burp Suiteでリクエストを編集 • 正常な状態
Burp Suiteでリクエストを編集 • 編集されたリクエスト(URLを注⽬)
Burp Suiteでリクエストを編集 起動中
Burp Suiteでリクエストを編集 Nextをクリック
Burp Suiteでリクエストを編集 Start Burpをクリック
Burp Suiteでリクエストを編集 起動中
Burp Suiteでリクエストを編集 起動完了!
Burp Suiteでリクエストを編集 プロキシタブを選択
Burp Suiteでリクエストを編集 オプシュンタブを選択 チェックが⼊ってるのを確認。127.0.0.1:8080かを確認 違う場合はEdit
Burp Suiteでリクエストを編集 画像と同じにできたらOK
Burp Suiteでリクエストを編集 オンにするとリクエストをせき⽌める オフにすると普通にネットできる せき⽌めたリクエストをみる
Burp Suiteでリクエストを編集 プロキシを通過したHTTPリクエスト
Burp Suiteでリクエストを編集 GETリクエストパケットの中⾝。ここのタブは全部編集可能 ヘッダーごとに⾒れる
プロキシを設定する • Mac
プロキシを設定する 詳細をクリック
プロキシを設定する プロキシタブ Webプロキシ 127.0.0.1と8080を⼊⼒ 終わったらOK
プロキシを設定する • Windwos
プロキシを設定する コントロール パネルかなんかで検索 インターネットのプロパティ LANの設定をクリック
プロキシを設定する チェック 127.0.0.1と8080を⼊⼒ OK
編集してみよう!
Burp Suiteでリクエストを編集 • Intercept is onにしてリクエストをせき⽌める • 即座にhttp://www.city.kitakyushu.lg.jp/index.htmlにブラウザ でアクセス
Burp Suiteでリクエストを編集 /index.html HTTP/1.1が出る でなかったらForwardで次のパケットをせき⽌める
Burp Suiteでリクエストを編集 /shisei/menu05_0045.html HTTP/1.1に書き換える 先頭の/に注意 編集したらForwardで編集したパケットを流す
Burp Suiteでリクエストを編集 • やったぜ(URLを注⽬)
Burp Suiteを使って HTTP4リクエストの中⾝を覗いてみよう!
HTTPSとは • HTTPS (Hypertext Transfer Protocol Secure) は、HTTPによ る通信を安全に(セキュアに)⾏うためのプロトコルおよび URIスキームである。厳密に⾔えば、HTTPS⾃体はプロトコル
ではなく、SSL/TLSプロトコルによって提供されるセキュアな 接続の上でHTTP通信を⾏うことをHTTPSと呼んでいる。 • Wikipediaより • つまりWiresharkで⾒ることができない。
試しに⾒てみる データの中⾝がEncrypted Application Dataとなって何⼀つ読めない プロトコルはIP→TCP→TLSv1.2→HTTP(HTTPは暗号化されているので分からない)
試しに⾒てみる TCPストリームを⾒ても何⼀つ読めない
どうすれば⾒られるか? • 通常は サイト側の公開鍵で暗号化 サイト側の公開鍵で暗 号化されたパケット
どうすれば⾒られるか? • 中間者攻撃的なことをする Burp Suiteの公開鍵で暗号化 BS暗号化さ れたパケット サイト側の公開鍵で暗 号化されたパケット ブラウザから送られたパケットを
復号して中⾝を⾒る。 ↓ インターネットに流す前にサイト 側の公開鍵で暗号化
やる
HTTPSリクエストを覗く • プロキシを刺した状態でhttp://burp/にアクセスする ここをクリックして証明書をダウンロード
HTTPSリクエストを覗く • ⼤体ダブルクリックしたらインストールされる。 • ルート証明書としてインストールすればいい • 警告がよく出るので承認しましょう • Windowsはここら辺⾒て •
https://jp.globalsign.com/support/faq/10.html
HTTPSリクエスト覗く • https://www.city.fukuoka.lg.jp/ • にアクセスしよう!
HTTPSリクエストを覗く 443番ポートを使ってる=HTTPS通信 HTTPとして復号している(編集可能)
スマホのパケットを覗いてみよう!
スマホのパケットを覗いてみよう! • ピンと来る⼈はわかったと思う • LAN (wi-fi)内にBurp Suiteのプロキシを⽴てる。 • ↓ •
スマホに設定でプロキシを通るように設定する(証明書も忘れずに) スマホにプロキシ設定 192.168.1.7:8080 LAN内のPCヘ 192.168.1.7 Burp Suiteへ :8080
その他のツール紹介
その他のツール紹介 • Charles 試⽤・有料 • http/httpsのパケット解析に特化したツール • ドメインごとにリクエストを⾒られるので⽬的のパケットを⾒つけやすい • Curlを⽂を⾃動⽣成するのでワンクリックでリクエストを再現可能。
• Pkttools 無料 • セキュリティキャンプでおなじみ坂井弘亮⽒が作った純国産 • 簡易分析の位置付けだがパケットを直接編集や送信などできる超神ツール • CLIでパイプを使ってフィルタする • Chrome 開発者ツール Networkタブ 無料 • ブラヴザに⼊るhttp/httpsリクエストを分析できる。 • Curlを⽂を⾃動⽣成するのでワンクリックでリクエストを再現可能。
Charles
pkttools
chrome
Chrome curl
Chrome curl
質問orこれやってくれ!
最後に • 九州学⽣エンジニア連合 • イベントの場所確保など⼤変な作業ありがとうございました。 • 特に東くん • さくらインターネット福岡オフィス様 •
この度は会場をご提供いただきありがとうございました。 • プロキシ設定解除を忘れずに