数日前、FortiGuard Labsのチームが、ロシア語話者向けに作られたCVE-2017-0199につけいる、悪意のあるPPSXファイルを発見しました。ファイル名は「Выставка」となっており、訳すると「Exhibition 」となります。さらに調べていくと、PPSXファイルはロシアで毎年開催されている Army 2018 International Military and Technical Forum という展示会を標的としているようでした。これは軍事兵器や特殊装備を扱う最大規模の展示会の1つであり、ロシアだけでなく、世界で開催されている同様の展示会のなかでも、特筆すべきイベントです。この展示会は2018年8月21日から26日まで開催される予定だったため、今回の悪意のある文書の発見は非常にタイムリーなものでした。
図1. デコイ(おとり)ファイル
このマルウェアのもう1つ興味深い要素が、以下の一文です。
図2. ロシア語の招待状
簡単に訳すと、次のようになります。:
「<偵察と迅速なアクションを組み合わせた軍隊>向けの現代かつ未来の軍事兵器、特殊装備のサンプルを揃えた非公開の展示会です」
このイベント は誰でも参加できるものですが、去年の主催者は非公開の「デモンストレーション 」を含む特別展示会を設置していました。これは厳選された招待客向けのものであり、大型航空機やミサイルなど、機密扱いの装備の展示が行われる場所です。そう考えると、この悪意のある文書は、こうした非公開のイベントに招待されたい人、あるいはすでに招待されている人たちを標的としたものだと考えられます。今年の展示会はすでに、海外から66の代表団が参加を表明 しています。では、PPSXファイルがどのように未パッチのシステムの侵害を行う可能性があるのか、見ていきましょう。
分析
まず、CVE-2017-0199 につけいり、おとりファイルを開く悪意のあるPPSXファイルを見ていきましょう。CVE-2017-0199はHTA(HTMLアプリケーション)脆弱性であり、ユーザーが、エクスプロイトが埋め込まれた文書を開くと、悪意のるアクターがPowerShellコマンドを含むスクリプトをダウンロードして実行できるようにするものです。この脆弱性を悪用するAPTに出くわしたのは、今回が初めてではありません。実は、これまでの攻撃では国連機関や各国外務省、国際政府とやり取りのある人や組織が標的とされて きました。
図3. 攻撃の概要
PPSXファイルが開かれると、ppt/slides/_rels/slides1.xml.rels のスクリプトがトリガーされます。その後、このエクスプロイトは図4に示すように、リモートサーバーから別のコードをダウンロードし、PowerPoint Showアニメーション機能を使ってそれを実行します。
図4. CVE-2017-0199につけいるPPSXファイル
下の図は、XMLファイルに埋め込まれたPowerShellエクスプロイトの実行が成功し、%Temp%に実行可能なペイロードをダウンロードした後、リモートサーバーから送られたコードです。
図5. DefenderのXML
実行されると、Defender.exeが以下のファイルをドロップします。
図6. TMPEC4Eディレクトリ
SynTPEnh - BISKVITマルウェアパッケージが入ったディレクトリ
Csrtd.db - autorunインストールのため、DevicePairing.exeが使用する暗号化された構成ファイル
図7. 復号した構成ファイル
DevicePairing.exe - コード内では「AutorunRegistrator」としても特定され、SynTPEnhディレクトリを%appdata%にコピーして、それをautorunレジストリエントリーに追加する機能を持つ
DevicePairing.exe.config - ランタイム構成ファイル
Kernel32.dll - BISKVITマルウェアの共通ライブラリ
Newtonsoft.Json.dll - .NET向けの一般的なJSONシリアライザー
BISKVIT
BISKVITトロージャンは、C#で書かれたマルチコンポーネントのマルウェアです。このマルウェアは、コードで使われている名前空間に「biscuit」という単語が含まれていることから、私たちはこれをBISKVITと呼ぶことにしました。残念ながら、今回のものとは関係のないBISCUITというマルウェアが既に存在するため、biscuitのロシア語であるBISKVITを代わりに使用することにしました。
図8. Biscuitモジュール
BISKVITはモジュール型であることから、機能のすべてを完全に把握することは困難です。なぜなら、コンポーネントはすでにダウンロードされており、すでに攻撃者の側へとロードされてしまっているからです。この記事の執筆時にダウンロードできたのは、1つのコンポーネントのみでした。これまでに入手できたコンポーネントのコードを見てみると、このマルウェアは以下のことが可能ですが、これだけに限りません。
ファイルやコンポーネントをダウンロード
ダウンロードしたファイルやローカルファイルを隠れて/こっそり実行
動的な構成ファイルのダウンロード
自身のアップデート
自身の削除
BISKVITマルウェアは上で述べたように、%temp%フォルダから%appdata%\ SynTPEnhにコピーされます。以下は%appdata%\SynTPEnhフォルダのコンテンツです。
SynTPEnh.exe - BISKVITマルウェアのメインファイル
Csrtd.db - 暗号化された構成ファイル
SynTPEnh.exe.config - ランタイム構成ファイル
Kernel32.dll - BISKVITマルウェアの共通ライブラリ
Newtonsoft.Json.dll - .NET向けの一般的なJSONシリアライザー
BISKVITのメインファイルはユーザーの疑いを避けるため、正規のSynaptics Pointing Device Driverファイルを装います。
図9. Synapticsを装った情報
実行されると、基本構成が初期化されます。そこには以下の情報が含まれます。
図10. 基本構成
その後、csrtd.dbという名前の構成ファイルをロードし、復号します。この構成ファイルは、以下のキーを使ってAESで暗号化されています。
図11. デフォルトのAESとIVキー
復号されると、この構成ファイルにはC&Cサーバー、マルウェアがC&Cサーバーからのジョブのチェックに使用する時間間隔、APIキー、RSAキー情報が含まれています。RSA暗号化手法に対するコード参照は見当たりませんでしたので、この記事の執筆時にまだ入手していない他のコンポーネントが使用しているものと思われます。
図12. 復号された構成ファイル
C&Cとの通信
このマルウェアは、JSON形式を使ってREST APIを介してC&Cサーバーと通信を行います。まず、APIキーを送信してアクセストークンを入手します。構成ファイルに指定されていなければ、このAPIキーは感染したマシンのCPU、ディスクドライブ、MACアドレス情報から生成されます。このAPIキーは、マシンの特定にも使用される独自のIDとなります。
図13. 独自IDの構成内容
このAPIキーは、API /api/auth/token に対するHTTP POSTリクエストを介してC&Cサーバーに送信されます。
図14. POST ApiKey
サーバーは、セッション全体で使われることになるアクセストークン情報を返します。
図15. アクセストークン
そしてこのマルウェアは、Jobs APIを介して攻撃者からコマンドを受け取り、それを実行します。API /api/job にHTTP GETリクエストを送信し、構成ファイルで設定された間隔の通りに、特定の時間が過ぎたところでジョブを入手します。
図16. GET api/job
レスポンスは、id 、resultUri 、tasks 、executionOptions という4つのメインキーが入ったジョブになります。
図17. ジョブ
id - ジョブID
resultUri - マルウェアがジョブの結果をHTTP POSTする場所
executionOptions - 特定の時間間隔でパッケージを実行すべきか、そして起動時にスタートすべきかをマルウェアに伝える
tasks - このキーには、攻撃者が感染マシン上でダウンロードし、実行したいパッケージ(コンポーネント/その他ファイル)に関する情報が含まれる
キーtasks の executeMode が、マルウェアにパッケージの実行方法を伝えます。
図18. 実行のモード
モードが0の場合、パッケージはコンポーネント/ライブラリとして扱われ、 parameters キーで指定されるパラメータで実行されます。
モードが1の場合、パッケージはファイルとして扱われ、ShellExecuteEx()かCreateProcess() Windows APIを使い、WindowStyleをHiddenに、CreateNoWindowをTrueに設定して実行されます。
図19. ExecuteHide
モードが2になっている場合には、パッケージはファイルとして扱われ、CreateProcessAsUser() Windows APIを使用して実行されます。
図20. StartAsUser
このマルウェアのもう1つ興味深い機能が、 534faf1cb8c04dc881a3fbd69d4bc762 というフォルダにローカルでジョブを保存するという点です。
図21. Jobsディレクトリ
ジョブは構成ファイルのものと同じAES暗号を使って暗号化されており、ジョブIDを使い、拡張子.db で名前が付けられています。つまり、現在のプロセスが妨害されたり、終了されたりした場合でも、マルウェアの次の実行でジョブを実行し続けることができるということです。ジョブを完了すると、このマルウェアはローカルで保存したジョブを削除します。
分析の際、このマルウェアはexecuteMode が0に設定されたパッケージをダウンロードするジョブを受け取りました。つまり、このパッケージは、 /api/package/5b61b91da99a25000198dfcc からダウンロードできるコンポーネント/ライブラリだということです。
図22. packageIdとexecuteModeが入ったジョブ
ジョブで指定されたdownloadUri のパッケージは、PKヘッダーのついたzipファイルになりました。
図23.パッケージの受け取り
パッケージは、フォルダ083c57797944468895820bf711e3624f に保存されます。
図24. Packagesディレクトリ
どのコンポーネントがダウンロードされたかを確認してみると、FileExecutor というコンポーネントであることがわかりました。これは parameters キーで指定されるファイルを単純に実行するものです。
図25. ジョブとタスクのパラメータ
このFileExecutor コンポーネントは、1に設定された executeMode と同じ機能を有しています。これはWindowStyleがHiddenに設定され、CreateNoWindowがTrueに設定された状態でShellExecuteEx()かCreateProcess()を使ってファイルを実行するものです。上のジョブでは、Waittime キーに指定されている通り、タイムアウトが30秒に設定されている状態で、マルウェアに FileExecutorcomponent を使って「systeminfo」を実行するよう伝えます。
コマンドsysteminfo は、コンピュータとそのオペレーティングシステムに関する詳細な構成情報を表示します。そこにはオペレーティングシステムの構成、セキュリティ情報、製品ID、ハードウェアのプロパティ(RAM、ディスクスペース、ネットワークカードなど)などが含まれます。
図26. CCへのSysteminfoデータのPOST
C&Cが実行中のジョブの状況を把握するため、以下に示す値を含むキーState も含まれています。私たちの分析中に送信されたデータには、2と同等のState が含まれていました。つまり、完了したということです。
図27. ジョブの状態
systeminfo のジョブの後は、攻撃者がジョブを送信したマシンが、分析用のマシンであることに気づいたようで、C&Cはジョブの送信を停止しました。つまり、この攻撃を行っている者は、標的ではないコンピュータを感染させないように、そしてアラートを避けるように、非常に慎重だということです。
標的型攻撃に使用されるC&Cサーバーが、被害者のコンピュータの基本情報を回収した後に突如、反応しなくなるのは新しいことではありませんが、ここで使われているC&Cは完全に通信を遮断したわけではありません。ただ、ジョブの送信をストップしただけです。そのため、リサーチャーやアナリストは今後もC&Cの監視を続けていくことができます。
低いAV検知率
マルウェアファイルは圧縮も難読化もされていないのに、ファイルを検知できたのはフォーティネットなどの少数のAVベンダーのみでした。
結論
注目度の高い標的を狙うために、おとりとして現在進行中や今後のイベントを使用するという方法は、攻撃者たちの間でますます一般的に用いられるようになっています。
今回の調査結果から、悪意のあるデコイファイルがタイミングよく配信されたこと、そして一度も使われたことがないマルウェアが使用されたことを考えると、計画性の高い攻撃であると思われます。こうした2つの方法により、標的を侵害できる可能性が非常に高くなります。
ソリューション
フォーティネットでは、BISKVITマルウェアの全コンポーネントをW32/BiskvitLoader.A!tr、MSIL/BiskvitAutoRun.A!tr、MSIL/BiskvitLib.A!tr、MSIL/Biskvit.A!tr、MSOffice/Exploit.CVE20178570!trとして検知しています。
このマルウェアに関連する悪意のあるURLは、FortiGuard Webフィルタリングサービス でブロックされています。
ユーザーの皆さんは、CVE-2017-0199に対してMicrosoftからリリースされているパッチ を必ず適用するようにしてください。
エクスプロイト文書のコンテンツをロシア語から英語に翻訳してくれたEvgeny Ananin に感謝します。
IOC
be7459722bd25c5b4d57af0769cc708ebf3910648debc52be3929406609997cf
a87daccbb260c5c68aaac3fcd6528f9ba16d4f284f94bc1b6307bbb3c6a2e379
b4a1f0603f49db9eea6bc98de24b6fc0034f3b374a00a815b5c906041028ddf3
934542905f018ecb495027906af13cc96e3f55e11751799f39ef4a3dceff562b
23a286d14de1f51c5073caf0fd40a7636c287f578f32ae5e05ed331741fde572
CC
hxxp://bigboss.x24hr.com
hxxp://secured-links.org/
最新の脅威レポートは、こちら からダウンロードいただけます。
FortiGuard Labsでは、脅威インテリジェンス情報(英文) を毎週お届けしていますので、ぜひご購読ください。