ブログ(脅威調査)

中国の「APT10」が最新のTTP(戦術、技術、および手順)を用い、日本企業を標的に

ファイア・アイは今年7月、「APT10」(別名:MenuPass)と思われるグループによる、日本のメディア業界を標的にしたアクティビティを検知・阻止しました。APT10は、ファイア・アイが2009年より追跡している中国のサイバー・スパイ・グループで、これまでも日本の企業・組織を標的としてきました。今回の攻撃キャンペーンでは、UPPERCUTバックドアをインストールする、悪意ある文書を添付したスピアフィッシング・メールが、日本のメディア業界におけるさまざまな企業・団体に送付されました。このバックドアは、コミュニティではANEL の名で知られており、最新バージョンが発表されるまでは、ベータ版またはRC(リリース候補版)の形で提供されていました。本ブログでは、バージョン間の更新内容や差異について分析しています。

攻撃の概要

最初の攻撃ベクトルでは、悪意あるVBAマクロを格納したMicrosoft文書を添付する形で、スピアフィッシング・メールが標的に送られます。おとりファイルの内容は文字化けしていますが(図3)、日本語で付けられたファイル名は、海洋、外交、北朝鮮に関連しています。表1は、UPPERCUTの侵害によってもたらされる痕跡(Indicator of Compromise、IOC)です。

File Name

MD5

Size

C2

自民党海洋総合戦略小委員会が政府に提言申し入れ.doc

4f83c01e8f7507d23c67ab085bf79e97

843022

eservake.jetos[.]com

82.221.100.52

151.106.53.147

グテマラ大使講演会案内状.doc

f188936d2c8423cf064d6b8160769f21

720384

 

eservake.jetos[.]com

151.106.53.147

153.92.210.208 

米国接近に揺れる北朝鮮内部.doc

cca227f70a64e1e7fcf5bccdc6cc25dd

733184

eservake.jetos[.]com

153.92.210.208

167.99.121.203

表1:UPPERCUTのIOC

北朝鮮関連のおとり文書については、同一タイトルのニュース記事がオンライン上で簡単に見つかりました。このほか、注目すべき点として、攻撃者はグアテマラの一般的な日本語表記とは異なる用語(=グテマラ)を用いていました。これと同じ表記でGoogle検索を行ったところ、上位の結果には、2018年8月に開催されたグアテマラ大使館での講演イベントに関するイベントのWebサイトが存在しました。イベントページのスクリーンショットを図1に示します。

 


図1:グアテマラ大使館の講義に関するイベントのWebサイト

おとり文書を表示するマクロ関数を図2に示します。関数の最後では、図1で見られる連絡先情報と同じ内容のテキストを読み取ることが可能です。そのため、今回のキャンペーンの標的としては、中南米問題に関心のある人物像が想定されます。


図2:ルアー文書の表示マクロ

最初のWord文書は、おそらく検知を迂回するために、パスワードで保護されていました。電子メールに記載されたパスワードを入力すると、文書が表示され、悪意あるマクロを有効にさせようとします(図3)。


図3:ルアー文書

このWord文書を開くと、悪意あるマクロが実行されます(図4)。


図4:UPPERCUTのインストール・マクロ

マクロの実行ワークフローの詳細は、以下の通りです。

1.      マクロは3つのPEMファイル、「padre1.txt」、「padre2.txt」、「padre3.txt」を被害者の%TEMP%フォルダドロップし、%TEMP%から%AllUserProfile%フォルダにコピーします。

2.      マクロはWindowsの「certutil.exe」と以下のコマンドを使用し、ドロップしたファイルを復号します。「certutil.exe」は正規の組み込みコマンドラインプログラムであり、Windows内で証明書を管理するものです。

C:\Windows\System32\cmd.exe" /c certutil -decode C:\ProgramData\padre1.txt C:\ProgramData\\GUP.txt

C:\Windows\System32\cmd.exe" /c certutil -decode C:\ProgramData\padre2.txt C:\ProgramData\\libcurl.txt

C:\Windows\System32\cmd.exe" /c certutil -decode C:\ProgramData\padre3.txt C:\ProgramData\\3F2E3AB9

 

3.      マクロはExtensible Storage Engine Utilities(「esentutil.exe」)と以下のコマンドを使用し、適切な拡張子を持つファイルのコピーを作成します。「esentutil.exe」もまた、Windowsにプリインストールされている正規のプログラムです。

C:\Windows\System32\esentutl.exe" /y C:\ProgramData\\GUP.txt /d C:\ProgramData\GUP.exe /o

