セキュリティ・キャンプ全国大会2022 オンライン 専門コース C【脅威解析クラス】応募課題 以下の問1から問8について、それぞれ5,000文字以内で回答してください。 問5および問6については配布ファイルを使用します。以下に配布ファイルのSHA-256ハッシュ値を記載しますので、正しいファイルを取得できていることを確認した上で課題に取り組んでください。 - sc2022_challenge05.zip - 0292b1972845b6c3a57129acfd0de403f6f8080a4e2a3eef93c3913c63efe0df - sc2022_20220322T230402.zip - 088e8fb04f486bae5d2dca1ccf9e5b971044c297bd03f7a5bd05bfaded6f27c3 なお、正解がある設問については、"正解していること"よりも"正解にたどり着くまでのプロセスや熱意"を重要視しています。答えにたどり着くまでの試行錯誤や自分なりの工夫等を書いて、精一杯アピールしてください。 ## 問1 あなたがセキュリティ・キャンプ全国大会に応募する理由を教えてください。受講生や講師とのコミュニケーション、受講したい講義、なりたい自分など、何でも構いません。 ## 問2 今までに解析したことのあるソフトウェアやハードウェアにはどのようなものがありますか?解析の目的や解析方法、結果として得られた知見などを含めて教えてください。 ## 問3 今までに作成したソフトウェアやハードウェアにはどのようなものがありますか? どんな言語やライブラリ、パーツを使って作ったのか、どこにこだわって作ったのか、などたくさん自慢してください。 ## 問4 ここ数年に発表された、以下のキーワードに関連するニュースや記事や学術論文から1つ選び、それに関して調べた内容を記述してください。内容には、1.選んだ理由、2.技術的詳細、3.被害規模または影響範囲、4.対策、の4点を必ず含めてください。なお、対策は今ある技術のみに捕われず、将来的な技術や法律など、自由な発想で書いてください。 キーワード: - サイバーセキュリティインシデント - マルウェア - 攻撃キャンペーン - 脆弱性 - 新たな攻撃手法 - 未知の脅威 ## 問5 配布ファイル(sc2022_challenge05.zip)に含まれるsafe.exe.gzfは解析対象のPEプログラムをGhidraデータベース形式に変換したものです。data.datは解析対象のプログラムが使用するデータです。safe.exe.gzfを解析して以下の問題に対して回答してください。 ※Ghidraのインストールおよびgzfに関する補足: https://hackmd.io/@qKyR9Y4rS7y7ytUCRr6FRg/H188XOvXq ### 問5-1 このプログラムの目的、挙動を説明せよ。 ### 問5-2 data.datがどのような形式で暗号化されているか答えよ。また、復号されるデータの内容がどのようなものか答えよ。 ### 問5-3 data.datを復号するスクリプト作成して提出せよ。 ## 問6 配布ファイル(sc2022_20220322T230402.zip)は、Windows 10 PCのユーザsc2022のホームディレクトリ(C:¥Users¥sc2022¥)以下を取得し、zip形式で圧縮したファイルです。このユーザは、あるファイルサーバ上のファイルにアクセスしていたこと、あるオンラインストレージサービスを利用していたこと、が判明しています。 以下の問題に対して、配布ファイルをどのように解析したかも含めて回答してください。 ### 問6-1 ユーザがアクセスしたファイルサーバー上のファイルに関連する情報を可能な限り記載してください(例: ファイル名、ファイルパス、日時等)。 ### 問6-2 ユーザが利用していたオンラインストレージサービスに関連する情報を可能な限り記載してください(例: サービス名、アクセス方法、日時等)。 ### 問6-3 ユーザは、ファイルサーバ上のファイルをオンラインストレージサービスにアップロードしたか、していた場合はどのファイルであったかを回答してください。 ## 問7 Binary Exploitに関して、次の各問に回答してください。 ### 問7-1 Heap Buffer Overflowとはどのような脆弱性かを簡潔に説明してください。また、この脆弱性を攻撃者がどのように攻撃に利用するかを説明してください。 ### 問7-2 Use-after-Freeとはどのような脆弱性かを簡潔に説明してください。また、この脆弱性を攻撃者がどのように攻撃に利用するかを説明してください。 ### 問7-3 以下のx64アーキテクチャのROP gadgetを組み合わせ、後の各処理を実現するROP chainを構築してください。ROP chainは、64-bitのアドレスや値をカンマ(,)区切りで書いてください。ただし、関数A, Bのアドレスはそれぞれ0x401aa0, 0x401bb0、64-bit非負整数型変数xのアドレスは0x602080とします。また、関数A, Bの呼び出し規約はAMD64 ABIに従っており、引数・戻り値ともに64-bitの非負整数値とします。 このROP gadgetの組み合わせだけでは実現できないと判断した場合は、その理由を書いてください。 0x401027: pop rdi; ret; 0x40103a: pop rcx; ret; 0x4011f2: pop rsi; pop r12; ret; 0x40132a: mov rdi, rax; rep movsq; ret; 0x401401: xchg eax, edi; ret; (例) A(1); B(2); --> 0x401027, 1, 0x401aa0, 0x401027, 2, 0x401bb0 (1) A(1, 2); B(3); (2) A(B(0)); (3) A(x); (4) x = 0xdeadbeefcafebabe; 問題の意味が分からない場合はReturn Oriented Programmingについて調べ、ROPについてあなたが理解した内容を書いてください。 ## 問8 eBPF(extended Berkeley Packet Filter)はLinuxカーネルが提供する機能の名前です。eBPFについて次の各問に答えてください。 ### 問8-1 eBPFとはどのような機能かを「JIT」という言葉を用いて説明してください。 ### 問8-2 あなたが身近に使っているアプリケーションでBPF/eBPFを利用するものを探し、どのような使われ方がしているかを説明してください。見つからない場合は、普段使っていないアプリケーションでも構いません。