Cisco Japan Blog

SEC を装った電子メールにより、進化した DNSMessenger が拡散

1 min read



執筆者:Edmund Brumaghinpopup_icon および Colin Gradypopup_icon(執筆協力:Dave Maynorpopup_icon@Simpo13popup_icon)。

エグゼクティブ サマリー

Cisco Talos では、興味深い感染手口を使う標的型攻撃について、以前に調査結果popup_iconを公表しています。そのプロセスとは、DNS TXT レコードを使用して双方向のコマンド アンド コントロール(C2)チャネルを生成するというものでした。C2 チャネルを使用することで、DNS TXT レコード クエリの中身や、攻撃者が制御する DNS サーバで生成される関連応答を利用して、Windows Command Processor を直接操作できたのです。

Talos では、このようなマルウェアによる感染手口について監視を続けてきました。この手の攻撃は、スピア型フィッシング メールを通じて標的をマルウェアに感染させることから始まります。その後のマルウェア感染チェーンでは、侵害された米国州政府のサーバが不正なコードのホストに使用されました。スピア型フィッシングに使用された電子メールの送信元は米証券取引委員会(SEC)を装っていました。正当なメールに見せかけることでユーザの疑いを払拭する狙いがあったと考えられます。今回のマルウェア攻撃の標的となった組織には、以前の DNSMessenger 攻撃の標的となった組織と類似していました。難読化処理や多段階にわたる複雑な感染プロセスといった、高度な標的型攻撃の特性が見られることから、高い技術力を持った攻撃者が強い意向の下に攻撃を続けているものと考えられます。

技術詳細

今回のマルウェア攻撃で使用された電子メールでは、送信元が米証券取引委員会(SEC)の電子情報収集分析検索(EDGAR)システムに偽装されています。EDGAR システムとは、株式公開企業に法的に求められる財務諸表を提出するための自動提出プラットフォームのことです。このように偽装したのは、正当なメールに見せかけることでユーザの疑いを払拭し添付ファイルや本文を開かせる狙いがあったと考えられます。

1:悪意のある電子メールの例

電子メールに添付されている悪意のあるファイルを開くと、洗練された多段階の感染プロセスが開始され、DNSMessenger マルウェアに感染します。悪意のある添付ファイルは Microsoft Word 形式のドキュメントですが、一般的に見られるマクロや OLE オブジェクトは含まれていません。今回の添付ファイルでは、コードの実行に Dynamic Data Exchange(DDE)が使用されています。この手法については、こちらpopup_iconで解説されています。Microsoft 社は、DDE によるコードの実行が正常であり削除の予定はないと発表しています。Talos では同社の発表を踏まえて今回の手法を発表しました。ただし、DDE が攻撃者によってすでに悪用されていることは、今回の攻撃からも明かです。

上記で説明した電子メールと同様に、悪意のある添付ファイルも送信元を SEC に見せかけられています。SEC のロゴやブランド マークが使用されており、SEC が公開しそうな情報が記載されています。添付ファイルを開くと、ドキュメントに外部ファイルへのリンクが含まれている旨のメッセージが表示され、コンテンツの取得と表示の許可/拒否を尋ねられます。

2DDE メッセージのプロンプト

 

3:悪意のあるドキュメントの例

ユーザが外部コンテンツの取得を許可すると、攻撃者がホストするコンテンツにアクセスしてコードが取得・実行されてマルウェアに感染します。今回の不正ドキュメントは DDEAUTO フィールドによりコードを取得しますが、このコードは当初、ルイジアナ州政府の Web サイトにホストされていました。その過程で州政府の Web サイトが侵害されていたことは十分に推測できます。実行される DDEAUTO コマンドは、次のようなものです。

4DDE コード取得コマンド

上記のコマンドの結果、参照先の URL にホストされているコードがダウンロードされ、Powershell により直接実行されます。サーバから取得されるコードの中身は Powershell のコードで、Base64 でエンコードされた上に gzip 圧縮されたコード ブロブが含まれています。コードの取得後、難読化が解除されます。そして、Invoke-Expression コマンドレットに渡され、Powershell で実行されます。

5:ステージ 1 のコード

難読化解除コードの役割は、感染プロセスのステージングと次のステージの開始です。また、システムでの常駐を実現する役割もあります。コードには、マルウェアの動作環境に応じて常駐化できる複数の方法が含まれています。コードは感染システムにおける Powershell のバージョンやユーザのアクセス権限を判別し、常駐化方法を決定します。

