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

hamayanhamayan's blog

CTFにおけるステガノグラフィ入門とまとめ

この記事はCTF Advent Calendar 2022の14日目の記事です。
昨日はCTFにおけるフォレンジック入門とまとめ - はまやんはまやんはまやんでした。殴り書きですみません。

初めに

本記事では、CTFでステガノグラフィ(steganography)と言われる分野についてまとめる。
ステガノグラフィは知っているだけで解けるような問題も多くあるので、備忘も兼ねてまとめておく。

注意事項

CTFにおけるステガノグラフィ問題

Wikiを参照すると、「情報隠蔽技術の一つであり、情報を他の情報に埋め込む技術」とある。
CTFにおいては、隠蔽される情報はフラグか問題を進展させるものであり、埋め込み先は多彩である。

CpawCTF-Steganography - Speaker Deck
↑の記事が最強。とても分かりやすいし、初学者が読むのに最適。説明も丁寧。
初学者はこちらのスライドを一通り読んでから戻ってくることを勧めます。(戻ってくる必要もないかも)

ステガノグラフィに対して他の問題と大きく異なるのが、競技者不利の状況である。
他のジャンルの問題は机上におおよそ解くために必要な情報は揃っているが、
ステガノグラフィは「どういった情報」が「どういった方法」で埋め込まれているかを推測以外にほとんど知る術がない。
…いや、ちょっと強い表現かも。(推測以外にもエントロピーを確認したりとか、暗号学的なアプローチから推測は可能かもしれません。)
さておき、こういった状況があるので問題文にヒントを入れたりすることで多少なりともロジカルに解ける可能性を残していたりする。
そういった情報やググって出てきた手法、試行錯誤によって埋め込まれた情報を取り出してくる。

解き方/初学者に向けて

ステガノグラフィは全部アドホックな解法なので何とも言えないが、今までやってきた感じ、傾向が無くもないので気が付いた所をつらつらと書いていく。

  • まず、File Carvingやstringsなど、どんなファイルでも汎用的に行うチェックはあるので、それを実施しよう
  • 各ファイルフォーマットに対して使えるステガノグラフィ手法が異なるので、一通り試す
    • 適当に調べて出てきた手法を試す。Writeupで見つけたんだけど試さなかったが死ぬほど心当たりある
  • 冷静になる。難しく考えすぎないこと
    • 手元にある方法でダメだったら、もうやりようはないのでググって新しいステガノグラフィ手法を探しにいくか、あきらめて寝る
  • 比較的グループ化できる隠蔽方針
    • LSB, Least Significant Bit
      • データの最下位のビットに01で情報を埋め込んでいく手法。特に画像では画素情報の最下位ビットが変化しても見た目上は変化がないので見た目では自然に見える。ただ、最下位ビットだけを抽出して見てみると、元の画像のエントロピーとは異なる感じに見えてくるので怪しいみたいなことがあったりする(説明下手)
    • 2つの全く同じように見えるファイルに対する差分を利用
      • 元画像を何かしらの方法で探してきて差分比較するようなパターンも見たことある
    • 特殊なエンコーディング
      • この辺りは自分であれこれ考えてもしょうがないので、ステガノグラフィの各種ソルバーを順番に回していって成功するまで頑張るしかない
    • フォーマットの構造上余っている部分にデータを置く
      • File Carvingで拾ってこれる可能性もあるが、こういった可能性もある。ややフォレンジック問に近いかもしれない

サブジャンル

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

ファイルに対して汎用的に行える操作

とりあえずバイナリファイルに対してできることをあれこれやってみるのがいい。 フォレンジックでやるようなこともやってみると思わぬ情報が手に入るかも。

  • file
    • 拡張子が偽装されている可能性もあるので、とりあえずfileコマンドでファイルの種類を特定する
  • File Carving
    • とあるファイルに対して別のファイルが素直に埋め込まれている場合は、File Carvingを使って埋め込みファイルを取り出すことができるかもしれない。 -> forensicのページ
  • バイナリエディタテキストエディタで眺める
  • XOR暗号化されてる箇所あるかも

テキストファイルに対するステガノグラフィ

画像ファイルに対するステガノグラフィ

動画ファイルに対するステガノグラフィ

音声ファイルに対するステガノグラフィ

資料,未整理リンク

CTFアドカレの明日は?

明日はkanonさんの「初心者がCTF始めるためにはどうすればいいのか(個人的偏見)」です。
cryptoのWriteupを多く書いていて、いつも参考にさせてもらっています!圧倒的感謝