ステガノグラフィー (Steganography)は、画像や動画などのように見えるところに秘密を隠す隠匿方法である。古代ギリシャから密かにメッセージをやり取りする方法として使用され、9・11テロ当時、オサマ・ビンラディンがテロ犯とメッセージをやり取りする際にステガノグラフィーが使用され、世界的に問題視されるようになった。
デジタル時代が来てからステガノグラフィーも様々な方法で進化した。特にハッカーは単純に秘密のメッセージをやり取りする目的以外に不正コードを隠す際、ステガノグラフィー方法を使用している。
過去のステガノグラフィーは写真の中にデータを操作し、隠匿する方法を使用していた。最近はサイズが大きいデータを隠すために動画やオーディオなどを利用してデータを隠匿する。さらにマルチメディアの発展によって、一般人も手軽に超高画質の動画が作れて、動画自体のサイズも大きくなっているため、ステガノグラフィーは、そのデメリットでもあった表示されているメッセージに比べてファイルのサイズが大きくなる問題を隠すことができるようになった。
そのため、動画のステガノグラフィーは隠匿するデータが大きい場合、最適な隠匿場所として利用されている。
専用の機器など要らず、仮想のボリューム(Volume)を作成し、動画のステガノグラフィーを作る方法と、これを類推する方法について整理したいと思っている。
動画のステガノグラフィーはスペースを活用した方法と、周波数を活用した方法があり、動画を活用する方法を実施するためには徹底的に準備された動画と時間が必要である。そのため、検知される確率は下がったが、専門家ではないと実際に使用は難しかった。
方法 | 動画ステガノグラヒィー方法の説明 |
---|---|
スペースステガノグラヒィー | 映像のピクセル値を利用してステガノグラヒィーの映像を作成 人の目の限界を活用して空間の内にLBS(最下位ビット)を変造 |
周波数ステガノグラヒィー | JPEG圧縮の際、DCT(Discrete Cosine Transform)以降、量子化をしたLSB(最下位ビット)を操作してデータを隠す方法 JPEG圧縮の際、行われる体表的な動画ステガノグラヒィー方法 |
マルチメディアステガノグラヒィーは動画ファイルの中に隠しボリュームデータが埋め込まれる、今回の検証では「VeraCrypt」を用いたもので検証を行う。
VeraCryptは暗号化された仮想のボリューム(Volume)を作成し、ボリュームに保存されているデータを保護する暗号化プログラムである。VeraCryptでボリュームに保存されているデータにアクセスするためにはVeraCryptプラグラムが必要で、ボリュームを作成する際のパスワードを入力してマウントする。
VeraCryptの機能である隠しボリューム(Hidden Volume)は既に暗号化されたボリューム以外に、追加で隠しボリュームを作成することを意味している。図1-1のように一般ボリューム(Normal Volume)は隠しボリュームがない暗号化されているボリュームを意味し、図1-2のように隠しボリュームは一般ボリュームのスペースに追加された暗号化ボリュームを意味している。
隠しボリュームのメリットは存在の確認ができないことである。その理由は隠しボリュームが分からない場合、その領域は一般ボリュームのランダムなデータに埋め込められ、隠しボリュームとランダムに埋め込まれているデータの区別ができないためである。
VeraCryptはパスワードが入力されたら復号化を実施し、万が一パスワードが間違った場合は隠しボリュームを暗号化する。一般ボリュームはDecoyで適当に難しいパスワードを設定し隠しボリュームはパスワードの難易度を上げ、データを精巧に隠すことができる。
よく見られているMP4の正式な名称はMPEG-4 part 14で、メディアコンテナフォーマット標準で高画質の動画を高い圧縮率で保存及び再生する技術である。MP4ファイルフォーマットは大きく、ヘッダー、メディアデータ、メディアヘッダーで構成され、ファイルの構造はデータとメタデータボックスで構造されている。
ヘッダー | 説明 |
---|---|
ftyp | ファイルの互換性を確認するファイルタイプボックス |
moov | メディアの全てのデータを保存するムービーボックス(movie box) |
mvhd | ムービーヘッダーボックス(movie header box) |
mdat | 実際にメディアを保存するメディアデータボックス(media data box) |
trak | 特定メディアのメタ情報 |
stsd | トラックのデコーディングに必要なコーデック情報(sample description box) |
stts | サンプルの時間(time-tosample box) |
stsz | Chunk内のサンプルのサイズ(sample size box) |
stsc | Chunk内のサンプルの数(sample to chunk box) |
stco | Chunkの位置(chunk offset box) |
MP4ファイル構造の中でメディアデータ領域を修正し、データを隠匿する。VeraCryptで作ったコンテナファイルから外部ボリュームヘッダーとヘッダーバックアップ領域を削除し、MP4のメディアデータ領域を挿入する。メディアデータ領域に既存メディアデータを正常に実行させるために、仮のデータ(Fake Data)を隠しボリューム(Hidden Volume)ヘッダーの前に追加する。
MP4ファイルのメディアデータの領域を修正して隠したいデータを挿入する。再生されているステガノグラフィーファイルを作るためには現在公開されているPythonスクリプトであるtcsteg2.pyを使用する。
VeraCryptで作られたボリューム10MBのファイルに準備した動画に挿入し下記の図のボリュームのサイズ通り、ファイルのサイズが増えた。作られた動画は原本動画と一緒に再生され、VeraCryptでマウントも可能である。
MP4 InspectorのツールでMPEG-4 Fileの全般的な比較とデータの構造(Boxes/Atoms)を比較して分析してみた。
原本動画ファイルとステガノグラフィーのファイルを比較すると、両方ともMP4形式のシグネチャーを持ち、同じ再生時間と画質になる。
大きく変更されたところはファイルのサイズと新規でFree Boxが作成され、Boxの数が1つ増えた。
構造の中、サイズが増加し隠しボリュームにmdat boxが追加されていることが確認できた。
ここで注目が必要なのはMPEG-4 Fileフォーマットの中のstcoヘッダーである。stcoヘッダーはChunkの位置テーブルが入っており、moov(movie box)に位置する。このヘッダーはmdata(メディアデータ)の位置を順次的に参照するためにサンプルをマッピングしている。mdata boxはステガノグラフィーでサイズが増加しいるため、stcoが参照するオフセット値も変更されるようになる。
動画の中にあるステガノグラフィーを検知することは難しいが、分析を通じて動画の中に隠しボリュームを探す方法は存在する。
下図のようにボリュームが挿入されることで、mdat boxが作成され、動画を通常通り再生させるためにstcoのChunk Offset値が変更されたことが確認できた。
正常的な動画のオフセット位置は65536から172032の間に存在し、図4-13のようにstcoのオフセットのスタート位置が65536から172032の間ではないと当該の動画がステガノグラフィーであることが疑える。
動画のファイル構造ビューアがインストールされていない場合、公開されているPythonのスクリプトを利用して分析することができる。
下図は動画のオフセットのスタート位置を探してくれるスクリプトの結果画面である。使用しているスクリプトはmdatのスタートされるオフセットの位置を計算し、当該の動画にステガノグラフィーの使用有無及び隠されているデータのサイズを大略に表示させる。
犯罪が多様に進化されていることでフォレンジックに関するニュースが良く出ている。特に最近はサイバー犯罪が社会的に大きな話題になり、年々増加している。このようなサイバー犯罪が知能的に発展しながら自分に不利なデータを消し、隠すためにステガノグラフィーも注目されている。
ステガノグラフィーは古代から続けられている方法であるが、現在ではデータの暗号化、サイバー犯罪、不正コードの流布など、様々な分野で活用されており、長い間、疑われないように技術も発展している。
ここまで動画のデータを直接隠匿し、隠匿したデータを探す方法に対して調べてみた。
現在持っている動画もステガノグラフィーファイルではないか疑う必要があると思う。
[1] MP4 Steganography: Analyzing and Detecting TCSteg
https://dl.acm.org/doi/pdf/10.1145/2978178.2978181
[2] アンチフォレンジック分析 – 音声と動画に隠られているメッセージの分析
[3] Real Steganography with TrueCrypt
https://keyj.emphy.de/real-steganography-with-truecrypt/
[4] PreviewFilesmp4.py
https://www.forensicmag.com/product-release/2012/01/python-script-detect-hidden-data
[5] VeraCrypt – Documentation
https://veracrypt.codeplex.com/documentation
[blogcard url=”https://cyberfortress.jp/mailmag-reg/”]
[blogcard url=”https://cyberfortress.jp/contact/”]
Written by CYBERFORTRESS, INC.
Tweet