ファイルシステムステガノグラフィー

おい、ハブル。

についての小さなプロジェクトを紹介したいと思います ステガノグラフィー, 勉強の空き時間に作りました。

ファイルシステム内の情報の隠しストレージに関するプロジェクトを作成しました(さらに FS).
これは、教育目的で機密情報を盗むために使用される可能性があります。

ファイルシステムステガノグラフィー

非常に古い Linux FS がプロトタイプとして選ばれました ext2.

具現化

実装に関する考慮事項

ext2 標準を「解明」するのが良い場合は、FS にいわゆる スーパーブロック、システムに関する基本的な情報が記載されています。 見つかってから ブロックビットマップ и Iノードテーブル。 ほぼすぐに、現在空の FS ブロックに情報を記録するというアイデアが生まれました。 今、武装したプログラマーからの保護について考える価値があります XNUMX 進エディタ.

隠された情報を暗号化せずに保存すると、たとえ FS 内でその情報がぼやけていても、特にプログラマが何を探すべきかを知っている場合には、依然として目立ちすぎてしまいます。 したがって、ソース ファイルのすべてのブロックを暗号化することが決定されました。 ブロック暗号を選択しました AES, しかし、おわかりのように、これは重要ではありません。

読み取り時に必要なブロックを他のすべてのブロックから分離するために、ブロックの先頭にある各ブロックに特別なマーカーを追加することが決定されました。 このトークンは、ソース ファイル内のブロック番号に応じて暗号化されています。 このトリックにより、必要なブロックを見つけるだけでなく、それらの正しい順序を認識することもすぐに可能になりました。

システムの一般的な動作原理。

ファイルシステムステガノグラフィー

録音アルゴリズム

ポイント:

  • まず、ソース ファイル システムに情報を書き込みます。
  • この情報を削除します (すべてである必要はありません)。
  • 非表示にするファイルは同じ長さのブロックに分割され、マーカーが追加されます。
  • これらのブロックを暗号化します。
  • 暗号化されたブロックを空の FS ブロックに配置します。

ブロック図愛好家向け

以下は録音アルゴリズムのブロック図です。 アルゴリズムは XNUMX つのファイルを入力として受け取ります。
- 変更可能なファイル システムのイメージ。
- ステガノグラフィーの対象となるファイル。
-AES の暗号化キーを含むファイル;
●マーカー付きファイル。
ファイルシステムステガノグラフィー

このアルゴリズムには XNUMX つの欠点があることにすぐに注意してください。ファイルを FS に書き込んだ後、 してはいけません 新しい情報はすべて FS に書き込んでください。新しい情報はすべて、圧縮ファイルに割り当てたブロック内に収まる可能性があるためです。ただし、これにより「痕跡をすぐに隠蔽する」可能性も生じます。

しかし、これをどのように修正できるかは明らかです。FS にブロックを書き込むためのアルゴリズムを書き直す必要があります。 これは理解できますが、信じられないほど時間がかかる作業です。
概念実証のために、私はこれを実装しませんでした。

その結果、FS には次の変更が加えられます; これは、ステガノグラフィーの前の FS の外観です (オーディオ ファイルは以前に録音されています)。
ファイルシステムステガノグラフィー
これは、すでに圧縮された情報を含む FS がどのように見えるかです。
ファイルシステムステガノグラフィー

読み取りアルゴリズム

ポイント:

  • キーとマーカーの構築方法の知識があれば、N にファイル システム ブロックの長さを乗じた値がステガノグラフ化されたファイルの長さよりも大きくなることが保証されて、最初の N 個のマーカーを構成します。
  • マーカーで始まる FS 内のブロックを検索します。
  • 受信したブロックを解読し、マーカーを分離します。
  • 結果のブロックを正しい順序で収集し、ソース ファイルを取得します。

ブロック図愛好家向け

以下は録音アルゴリズムのブロック図です。 アルゴリズムは XNUMX つのファイルを入力として受け取ります。
- ファイル システム イメージ。
-AES の暗号化キーを含むファイル;
●マーカー付きファイル。
ファイルシステムステガノグラフィー

プログラムの実行後、読み取りファイルが表示されます。これは、ステガノグラフ ファイル システムから抽出されたファイルです。キーまたはマーカーが正しく指定されなかった場合、読み取りファイルは空になります。
(美しさを愛する人のために、ファイルだけでなく、ファイル名、権限、最終変更時刻などのメタ情報を含む「ヘッダー」を挿入することもできます。)

起動の自動化

便宜上、Linux での起動を自動化するために bash スクリプトが作成されました (Ubuntu 16.04.3 LTS でテスト済み)。
起動を段階的に見てみましょう。
記録:

  1. sudo Copy_Flash.sh "DEVICE" - DEVICE (フラッシュ) から FS イメージを取得します。
  2. ./Write.sh “FILE” “KEY” “MARKER” – 仮想環境を作成し、必要なライブラリをダウンロードして、書き込みスクリプトを実行します。
  3. sudo ./Write_Flash.sh “DEVICE” – 変更された FS を再度 DEVICE に書き込みます。

読む:

  1. sudo Copy_Flash.sh "DEVICE" - DEVICE (フラッシュ) から FS イメージを取得します。
  2. ./Read.sh “KEY” 'MARKER” - 仮想環境を作成し、必要なライブラリをダウンロードし、読み取り用のスキップトを実行します。
  3. 現在のディレクトリで、読み取りファイルを開きます。これは圧縮された情報です。

まとめ

このステガノグラフィー手法には、おそらく改善、追加のテスト、およびより一般的なファイル システムへの拡張が必要です。 Fat32, NTFS и ext4.
しかし、この研究の目的は、ファイル システムに情報を隠して保存できる原理を示すことでした。
このようなアルゴリズムの助けを借りて、恐れることなく情報を保存することができ、キーを知っていれば、そのようなシステムをブルートフォースではなく(非常に長いアルゴリズムによって)ハッキングすることが可能であれば、キーを知らなくても、これはシステムは完全に安定しているように思えますが、これは別の記事の理由になる可能性があります。

すべてのコードは Python バージョン 3.5.2 で実装されています。 作品例 私のYouTubeチャンネルで紹介されました。 プロジェクトの完全なコードは次の場所に掲載されています。 githubの.
(はい、はい、製品版では「高速」な何か (C など) を記述する必要があることはわかっています 😉)
この実装では、ステガノグラフィーの入力ファイルのサイズは 1000 KB を超えてはなりません。

ユーザーに感謝の気持ちを伝えたい パベルMSTU 研究を計画する際の貴重なアドバイスや記事のデザインに関する推奨事項を得ることができます。

出所: habr.com

コメントを追加します