0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rogue Tower picoCTF (Writeup)

0
Posted at

【picoCTF】[Rogue Tower] Writeup

問題概要

  • Category: Forensics

Description:

A suspicious cell tower has been detected in the network. Analyze the captured network traffic to identify the rogue tower, find the compromised device, and recover the exfiltrated flag.
Download the network capture file: here

日本語訳:

ネットワーク内で不審な基地局が検出されました。キャプチャされたネットワークトラフィックを分析し、不正な基地局を特定して、侵害されたデバイスを見つけ出し、流出されたフラグを回収してください。
ネットワークキャプチャファイルのダウンロード:こちら


解法のプロセス(アプローチ)

1. Wiresharkでのパケット解析とファイルの抽出

まずはダウンロードしたファイル(rogue_tower.pcap)をWiresharkで開きます。

image.png

パケット一覧を眺めていると、POST メソッドを用いてHTTPで何かをアップロードしている通信(流出の痕跡)が見つかります。
この通信で送受信されたデータを取り出すため、Wiresharkのメニューから 「ファイル」 > 「オブジェクトをエクスポート」 > 「HTTP」 を選択し、該当のファイルを保存(エクスポート)します。

image.png

2. 抽出したオブジェクトとHTTPヘッダの確認

抽出したファイルの中身をターミナルで確認してみます。
私はupload_thingsというフォルダーを作り、そこに抽出したオブジェクトを入れました。

cd ./upload_things
cat *

実行結果:

SF5aXHVlc01KB15GBW5WBVRbZkcGRgZEZwBYAwBXUQFbSg==

末尾の == などの特徴から、Base64 でエンコードされていることがわかります。しかし、これを単にBase64デコードしただけでは意味不明な文字列になってしまいます。どうやらさらに暗号化されているようです。

ここで問題文のヒントを思い出します。

The encryption key is derived from the victim device's IMSI
(暗号化キーは、被害デバイスのIMSIから派生しています)

Wiresharkに戻り、先ほどのPOST通信のHTTPヘッダ(User-Agentなど)を詳しく見てみます。

image.png

ヘッダ情報に MobileDevice/1.0 (IMSI:310410187936156; CELL:91043) という記述がありました。
つまり、被害デバイスの IMSIは 310410187936156 であることがわかります。この数字の並びが、復号のための「鍵(キー)」に関係しているようです。

3. XOR暗号の「既知平文攻撃」による鍵の特定

IMSIの数字のどこからどこまでが鍵なのか?これを特定するために、暗号解読の世界やCTFでよく使われる**「既知平文攻撃(Known Plaintext Attack)」**という論理的な逆算テクニックを使用します。

XOR(排他的論理和)を用いた暗号には、以下のような非常に便利で面白い数学的な性質があります。

平文(元のデータ) XOR 鍵 = 暗号文
↓ (入れ替え可能)
暗号文 XOR 平文 = 鍵

つまり、「暗号化された後のデータ」と「暗号化される前のデータ(の一部)」が両方わかっていれば、使われた「鍵」を逆算できるのです。
今回、フラグのフォーマットは必ず picoCTF{ から始まる(=これが既知の平文)ことが分かっています。

CyberChef を開き、以下のように設定して逆算してみましょう。

  1. Input: SF5aXHVlc01KB15GBW5WBVRbZkcGRgZEZwBYAwBXUQFbSg== を入力
  2. Recipe 1: From Base64 を適用
  3. Recipe 2: XOR を適用し、Keyに picoCTF{ を設定

image.png

すると、Outputに 87936156 という数字が浮かび上がってきました!
この数字を先ほど見つけたIMSI(310410187936156)と見比べてみると……IMSIの下8桁と完全に一致しています。
これで暗号化キーが 87936156 であることが完全に証明されました。

4. フラグの復元

正しい鍵がわかれば、あとは元に戻すだけです。
CyberChefのレシピを本来の復号手順に組み直します。

  1. Input: SF5aXHVlc01KB15GBW5WBVRbZkcGRgZEZwBYAwBXUQFbSg==
  2. Recipe 1: From Base64
  3. Recipe 2: XOR (Key: 87936156, Scheme: UTF8)

image.png

無事に暗号が解け、フラグが出現しました!

Flag:
picoCTF{r0gu3_c3ll_t0w3r_7a06fd7c}


お疲れさまでした!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?