CTFリソース
最も一般的なステガノグラフィーのトリックの一つは、画像内のファイルを非表示にすることです。 ファイルは通常画像として開きますが、隠しファイル、一般的にはzip、テキスト、さらにはその他の画像ファイルも保持します。
これが機能する理由は、イメージファイルが読み込まれるときに、イメージのサイズを決定する開始バイトと終了バイトがあるためです。 使用する画像ビューアーは、これらのバイト間の情報を使用して画像を表示し、終了バイトの後には何も無視します。たとえば、JPEGの終端バイトは16進数のFF D9なので、16進数ビューア(xxdはlinuxでは適していますが、windowsではHxDのようなものです)を使用すると、画像がどこで終わ これらのバイトは、時には数字の海で見つけるのが難しいので、16進数のダンプ(16進数のバイトを表すテキスト)を見ることも隠されていることを見txtまたは.zipファイル。
例
この戦略の非常に単純な実装が例で使用されています。このディレクトリ内のjpgファイル。 お使いのコンピュータに保存し、画像ビューアでそれを開く場合は、単純なjpg画像が表示されるはずです。
ここで、フラグを探してみましょう。 お気に入りの16進エディタで画像を開き、奇妙なものを探し始めます(この時点でダンプからフラグ自体を見つけることができますが、例のために ファイルの一番下の近くに、jpgの終端バイトが表示されますffd9
:
01e17a0: 685c 7fab 8eb4 5b32 61f1 c4ff d950 4b03 h\....[2a....PK.
この行のもう一つの重要な部分は、終わり近くのPK
です。 PK
は、zipファイルの発明者であるPhil Katzの頭文字であり、zipファイルがその時点から始まることを示しています。
この情報を使って、別の便利なlinuxツールdd
を使うことができます)。 dd
コマンドは非常に汎用性があり、多数のファイルのコピーと変換を可能にします。 私たちの場合は、zipファイルを抽出するためにそれを使用します。
zipファイルの場所はわかっていますが、dd
は10進数の値のみを取るため、16進数の場所0x01e17adを16進数から10進数に変換して1972141を取得します。
:
dd if=example.jpg bs=1 skip=1972141 of=foo.zip
これはイメージの例を取ります。jpg、’in file’if、一度に1つのブロックを読み込み、’block size’bs、1972141をブロックするためにスキップし、スキップしてfooと呼ぶ’out file’zipに書き込みます。ジップ これが完了すると、あなたは簡単に内部のテキストファイルにアクセスするために解凍することができますzipファイルを持っている必要があり
これは単純なステガノグラフィーの問題を解決する長い道のりですが、戦略がどのように機能するかを示しています。 解決のセクションでは、より簡潔で効率的な方法が説明されています。
の検出これらの課題は、通常、他の指示のない単純な画像として提示され、それがステガノグラフィーを含むかどうかを調べるためにhexエディタを介して実行するのは競合他社次第です。 画像が表示され、指示が表示されない場合、最も安全な賭けは、画像の終了タグの後に何かが隠されていることです。
の解決dd
のようなlinuxツールを使用してこれらのタスクを解決することは可能であり、時には実用的ですが、それをはるかに簡単にするツールがいくつ Binwalk
は、ステガノグラフィツールで隠されたファイルを自動的に検出して抽出する非常に便利なツールです
CTFの例
このタイプのステガノグラフィーは、通常はあまり高く評価されていませんが、かなり広く普及しています。 BackdoorCTF2014は、一般的に簡単なもの、ctfexampleを作成しました。jpgですが、複数のレイヤーが含まれます。
XXD
HxD
DD
Binwalk