中東の銀行に対する標的型攻撃

Macro Init() subroutine news

更新 (2017 年 12 月 8 日): 現在、このキャンペーンは、少なくとも 2014 年から活動していると思われるイランのサイバー スパイ脅威グループであるAPT34によるものであると考えています。中東。

序章

2016 年 5 月の第 1 週、FireEye の DTI は、中東地域の複数の銀行に送信された、悪意のある添付ファイルを含む電子メールの波を特定しました。脅威アクターは、標的になりそうな人物に対して最初の偵察を行っているようであり、攻撃はクライムウェア キャンペーンでは一般的に見られない独自のスクリプトを使用していたため、私たちの注目を集めました。

このブログでは、これらの標的型攻撃で使用されるツール、戦術、技術、手順 (TTP) について詳しく説明します。

配送方法

攻撃者は、マクロを有効にした XLS ファイルを含む複数の電子メールを、中東の銀行部門で働く従業員に送信しました。攻撃で使用されるメッセージのテーマは、サーバ ステータス レポートのログや Cisco Iron Port Appliance の詳細のリストなど、IT インフラストラクチャに関連しています。あるケースでは、電子メールの内容は、複数の銀行の従業員の連絡先の詳細を含む、複数の従業員間の正当な電子メールの会話のように見えました。その後、この電子メールは、悪意のある Excel ファイルが添付された状態で、複数の人に転送されました。

マクロの詳細

このマクロは、最初に Init() 関数 (図 1 を参照) を呼び出し、次の悪意のあるアクティビティを実行します。

  1. 「互換性がありません」というタイトルのワークシート内のセルから、base64 でエンコードされたコンテンツを抽出します。
  2. パス %PUBLIC%Libraries update.vbs にファイルが存在するかどうかを確認します。ファイルが存在しない場合、マクロは %PUBLIC%Libraries の下に 3 つの異なるディレクトリ (up、dn、および tp) を作成します。
  3. ステップ 1 で抽出されたコンテンツは、PowerShell を使用してデコードされ、2 つの異なるファイル %PUBLIC%Librariesupdate.vbs と %PUBLIC%Librariesdns.ps1 にドロップされます。
  4. 次に、マクロは、3 分ごとに update.vbs を実行する GoogleUpdateTaskMachineUI という名前のスケジュールされたタスクを作成します。

注: マクロ コードでハードコードされた環境変数 %PUBLIC% を使用しているため、マクロは Windows Vista 以降のバージョンのオペレーティング システムでのみ正常に実行されます。

Macro Init() subroutine
図 1: Macro Init() サブルーチン

コンテンツの実行時の再表示

この攻撃で観察された興味深い手法の 1 つは、マクロが正常に実行された後に追加のコンテンツを表示することでした。これは、ソーシャル エンジニアリングの目的で行われました。具体的には、マクロを有効にすると実際に追加のスプレッドシート データが「再表示」されたことを被害者に納得させるためです。

悪意のあるマクロを含む Office ドキュメントは、一般的にクライムウェア キャンペーンで使用されます。 Office の既定の設定では通常、マクロを実行するためにユーザーの操作が必要になるため、攻撃者は被害者に、「保護されたコンテンツ」を表示するにはマクロが必要であると伝えて、危険なマクロ コードを有効にするよう誘導する可能性があります。

クライムウェア キャンペーンでは、通常、マクロを有効にした後、追加のコンテンツは表示されません。ただし、この場合、攻撃者は、疑惑を和らげるために、マクロが有効になっているときにワークシートを実際に非表示および再表示するという追加の手順を実行しました。マクロを実行する前と実行した後のワークシートのスクリーンショットを、それぞれ図 2 と図 3 に示します。

コンテンツを再表示する前に
図 2: コンテンツの再表示前
コンテンツの再表示後
図 3: コンテンツの再表示後

次のコード セクションでは、Init() サブルーチンが完全に実行された後に、サブルーチン ShowHideSheets() が呼び出されることがわかります。

プライベート サブ Workbook_Open()
呼び出し開始
ShowHideSheets を呼び出す
サブ終了

悪意のあるアクティビティの完了後にコンテンツを再表示するサブルーチン ShowHideSheets() のコードを図 4 に示します。

実行時にコンテンツを再表示するために使用されるマクロ
図 4: 実行時にコンテンツを再表示するために使用されるマクロ

第一段階のダウンロード

マクロがスケジュールされたタスクを正常に作成すると、ドロップされた VBScript である update.vbs (図 5) が 3 分ごとに起動されます。この VBScript は、次の操作を実行します。

  1. PowerShell を利用して、URI hxxp://go0gIe[.]com/sysupdate.aspx?req=xxxdwn&m=d からコンテンツをダウンロードし、ディレクトリ %PUBLIC%Librariesdn に保存します。
  2. PowerShell を使用して、URI hxxp://go0gIe[.]com/sysupdate.aspx?req=xxxbat&m=d から BAT ファイルをダウンロードし、ディレクトリ %PUBLIC%Librariesdn に保存します。
  3. BAT ファイルを実行し、結果をパス %PUBLIC%Librariesup のファイルに保存します。
  4. HTTP POST 要求を URI hxxp://go0gIe[.]com/sysupdate.aspx?req=xxxupl&m=u に送信して、このファイルをサーバーにアップロードします。
  5. 最後に、DNS を使用してデータを盗み出す目的で使用される PowerShell スクリプト dns.ps1 を実行します。