C:\Windows\System32\esentutl.exe" /y C:\ProgramData\\libcurl.txt /d C:\ProgramData\libcurl.dll /o

ドロップしたファイルの内容は以下の通りです。

·        GUP.exe:GUPとは、フリーの(LGPL)Generic Updaterです。GUPは、Notepad++のソフトウェア・アップデートで使用されるオープンソースのバイナリです。ここで使用されるバージョンは、Notepad++によってデジタル署名されたバージョン4.1です(図5)。

·        libcurl.dll:悪意あるローダDLL

·        3F2E3AB9:暗号化されたシェルコード


図5:Notepad++ Signed Updater

4.      マクロは正規の実行プログラム「GUP.exe」を起動します。

4.1. 実行プログラムがサイドロードした悪意あるDLL(libcurl.dll)は、同じフォルダにあるシェルコード(3F2E3AB9)を復号・実行します。

4.2. シェルコードは、UPPERCUTの最新版の亜種である別のDLLを復号・展開します。DLLを復号する前に、シェルコードは、ntdll_NtSetInformationThreadベースのデバッグ対策技術を使用し、スレッドをデバッガから切り離します(図6)。その後、DLLはメモリに読み込まれ、ランダムな名前を持つ、エクスポートされた関数が呼び出されます。


図6:シェルコードの使用するデバッグ対策技術

5.      マクロは、Windowsの「esentutl.exe」を用いて最初にドロップした.txtファイルを削除し、文書のテキストを組み込みメッセージに変更します。

攻撃の全体的な概要を図7に示します。


図7:攻撃の概要

ペイロードの復号にWindowsの「certutil.exe」を用いる手法は、複数の脅威アクターに悪用されています。以前にも報告されている通り、APT10はこの手法を使用し続けています。

UPPERCUTの進化

UPPERCUTの更新時期を図8に示します。グラフには、ローダーのPEコンパイル日時とドロッパー(Word文書)の作成日時が記載されています。最近のバージョンについては、ローダーのコンパイル日時が上書きされ、ゼロが書き込まれているため、ここには記載されていません。UPPERCUT 5.2.xシリーズについては統計がないものの、2017年12月から2018年5月の間は、数カ月毎にマイナーバージョンの改訂版がリリースされていたと考えられます。


図8:UPPERCUTの更新時期

これまでのバージョンとは異なる点として、最新バージョンでは、エクスポートされた関数の名前がランダム化されています。

暗号化されたペイロード

復号されたペイロード

MD5

サイズ

インポートハッシュ

エクスポートされた関数

バージョン

aa3f303c3319b14b4829fe2faa5999c1

322164

182ee99b4f0803628c30411b1faa9992

l7MF25T96n45qOGWX

5.3.2

126067d634d94c45084cbe1d9873d895

330804

5f45532f947501cf024d84c36e3a19a1

hJvTJcdAU3mNkuvGGq7L

5.4.1

fce54b4886cac5c61eda1e7605483ca3

345812

c1942a0ca397b627019dace26eca78d8

WcuH

5.4.1

表2:UPPERCUTの静的特性

最新のUPPERCUTサンプルのもう1つの新機能として、C2サーバーからHTTPの応答を受信できなかった場合、マルウェアはCookieヘッダーにエラーコードを追加します。エラーコードは、GetLastError関数の戻り値であり、次のビーコンで送られます。この機能は、バックドアが応答を受信できなかった場合に、攻撃者が問題を理解しやすくするため、採用されたものと考えられます(図9)。このCookieヘッダーは、ネットワークベースの検知に利用可能な指標です。


図9:呼び出しの例

UPPERCUTの以前のバージョンでは、C2との通信時のBlowfish暗号化として、ハードコーディングされた文字列「this is the encrypt key」を使用していました。しかし、最新バージョンでは、鍵は各C2アドレスに対して一意にハードコーディングされており、C2のMD5ハッシュを計算し、使用する鍵を決定します(図10)。


図10:Blowfish鍵の生成

具体例として、復号されたペイロード「126067d634d94c45084cbe1d9873d895」におけるハードコーディングされたC2アドレスとそのMD5ハッシュ、それに対応するBlowfish鍵を表3に示します。

C2

MD5

Blowfish鍵

hxxp[:]//151.106.53[.]147/VxQG

f613846eb5bed227ec1a5f8df7e678d0

bdc4b9f5af9868e028dd0adc10099a4e6656e9f0ad12b2e75a30f5ca0e34489d