まず、$ServiceCode という名称のコード ブロブが、次の Powershell コマンドで Windows レジストリに書き込まれます。なお、このコード ブロブも Base64 で暗号化され、gzip で圧縮されています。

6:レジストリの生成

Powershell のコードに含まれる $stagerCode という名称の 2 番目のブロックには、あらかじめレジストリに格納されていたコードを抽出して復号する役割があります。そして、コードが実行されると、最初にミューテックス「1823821749」の有無が確認されます。このミューテックスが存在しない場合は、実行が続行されます。

7:ミューテックスの確認と実行

次にマルウェアは、$stagerCode に適切な PowerShell コマンドを書き込み、それを次のレジストリに対して実行して、「IE」という新たなレジストリ キーを生成します。

  • HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKLM:\Software\Microsoft\Windows\CurrentVersion\RunServices
  • HKCU:\Software\Microsoft\Windows\CurrentVersion
  • HKEY_USERS\.Default\Software\Microsoft\Windows\CurrentVersion\Run
  • HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
  • HKLM:\System\CurrentControlSet\Services\VxD
  • HKCR:\vbsfile\shell\open\command

8:レジストリ アクティビティ

同時に、「IE」という名称の新しいスケジュール タスクも作成します。このタスクには、システムの起動のたびに、ランダムな遅延時間を設けながら $stagerCode を実行する役割があります。

9:スケジュール タスクの作成

次にマルウェアは、続行方法を決定するために、システムに照会をかけて動作環境の特性を判別します。具体的には、システムにインストールされている Powershell のバージョンを確認します。システムで実行中の Powershell のバージョンが Powershell 2.0 より新しい場合は、$ServiceCode の中身を、次の場所にある Alternate Data Stream(ADS)に書き込みます。

%PROGRAMDATA%\Windows\kernel32.dll

そして、感染しているユーザの権限を確認します。ユーザに感染システムの管理者権限がある場合、マルウェアは、WMI イベントのコンシューマとフィルタを WMI ベースの追加の常駐メカニズムとして設定します。フィルタ名は「kernel32_filter」、コンシューマ名は「kernel32_consumer」になります。これらのタスクの動作に使用される Powershell のコードは以下のとおりです。

10ADS WMI の常駐化

これらすべてのタスクが完了すると、マルウェアは IEX Powershell コマンドレットを使用して $stagerCode を直接実行することによって、感染プロセスの次の段階に入ります。

この次のマルウェア感染の段階では、変数と関数名の両方が厳重に難読化されており、解析が大変難しくなっています。さらに、コード内の文字列のほとんどが、Base64 でエンコードされていました。この段階に関連するコードは、この後のコマンド アンド コントロール(C2)の通信に使用されるドメインのリストを含んだ配列の定義から始まっています。この配列内のドメインのリストについては、本ブログの「侵入の痕跡」のセクションに記載しています。

次いで、マルウェアは BIOS からシステムのシリアル番号を取得し、その MD5 ハッシュを計算して、最初の 10 バイトを返します。

  • シリアル番号の例:VMware-56 4d 64 66 d0 7d f4 26-2c ad a5 8b f8 51 26 f8
  • 返される値:EFA29DD310

次に、マルウェアはカウンタの値をゼロに設定します。前述のハッシュ値、ハードコードされた文字列「stage」、カウンタの値、配列からランダムに選択されたドメインを組み合わせることで、マルウェアが DNS 要求開始時に使用する最初のホスト名が生成されます。

  • ホスト名の例:stage.0.ns0.pw

この時点でマルウェアはループ状態に入っており、A レコードのルックアップの結果として 0.0.0.0 を受け取るか、ルックアップが完全に失敗するまで、その状態が続きます。A レコードの結果は、以下で説明するチェックサムの値を表します。そして、A レコードの要求に対する応答として DNS サーバから返される IPv4 の値が整数値に変換され、さらに 2 進数に変換されます。

  • IP の例:50.99.116
  • 整数値:1798464372
  • 2 進数:1101011001100100110001101110100

生成された同じホスト名は、マルウェアが TXT レコードを要求する際にも使用されます。そして、TXT レコード クエリの結果が MD5 ハッシュの計算に使用されます。MD5 ハッシュの最初の 8 バイトがチェックサム アルゴリズムで処理され、返された整数値が 2 進数に変換されます。

  • TXT クエリの結果の例

 

