ファイア・アイは今年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 |
この例では、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 |
さらに、コマンドの文字列は、これまでと同様、RGPHのハッシュタグ・アルゴリズムを用いてハ
ッシュ化されています。最近のバージョンでは、さらに以下2つのコマンド(下表の赤いハイライト表示)にも対応しています。
「0xD290626C85FB1CE3」と「0x409C7A89CFF0A727」(表5)。
コマンド |
説明 |
0x97A168D9697D40DD |
C2サーバーからのファイルのダウンロード・検証(XXHash比較) |
0x7CF812296CCC68D5 |
C2サーバーへのファイルのアップロード |
0x652CB1CEFF1C0A00 |
PEファイルのロード |
0x27595F1F74B55278 |
ファイルのダウンロード、検証(XXHash比較)、実行とC2サーバーへの出力の送信 |
0xD290626C85FB1CE3 |
現在時刻のフォーマット化 |
0x409C7A89CFF0A727 |
デスクトップのスクリーンショットをPNG形式で保存し、C2への送信 |
上記以外 |
受信したバッファは「cmd.exe」で実行され、出力はC2サーバーに送られます。 |
結論
最近のバーションでは、UPPERCUTによるBlowfish暗号鍵の初期化の方法が大きく変わっており、アナリストにとっては、バックドアのネットワーク通信の検知・復号はこれまで以上に困難となっています。APT10は、同じ地域・業界への標的活動を一貫して行っている一方で、彼らの使用するマルウェアは、組織的かつアクティブに進化しています。このことから、この脅威アクターは、彼らのオペレーションの中で、マルウェアのバージョンと継続的な更新を維持する能力を持っていることが示されます。
脅威の軽減策として、Officeのマクロ機能は無効設定にすること、知らない相手からの文書は開かないことを推奨します。FireEye Multi-Vector Execution(MVX)エンジンは、以下の検知名でこうした脅威を検知・阻止することが可能です。
- APT.Backdoor.Win.UPPERCUT
- FE_APT_Backdoor_Win32_UPPERCUT