更新された TTP を使用して日本企業を標的とする APT10

Event Website for the Lecture of Guatemala Ambassador news

序章

2018 年 7 月、FireEye デバイスは、日本のメディア セクターを標的とした APT10 (Menupass) 活動と思われるものを検出してブロックしました。 APT10 は、FireEye が 2009 年から追跡している中国のサイバー スパイ グループであり、日本のエンティティを標的にした歴史があります。

このキャンペーンでは、このグループは悪意のあるドキュメントを含むスピア フィッシング メールを送信し、それが UPPERCUT バックドアのインストールにつながりました。このバックドアは、セキュリティ コミュニティではANELとしてよく知られており、最近までベータ版または RC (リリース候補) として提供されていました。このブログ投稿の一部では、このバックドアの複数のバージョンで確認された更新と相違点について説明します。

攻撃の概要

攻撃は、スピア フィッシング メールに添付された悪意のある VBA マクロを含む Microsoft Word ドキュメントから始まります。悪意のあるドキュメントの内容は判読できませんが (図 3 を参照)、日本語のタイトルは海事、外交、および北朝鮮の問題に関連しています。表 1 に、UPPERCUT の侵害の痕跡 (IoC) を示します。

File Name

MD5

Size

C2

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

Government Recommendations from the Liberal Democratic Party’s Comprehensive Strategic Maritime Subcommittee

4f83c01e8f7507d23c67ab085bf79e97

843022

eservake.jetos[.]com

82.221.100.52

151.106.53.147

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

Invitation to Lecture by Guatemalan Ambassador

f188936d2c8423cf064d6b8160769f21

720384

 

eservake.jetos[.]com

151.106.53.147

153.92.210.208 

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

North Korean interior swayed by the approach of the United States

cca227f70a64e1e7fcf5bccdc6cc25dd

733184

eservake.jetos[.]com

153.92.210.208

167.99.121.203

表 1: アッパーカット IoC

北朝鮮のルアーについては、同じタイトルのニュース記事がオンラインで簡単に入手できました。グアテマラのルアーで、攻撃者が日本語でグアテマラの珍しい綴りを使用したことも注目に値します。同じスペルを使用した Google 検索の上位結果は、2018 年 8 月に開催されたグアテマラ大使の講演のイベント Web サイトにつながりました。図 1 は、イベント ページのスクリーンショットを示しています。

Event Website for the Lecture of Guatemala Ambassador
図 1: グアテマラ大使講演のイベント Web サイト

図 2 は、ルアー ドキュメントを表示するマクロ関数を示しています。この関数の下部に、図 1 にある連絡先情報と一致する読み取り可能なテキストが表示されます。したがって、ラテン アメリカの問題に関心を持つ人々が、このキャンペーンの標的になった可能性があります。

ルアードキュメントを表示するマクロ
図 2: ルアー ドキュメントを表示するマクロ

最初の Word ドキュメントはパスワードで保護されていましたが、これはおそらく検出を回避するためでした。パスワード (電子メールの本文に記載) を入力すると、図 3 に示すように、悪意のあるマクロを有効にするようユーザーに要求するドキュメントがユーザーに表示されます。

ルアードキュメント
図 3: ルアー ドキュメント

図 4 は、悪意のあるマクロが実行されると何が起こるかを示しています。

UPPERCUTをインストールするマクロ
図 4: UPPERCUT をインストールするマクロ

実行ワークフローは次のとおりです。

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

2. マクロは、Windows certutil.exe と次のコマンドを使用して、ドロップされたファイルをデコードします (certutil.exe は、Windows で証明書を管理するための正規の組み込みコマンドライン プログラムです)。

C:WindowsSystem32cmd.exe” /c certutil -decode C:ProgramDatapadre1.txt C:ProgramDataGUP.txt

C:WindowsSystem32cmd.exe” /c certutil -decode C:ProgramDatapadre2.txt C:ProgramDatalibcurl.txt

C:WindowsSystem32cmd.exe” /c certutil -decode C:ProgramDatapadre3.txt C:ProgramData3F2E3AB9

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

C:WindowsSystem32esenttutl.exe” /y C:ProgramDataGUP.txt /d C:ProgramDataGUP.exe /o

C:WindowsSystem32esenttutl.exe” /y C:ProgramDatalibcurl.txt /d C:ProgramDatalibcurl.dll /o

ドロップされたファイルには次のものが含まれます。

  • GUP.exe : GUP、無料 (LGPL) の汎用アップデーター。 GUP は、ソフトウェア更新のために Notepad++ で使用されるオープン ソース バイナリです。ここで使用されているバージョンは、図 5 に示すように、Notepad++ によってデジタル署名されたバージョン 4.1 です。
  • libcurl.dll: 悪意のあるローダー DLL
  • 3F2E3AB9: 暗号化されたシェルコード
Notepad++ 署名付きアップデーター
図 5: Notepad++ の署名付きアップデーター

4. マクロは、正規の実行可能ファイル GUP.exe を起動します。

  • 実行可能ファイルは悪意のある DLL (libcurl.dll) をサイドロードし、同じフォルダーにあるシェルコード (3F2E3AB9) を復号化して実行します。
  • シェルコードは、UPPERCUT の更新された亜種である別の DLL をデコードして解凍します。図6に示すように、シェルコードは DLL をデコードする前に、ntdll_NtSetInformationThread に基づいてデバッグ防止技術を使用します。これにより、スレッドがデバッガーから切り離されます。次に、DLL がメモリに読み込まれ、ランダムに名前が付けられたエクスポートされた関数が呼び出されます。
