オーディオスペクトログラムにアーカイブを隠して、1コマンドで隠しデータを見つける方法
CTFに参加したり、フォレンジクスで疑わしいファイルを分析したことがある人なら、その大変さを覚えているでしょう。画像にはzstegやstegsolveを使い、オーディオにはSonic Visualiserを開き、LSB解析には古いPython 2スクリプトを探し、JPEGにはsteghideを使います。結局、デスクトップには放置レベルの異なる десятокユーティリティが散乱することになります。
開発者Nour833によるStegoForgeというプロジェクトがGitHubに登場しました。著者は、一般的なステガノグラフィとステガナリシスのテクニックをすべて1つのツールにまとめ、便利なCLIとローカルWebインターフェースを提供しようとしました。さらに、このユーティリティはおなじみのPNGファイルだけでなく、MP4、Officeドキュメント、PDF、バイナリ、さらにはネットワークパケットとも連携できます。
このツールの仕組みと便利な機能について見てみましょう。
StegoForgeの内部構造
内部的にはモジュラーなPythonフレームワークですが、Windows、macOS、Linux用の готовыеバイナリとしても配布されています。そのため、仮想マシンでファイルをすぐに確認する必要がある場合、環境を設定して依存関係を管理する必要は必ずしもありません。
このリポジトリは2つのタスクを同時にカバーしています:隠しデータをキャリアファイルにパックする(ステガノグラフィ)と、不明なファイル内の隠しペイロードを検索する(ステガナリス)
コンテナは、ほとんどすべての一般的なフォーマットに対応できます:
- ラスター画像:PNG、JPEG、WebP、GIF、BMP。古典的なLSBからDCTによる周波数ベースのエンベディング、アダプティブアルゴリズムまで、様々なメソッドがサポートされています。
- オーディオ:WAV、MP3、FLAC、OGG。データはサンプルの最下位ビットに埋め込むたり、位相シフトしたり、スペクトログラムに直接画像を書き込むたりできます。
- ビデオ:キーフレームとモーションベクトルエンベディングによるMP4とWebM。
- ドキュメント:不可視のUnicode文字(ゼロ幅)への隠蔽、PDFストリーム、OfficeファイルのXML構造。
- 実行ファイル:PEとELFのスラックスペースとオーバーレイセクションへのパック。
すべてのデータは埋め込み前にAES-256-GCMでArgon2鍵導出を使用して暗号化されるため、攻撃者が単に十六進エディタで意味のあるテキストを見つけることはできません。
実践的な主要機能
競技モードとブラインド分析
CTFチャレンジでは、フラグがどのように隠されているかを事前に知ることはめったにありません。通常、手動でメソッドに反復する必要があります。StegoForgeにはこのための専用コマンド ctfがあります。
stegoforge ctf -f suspicious.mp3
このコマンドはヒューリスティクス、統計テスト(カイ二乗、RS分析)を実行し、特徴的な署名や暗号化されたブロックを検出しようとします。画像については、ユーティリティがONNX形式の畳み込みニューラルネットワークを接続でき、HuggingFaceから初回起動時にダウンロードされ、ステガノグラフィックエンベディングの確率を評価します。
スペクトログラムとビジュアルサウンド
オーディオステガノグラフィで最も説明的なテクニックの1つは、周波数スペクトラムに画像を埋め込むことです。StegoForgeは1行でこれを行います:
stegoforge encode -c track.wav -p logo.png --method spectrogram
出力は通常のオーディオファイルです。聴くとノイズが聞こえますが、トラックを任意のスペクトラムアナライザで開くと、埋め込まれた画像が画面にはっきりと表示されます。
信用できる否認のためのダブルボトム
デコイモードの興味深い実装です。1つのキャリアファイルに異なるパスワードで2つの異なるペイロードを書き込むことができます:
stegoforge encode -c photo.png \
-p secret.pdf -k "main-password" \
--decoy fake_notes.txt --decoy-key "fake-password"
コンテナを復号化するように求められたら、デコイパスワード fake-passwordを入力し、無害なテキストファイルを渡します。メインパスワードを知らずに2番目の隠しアーカイブの存在を証明することは数学的に困難です。
ソーシャルネットワークでのデータの生存性チェック
Telegram、Discord、Twitterなどのほとんどのプラットフォームは、アップロードされた画像を再圧縮して最下位ビットを破壊します。StegoForgeには組み込みのReed-Solomon誤り訂正と готовыеソーシャルメディア圧縮プロファイルがあります。ターミナル内で、プラットフォーム側の最適化後もペイロードが読み取り可能なままであるかどうか直接確認できます:
stegoforge encode -c photo.png -p text.txt -k "pass" --target twitter --test-survival
プロジェクトの構造
アーキテクチャは独立したレイヤーに分かれています:
- コア
core/には、各タイプのキャリア(画像、オーディオ、ビデオ、ドキュメント、バイナリ、ネットワーク)のエンコーダーが含まれています。 detect/モジュールは数学的解析、エントロピー計算、ONNXモデルの実行を担当します。crypto/モジュールは暗号化プリミティブ(Argon2、AES-GCM、X25519)をカプセル化します。- インターフェースは分離されています:インタラクティブメニュー付きのCLIとFlask上のWebインターフェースがあります。
Webインターフェースはコマンド stegoforge webでローカルに起動します。そこではピクセル変更ヒートマップを視覚的に表示したり、元のファイルとステゴコンテナを比較したり、ターミナルフラグを記憶せずにメソッドをクリックして切り替えたりできます。
注意すべき点
プロジェクトはまだ若く、リポジトリは約600スターですが、コードベースは整理されています。いくつかのニュアンス:
- ニューラルネットワーク検出器の初回起動時に、スクリプトはモデル重みを
~/.stegoforge/modelsにダウンロードするためにネットワークにアクセスします。インターネットのない隔離されたマシンで作業している場合は、事前に重みをキャッシュにプリロードする必要があります。 - ビデオや圧縮JPEGの複雑なエンベディングメソッドの一部は、非圧縮PNGの単純なLSBよりもはるかに多くの時間とCPUリソースを必要とします。
誰が役立つのか
StegoForgeは、CTF参加者、デジタルフォレンジクス担当者、情報セキュリティを勉強している学生にとってブックマークする価値があります。このツールは散らばったユーティリティの動物園を排除し、データの隠蔽と検出の実験のための明確なプラットフォームを提供します。
リポジトリをクローンするか、GitHubのプロジェクトページから готовыеバイナリを入手できます。
関連プロジェクト