Twitterに書ききれないこと

イベントや技術的なことを記したい・・・

セキュキャンのPcapの問題について

今年もセキュリティキャンプの参加者が発表されましたね。 僕自身は応募可能な年齢を過ぎているため、応募はしていません。

応募用紙の問題をざっと見て気になった箇所があったので、その問題についてだけ調べたことをまとめたいと思います。

これです

問題文

下記バイナリを解析し、判明した情報を自由に記述してください
------------------------------------------------
D4 C3 B2 A1 02 00 04 00 00 00 00 00 00 00 00 00 
00 00 04 00 01 00 00 00 88 EB 40 54 A2 BE 09 00 
52 00 00 00 52 00 00 00 22 22 22 22 22 22 11 11 
11 11 11 11 08 00 45 00 00 44 1A BD 40 00 80 06 
3A 24 C0 A8 92 01 C0 A8 92 80 10 26 01 BB 86 14 
7E 80 08 B3 C8 21 50 18 00 FC 0D 0E 00 00 18 03 
03 00 17 01 0E FB 06 F6 CD A3 69 DC CA 0B 99 FF 
1D 26 09 E1 52 8F 71 77 45 FA
------------------------------------------------

これをバイナリファイルするとPcapになります。 それをwiresharkで開くと・・・ f:id:pinksawtooth:20150701222445p:plain

InfoにはEncrypted Heartbeatと表示されていました。 この段階でセキュリティキャンプだし・・・Heartbleedでは?と思ったのですがEncryptedってなってるしなーと思い、そこで終わっていました。

今年の参加者が発表されるにつれて、続々と応募用紙が公開されました。 その中で簡単にPcapを開くと明らかに怪しいと分かるという記述を見つけて、自分の環境を調べたところどうやらバージョンによって表示が変わるようでした。 f:id:pinksawtooth:20150701222439p:plain

ツールに頼ってばかりだと今回見たいなことがあるなーと思い、どうすればよかったか調べてみました・・・がなかなか資料が見つからず・・・

@elliptic_shihoさんありがとうございます。

Pcapのフォーマット調べてWireshark使わずに解くこともできますが、今回は差分だけで・・・

このへんで調べた。

RFC 6520 - Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension

巷を賑わすHeartbleedの脆弱性とは?! — Mobage Developers Blog

f:id:pinksawtooth:20150701230715p:plain

Encrypetd Heartbeat Messageは"01 0E FB 06 F6 CD A3 69 DC CA 0B 99 FF 1D 26 09 E1 52 8F 71 77 45 FA"の部分

最初の1バイトはtypeフィールド"01"
次にくるのはpayload_lengthフィールドの2バイト"0e fb"
次は本来であればpayloadフィールドのpayload_lengthバイトがくるのですが少ないみたいです・・・
paddingフィールドが16バイトの "69 dc ca 0b 99 ff 1d 26 09 e1 52 8f 71 77 45 fa"なのでpayloadフィールドは"06 f6 cd a3"の4バイトです。

Heartbleedを疑っていたのであれば、こんな感じで読み解き、Wiresharkさんが表示してくれなくても解けたみたいです。 ツールを全く使わないのは現実的ではないけれど、ツールに頼りきりなのもいけないなと実感できたいい機会でした。