CTF for Girlsの第7回ワークショップに参加しました WriteUp⑤
今回は、中級問題2の復習をします。
5_[中級問題2]
通信の痕跡からflagを見つけよう!
pcapファイルの中身を確認します。
DNSプロトコルがたくさんあります!
172.168.0.2(クライアント)が172.168.0.1(DNSサーバ)にリクエストを投げているようです。
例えば、No1のパケットでは、typeがTXTなので、"1.c4g17"に設定されたTXTレコードは何?(nslookup -q=txt 1.c4g17)と問い合わせて、
No2のパケットでそのような名前はありませんと返ってきているみたいです。
DNS(Domain Name System)とは
IPアドレスとホスト名をマッピングして相互解決するための仕組みです。
各ドメインのDNS情報をゾーン情報と呼びます。そして、ゾーン情報は「資源レコード」と呼ばれる1行単位の情報が集まってできています。資源レコードには、ドメイン名と対応する登録情報、登録レコードの「タイプ」が記録されています。
例えば、ドメイン名にIPアドレスが対応づけられているなら、タイプは「A」(Addressの略)となります。
主なレコードのタイプです。
TXTレコードは、送信メールアドレスの他者によるなりすましなどを防ぐためにも使われるようです。その場合は、SPFレコードとも呼ばれます。
【参考】
DNSの仕組みと運用(1):DNSの仕組みの基本を理解しよう - @IT
なりすましメール撲滅に向けたSPF(Sender Policy Framework)導入の手引き:IPA 独立行政法人 情報処理推進機構
データ返ってきているパケットはないか確認したところ、No204のパケットでflagが返ってきていました(*'▽'*)
CTF for Girlsの第7回ワークショップに参加しました WriteUp④
今回は、中級問題1の復習をします。
4_[中級問題1]
quiz2_1.pcapファイルからflagを見つけてください!
pcapファイルが与えられるので中身を確認します。
全体像を把握するために、「統計」→「プロトコル階層」で統計情報を確認します。
今回は、ICMPが怪しそうです。
なので、「フィルタとして適用」→「選択済み」でフィルタリングします。
ICMP(intrnet control message protocol)とは
ICMPはIPによる通信をサポートするプロトコルです。
pingコマンドやtracerouteコマンドで利用されています。
ICMPでは、エラーの内容や通信状態を知らせる情報をメッセージに書き込み、そのメッセージをIPパケットで運びます。
ICMPでは、タイプとコードを組み合わせることで、エラーや問合せのメッセージが
細かく伝わるようになっています。
【参考】
日経NETWORK編 (2014)『図解でわかるネットワークプロトコル』日経BP社 p. 129を参考に作成.
見てみると、エコー要求とエコー応答が繰り返されているようですが、データサイズの違うパケットがあり、その中にFLAGが隠されていました(*'▽'*)
CTF for Girlsの第7回ワークショップに参加しました WriteUp③
今回は、初級問題3の復習をします。
3_[初級問題3]
サーバが本当に受け取ったものは?
pcapngファイルが与えられるので、Wiresharkで開き、中身を確認します。
今回は、パケットがたくさんあります。
なので、全体像をつかむために、「統計」→「プロトコル階層」でプロトコルの使用状況を確認してみます。
なんとなく、Telnetが怪しそうです。
ちなみに、pcapファイルの中で怪しいプロトコルを見つけるときは、
以下2つの観点で探すとよいそうです。
①平文なプロトコル・・・TELNET、FTP、HTTPなど
②割合が少ないプロトコル
セッションを確認したいパケットの1つを選択し、「追跡」→「TCPストリーム」でセッションを確認していきます。
ちなみにPacket Detailペインの「Stream index」でセッションの番号が確認できます。
右下の「ストリーム」でセッションを移動できます。
1回目のセッション
パスワードを3回間違えて入力し、セッションが強制終了されています。
2回目のセッション
2回目のログインで成功しています。。が、このままではFLAGではありません。
Telnetでは、キーボードから1文字入力するごとに1文字ずつ8bitに変換され、その1文字(8bit)がTCPセグメントのペイロード部に格納され、リモートホストへ送信されます。
また、文字情報以外にもBackspaceやTabといった特殊なキーをキーボードから押したという情報もリモートホストへ伝えられます。
【参考】
http://www.7key.jp/nw/technology/protocol/telnet.html
1パケットずつ入力文字を確認していくと、No350のパケットで送信されているデータは「\b」のため「.」の部分は、バックスペースです。
つまり、「m」を入力した後に、バックスペースで文字を消しているようです。
ふむふむ(´・ω・`)
3回目のセッション
でも大丈夫、最後に間違えずにパスワードを入力してくれているセッションがありました(*'▽'*)
CTF for Girlsの第7回ワークショップに参加しました WriteUp②
今回は初級問題2の復習をします。
2_[初級問題2]
flagのパスワードを見つけ出せるかな?
今度もpcapngファイルが与えられるので、Wiresharkで開き、中身を確認します。
192.168.32.128と192.168.32.129の通信のようです。
No.8のパケットでクライアント(192.168.32.128)がHTTP GETリクエストを投げましたが、
No.10のパケットでWebサーバ(192.168.32.129)からHTTP 401Unauthorized(このリソースのアクセスには適切な認証が必要)が返ってきて失敗していることがわかります。
ここでステータスコード401Unauthorizedは、認証に失敗したことを示すエラーコードです。
WWW-Authenticateヘッダにより、サーバが提供する認証方式を知ることができます。
Packet Detailsペインで、レスポンスの詳細を確認してみます。
このサーバは、Basic認証をサポートしていることがわかります。
ちなみに「relm」はサーバ上でこのリソースが属しているURL空間の名前だそうです。
Basic認証
Basic認証は、ユーザ名とパスワードによる認証方式です。
ユーザ名とパスワードは、Authorizationヘッダに入れてリクエストごとに送信します。
Authorizationヘッダの内容は、認証方式(Basic)に続けてユーザ名とパスワードを「:」で連結しBase64でエンコードした文字列です。
ちなみに、Base64エンコーディングは、簡単にデコード可能です。
つまり、ユーザ名とパスワードが平文でネットワーク上を流れているのと同じなので、Basic認証を使う場合には、それが許される程度のセキュリティ強度でよいのか、SSL/TLS通信にし通信路上で暗号化するのかを検討する必要があります。
【参考】
www.amazon.co.jp
さらにみていくと、2回目のリクエストで、Http 200OKが返ってきていることがわかります。
認証情報を入力して、認証を突破したのでしょうか?
中身を見てみると、Authorizationヘッダの中に認証方式(Basic)に続けて、Base64でエンコードされた文字列が入っていることがわかります。
デコードは、Wiresharkがしてくれています。
ユーザ名「flag」のパスワードが答えでした(*'▽'*)
ちなみに、セッションを確認したいパケットの上で右クリック→「追跡」→「TCPストリーム」を選択すると、コネクション切断までの通信ログを表示することができます。
また、必ずしもセッションの最初のパケットを指定しなくても大丈夫です。
どれか1つのパケットを指定すれば、同じIPアドレス、TCPポートを持つパケットが自動的に抽出されます。
複数のセッションが存在する場合には、セッション毎に表示してくれます。
CTF for Girlsの第7回ワークショップに参加しました WriteUp①
CTF for girlsの第7回ワークショップに参加してきました。
CTF4G - CTF for Girls
ワークショップでは、はじめにネットワークの講義があり、そのあとに演習問題を解きました。
ワークショップの中で詳しい解説がありましたが、復習もかねてWriteUpを書きたいと思います。
pcapファイルやpcapngファイル(パケットが記録されたファイル)が与えられ、そこからflagを見つける形式でした。
今回は、初級問題1の復習をします。
1_[初級問題1]
Webページからダウンロードした画像を見つけ出そう!
pcapngファイルが与えられるので、Wiresharkで開き、中身を確認します。
192.168.32.192と192.168.32.55の通信のようです。
No.20のパケットでクライアント(192.168.32.129)がGETメソッドで、jpeg形式のファイルを要求し、
No.35のパケットでWebサーバ(192.168.32.55)がjpeg形式のファイルを返していることがわかります。
そこで、Wiresharkの機能を利用し画像を保存します。
「ファイル」→「オブジェクトをエクスポート」でデータ部分の保存ができます。
今回の通信プロトコルはHTTPなので、HTTPを選択すると、
jpeg形式のファイルが見つかったので、保存します!
保存した画像の中に、Flagが隠されていました(*'▽'*)