シェルコードで使用されるアンチデバッグ手法
図 6: シェルコードで使用されるアンチデバッグ手法

5. マクロは、Windows esentutl.exe を使用して最初にドロップされた .txt ファイルを削除し、ドキュメント テキストを埋め込みメッセージに変更します。

攻撃の全体像を図 7 に示します。

攻撃の概要
図 7: 攻撃の概要

いくつかの脅威アクターは、ペイロードのデコードWindows certutil.exeを使用する手法を利用しており、 APT10は引き続きこの手法を採用しています。

アッパーカットの進化

図 8 は、UPPERCUT の更新のタイムラインを示しています。ローダーの PE コンパイル時間とドロッパー (Word ドキュメント) の作成時間がグラフにプロットされます。新しいバージョンのローダーのコンパイル時間は、タイムスタンプが上書きされてゼロで埋められるため、ここには表示されません。 UPPERCUT 5.2.x シリーズについては把握していませんが、2017 年 12 月から 2018 年 5 月の間に数か月ごとにマイナー リビジョンがリリースされた可能性があります。

UPPERCUT 更新のタイムライン
図 8: UPPERCUT 更新のタイムライン

以前のバージョンとは異なり、最新バージョンでは、エクスポートされた関数名がランダム化されています (表 2)。

エンコードされたペイロード

デコードされたペイロード

MD5

サイズ

ハッシュのインポート

エクスポートされた関数

バージョン

aa3f303c3319b14b4829fe2faa5999c1

322164

182ee99b4f0803628c30411b1faa9992

l7MF25T96n45qOGWX

5.3.2

126067d634d94c45084cbe1d9873d895

330804

5f45532f947501cf024d84c36e3a19a1

hJvTJcdAU3mNkuvGGq7L

5.4.1

fce54b4886cac5c61eda1e7605483ca3

345812

c1942a0ca397b627019dace26eca78d8

WcuH

5.4.1

表2:アッパーカットの静特性

最新の UPPERCUT サンプルのもう 1 つの新機能は、コマンド アンド コントロール (C2) サーバーからの HTTP 応答の受信に失敗した場合、マルウェアが Cookie ヘッダーでエラー コードを送信することです。エラー コードは、GetLastError 関数によって返され、次のビーコンで送信される値です。これは、バックドアが応答を受信できない場合に、攻撃者が問題を理解できるようにするために含まれている可能性があります (図 9)。この Cookie ヘッダーは、ネットワーク ベースの検出に使用できる一意のインジケーターです。

コールバックの例
図 9: コールバックの例

UPPERCUT の以前のバージョンでは、C2 と通信する際に Blowfish の暗号化にハードコーディングされた文字列「これは暗号化キーです」を使用していました。ただし、最新バージョンでは、図 10 に示すように、キーは C2 アドレスごとに一意にハードコードされ、C2 の計算された MD5 ハッシュを使用して、使用するキーを決定します。

フグの鍵生成
図 10: フグの鍵生成

たとえば、表3は、126067d634d94c45084cbe1d9873d895 のデコードされたペイロードにハードコードされた C2 アドレス、それらの MD5 ハッシュ、および対応する Blowfish キーを示しています。

C2

MD5

フグの鍵

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 と対話すると、bdc4b9f5af9868e028dd0adc10099a4e6656e9f0ad12b2e75a30f5ca0e34489d が Blowfish キーとして選択されます。 URL の MD5 ハッシュがリストされたハッシュのいずれにも一致しない場合、デフォルトのキー f12df6984bb65d18e2561bd017df29ee1cf946efa5e510802005aeee9035dd53 が使用されます。

マルウェアから生成されたネットワーク トラフィックのもう 1 つの違いは、C2 通信中にエンコードされたプロキシ情報が URL クエリ値に追加されていることです。表 4 は、新しいバージョンでバックドアから C2 サーバーに送信されるパラメーターを示しています。これらは、図 9 に示すように、POST 要求を介して送信されます。

URL パラメータ
表 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: サポートされているコマンド

結論

APT10 は一貫して同じ位置情報と業界を標的にしていますが、APT1 が使用するマルウェアは活発に進化しています。 UPPERCUT の新しいバージョンでは、バックドアが Blowfish 暗号化キーを初期化する方法が大幅に変更されているため、アナリストがバックドアのネットワーク通信を検出して解読することが難しくなっています。これは、APT10 がマルウェアを維持および更新する能力が非常に高いことを示しています。

脅威を軽減するために、ユーザーは設定で Office マクロを無効にし、不明なソースからのドキュメントを開かないことをお勧めします。 FireEye Multi-Vector Execution (MVX) エンジンは、次の検出名でこの脅威を認識してブロックできます。

  • APT.Backdoor.Win.UPPERCUT
  • FE_APT_Backdoor_Win32_UPPERCUT

参考: https ://www.mandiant.com/resources/blog/apt10-targeting-japanese-corporations-using-updated-ttps

Comments

Copied title and URL