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.3k
パケット解析入門-勉強会資料
パケット解析勉強会で使用した資料です。
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
500
Other Decks in Technology
See All in Technology
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
440
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
190
日経電子版のStoreKit2フルリニューアル
shimastripe
1
140
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
220
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
AGIについてChatGPTに聞いてみた
blueb
0
130
Taming you application's environments
salaboy
0
200
あなたの知らない Function.prototype.toString() の世界
mizdra
PRO
0
120
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
The Language of Interfaces
destraynor
154
24k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
4 Signs Your Business is Dying
shpigford
180
21k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Statistics for Hackers
jakevdp
796
220k
Code Review Best Practice
trishagee
64
17k
A Philosophy of Restraint
colly
203
16k
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これやってくれ!
最後に • 九州学⽣エンジニア連合 • イベントの場所確保など⼤変な作業ありがとうございました。 • 特に東くん • さくらインターネット福岡オフィス様 •
この度は会場をご提供いただきありがとうございました。 • プロキシ設定解除を忘れずに