PR 本記事には広告(Amazonアソシエイト・もしもアフィリエイト・A8.net等)が含まれます。掲載情報の正確性には努めていますが、商品の詳細は必ずリンク先で最新情報をご確認ください。
CTF・セキュリティ学習

【ステガノグラフィ編】画像・音声に隠れた情報を見抜く|CTF思考フレームワーク #46

かも次郎とアンペンが「ステガノグラフィ」を解説するマスコットイラスト
安全に生きたい編集部

こんにちは、アンペンです!

今回はフォレンジック応用編の第1弾、ステガノグラフィ(Steganography)を扱います。一見ふつうの画像や音声の中に、別の情報を『隠す』技術です。

CTFのForensicsカテゴリでは超頻出で、『画像を渡されたけど何も見つからない』という時にまず疑う領域です。

「何も見つからない」ときこそ、ステガノの出番——これは覚えておく価値があります。一見デッドエンドに見える画像が、実は宝の地図だった、というのがこの分野の醍醐味。手詰まりは“諦めるサイン”ではなく“裏を探すサイン”なんです。

『画像の中に文字が隠れている』って、どういうこと?

たとえば画像の各ピクセルの最下位ビット(LSB)に文字を埋め込む方法があるよ。色味は人間の目には変わらないけど、データを取り出すと文字列が読めるんだ。

前回までの“事件を時系列で追う”話から、今回はガラッと趣が変わって“宝探し”です。テーマはステガノグラフィ——一見ふつうの画像や音声の中に、こっそり別の情報を隠す技術。CTFのフォレンジック問題では超定番で、『画像をもらったけど、何の手がかりも無い…』というとき、まず疑うのがこれ。今日は、その隠し方と見つけ方のコツを、ハガキの秘密のたとえで見ていきます。

まず結論

ステガノグラフィは『見える形に別の情報を隠す』技術の総称です。CTFでは画像LSB・ファイル末尾追加・メタデータ・音声LSBあたりが頻出。strings / exiftool / binwalk / zsteg / stegsolve の5本柱を順に試すのが定石です。守る側は『DLP+ファイル種別ベースの制限』程度しか手がなく、検知に頼る分野です。

この記事で分かること

  • ステガノグラフィの代表手法4種
  • CTFでの調べ方の定石(5本柱)
  • 暗号(Cryptography)との違い
  • 守る側でできる対策
難易度:初級〜中級 所要時間:10分 体験:自作画像で隠す→取り出す おすすめ:#45の後

📖 はじめてのWebセキュリティ #46|ステガノグラフィ編
画像・音声・ファイルに隠された情報を見抜く手法を扱います。 シリーズ一覧を見る →

⚠️ 大事なお約束
他者のファイル・画像・通信から無断で情報を抽出する行為は、業務上の権限や法律に違反する可能性があります。CTFや自分の検証ファイルのみで確認してください。

ステガノグラフィと暗号の違い

『情報を読めなくする』のが暗号、『情報の存在自体を隠す』のがステガノグラフィです。暗号は『鍵がないと読めない』ですが、ステガノグラフィは『そもそも情報があると気づかれない』のが目的です。

両方を組み合わせて、暗号化したデータをさらに隠すこともあります。これが最強の組み合わせです。

もう少しイメージを。暗号は『金庫に入れて鍵をかける』——中身があるのは丸わかりだけど、鍵がないと読めない。一方ステガノグラフィは『そもそも金庫があることに気づかせない』——壁紙に溶け込ませて、誰も“ここに何かある”と思わない。暗号が“読ませない”なら、ステガノは“存在を悟らせない”。狙いがまるで違うんです。だから、二つを重ねれば最強——隠したうえに、見つけても読めない、というわけですね。

図解:代表的な4つの手法

CTFで頻出のステガノグラフィ手法を4種類覚えておくと、ほぼ8割の問題はカバーできます。

