【ステガノグラフィ編】画像・音声に隠れた情報を見抜く|CTF思考フレームワーク #46
こんにちは、アンペンです!
今回はフォレンジック応用編の第1弾、ステガノグラフィ(Steganography)を扱います。一見ふつうの画像や音声の中に、別の情報を『隠す』技術です。
CTFのForensicsカテゴリでは超頻出で、『画像を渡されたけど何も見つからない』という時にまず疑う領域です。
「何も見つからない」ときこそ、ステガノの出番——これは覚えておく価値があります。一見デッドエンドに見える画像が、実は宝の地図だった、というのがこの分野の醍醐味。手詰まりは“諦めるサイン”ではなく“裏を探すサイン”なんです。

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

たとえば画像の各ピクセルの最下位ビット(LSB)に文字を埋め込む方法があるよ。色味は人間の目には変わらないけど、データを取り出すと文字列が読めるんだ。
前回までの“事件を時系列で追う”話から、今回はガラッと趣が変わって“宝探し”です。テーマはステガノグラフィ——一見ふつうの画像や音声の中に、こっそり別の情報を隠す技術。CTFのフォレンジック問題では超定番で、『画像をもらったけど、何の手がかりも無い…』というとき、まず疑うのがこれ。今日は、その隠し方と見つけ方のコツを、ハガキの秘密のたとえで見ていきます。
ステガノグラフィは『見える形に別の情報を隠す』技術の総称です。CTFでは画像LSB・ファイル末尾追加・メタデータ・音声LSBあたりが頻出。strings / exiftool / binwalk / zsteg / stegsolve の5本柱を順に試すのが定石です。守る側は『DLP+ファイル種別ベースの制限』程度しか手がなく、検知に頼る分野です。
この記事で分かること
- ステガノグラフィの代表手法4種
- CTFでの調べ方の定石(5本柱)
- 暗号(Cryptography)との違い
- 守る側でできる対策
📖 はじめてのWebセキュリティ #46|ステガノグラフィ編
画像・音声・ファイルに隠された情報を見抜く手法を扱います。 シリーズ一覧を見る →
⚠️ 大事なお約束
他者のファイル・画像・通信から無断で情報を抽出する行為は、業務上の権限や法律に違反する可能性があります。CTFや自分の検証ファイルのみで確認してください。
ステガノグラフィと暗号の違い
『情報を読めなくする』のが暗号、『情報の存在自体を隠す』のがステガノグラフィです。暗号は『鍵がないと読めない』ですが、ステガノグラフィは『そもそも情報があると気づかれない』のが目的です。
両方を組み合わせて、暗号化したデータをさらに隠すこともあります。これが最強の組み合わせです。
もう少しイメージを。暗号は『金庫に入れて鍵をかける』——中身があるのは丸わかりだけど、鍵がないと読めない。一方ステガノグラフィは『そもそも金庫があることに気づかせない』——壁紙に溶け込ませて、誰も“ここに何かある”と思わない。暗号が“読ませない”なら、ステガノは“存在を悟らせない”。狙いがまるで違うんです。だから、二つを重ねれば最強——隠したうえに、見つけても読めない、というわけですね。
図解:代表的な4つの手法
CTFで頻出のステガノグラフィ手法を4種類覚えておくと、ほぼ8割の問題はカバーできます。
そもそも、なぜ画像に文字を隠しても見た目が変わらないのでしょう。カギは『人間の目のいい加減さ』です。たとえば、ある赤色の濃さを表す数字を“200”から“201”に変えても、私たちには同じ赤にしか見えません。この“どうせ気づかれない最後のひと桁”に、文字を1ビットずつ忍ばせていく。1枚の画像には何百万ものピクセルがあるので、塵も積もれば、けっこうな長さの秘密が埋め込めてしまうんです。

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

ここで覚える用語:LSB(Least Significant Bit)
各バイトの最下位1ビット(0/1)のことです。RGB画像のピクセル値を1ずつ変えても人間の目には判別不能なので、ここに情報を埋め込むのが画像LSBステガノグラフィの基本。zsteg や stegsolve でビットプレーンを切り出して確認できます。
『LSB』という言葉、要は“数字のいちばん下の桁”のこと。たとえば「194」という数字の、一の位の「4」だけをこっそり書き換えるイメージです。一の位が0か1かなんて、全体の色味から見れば誤差みたいなもの。でも、その“誤差みたいな1桁”を画像じゅうから順番に拾い集めると、隠された文章が一字ずつ姿を現す。zsteg や stegsolve は、この“最後の桁だけ”を抜き出して見せてくれる道具なんです。
CTFで頻出の4つの手法
画像LSB / 末尾追加 / メタデータ / 音声
- 画像LSB:RGB各色のLSBに文字データを埋め込む。PNG/BMPで多い。
zsteg - 末尾追加(Appended Data):JPGの後ろにZIPを連結。
binwalk/foremostで分離 - メタデータ:EXIF・XMP・コメント領域に文字を埋め込む。
exiftool - 音声ステガノグラフィ:スペクトログラム可視化やLSBで音声に隠す。
Audacityでスペクトラム表示
『ファイルとして開いたら普通だったので、これで終わり』とせず、必ず4つの観点から見直すクセを付けましょう。
ここで身につけてほしいのが、“ファイルを開いて普通だった=おしまい、ではない”という感覚です。ステガノグラフィは『見た目は完全に普通』が大前提。だから、画像を表示して「ただの猫の写真じゃん」で終わらせず、必ず“裏側”を覗く。表で見えているのは氷山の一角かもしれない——そう疑うクセが、フォレンジックでは何より大事になります。