hxxp[:]//153.92.210[.]208/wBNh1

50c60f37922ff2ff8733aaeaa9802da5

fb9f7fb3c709373523ff27824ed6a31d800e275ec5217d8a11024a3dffb577dd

hxxp[:]//eservake.jetos[.]com/qIDj

c500dae1ca41236830b59f1467ee96c1

d3450966ceb2eba93282aace7d7684380d87c6621bbd3c4f621caa079356004a

初期設定

初期設定

f12df6984bb65d18e2561bd017df29ee1cf946efa5e510802005aeee9035dd53

表3:Blowfish鍵の例

この例では、hxxp[:]//151.106.53[.]147/VxQGのMD5ハッシュは、以下となります。「f613846eb5bed227ec1a5f8df7e678d0」

マルウェアがこのURLに通信する場合、Blowfish鍵として以下が選択されます。「bdc4b9f5af9868e028dd0adc10099a4e6656e9f0ad12b2e75a30f5ca0e34489d」

URLのMD5ハッシュがハッシュの一覧内容のいずれとも一致しない場合、初期設定の鍵である以下が使用されます。

「f12df6984bb65d18e2561bd017df29ee1cf946efa5e510802005aeee9035dd53」

マルウェアが生成するネットワーク・トラフィックのもう1つの違いとして、C2通信時には、暗号化されたプロキシ情報(下表の赤いハイライト表示)がURLのクエリ値に追加されています。最近のバージョンでの、バックドアからC2サーバーに送られるパラメーターを図4に示します。これらはPOSTリクエストによって送信されます(図9)。

URLパラメーター

説明

値1

PID

ホスト名/MachindGUIDのMD5ハッシュ

ホスト名

 1A A6 6b 58 43 4F 4D 50 55 54 45 52 4E 41 4D 45  ..kXCOMPUTERNAME

値2

カレントタイムスタンプ

 31 35 33 34 37 36 33 37 36 37 1C 09 00 02 02    153476367...

値3

システムOSのバージョン数

 36 2E 31 2E 37 36 30 31                                        6.1.7601

値4

現在ログイン中のユーザーのユーザー名

 75 73 65 72                                                            user

値5

タイムゾーン情報

 F8 FF FF FF 00 00 00 00 01 00 00 00                ∅yyy.......

値6

カレントディレクトリ

 65 72 73 5C                                                             ers\

値7

マルウェアのバージョン数

 35 2E 34 2E 31                                                         5.4.1.

値8

プロキシ情報

 31 3A 38 30 38 30                                                    1:8080

表4:URLパラメーター

さらに、コマンドの文字列は、これまでと同様、RGPHのハッシュタグ・アルゴリズムを用いてハ

ッシュ化されています。最近のバージョンでは、さらに以下2つのコマンド(下表の赤いハイライト表示)にも対応しています。

「0xD290626C85FB1CE3」と「0x409C7A89CFF0A727」(表5)。

コマンド

説明

0x97A168D9697D40DD

C2サーバーからのファイルのダウンロード・検証(XXHash比較)

0x7CF812296CCC68D5

C2サーバーへのファイルのアップロード

0x652CB1CEFF1C0A00

PEファイルのロード

0x27595F1F74B55278

ファイルのダウンロード、検証(XXHash比較)、実行とC2サーバーへの出力の送信

0xD290626C85FB1CE3

現在時刻のフォーマット化

0x409C7A89CFF0A727

デスクトップのスクリーンショットをPNG形式で保存し、C2への送信

上記以外

受信したバッファは「cmd.exe」で実行され、出力はC2サーバーに送られます。

表5:対応コマンド

結論

最近のバーションでは、UPPERCUTによるBlowfish暗号鍵の初期化の方法が大きく変わっており、アナリストにとっては、バックドアのネットワーク通信の検知・復号はこれまで以上に困難となっています。APT10は、同じ地域・業界への標的活動を一貫して行っている一方で、彼らの使用するマルウェアは、組織的かつアクティブに進化しています。このことから、この脅威アクターは、彼らのオペレーションの中で、マルウェアのバージョンと継続的な更新を維持する能力を持っていることが示されます。

脅威の軽減策として、Officeのマクロ機能は無効設定にすること、知らない相手からの文書は開かないことを推奨します。FireEye Multi-Vector Execution(MVX)エンジンは、以下の検知名でこうした脅威を検知・阻止することが可能です。

-       APT.Backdoor.Win.UPPERCUT

-       FE_APT_Backdoor_Win32_UPPERCUT