update.vbs の内容
図 5: update.vbs の内容

分析中、VBScript は前述のステップ 1 でカスタマイズされたバージョンの Mimikatz をダウンロードしました。カスタマイズされたバージョンでは、図 6 に示すように、独自の既定のプロンプト文字列と独自のコンソール タイトルが使用されます。

ユーザー パスワード ハッシュの抽出に使用される Mimikatz のカスタム バージョン
図 6: ユーザー パスワード ハッシュの抽出に使用される Mimikatz のカスタム バージョン

同様に、ステップ 2 でダウンロードした BAT ファイルの内容を図 7 に示します。

whoami & ホスト名 & ipconfig /all & net user /domain 2>&1 & net group /domain 2>&1 & net group “domain admins” /domain 2>&1 & net group “Exchange Trusted Subsystem” /domain 2>&1 & net accounts /domain 2>&1 & net user 2>&1 & net localgroup administrators 2>&1 & netstat -an 2>&1 & tasklist 2>&1 & sc query 2>&1 & systeminfo 2>&1 & reg query “HKEY_CURRENT_USERSoftware MicrosoftTerminal Server ClientDefault” 2>&1

図 7: ダウンロードした BAT スクリプトの内容

この BAT ファイルは、現在ログオンしているユーザー、ホスト名、ネットワーク構成データ、ユーザーとグループのアカウント、ローカルとドメインの管理者アカウント、実行中のプロセス、その他のデータなど、システムから重要な情報を収集するために使用されます。

DNS 経由のデータ流出

このマルウェアが利用したもう 1 つの興味深い手法は、DNS クエリをデータ抽出チャネルとして使用することでした。通常のネットワーク操作には DNS が必要なため、これが行われた可能性があります。 DNS プロトコルがブロックされる可能性は低く (ネットワークからの自由な通信が許可されます)、その使用がネットワーク防御者の間で疑われる可能性は低くなります。

この目的のために、マクロによってドロップされるスクリプト dns.ps1 が使用されます。次のセクションでは、その機能について詳しく説明します。

  1. このスクリプトは、go0gIe[.]com に (DNS プロトコルを介して) ID を要求します。この ID は、PowerShell スクリプトに保存されます。
  2. 次に、スクリプトは C2 サーバーにクエリを実行して、追加の指示を求めます。それ以上のアクションが要求されない場合、スクリプトは終了し、次回 update.vbs が呼び出されたときに再びアクティブになります。
  3. アクションが必要な場合、DNS サーバーはパターン 33.33.xx.yy の IP で応答します。次にスクリプトは、%PUBLIC%Librariestpchr(xx)chr(yy).bat にファイルを作成します。その後、スクリプトは DNS リクエストを作成して、より多くのデータをフェッチします。各 DNS 要求により、C2 サーバーは IP アドレスを返します。 IP アドレスの各オクテットは、ASCII 文字の 10 進数表現として解釈されます。たとえば、10 進数の 99 は ASCII 文字 ‘c’ と同等です。 IP アドレスのオクテットで表される文字がバッチ ファイルに追加され、スクリプトが作成されます。 C2 サーバーは、IP アドレス 35.35.35.35 で DNS クエリに応答することにより、データ ストリームの終了を通知します。
  4. ファイルが正常に転送されると、BAT ファイルが実行され、その出力が %PUBLIC%Librariestpchr(xx)chr(yy).txt として保存されます。
  5. 次に、サブドメインの一部にファイル データを埋め込むことにより、BAT スクリプトの結果を含むテキスト ファイルが DNS サーバーにアップロードされます。使用される DNS クエリの形式を表 1 に示します。
  6. その後、BAT ファイルとテキスト ファイルが削除されます。その後、スクリプトは終了し、次のスケジュールされたタスクの実行時に再度呼び出されます。

スクリプトの DNS 通信部分を、スクリプトによって生成されるさまざまなサブドメイン形式を示す表と共に、図 8 に示します。

dns.ps1 のコード スニペット
図 8: dns.ps1 のコード スニペット

DNS C2 プロトコルで使用されるサブドメインの形式:

上記のステップ 2 で使用される BotID のリクエストに使用されるサブドメイン

[00][botid]00000[base36乱数]30

上記のステップ 3 で使用されるファイル転送の実行中に使用されるサブドメイン

[00][botid]00000[base36 乱数]232A[hex_filename][i-counter]

上記のステップ 5 で使用される、ファイルのアップロードの実行中に使用されるサブドメイン

[00][botid][cmdid][partid][base36乱数][48-hex-char-of-file-content]

表 1: C2 プロトコルの形式

結論

この攻撃はゼロデイやその他の高度な技術を利用していませんでしたが、攻撃者がさまざまなコンポーネントを使用して特定の標的に対して偵察活動を行った方法を知ることは興味深いものでした。

この攻撃は、マクロ マルウェアが現在でも有効であることも示しています。ユーザーは、設定で Office マクロを無効にすることによって、またドキュメントでマクロを有効にするとき (特にプロンプトが表示されたとき) により警戒することによって、そのような攻撃から身を守ることができます。

参照: https://www.mandiant.com/resources/blog/targeted-attacks

Comments

Copied title and URL