調査には“決まった順番”があります。なぜ順番が大事かというと、ステガノには“仕込みの種類”がいくつもあるから。末尾にファイルを足したのか、メタデータに書いたのか、ピクセルに埋めたのか——種類ごとに見るべき道具が違います。だから『軽くて速いものから順に、一通り当てていく』のが効率的。次の5本柱(file→strings→exiftool→binwalk→zsteg)は、まさにその“当てる順番”をテンプレ化したものです。迷ったらこの順で上から試す、と覚えておけば十分です。
CTFでやってみよう:定石5本柱の調査フロー
謎の画像ファイルを解析する練習
目的は『順番に試す』を身体に染み込ませることです。
file foo.pngでファイル種別を確認strings foo.png | lessで平文の手がかりを探すexiftool foo.pngでメタデータを全表示binwalk -e foo.pngで埋め込みファイルの自動抽出を試すzsteg foo.pngでLSBステガノを総当たり(PNG/BMPのみ)- 音声なら
Audacityでスペクトログラム表示してみる
守る側にとって、ステガノグラフィはかなり手ごわい相手です。見つけにくさそのものが武器になっているからこそ、“検知”だけに頼らない発想が要ります。

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

完璧に見抜くのは正直むずかしい。でも効く一手があるんだ。それが“画像の作り直し(リエンコード)”。送信前にサーバ側で画像をいったん別形式に変換し直すと、ピクセルの最後の桁に仕込まれたデータは、その変換のときにぐしゃっと壊れる。見た目はほぼ同じ画像のまま、隠された秘密だけが消えるんだ。完全には防げなくても、こうして“仕込みを無効化する”手は打てるんだよ。
守る側の対策:『気づきにくい』が前提
ステガノグラフィは情報漏洩の手段としても使われます。普通のJPG画像にしか見えないので、メール送信やクラウド共有でも検知されにくいのが問題です。
ここが守る側の悩みどころ。ステガノで隠されたデータは、見た目がただの旅行写真と区別がつきません。だから『機密ファイルの持ち出しを検知する』よくある仕組みを、するりとすり抜けてしまう。“画像なら無害だろう”という思い込みの隙を、ちょうど突いてくるわけです。完璧な検出は難しいので、まずは『画像にも秘密を隠せる』と知っておくこと自体が、第一歩の守りになります。
- 外向き通信での大きな画像・音声・動画をDLPで監視
- 外部サイトへのアップロードログを記録(誰が何を送ったか)
- 機密情報を扱う端末からのSNS/メール添付を制限
- 画像の再保存(リエンコード)で埋め込みを潰す(送信前ゲートウェイ)
- 運用者向けに『画像にも情報が隠せる』ことを周知

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

そう。CTFのForensicsカテゴリで一番頻出だから、定石5本柱は手癖にしておこう。次回はファイルカービング、壊れたデータからファイルを救出する技術だよ。
ここまでをひと言でまとめると、ステガノグラフィは『見た目を信じず、裏を覗く』。隠す側は“存在を悟らせない”のが目的なので、見つける側は“普通に見えても疑う”のが基本姿勢です。そして調べるときは、軽いものから5本柱を順番に。手癖になるまで繰り返せば、CTFのフォレンジック問題はぐっと解けるようになります。
まとめ:『4手法×5本柱』でほぼ網羅
- ステガノグラフィは『情報の存在を隠す』技術(暗号と違う)
- 頻出4手法:画像LSB / 末尾追加 / メタデータ / 音声
- 定石5本柱:
file / strings / exiftool / binwalk / zsteg - 守りは検知が中心(DLP+リエンコード+周知)
今日の持ち帰りは『開いて普通でも、終わりじゃない』。ステガノグラフィの世界では、“何も見つからない”は“まだ見つけていないだけ”のことが多いんです。表示して満足せず、file・strings・exiftool・binwalk・zstegと裏側を順にめくっていく。その“もうひと手間”が、隠された宝を掘り当てる鍵になります。
次回はファイルカービング、壊れたファイルやヘッダだけ残った断片から元データを救出する技術を扱います。
