前回のブログ記事では、不正プログラムが自身の環境設定情報を隠ぺいするために、「steganography(ステガノグラフィ)」をどのように利用しているかについて取り上げました。本稿では、この問題の別の側面を論じたいと思います。
ステガノグラフィとはあるデータを別のデータの中に埋め込む技術のことです。実際の不正プログラムでは、主に検出を回避するために、不正コードを無害に見えるファイル内に埋め込んで隠ぺいする目的でステガノグラフィを利用します。セキュリテイリサーチャーや解析者は「コードの中にコードを隠ぺいする不正プログラムは何年も見てきている。それはステガノグラフィではない」と言うかもしれませんが、今回話したいことは用語の厳密な定義ではありません。本記事では、実際に不正プログラムが行ったステガノグラフィについて説明します。実例を挙げることで、不正プログラムの巧妙な手口について理解しやすくなるでしょう。
■コードを隠ぺいした画像を持つ「DarkComet」
2014年11月に確認されたドロッパー「DarkComet」は、リソースセクションにビットマップ画像を持つ、比較的単純な「.NET」の実行ファイルです。この画像ファイルのヘッダは完全に有効ですが、意味のあるものは何も表示しません。人間の目には、さまざまな色が混じり合ったランダムな画素に見えます。不正プログラムの作成者側に何か問題があったのでしょうか。いいえ、実際、この画素は暗号化されたコードで、目で見えるように設計されていません。このファイルが実行されると、「DarkComet」は画像を取得してコードを復号し、実行します。
図1:ビットマップ画像の例
このような手法でコードを隠ぺいする理由は何でしょうか。それはもっともな疑問です。この不正プログラムには復号するためのコードが必要ですが、このコードがある限り、セキュリテイ対策製品は検出します。攻撃者が検出を回避するために、この手法がどのように役に立ったのでしょうか。
隠ぺいされたものを考えると、このシナリオはもっと理解しやすくなります。それは市販のキーロガーです。セキュリテイ対策製品は、たとえ自作のものであってもキーロガーを検出します。そのため、サイバー犯罪者はネオンライトに照らされた監視の元で、銃の照準を合わせているようなものです。セキュリテイ対策製品は、簡単に検出します。一般的な不正プログラムや暗号は利用できなかったのでしょうか。もちろん、できたでしょう。しかし、この攻撃者は、この手法のほうがさらに目立たないと考えたのでしょう。もしくは、ステガノグラフィを学んだばかりで、この手法を試してみたかっただけかもしれません。
■DNSトラフィックに隠ぺいされた C&Cサーバからのコマンド
隠ぺいされるのはコードだけではありません。コマンド&コントロール(C&C)サーバとの通信も隠ぺいされます。C&Cサーバとの通信は主に HTTP上で行われ、検出はそれほど難しくはありません。攻撃者は、セキュリテイリサーチャーがその手法に感嘆するような小さな改良を考え出すことがあります(感嘆させることが目的ではないにしろ)。よく練られたステガノグラフィの手法とは、普通はこのようなものです。例を次に挙げます。
不正プログラム「MORTO」は、C&Cサーバとのトラフィックを隠ぺいするために非常に抜け目のない手法を利用します。それは、HTTP を利用する代わりに、存在しないドメイン名を検索する単純な DNS要求を利用した手法です。問い合わせを受けた DNSサーバ(実際は C&Cサーバ)は、コマンドを隠ぺいして応答します。
図2:DNS の記録
送受信されるテキストは、単純な Base64 のエンコードでさらに難読化されます。これにより、自動化されたシステムがこのコードを即座に検出するのを防ごうとします。しかし、この不正プログラムの DNS応答時間が必要以上に長いため、それが手がかりとなり、不正な通信として検出されます。「MORTO」の詳細については、以前の記事でも取り上げています。
■C&Cサーバとの通信に「TDSS」が利用したWebサイト上の画像ファイル
現在は機能していないボットネット「TDSS」もまた、C&Cサーバとの通信に普通ではない手法を利用しました。それは、人気のブログサイトにホストされた画像(拡張子 JPG)を要求するものです。これらの画像には、ボットネットを制御する C&Cサーバのコマンドが含まれていました。このファイルは次の 2つの理由により、ブロックが困難でした。それは、正規の有名な Webサイトにホストされていたこと、有効な画像ファイルであったことです。あらゆる点で、この不正プログラムはブログサイトから本物の画像をダウンロードしていました。図3 は、3つの画像を重ねたものです。
図3:コマンドが表示される画像(Microsoft Technet 提供)
これらの画像ファイルを復号すると、画像の上にボットネットからのコマンドが表示されます。
■HTML のコードに C&Cサーバとの通信を隠ぺいする「ShadyRAT」
「ShadyRAT」は情報を窃取することで有名な不正プログラムですが、この不正プログラムもまた C&Cサーバとの通信にブログサイトを利用しました。ただし、コマンドは暗号化して HTML のコメントにエンコードし、正規に見える Webサイトのコンテンツ内に隠ぺいされます。これにより、この不正なトラフィックを、一般の Webブラウザを利用してブログにアクセスした本物のユーザからのトラフィックに見せました。実際、感染PC 上では、この Webページは表示されません。この不正プログラムだけがコメント内の情報を復号し、攻撃者から送信されたコマンドを理解します。実際のブログを簡単に見ただけでは、ユーザは気付かないでしょう。なぜなら、このコメントもブラウザ上に表示されないからです。
この不正プログラムは、検出を可能な限り回避したい攻撃者にとっては最高のツールでしょう。「ShadyRAT」は、最初の大規模な標的型サイバー攻撃で確認された不正プログラムで、この手法が成功の要因だったと思われます。そのネットワークトラフィックは、トラフィックを監視するすべてのセキュリテイ対策製品を完璧に回避しているようです。
さらに、「ShadyRAT」は、「最下位ビット(least significant bit、LSB)」を利用して、JPGファイル内に隠ぺいした C&Cサーバのコマンドを復号することが可能でした(LSB に関しては前回の記事をご参照下さい)。まさに疑わしい(shady)不正プログラムです。
■結論
今回は、バイナリコードや C&Cサーバとのトラフィックを隠ぺいするために利用されるステガノグラフィについて論じました。この手法は、解析者が隠ぺいされた情報を読み解くのを防ぐと言うよりは、セキュリテイリサーチャーが隠ぺいされた情報を見つけるのを防ぐものと言えるでしょう。
参考記事:
- 「Steganography and Malware: Concealing Code and C&C Traffic」
by David Sancho (Senior Threat Researcher)
翻訳:品川 暁子(Core Technology Marketing, TrendLabs)