そもそも、なぜ画像に文字を隠しても見た目が変わらないのでしょう。カギは『人間の目のいい加減さ』です。たとえば、ある赤色の濃さを表す数字を“200”から“201”に変えても、私たちには同じ赤にしか見えません。この“どうせ気づかれない最後のひと桁”に、文字を1ビットずつ忍ばせていく。1枚の画像には何百万ものピクセルがあるので、塵も積もれば、けっこうな長さの秘密が埋め込めてしまうんです。

画像LSB・末尾追加・メタデータ・音声の4種類のステガノグラフィ手法を2x2グリッドで示した図解
図1:CTFで頻出のステガノグラフィ4手法(画像LSB/末尾追加/メタ/音声)
📮 たとえるなら、ハガキの『見えるけど見えない秘密』

切手の隅に小さな点を打つ、文字の余白に空白を多めに入れる、絵の色を1段階だけ変える……ステガノグラフィは『そこにあるのに気づかれない』を狙う技術です。CTFでも、画像や音声の中に普通に紛れているデータを『気づき』で見つけ出す勝負になります。

一見普通のハガキに虫眼鏡を当てると秘密の文字が現れる様子を示したステガノグラフィのたとえイラスト
図2:ハガキに隠された見えない文字。ステガノは『気づかれない』が目的

ここで覚える用語:LSB(Least Significant Bit)
各バイトの最下位1ビット(0/1)のことです。RGB画像のピクセル値を1ずつ変えても人間の目には判別不能なので、ここに情報を埋め込むのが画像LSBステガノグラフィの基本。zstegstegsolve でビットプレーンを切り出して確認できます。

『LSB』という言葉、要は“数字のいちばん下の桁”のこと。たとえば「194」という数字の、一の位の「4」だけをこっそり書き換えるイメージです。一の位が0か1かなんて、全体の色味から見れば誤差みたいなもの。でも、その“誤差みたいな1桁”を画像じゅうから順番に拾い集めると、隠された文章が一字ずつ姿を現す。zstegstegsolve は、この“最後の桁だけ”を抜き出して見せてくれる道具なんです。

CTFで頻出の4つの手法

画像LSB / 末尾追加 / メタデータ / 音声

  • 画像LSB:RGB各色のLSBに文字データを埋め込む。PNG/BMPで多い。zsteg
  • 末尾追加(Appended Data):JPGの後ろにZIPを連結。binwalk / foremost で分離
  • メタデータ:EXIF・XMP・コメント領域に文字を埋め込む。exiftool
  • 音声ステガノグラフィ:スペクトログラム可視化やLSBで音声に隠す。Audacity でスペクトラム表示

『ファイルとして開いたら普通だったので、これで終わり』とせず、必ず4つの観点から見直すクセを付けましょう。

ここで身につけてほしいのが、“ファイルを開いて普通だった=おしまい、ではない”という感覚です。ステガノグラフィは『見た目は完全に普通』が大前提。だから、画像を表示して「ただの猫の写真じゃん」で終わらせず、必ず“裏側”を覗く。表で見えているのは氷山の一角かもしれない——そう疑うクセが、フォレンジックでは何より大事になります。

file・strings・exiftool・binwalk・zstegの5ツールを順番に使う調査フローを示した図解
図3:file→strings→exiftool→binwalk→zstegの5本柱で順に調べる

調査には“決まった順番”があります。なぜ順番が大事かというと、ステガノには“仕込みの種類”がいくつもあるから。末尾にファイルを足したのか、メタデータに書いたのか、ピクセルに埋めたのか——種類ごとに見るべき道具が違います。だから『軽くて速いものから順に、一通り当てていく』のが効率的。次の5本柱(file→strings→exiftool→binwalk→zsteg)は、まさにその“当てる順番”をテンプレ化したものです。迷ったらこの順で上から試す、と覚えておけば十分です。

CTFでやってみよう:定石5本柱の調査フロー

やってみよう / 自分の環境・CTFのみ

