エグゼクティブ サマリー
数週間前、Talos は韓国の MalDoc に関する調査結果を公開しました。以前にも説明したように、MalDoc の作成者は自身の痕跡をすぐに隠蔽し、侵害されたホストを非常にすばやくクリーンアップしています。侵害されたインフラストラクチャがキャンペーン中に機能していたのは、ほんの数時間であったと思われます。Talos は新しいキャンペーンを特定しましたが、このキャンペーンでも悪意のある Hangul Word Processor(HWP)ドキュメントが利用されていました。最終的なペイロードを分析した結果、まんまと成功を収めたのは、あるリモート管理ツールであることがわかりました。チームはそのツールを「ROKRAT」と命名しました。
前回取り上げたケースと同様に、今回のキャンペーンでも、悪意のある HWP ドキュメントを添付ファイルとして含むスピア フィッシング電子メールから始まっています。特定された電子メールの 1 つは、ソウルの私立大学である延世大学の電子メール サーバから送信されたものです。電子メールで使用されたアドレスは「kgf2016@yonsei.ac.kr」で、韓国グローバル フォーラムの連絡先アドレスです。このフォーラムの 2016 年のスローガンは「朝鮮半島の平和と統一」でした。このため電子メールの信頼性と正当性が増すことになりました。
HWP ドキュメントには、組み込み Encapsulated PostScript(EPS)オブジェクトが含まれていました。以前説明した通り、これは zlib の圧縮ファイルで簡単に入手できます。EPS の目的は、既知の脆弱性(CVE-2013-0808)を悪用することで、.jpg ファイルに偽装されたバイナリをダウンロードすることです。このファイルは復号され、最終的には実行可能ファイルである ROKRAT が起動します。コマンド・コントロール サーバは正当な Web サイトであるため、この RAT ファイルは事態をより複雑なものにしています。マルウェアは Twitter と 2 つのクラウド プラットフォーム(Yandex と Mediafire)を使用しており、C2 通信および抽出用に使用したと思われます。残念ながら、これらのプラットフォームは正当性が広く確認されているため、組織内でグローバルにブロックするのは困難です。また、この 3 つのプラットフォームはすべて HTTPS 接続を利用するため、特定のパターンや特定のトークンの使用を識別するのはさらに困難です。
スピア フィッシング キャンペーン
韓国の被害者に対して使用された電子メールの例を次に示します。
最も興味深いものは、最初に発見された電子メールです。この最初のサンプルでは、ユーザが「北朝鮮と韓国の再統一会議」に関する公開討論会への参加に同意したことを賞賛する内容が読み取れます。電子メールの本文では、受信者はドキュメントに入力して必要なフィードバックを提供する必要があると説明しています。しかし、これは偽物の会議であると思われます。電子メールが言うところの「統一会議」に最も近いものは、2017 年 1 月に開催された NYDA 再統一会議です。ところが送信者は「kgf2016@yonsei.ac.kr」で、これは韓国グローバル フォーラムの連絡先の電子メールです。
電子メールのヘッダーを分析すると、送信者の IP が 165.132.10.103 であると特定できました。強力な「nslookup」ツールによる分析で、これが延世大学校のネットワーク内にある SMTP サーバだとすぐに特定されました。上記の電子メールが発信元になったのは、攻撃者によってこの電子メール アドレスが侵害されて悪用されたことが原因だと考えられます。
サンプルのファイル名を訳せば「統一北朝鮮会議 _ 調査ドキュメント」となります。これは再統一会議に関する電子メール内の文章に沿った名前です。電子メールの本文では、ドキュメントに入力すると「ささやかな謝礼」が贈られると述べています。しかし実際に贈られるのは組み込みのマルウェアでしょう。
Talos が分析した 2 つ目の電子メールは、それほど手が込んでいません。電子メールは Daum が提供する韓国の無料メール サービス「Hanmail」から送信されています。先の電子メールとは違い、公的機関やその関係者から送信されたように装ってはいません。件名は単に「お願い」となっており、添付ファイル名は「私は北朝鮮の江原道文川市出身者です」でした。江原道(文川市がある場所)は以前韓国の領土であったため、共感を覚えるよう仕向ける狙いがあると思われます。添付ファイルの内容は、助けが必要な「Ewing Kim」という人物に関するものです。
電子メールの添付ファイルは 2 つの異なる HWP ドキュメントで、両方とも同じ脆弱性(CVE-2013-0808)を利用しています。
悪意のある HWP ドキュメント
HWP ドキュメントは、OLE オブジェクトで構成されています。Talos が発見したケースでは、ドキュメントには BIN0001.eps という名前の EPS オブジェクトが含まれています。すべての HWP ドキュメントと同様に情報は zlib 圧縮されているため、本当のシェルコードを取得するには .eps の圧縮を解除する必要があります。
CVE-2013-0808 のエクスプロイトに使用されるシェルコードは、EPS オブジェクト内から特定できます。
興味深いことに、シェルコードは 0x90 を使用する「通常」の NOP スレッドではなく、0x0404(add al, 0x4)で始まっています。
user@lnx$ rasm2 -d 0404040404040404040490909090909090909090E8000000005E add al, 0x4 add al, 0x4 add al, 0x4 add al, 0x4 add al, 0x4 nop nop nop nop nop nop nop nop nop nop call 0x19 pop esi
2 つの HWP ドキュメントに組み込まれたシェルコードの目的は、インターネットにあるペイロードをダウンロードして復号することです。復号すると、ファイル(PE32)が実行されます。抽出された URL を示します。ドキュメントはそこから .jpg のダウンロードを試みます。
SHA256:7d163e36f47ec56c9fe08d758a0770f1778fa30af68f39aac80441a3f037761e
ファイル名:통일북한학술대회_심사서류.hwp(「北朝鮮会議 _ 検査ドキュメント」)
URL:http://discgolfglow[.]com:/wp-content/plugins/maintenance/images/worker.jpg
SHA256:5441f45df22af63498c63a49aae82065086964f9067cfa75987951831017bd4f
ファイル名:저는요 북조선 강원도 문천 사람이에요.hwp(「私は北朝鮮の江原道文川市出身者です」)
URL:http://acddesigns[.]com[.]au/clients/ACPRCM/kingstone.jpg
ROKRAT 分析
2 つの HWP ドキュメントからダウンロードされた RAT は同じファミリに属しています。これらのサンプルの主な違いは、コマンド・コントロール機能です。分析したサンプルの 1 つは Twitter のみを使用して RAT と連携していますが、他方はクラウド プラットフォーム(Yandex と Mediafire)も使用しています。Talso が抽出できた Twitter のトークンは、両方の亜種で共通しています。この RAT に、より高度な攻撃実行能力を追加するための取り組みが水面下で進行していることは明らかです。
分析妨害
ROKRAT の作成者は、アナリストを妨害し、サンドボックスの実行を回避しようと、一般的にみられる複数の技術を実装しています。
まず、マルウェアは Windows XP システムでは実行されません。GetVersion() API を使用して OS のバージョンを取得しています。MajorVersion が 5(Windows XP または Windows Server 2003 に相当)の場合、マルウェアはスリープの無限ループを実行します。
さらに、マルウェアは現在実行中のプロセスを確認し、マルウェア アナリストが一般に使用するツールや、サンドボックス内で多様されるツールを特定します。このタスクを実行するために使用するコードを以下に示します。
マルウェアは攻撃対象のマシンで使用されているプロセス名を確認します。実行されているプロセスの名前と、サンプルにハードコードされた名前の一部が一致するか比較します。次に、名前のリストを示します。
- VMWare Tools の「mtool」
- OllyDBG の「llyd」
- Python の「ython」(たとえば Cuckoo Sandbox で使用)
- File Monitor の「ilemo」
- Registry Monitor の「egmon」
- PEiD の「peid」
- Process Explorer の「rocex」
- VirtualBox の「vbox」
- Fiddler の「iddler」
- Portmon の「ortmo」
- Wireshark の「iresha」
- Process Monitor の「rocmo」
- Autoruns の「utoru」
- TCPView の「cpvie」
この実行段階で上記のプロセスのいずれかがシステムで実行されていることを検出すると、マルウェアはダミーの HTTP トラフィックを生成する偽の関数にジャンプします。さらに、マルウェアがデバッグ中か、HWP ドキュメントから実行されなかった場合(バイナリがダブルクリックされるなど)や、OpenProcess() 関数が親プロセスで成功した場合も、偽の関数が呼び出されることが判明しています。
その目的は、ネットワーク トラフィックを生成し、動的分析調査中に一定レベルのフィードバックや検出を提供することだと思われます。このため、実際には単に生成された偽トラフィックであっても、一見「本物」の侵害の兆候に映る可能性があります。偽の関数は、次の URL への接続を実行します。
- https://www[.]amazon[.]com/Men-War-PC/dp/B001QZGVEC/EsoftTeam/watchcom.jpg
- http://www[.]hulu[.]com/watch/559035/episode3.mp4
Amazon の URL では「Men of War」という第二次世界大戦のゲームが表示され、Hulu の URL では「ゴールデン タイム」という日本のアニメを再生しようとします。
これらの URL には悪意がありません。マルウェアでは、これらの場所に誘導するように装っています。ファイルは調査中には存在せず、マルウェア分析ツールがシステム上で動作している場合にのみダウンロードされました。これらの URL には分析を欺く狙いがあると考えられます。
C&C インフラストラクチャ
ROKRAT は正当なプラットフォームを使用して通信し、命令を受け取ってドキュメントを盗みます。これらの正当なプラットフォームとの通信に使用された、ハードコードされたトークンを 12 個特定しました。これらはすべてパブリック API 経由です。
CC #1:Twitter:
最初に検出された CC は Twitter です。サンプルでは、ハードコードされた 7 つの異なる Twitter API トークンを特定しました(Consumer Key + Consumer Secret + Token + Token Secret)。マルウェアは、Twitter のタイムラインで最後のメッセージを確認することにより命令を受け取ります。命令は、コマンドの実行、ファイルの移動、ファイルの削除、プロセスの停止、ファイルのダウンロードおよび実行のいずれかです。RAT はツイートすることもできます。送信されるデータの先頭には、次の 3 文字のハードコードされた単語が 1 つランダムに付けられます。
SHA-TOM-BRN-JMS-ROC-JAN-PED-JHN-KIM-LEE-
これらのタスクを実行するために、マルウェアは公式の Twitter API を使用します。
CC #2:Yandex:
2 つ目の CC は Yandex で、より正確に言えば、Yandex クラウド プラットフォームです。このプラットフォームでは、Yandex クラウドにディスクを作成できます。この CC に関して、サンプルでは、ハードコードされた 4 つの Yandex トークンを特定しました。API はファイルをダウンロードして実行したり、盗んだドキュメントをアップロードしたりするために使用されます。盗まれたドキュメントは、次の場所にアップロードされます。
- disk:/12ABCDEF/Document/Doc20170330120000.tfs
ここで、「12ABCDEF」はターゲットを識別するランダムな 16 進数の ID で、Doc20170330120000 には日付が含まれています。
CC #3:Mediafire:
リモート管理ツールで使用される最後のクラウド プラットフォームは、Mediafire です。この Web サイトは Yandex と同じ方法で使用されます。その目的は、Mediafire が提供するファイル ストレージを使用して、ダウンロードしたファイルを実行したり、盗んだ情報をアップロードしたりすることにあります。
このケースでは、マルウェアの作成者は、サンプルにアカウント(電子メール/パスワード/アプリケーション ID)を 1 つハードコードしていました。
追加機能:スクリーンショットのキャプチャとキーロガー
さらに、サンプルの 1 つは、感染したシステムのスクリーンショットをキャプチャできます。このタスクを実行するために、開発者は GDI API を使用していました。
分析したサンプルには、キーロガーも含まれています。SetWindowsHookEx() API は、キー ストロークを取得するために使用されます。GetKeyNameText() API は、キー名を表す文字列の取得に使用されます。キーに加えて、感染したユーザの現在位置を特定するために、フォアグラウンドのウィンドウのタイトルが保存されます(GetForegroundWindow() および GetWindowText() API を使用)。
まとめ
このキャンペーンは、マルウェアの攻撃者に何らかの動機があることを示しています。HWP(主に韓国で使用されるアプリケーション)が使用されていることや、電子メールとドキュメントが韓国語で完璧に書かれていることから、作成者は韓国語を母語として話すと思われます。
このキャンペーン中に使用された RAT は革新的で、新しい通信チャネルを使用していました。ROKRAT は、命令を出してファイルを送信/取得するために、Twitter と 2 つのクラウド プラットフォーム(Yandex と Mediafire)を使用します。組織は多くの場合これらのプラットフォームを正当に使用しているため、この通信チャネルを封じることは非常に困難です。マルウェアには、サンプルがサンドボックスで実行されているか、マルウェア分析ツールが使用されている場合は、正当な Web サイト(Amazon や Hulu)に対するリクエストを実行するという奇妙な機能が含まれています。その目的については、誤ったレポートと IOC を生成させることにあると想定されます。
今回のケースは、韓国人が高度な攻撃の対象となっていることを改めて浮き彫りにしています。上記の例では、スピア フィッシング メールを偽造して成功の可能性を高めるために、ソウルの大学が組織した大規模なフォーラムの正当な電子メール アドレスを侵害しました。Talos ではそれが成功したことを確認しています。本記事の執筆段階でも、感染したシステムが前述のコマンド・コントロールを利用して通信していることが特定されています。
カバレッジ
お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
CWS や WSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されるマルウェアを検出します。
E メール セキュリティ は、攻撃の一環として攻撃者が送りつける、悪意のある電子メールをブロックします。
IPS のネットワーク セキュリティ保護や NGFW には、攻撃者による不正なネットワーク アクティビティを検出できる最新のシグネチャが備わっています。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。
シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella 、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。
IOC
ファイルのハッシュ値
HWP ドキュメント:
- 7d163e36f47ec56c9fe08d758a0770f1778fa30af68f39aac80441a3f037761e
- 5441f45df22af63498c63a49aae82065086964f9067cfa75987951831017bd4f
ROKRAT PE32:
- cd166565ce09ef410c5bba40bad0b49441af6cfb48772e7e4a9de3d646b4851c
- 051463a14767c6477b6dacd639f30a8a5b9e126ff31532b58fc29c8364604d00
ネットワーク
悪意のある URL:
- http://discgolfglow[.]com/wp-content/plugins/maintenance/images/worker.jpg
- http://acddesigns[.]com[.]au/clients/ACPRCM/kingstone.jpg
悪意はないが、RAT 実行の特定のために使用できる URL:
- https://www[.]amazon[.]com/Men-War-PC/dp/B001QZGVEC/EsoftTeam/watchcom.jpg
- http://www[.]hulu[.]com/watch/559035/episode3.mp4
トークン
MEDIAFIRE
アカウント #1
ユーザ名:ksy182824@gmail.com
アプリケーション ID:81342
アカウント #1
Consumer key:sOPcUKjJteYrg8klXC4XUlk9l
トークン:722226174008315904-u6P1FlI7IDg8VIYe720X0gqDYcAMQAR
アカウント #2
Consumer key:sgpalyF1KukVKaPAePb3EGeMT
トークン:759577633630593029-CQzXMfvsQ2RztFYawUPeVbAzcSnwllX
アカウント #3
Consumer key:XVvauoXKfnAUm2qdR1nNEZqkN
トークン:752302142474051585-r2TH1Dk8tU5TetUyfnw9c5OgA1popTj
アカウント #4
Consumer key:U1AoCSLLHxfeDbtxRXVgj7y00
トークン:779546496603561984-Qm8CknTvS4nKxWOB4tJvbtBUMBfNCKE
アカウント #5
Consumer key:9ndXAB6UcxhQVoBAkEKnwzt4C
トークン:777852155245080576-H0kXYcQCpV6qiFER38h3wS1tBFdROcQ
アカウント #6
Consumer key:QCDXTaOCPBQM4VZigrRj2CnJi
トークン:775849572124307457-4ICTjYmOfAy5MX2FxUHVdUfqeNTYYqj
アカウント #7
Consumer key:2DQ8GqKhDWp55XIl77Es9oFRV
トークン:778855419785154560-0YUVZtZjKblo2gTGWKiNF67ROwS9MMq
YANDEX
トークン #1:AQAAAAAYm4qtAANss-XFfX3FjU8VmVR76k4aMA0
トークン #2:AQAAAAAA8uDKAANxExojbqps-UOIi8kc8EAhcq8
トークン #3:AQAAAAAY9j8KAANyULDuYU1240rjvpNXcRdF5Tw
トークン #4:AQAAAAAZDPB1AAN6l1Ht3ctALU1flix57TvuMa4
本稿は 2017年4月3日に Talos Group のブログに投稿された「Introducing ROKRAT」の抄訳です。