H4sIAIia3VkC/909a1fbSJafyTn5DxXhbkvYEpg8pgcjpnnkwXQgLNCTnnG8HdkqQGBLjiRDCPE5+x/2H+4v2XvrpdLLmE7m9J6lZ8BWVd133br3VpWyTE4vgoQkdJgGUUiSi2g68smAkmg8DlLqEy8hQUqgyySmCQ3hY0hOUu+cxo8fLRP3e/48ftTwo7EXhAlxyc+mESZrzuTGaLMPCVAjP068ofx8QweqpeMgjYn4rLesay1PM1BPNV

 

  • MD5432B4077F72EE96CA70B57F10B68F35E
  • 選択されたバイト列:432B4077
  • チェックサム:1126908023
  • 2 進数:1000011001010110100000001110111

A レコードの応答から得られた 2 進値と上記のチェックサムの計算結果の両方がマルウェアに渡されると、両者が比較されます。A レコードの応答と TXT レコードの応答が一致する場合、TXT レコード クエリの応答結果が、最終結果として得られる文字列の末尾に追加されます。そして、配列から新しいドメインがランダムに選択され、クエリに使われるホスト名の一部である前述のカウンタの値が 1 だけ加算されます。一致しない場合には、一致するまでクエリが続行されます。

このプロセスは、A レコードのルックアップ結果が 0.0.0.0 になるまで続きます。つまり、DNS 経由でのコードの取得が完了するまでということです。そして、その時点で得られた文字列が次のプロセスに返されます。得られた文字列は Base64 でデコードされ、gzip で圧縮解除されます。そして、Powershell の IEX コマンドレットに渡され、DNS を使用して取得されたコードが実行されます。

今回の攻撃の分析では、C2 サーバから次の段階の Powershell コードを得ることはできませんでした。この攻撃が標的型攻撃の性質を帯びていることを考慮すれば、このような通信は、情報セキュリティ企業や研究者による分析を妨害するため制限されていると考えられます。なお、ステージ 4 のペイロードに関する報告は、こちらpopup_iconに記載されています。

まとめ

今回の攻撃では、今日の脅威がいかに洗練されているかが明らかになりました。防御措置を回避するため多重に難読化されている場合も多く、攻撃者は標的組織のみを攻撃することで検出されずに不正な活動を続けています。また、マルウェアが悪意のあるコードをシステム上で実行し、感染に成功すると常駐化する手法は要注意です。組織にとっては、このような手法を認識しておくことが重要です。今回のマルウェアは、WMI、ADS、スケジュール タスク、レジストリ キーを利用して常駐化する機能を備えていました。また、後の段階のコードや C2 通信の伝達で DNS が使用される事例も増えています。今回のような独特な標的型攻撃に対して、Talos は引き続き動向を監視しており、新たな手法からも常にお客様を保護します。

カバレッジ

お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。

Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。

CWSWSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されたマルウェアを検出します。

E メール セキュリティpopup_icon は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。

NGFWNGIPS、および Meraki MX などのネットワーク セキュリティ アプライアンスは、今回のような脅威でも検出できます。

AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。

シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrellapopup_icon は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。

オープンソース Snort サブスクライバ ルール セットをお使いであれば、Snort.orgpopup_icon で購入可能な最新のルール パックをダウンロードすることで、システムを最新状態に維持できます。

侵入の痕跡(IOC)

今回説明した攻撃では、以下の侵入の痕跡(IOC)が観察されました。

悪意のある Word ドキュメント:

1a1294fce91af3f7e7691f8307d07aebd4636402e4e6a244faac5ac9b36f8428
bf38288956449bb120bae525b6632f0294d25593da8938bbe79849d6defed5cb

ステージ 2 の PowerShell

8c5209671c9d4f0928f1ae253c40ce7515d220186bb4a97cbaf6c25bd3be53cf
ec3aee4e579e0d1db922252f9a15f1208c4f9ac03bd996af4884725a96a3fdf6

ドメイン:

trt[.]doe[.]louisiana[.]gov
ns0[.]pw
ns0[.]site
ns0[.]space
ns0[.]website
ns1[.]press
ns1[.]website
ns2[.]press
ns3[.]site
ns3[.]space
ns4[.]site
ns4[.]space
ns5[.]biz
s5[.]online
ns5[.]pw

IP アドレス:

206[.]218[.]181[.]46

 

本稿は 2017年10月11日に Talos Grouppopup_icon のブログに投稿された「Spoofed SEC Emails Distribute Evolved DNSMessengerpopup_icon」の抄訳です。

 

コメントを書く