
サイバー・セキュリティ・ソリューション(CSS)部
エバンジェリスト フェロー 関原 弘樹
こんにちは!
CSS
部エバンジェリスト フェローの関原です。
だいぶ寒くなってきました。コートが欲しくなる日々も近いですね。
まだちょっと早いですが、寒くなるとこたつに入ってみかんを食べるのが楽しみという方も多いのではないでしょうか。みかんといえばその昔、みかんのしぼり汁で「あぶり出し」というのをやったことを思い出しました。しぼり汁を筆につけ、はがき等に絵をかき乾かすあれです。あぶると独特のにおいがしたことを覚えています。
あぶり出しの原理については、しぼり汁を塗った部分は塗らない部分より焦げやすくなるので、火でさっとあぶると茶色くなると聞いたことがありますが特に検証したことはありません。
さて、先日
Web
をウォッチしていたらこんな記事が目に入りました。
外部リンク: ボットネット「 Cutwail 」、日本狙うメール攻撃に新展開 - 画像に命令埋め込む「ステガノグラフィ」を悪用
相変わらずメールを起点としたサイバー攻撃は続いていますが「ステガノグラフィ
/Steganography
」とは何でしょう??マルウェアに使われるとはどういうことでしょう??
興味がある方やおさらいした方は是非ご覧ください。
■ステガノグラフィ
/Steganography
とは?
Web
上を検索してみると
・(デジタル)データ隠蔽技術の一つ
・データを他のデータに埋め込む技術
・暗号技術はデータの可読性を失わせ、ステガノグラフィはデータの存在を隠蔽する
のように記述されています。つまりステガノグラフィとは既存のデジタルデータの中に別のデジタルデータを埋め込んで隠す技術ということです。
暗号技術では次のように、暗号化の後「平文」に対応する「暗号文」が必ず存在しますが
「平文」+「暗号化アルゴリズム+暗号鍵」⇒ 「暗号文」
ステガノグラフィではそのような対応は存在しません。
「(埋め込みたい)データ
A
」+「(埋め込み先の)データ
B
」⇒ 「変形されたデータ
B'
」
とこのようになります。
■基本的な考え方
ステガノグラフィの手法についてはとにかく埋め込めればいいのでいろいろと考えられます。ここではメジャーな手法の一つ値データ内の特定
bit
への埋め込みの方法について原理を見ていきましょう。
埋め込み先のデータとして画像ファイルを例に考えてみましょう。
コンピュータで扱う画像ファイルはデジタルデータ(つまり
2
進数)、つまり
0/1
で構成されたデータで一般的に色の
3
原色
RGB
の
3
種類のパラメータを数ケタの
2
進数で表現します。パラメータは各色の段階を表現しますが、たとえば赤のパラメータが
2
進数
8
ケタであらわされるとしますとその範囲は
256
段階になります。
ここで人間の目の識別能力を考えてみましょう。見てみるのが早いですね。
PNG-1 | PNG-2 |
![]() |
![]() |
SHA256
a69b76bbcd6f03a85e62e305413d8caa1b42f03e1
ab7524413fc9b545f8c4257e |
SHA256
8773be7e26817122d8c08e2c10ebe0a40a174728
47fb12b688019184e48857c1 |
この二つの画像の色、見分けがつきますでしょうか。
# 今回はアップロードの都合上、BMP の元ファイルをPNG ファイルに変換しましたが、表示される色情報は変換の前後で相違ありません。
ここで再度BMPファイルに変換し、バイナリエディタで確認するとBMP-1(変換前のPNG-1)では
"B2"
(
2
進数で
10110010
)となっているデータの部分がBMP-2(変換前のPNG-2)ではすべて
"B3"(2
進数で
10110011)
になっています。絵の元となっているすべての画素で
1bit
のみ値が変化しているだけということですね。
・確認しやすくするためPNGファイルをBMPファイルに戻す
・バイナリエディタで値を確認
このように人間の色や音に関する識別能力の限界をついて埋め込んだデータを隠蔽する方法は、ステガノグラフィで最もメジャーな手法です。
■埋め込みと取り出し
前段ではデータが埋め込める原理について説明するため特定の
bit
を全て変更していきましたが、実際に画像ファイルに埋め込む場合の流れとしては以下となります。
①ある程度の大きさの画像データを用意する(方法によりますが圧縮を解除した状態で埋め込みたいデータの3~10倍程度でしょうか)
②エディタやツールを使用して、「自身で定義する方法」により画像データの
bit
列の特定の位置の値を埋め込みたいデータの
bit
列に置き換える
つまり「 1110 1001 」というデータ A を 「 1000 1100 1111 1111 1000 1100 1111 1111 」というデータ B に埋め込みたいときは…
⇒アルゴリズムとして「データ B の最下位 bit に先頭からデータを埋め込む」のようにまず定義
⇒データ B 埋め込み先の bit 列クリア 「 100 0 110 0 111 1 111 1 100 0 110 0 111 1 111 1 」 >> 「 100 x 110 x 111 x 111 x 100 x 110 x 111 x 111 x 」
⇒データ A の埋め込み 「 1110 1001 」+「 100 x 110 x 111 x 111 x 100 x 110 x 111 x 111 x 」
③変形されたデータ B 「 100 1 110 1 111 1 111 0 100 1 110 0 111 0 111 1 」が完成!!!!!!
あっけなく終わりますね。
#
アルゴリズムは自身で定義するのでそのアルゴリズムを知る者
/
解読したものだけが取り出せる
#
変化を気づかれにくくするために
RBG
各色の(変化の影響が少ない)最下位
bit
を置き換えるのが無難
#
埋め込むデータはバイナリでもテキストでも取り出す側がデータの扱い方を知っていれば問題ない。
一方、取り出す側は変形されたデータ
B
に逆の操作をし、データ
A
を取り出します。
変形されたデータ B 「 1001 1101 1111 1110 1001 1100 1110 1111 」
⇒アルゴリズム 「データ B の最下位 bit に先頭からデータを埋め込む」
⇒ピックアップ 「 100 "1" 110 "1" 111 "1" 111 "0" 100 "1" 110 "0" 111 "0" 111 "1" 」
⇒データ A 「 1110 1001 」
「この方法のステガノグラフィ」自体に制限的なことがあるとすれば、埋め込み先のデータは埋め込みたいデータよりある程度大きいサイズであることが望ましく、
bit
操作を伴うことからテキストデータやバイナリコードではなく色(画像)データや音データのように最終的に人間がアナログで知覚するデータが必要というところですね。
また、取り出し方法を見てわかるとおり、取り出しは埋め込みと全く逆の操作をするだけです。つまり、埋め込み先のデータを特定し、ファイルの隠蔽方法(アルゴリズム)が判明すれば第三者でも簡単にデータを取り出されてしまいます。
とはいえ現実に、どのファイルにどのようにデータが埋め込まれているかを第三者が知ることは難しいでしょう。
よって、確実に特定の
2
者のみが埋め込みデータを取り出せるようにするためには埋め込む前のデータを共通鍵暗号等で暗号化し、暗号鍵を共有する必要があります。
--
ステガノグラフィ自体はデータを気付かれないように埋め込めれば方法は問わないので、この他にもたくさんの方法が考えられます。
Web
上にも様々な参考文献がありますし、読者のみなさまもちょっと考えてみていただくと面白いかもしれません。
--
■ツールでの実践
実装方法はさまざまと申し上げましたが今回は以下のツールを使用してメッセージを埋め込みと取り出しを検証してみました。お時間のある方は一回どのようなものか試してみるのもいいと思います。
ステガノグラファー v2.102 ( 06/09/03 )画像の中にファイルを電子透かしとして埋め込むソフト
外部リンク: 「窓の杜」ステガノグラファーダウンロードページ
Download
#
インストールが必要です。
埋め込むための適当な画像を入手
SHA256 48f136a6edf6651619a765a01704377e7ffc6475c1699480214f368fba2c73ea
埋め込みたいデータを用意し埋め込み
完成
SHA256 e47eaf56b9f96b8fd01e08605b32b5c56572fc12ef5911b91fb09df249ce9f1f
埋め込み前後でファイルは間違いなく異なりますが、全く見分けがつきません!
しかし「完成」の画像には数
kb
のテキストデータが埋め込まれており、この画像から実際にデータを取り出すことが出来ます。
今回はパスワード等も使用していないのでデータを取り出せるか、お時間のある方はお試しください。
繰り返しますが埋め込みアルゴリズムの実装方法はツールによって様々なので、取り出し時も原則同じツールを使用します。
■マルウェアによる攻撃への応用
以上によりマルウェアの作成者は一見無害なファイルのなかに簡単に攻撃コードを埋め込むことができることをご理解いただけたかと思います。
現在では「ファイルレスマルウェア」と呼ばれるファイルとしての実体を持たない、つまりダウンロード後メモリ上にのみ展開される PowerShell 等のコードを駆使した攻撃が全盛です。
このような攻撃がステガノグラフィのような技術と組み合わされた時に、どのような経路で侵入し、どのように襲い掛かってくるのか考えてみることはエンドポイントのセキュリティを考えるうえで非常に有益ではないでしょうか。
ではまた、次回のエントリーでお会いしましょう。
Hiroki Sekihara CRISC, CISSP, CEH, PMP, CCIE #14607
当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。
エバンジェリストによるコラムやセミナー情報、
IDグループからのお知らせなどをメルマガでお届けしています。