はまやんはまやんはまやん

hamayanhamayan's blog

CTFにおけるフォレンジック入門とまとめ

この記事はCTF Advent Calendar 2022の13日目の記事です。
昨日はゼオスTTさんのevilなnpmパッケージでRCEでした。
最近は依存関係が多くてサプライチェーン考えるのも天文学的な感じですよね…恐ろしさをとても実感できる良記事でした…

はじめに

本記事では、CTFでフォレンジック(Forensics)と言われる分野についてまとめる。
後半からは辞書的に使ってください。

注意事項

CTFにおけるフォレンジック問題

CTFとはセキュリティを題材にしたコンテストの総称であるが、特にその中でもフォレンジックと呼ばれる分野について説明する。
CTFにおけるフォレンジックを一個人の意見としてまとめると、以下のように言える。

とあるファイルが与えられて、そこから有意な情報を抜き出す問題

脆弱性を発見することは求められない。
このカテゴリでは、与えられたファイルによって何が起きるのか、起きた後のログやデータを元にどのような有意な情報が抜き出せるかという部分が問われる。

「とあるファイル」は本当に何でもいいのだが、体感、実際のサイバー犯罪に使われるようなファイルや、サイバー攻撃後の事後調査にまつわるファイルが多い。
他にも欠損したファイルの復元といったファイルそのものの仕様を理解したうえで、ファイルを読み取っていく問題もある。

…とそれっぽく書いたが、単純に、ファイルが与えられるので頑張って情報を読み取って、というのがフォレンジック問題での基本方針である。

カテゴリについて

フォレンジック問題周りはカテゴリ分けに好みが出る。
今回は以下のようなカテゴリにあるものをすべてフォレンジックとしてまとめて説明することにする。
カテゴリ分けにルールはないので、雰囲気でカテゴリ名からフォレンジック問だなと認識するといいと思う。

  • Forensics: 特定のファイルに対して解析をして、有意な情報を抜き出してくる
    • Network: ネットワークのパケットログに対して解析をして、有意な情報を抜き出してくる
    • Logs: 何らかのログに対して解析をして、有意な情報を抜き出してくる
  • DFIR: Degital Forensics and Incident Responseを指す言葉。この2つのセキュリティ的な役割に近い問題が多いので、こういうカテゴリ分けもある
  • BlueTeam: 組織でサイバー攻撃の防御側のチームを指す言葉。主に防御側が解析する対象が題材になりがちなので、BlueTeam向け問題とか言われたりする
  • (Steganography: これは明日の記事へ)

あとmiscに入れ込まれていたりもします。

解き方/初学者に向けて

フォレンジック問題はアドホックな解法が多いので、こういう知識が必要で…という初学者にストレートに役立つ情報が出せそうにない。
以下、小話レベルでまとめておく。

  • よく出る解析対象というのはあるので、その手法を学んでいくといい。得意分野を作って解けるようにすると楽しくなってくる
  • grep力を鍛える
    • 与えられるデータはサイズが結構大きい。それっぽいキーワードでgrepしたり、適切なフィルタをかけながら解析する
    • GUIだと遅い場合があったりするので、CUIでさっとgrepできるようになると色々便利
    • だが、時には目grep力が真価を発揮するときも…
  • ツールアシストに頼る
    • 根本を理解することも大事だが、フォレンジックではツールを知っているか、適切に扱えるかということも影響してくる
    • Writeupを見ると、新しいツールを使って解きましたみたいな解法も時々見かけるのでアンテナを張っておくといいかもしれない
  • 幅広い知識が要求されるので、幅広に知識を取り入れよう
    • ディスクイメージフォレンジックでは、ディスクイメージの中に含まれるWindowsに関する知識が必要だったりする
    • ネットワークフォレンジックなどでは、通信にバイナリファイルが含まれていて、reversingをして中身を解析しないと暗号化された通信が復元できなかったりする
    • 膨大なファイルから深く見る範囲を絞るのも、知識がついてくればできるようになってくる
  • フォレンジックは他のジャンルと違って毎回出るようなジャンルではないし、出ても好みの解析対象であるとは限らないので、毎週CTFを覗いて問題を漁ること

…つまり第一歩目は?

CTFにどんどん参加して、たたき上げで成長していくのももちろんおすすめではあるが、Blue Team向けに出されている学習教材を使って勉強するのがいい。
はっきり第一歩を言い切るなら「TryHackMeで学習したい分野について、順番に埋めていくのがいい」と思う。

  • TryHackMeのBlueTeam系の学習教材を利用する
    • ネットワークフォレンジックとか、メモリフォレンジックとかの特定対象の解析のための教材がたくさんある
    • かなり丁寧に説明が入っているので、TryHackMeで完結して技能を習得できる
    • 今ちょうどAdvent of Cyber 2022をやっていて、これを完走するだけで、かなりフォレンジック問に立ち向かえるようになると思う
  • 今なら2022 SANS Holiday Hack Challenge & KringleCon
    • SANSが毎年12月に出しているチャレンジ。BlueTeam系の問題が多いイメージ。手取り足取り教えてくれる系ではない。
    • 去年までの資料を使って勉強してもいいし、今年の問題をチャレンジしてみるのもいい
  • ほかにもBlueTeam系のチャレンジサイトが多くある(本記事の末尾にちょっと書いておきました)

…ほんとにたたき上げです。
手取り足取り教えるような入門記事もいつか書きたいですが、時間が…

サブジャンルについて

サブジャンルについて記事を分けて、キーワード形式でまとめていく。
学習の参考にしてください。

Challenges

フォレンジック問題と銘打って問題が出題されていたり、blue team向けの学習サイトがあったりもします。
ほぼ書きなぐりですが、書いときます。

明日も自分の記事ですね。ステガノグラフィーについて書きます。