謎の画像ファイルを解析する練習

目的は『順番に試す』を身体に染み込ませることです。

  1. file foo.png でファイル種別を確認
  2. strings foo.png | less で平文の手がかりを探す
  3. exiftool foo.png でメタデータを全表示
  4. binwalk -e foo.png で埋め込みファイルの自動抽出を試す
  5. zsteg foo.png でLSBステガノを総当たり(PNG/BMPのみ)
  6. 音声ならAudacityでスペクトログラム表示してみる
他者から受け取ったファイルを許可なく解析するのは控えてください。検証は自作ファイルやCTF配布物だけで。

守る側にとって、ステガノグラフィはかなり手ごわい相手です。見つけにくさそのものが武器になっているからこそ、“検知”だけに頼らない発想が要ります。

画像に隠されたら、もう防ぎようがないんじゃない?

完璧に見抜くのは正直むずかしい。でも効く一手があるんだ。それが“画像の作り直し(リエンコード)”。送信前にサーバ側で画像をいったん別形式に変換し直すと、ピクセルの最後の桁に仕込まれたデータは、その変換のときにぐしゃっと壊れる。見た目はほぼ同じ画像のまま、隠された秘密だけが消えるんだ。完全には防げなくても、こうして“仕込みを無効化する”手は打てるんだよ。

守る側の対策:『気づきにくい』が前提

ステガノグラフィは情報漏洩の手段としても使われます。普通のJPG画像にしか見えないので、メール送信やクラウド共有でも検知されにくいのが問題です。

ここが守る側の悩みどころ。ステガノで隠されたデータは、見た目がただの旅行写真と区別がつきません。だから『機密ファイルの持ち出しを検知する』よくある仕組みを、するりとすり抜けてしまう。“画像なら無害だろう”という思い込みの隙を、ちょうど突いてくるわけです。完璧な検出は難しいので、まずは『画像にも秘密を隠せる』と知っておくこと自体が、第一歩の守りになります。

平時にできるステガノ対策
  • 外向き通信での大きな画像・音声・動画をDLPで監視
  • 外部サイトへのアップロードログを記録(誰が何を送ったか)
  • 機密情報を扱う端末からのSNS/メール添付を制限
  • 画像の再保存(リエンコード)で埋め込みを潰す(送信前ゲートウェイ)
  • 運用者向けに『画像にも情報が隠せる』ことを周知

画像でも情報って隠せるんだね。漏洩経路としても怖い。

そう。CTFのForensicsカテゴリで一番頻出だから、定石5本柱は手癖にしておこう。次回はファイルカービング、壊れたデータからファイルを救出する技術だよ。

ここまでをひと言でまとめると、ステガノグラフィは『見た目を信じず、裏を覗く』。隠す側は“存在を悟らせない”のが目的なので、見つける側は“普通に見えても疑う”のが基本姿勢です。そして調べるときは、軽いものから5本柱を順番に。手癖になるまで繰り返せば、CTFのフォレンジック問題はぐっと解けるようになります。

まとめ:『4手法×5本柱』でほぼ網羅

今回のポイント
  • ステガノグラフィは『情報の存在を隠す』技術(暗号と違う)
  • 頻出4手法:画像LSB / 末尾追加 / メタデータ / 音声
  • 定石5本柱:file / strings / exiftool / binwalk / zsteg
  • 守りは検知が中心(DLP+リエンコード+周知)

今日の持ち帰りは『開いて普通でも、終わりじゃない』。ステガノグラフィの世界では、“何も見つからない”は“まだ見つけていないだけ”のことが多いんです。表示して満足せず、file・strings・exiftool・binwalk・zstegと裏側を順にめくっていく。その“もうひと手間”が、隠された宝を掘り当てる鍵になります。

次回はファイルカービング、壊れたファイルやヘッダだけ残った断片から元データを救出する技術を扱います。

次に読みたい記事

参考資料

記事URLをコピーしました