2022 年 7 月、メディア業界の企業でのプロアクティブな脅威ハンティング活動中に、 Mandiant Managed Defenseは、UNC4034 として追跡される脅威クラスターによって採用された新しいスピア フィッシング手法を特定しました。 Mandiant は、このグループと、北朝鮮とのつながりがあると思われるグループとの間にいくつかの重複があることを特定しました。
UNC4034 は、WhatsApp を介して被害者との通信を確立し、偽の求人情報に関する悪意のある ISO パッケージをダウンロードするように被害者を誘導し、PuTTY ユーティリティのトロイの木馬化されたインスタンスを介して AIRDRY.V2 バックドアを展開しました。
マネージド ディフェンスの脅威ハンティングの考え方
Mandiant Managed Defenseサービス提供の基盤の 1 つは、従来の検出メカニズムをバイパスする高度な攻撃者のツール、戦術、および手法からお客様を保護するプロアクティブな脅威ハンティング プログラムです。マネージド ディフェンスの脅威ハンターは、Mandiant の詳細な敵対者研究と脅威アクターの行動への露出を活用して、脅威ハンティング機能を継続的に強化および拡張します。
この活動は、攻撃者が一般的に使用するディレクトリに書き込まれた異常なファイルを検索する、 Mandiant Intelligence: Staging Directoriesミッションによって特定されました。
この侵害で UNC4034 が使用した手法は、Mandiant が調査した無数の侵入で使用された手法とともに、Managed Defense 内で脅威ハンティングの仮説を継続的に開発および改良するために使用されています。これらは、進化する脅威アクターのトレードクラフトから情報を得た、忠実度の高い実用的なリードを提供します。
初期リード
最初のリードは、 amazon_assessment.iso
という名前のホストにダウンロードされたファイルでした。 ISO および IMG アーカイブは、Windows 10 以降、これらのファイルをダブルクリックすると自動的に仮想ディスク ドライブとしてマウントされ、コンテンツに簡単にアクセスできるようになるため、攻撃者にとって魅力的なものになっています。これにより、RAR アーカイブなどの他の形式と比較して、埋め込みファイルを表示するために必要な労力が軽減されます。フィッシングの添付ファイルを介して提供される悪意のある IMG および ISO アーカイブを検出することは、Mandiant Managed Defense にとって日常的なことです。このようなアーカイブに含まれるペイロードは、コモディティ マルウェアから、このブログ投稿で分析されたサンプルのような高度なバックドアにまで及びます。
フィッシングルアー
Mandiant Managed Defense はホストで調査を行い、ファイルamazon_assessment.iso
がどのように作成されたかを特定しました。入手可能なデータに基づいて、Mandiant は、UNC4034 が Amazon での仕事の機会を電子メールで提供することにより、被害者との通信を開始したと評価しています。その後、UNC4034 はWhatsAppを介して彼らと通信し、ユーザーがWhatsAppの Web バージョンを使用してダウンロードしたファイルamazon_assessment.iso
を共有しました。
amazon_assessment.iso
アーカイブには、実行可能ファイルとテキスト ファイルの 2 つのファイルが含まれていました。 Readme.txt
という名前のテキスト ファイルには、2 番目のファイルPuTTY.exe
で使用するための接続の詳細が含まれていました。
|
PuTTY は、オープン ソースの SSH および Telnet クライアントです。発行元の Web サイトからダウンロードした正規のコンパイル済みバージョンのツールには、有効なデジタル署名があります。ただし、図 2 に示すように、悪意のあるアーカイブ内のPuTTY.exe
バイナリにはデジタル署名がありません。
被害者がダウンロードした PuTTY バイナリのサイズも、正規のバージョンよりも大幅に大きくなっています。よく調べてみると、公式に配布されたバージョンと比較して、大きくてエントロピーの高い.data
セクションがあります (図 3)。このようなセクションは通常、圧縮または暗号化されたデータを示しています。
ISO ファイルに埋め込まれたPuTTY.exe
の疑わしい性質により、 Managed Defense はホストとファイル自体についてより詳細な調査を実行するようになりました。
悪意のある PuTTY バイナリの実行により、ホストにバックドアが展開されました。展開されたバックドアは、Mandiant が AIRDRY として追跡するマルウェア ファミリの進化形です。 Mandiant Managed Defense は侵害の調査に成功し、展開されたバックドアに起因する後続のアクティビティが発生する前にホストを封じ込めました。 Mandiant は 2022 年 7 月 5 日に侵害を検出して対応しましたが、2022 年 6 月 27 日に同じ PuTTY 実行可能ファイルが VirusTotal で確認されました。
さらに、Mandiant は、2022 年 6月 17 日に VirusTotal にアップロードされたamazon_test.iso
という名前の 2 つ目の ISO アーカイブを発見しました。 Mandiant は、 Readme.txt
ファイルに含まれる IP アドレスからピボットすることで、2 番目のアーカイブを見つけました。この ISO ファイルには、同じ IP アドレスを持つReadme.txt
と、同様のトロイの木馬化された PuTTY 実行可能ファイルも含まれていました。
Mandiant が見つけた両方の ISO ファイルは、Amazon の採用評価を装って、同じルアー テーマを使用しているようです。それらには、同様に構築されたマルウェアも含まれており、最終的に AIRDRY.V2 バックドア ペイロードが生成されました。
マルウェア分析
トロイの木馬化された PuTTY
各 ISO ファイルに埋め込まれた実行可能ファイルは、公開されているPuTTY バージョン 0.77 ソース コードを使用してコンパイルされた、完全に機能する PuTTY アプリケーション (図 4) です。
各サンプルには、埋め込まれたペイロードをディスクに書き込んで起動する悪意のあるコードが含まれています。ただし、悪意のあるコードは、トロイの木馬化された PuTTY サンプルごとに異なる場所に挿入されていました。 Mandiant が発見した PuTTY サンプルでは、ソース ファイルputty-0.77sshssh.c
にあるconnect_to_host
関数にコードが存在します。コードをトリガーするには、ユーザーはReadme.txt
ファイルで提供されているホスト IP アドレスへの SSH 接続を試行する必要があります (図 1)。
VirusTotal で発見された PuTTY サンプルでは、悪意のあるコードがssh2_userauth_process_queue
関数に挿入されていました(ソース ファイル: putty-0.77sshuserauth2-client.c
)。このコードは、公開鍵やキーボード インタラクティブ認証などの他の方法とは対照的に、パスワード認証の実行を担当する機能の一部に存在します。ユーザーが接続を確立してユーザー名とパスワードを入力すると、認証結果に関係なく悪意のあるコードが実行されます。これらの実行ガードレールは、UNC4034 がマルウェアの次の段階を不必要にドロップしないようにするための試みである可能性があります。
ペイロードをドロップして実行する悪意のあるコードの部分は、2 つのサンプル間でほぼ同じです。正規の Windows 実行可能ファイルC:WindowsSystem32colorcpl.exe
が新しいディレクトリC:ProgramDataPackageColor
にコピーされ、埋め込まれたペイロードがC:ProgramDataPackageColorcolorui.dll
に書き込まれます。侵害で確認された PuTTY バイナリは、図 5 に示すコマンドを使用して、DLL 検索順序のハイジャックを介してcolorui.dll
を起動します。
C:WindowsSystem32cmd.exe /c start /b C:ProgramDataPackageColorcolorcpl.exe 0CE1241A44557AA438F27BC6D4ACA246 |
VirusTotal サンプルでは、 cmd.exe
を使用してcolorcpl.exe
を起動していません。代わりに、Windows API 関数WinExec
が図 6 に示すプロセスを起動します。
C:ProgramDataPackageColorcolorcpl.exe C8E71F4613ABFCA10B6330C9 |
どちらの場合も、 colorcpl.exe
に渡されるコマンドライン引数は、Windows 実行可能ファイルの正当な機能とは関係ありません。代わりに、以下に説明するように、悪意のある DLL によって各引数が利用されます。
schtasks.exe
を介してC:ProgramDataPackageColorcolorcpl.exe
の永続性が確立されます。 PackageColor
という名前のスケジュールされたタスクは、毎日現地時間の午前 10 時 30 分にcolorcpl.exe
を実行します。
悪意のある DLL
colorui.dll
のサンプルは、商用ソフトウェア プロテクター Themida を使用して圧縮されています。解凍されたサンプルには、その目的を明らかにするファイル パスが含まれています。パスの例を図 7 に示します。
W:DevelopaToolShellCodeLoaderApplibressl-2.6.5cryptocryptlib.c |
どちらのサンプルにも、DAVESHELL という名前の同一のシェルコード ペイロードが含まれています。ペイロードは、動的に生成されたキーを使用してカスタム XOR ベースのアルゴリズムを使用して復号化されます。キーは、次の文字列を連結した結果です。
1. 親プロセス名 ( COLORCPL.EXE
)
2. 悪意のある DLL ファイル名 ( COLORUI.DLL
)
3. PuTTY 実行可能ファイルによってcolorcpl.exe
に渡されるコマンドライン引数
VirusTotal サンプルに必要な復号化キーを図 8 に示します。
COLORCPL.EXECOLORUI.DLLC8E71F4613ABFCA10B6330C96CA3D3B1 |
このキーを含めることは、分析防止メカニズムとしても機能します。正しいキーがなければ、DLL が実行されても意味がありません。
colorcpl.exe
に渡されるコマンドライン引数は、復号化されたシェルコードの実行方法も指定します。この引数に基づいて、 colorui.dll
はcolorcpl.exe
内からシェルコードを実行するか、正規の Windows プロセスの新しいインスタンスに挿入する可能性があります。プロセス インジェクションの場合、インジェクション ターゲットはcredwiz.exe
またはiexpress.exe
の間でランダムに選択されます。
注入されたシェルコード ペイロードは DAVESHELL です。DAVESHELL は、メモリに埋め込まれたペイロードを実行するシェルコードの形式で公開されているドロッパーです。埋め込まれたペイロードは、AIRDRY バックドアの VMProtect パックの進化形です。
エアドライ.V2
BLINDINGCAN としても知られる AIRDRY バックドアは、 CISAおよびJPCERTによって公開されたレポートで詳細に文書化されています。これらの以前のバージョンの AIRDRY は、ファイル転送、ファイル管理、コマンド実行など、多数のバックドア コマンドをサポートしていました。ただし、最新バージョンでは、従来のバックドア コマンドが削除され、複数の通信モードをサポートするプラグイン ベースのアプローチが採用されています。以下の詳細は、AIRDRY.V2 への進化に対処し、以前のバージョンとの類似点を強調しています。
バックドアの構成は、ハードコードされたキーKAA5M8MNDKLJB8PI
を使用して CBC モードで暗号化された AES-128です。整合性チェックは、暗号化された構成と復号化された構成の両方で実行されます。チェックが失敗すると、バックドアは終了します。
復号化された構成には、バックドアの通信モードが含まれています。サポートされているモードは、対応する内部クラス名 (該当する場合) と共に表 1 にリストされています。 3 つのモードはすべて、 CSinSocket
という名前のクラスに集中しています。
モード |
クラス名 |
説明 |
HTTP |
|
HTTPによる通信 |
ファイル |
|
ファイル通信 |
SMB |
なし |
名前付きパイプを介した SMB 経由の通信 |
組み込み構成の構造は、通信モードによって異なります。観測されたサンプルは、HTTP を使用するように構成されています。その 0x24B0 バイト構成の構造を表 2 に示します。AIRDRY.V2 の SMB またはファイル モード バージョンは特定されていないため、それらの構成構造は不明です。
オフセット |
説明 |
|
動作モード |
|
C2 URL カウント |
|
C2 URL #1 |
|
C2 URL #2 |
|
C2 URL #3 |
|
C2 URL #4 |
|
C2 URL #5 |
|
プロキシ有効フラグ |
|
プロキシ サーバー |
|
プロキシポート |
|
利用可能なプロキシ資格情報 |
|
プロキシのユーザー名 |
|
プロキシ パスワード |
|
わからない |
|
最大ビーコン数 |
|
ディスク容量が利用可能かどうかを報告する |
|
アクティブな RDP セッションがあるかどうかを報告する |
|
ビーコン間隔 (秒) |
|
開始日時(空) |
|
システム ID |
|
わからない |
|
|
|
|
|
わからない |
上記の構成レイアウトは、JPCERT レポートの付録 A に概説されているものと似ています。オフセット 0x1054に格納されている最大ビーコン カウントは、オフセット0x1054
に格納されている時間だけ待機する前に、バックドアがコマンド アンド コントロール (C2) サーバーへの接続を試行する回数を反映してい0x105E
。現在のサンプルは、60 秒間スリープする前に最大 5 回ビーコンを送信するように構成されています。
デフォルトでは、バックドアはプロキシ サーバーを使用するように構成されていません。また、使用可能なディスク領域のステータス (オフセット0x1056
) またはアクティブな RDP セッションの存在(オフセット0x105E
) を報告するようにも構成されていません。ただし、これらの機能は、C2 サーバーによって発行された構成の更新を介して有効にすることができます。
オフセット0x18A0
および0x1AA8
の構成文字列はコードでは参照されていませんが、以前の AIRDRY 構成で確認されています。これらの文字列は、ダウンロードしたプラグインで使用するために構成に残る可能性があります。
オフセット0x1060
の設定値は、バックドアが C2 サーバーとの通信を開始する日付と時刻を反映しています。この値は現在の構成では空であるため、通信がすぐに開始されます。ただし、値は C2 サーバーからのコマンドを介して更新される可能性があり、その結果、バックドアが一定期間非アクティブになる可能性があります。
バックドアの C2 URL 数は 5 です。ただし、構成には 3 つの異なる URL しかありません (図 9)。
|
バックドアは、ランダムに選択された C2 URL に HTTP POST リクエストを発行します。リクエストの例を図 10 に示します。
bbs=VkxXU1lPvBGI7BJ40K4=shD5nhF+2amakV9H&article=EAAAABIAAAAgAAAAAAAAAAAAAAAAAAAAgu |
リクエスト本文のbbs
とarticle
フィールド名はハードコーディングされています。 bbsフィールドに割り当てられたデコードされた Base64 データは、同じカスタム RC4 実装を含め、 JPCERT レポートで概説されている形式と密接に一致しています。 AIRDRY.V2 の要求構造が前任者と異なるのは、コマンド関連データの送信に使用される 2 番目のフィールドです。 Base64 でエンコードされる前に、 article
のデータは LZ4 を使用して圧縮され、AES で暗号化されます。 AES-256 キーは、ハードコードされた 32 バイト シーケンスの SHA256 ハッシュを使用して導出されます。
AIRDRY.V2 のファイル モードは、同じ HTTP 要求形式を使用しますが、各要求をファイルに書き込みます。ファイル パスは、バックドアの構成で見つかった要素に基づいて作成されます。 AIRDRY.V2 のファイル モード バージョンが特定されていないため、HTTP 要求をファイルに書き込む目的はまだ特定されていません。 SMB モードでは、バックドアは SMB2 WRITE リクエストを名前付きパイプに送信することで通信します。ホスト名とパイプ名は構成で指定されます。
以前の AIRDRY バックドアと同様に、AIRDRY.V2 は値0x2040
を使用して、C2 サーバーからコマンドを要求します。サポートされているコマンド ID を表 3 に示します。
コマンド ID |
説明 |
|
基本的なシステム情報をアップロードする |
|
C2サーバーから提供された値に基づいてビーコン間隔を更新します |
|
新しい開始日時まで非アクティブ化 |
|
現在の構成をアップロードする |
|
構成を更新する |
|
生き続ける |
|
構成の値に基づいてビーコン間隔を更新します |
|
C2 リクエストと構成データの暗号化に使用される AES キーを更新する |
|
プラグインをメモリにダウンロードして実行する |
AIRDRY.V2 は 9 つのコマンドをサポートしています。 AIRDRY の以前のバージョンでは、30 近くのコマンドがサポートされていました。 9 つのコマンドのうち、以前の AIRDRY サンプルに存在しなかったのは0x2052
と0x2057
の 2 つだけです。コマンド0x2052
を使用して、上記の AES-256 キーを取得するために使用される 32 バイト シーケンスを更新できます。コマンド ID 0x2057
は、多数のコマンドをサポートするバックドアから、AIRDRY.V2 の新しいプラグイン ベースのアプローチへの移行を表しています。
ダウンロードされたプラグインはメモリ内で実行され、復号化された構成のコピー、システム ID、および構成済みの C2 サーバーとの通信を容易にするオブジェクトを含む構造が提供されます。特にバックドア自体には、プラグインとして機能するために必要なロジックがあります。
脅威アクター スポットライト: UNC4034
Mandiant は、UNC4034 と、北朝鮮との関連性が疑われる脅威クラスターとの間にいくつかの重複があることを特定しました。 AIRDRY.V2 C2 URL は、以前にこれらのグループによって利用され、いくつかの OSINT ソースで報告された、侵害された Web サイト インフラストラクチャに属しています。注目すべきは、この侵害されたインフラストラクチャを以前に使用して、悪意のあるドキュメントに埋め込まれた CUTELOOP ダウンローダーを介して AIRDRY バックドアを配信していたことです。
特定された重複と使用されたソーシャル エンジニアリング戦術に基づいて、Mandiant は、この活動が、兵器化されたドキュメントではなく、ISO ファイルとトロイの木馬化されたバイナリを使用した別の攻撃チェーンを利用する永続的な「オペレーション ドリーム ジョブ」キャンペーンの延長を表していると考えています。これは、偽造されたおとり捜査に標的が反応した後、北朝鮮の攻撃者が使用するいくつかのマルウェア配信手法の 1 つと考えられます。最近の公開レポートでは、他のソーシャル メディア プラットフォームを使用して正当な企業を装い、 暗号通貨開発者をターゲットにした偽の求人広告を掲載していることも詳しく説明しています。
ISO ファイルの使用は、コモディティ マルウェアと標的型マルウェアの両方の配信でますます一般的になっています。 Mandiant は、 APT29などの有名なアクターが ISO ファイルを使用してマルウェアを配信することを確認しています。
検出の機会
この侵害の調査により、今後のハンティング活動でピボットする新しい手がかりと指標が明らかになりました。これらのハンティング リードに対する重要な警告は、それらが侵害の兆候ではないということです。代わりに、アナリストによるさらなる調査が必要になる可能性のある興味深いアクティビティです。
これらには、 WhatsApp 、電子メール プロバイダー、クラウド ストレージ サービスなどのソースからダウンロードした ISO および IMG アーカイブ ファイルが含まれます。 Windows 10以降では、ダウンロードしたファイルのオリジン URL はZone.Identifier
代替データ ストリームに格納されます。 Mandiant は、これらのソースから発信されたフィッシング添付ファイルとして配信されるアーカイブ ファイルを定期的に観察しています。
2 つ目の原因は、 C:ProgramDataPackageColor
などの通常とは異なるディレクトリからのcolorcpl.exe
の実行です。ほとんどの場合、実行可能ファイルはC:WindowsSystem32
またはC:WindowsSysWOW64
の標準の場所から実行されます。
今後の捜索活動で見つかった 3 番目の捜索の手がかりは、コマンドライン引数を指定したcolorcpl.exe
の実行です。デフォルトでは、 colorcpl.exe
はコマンド ライン引数なしで実行されます。このシナリオでは、 colorcpl.exe
は、16 進文字で構成されるコマンド ライン引数を使用して実行されました。引数は、プロセスにロードされた悪意のある DLL によって最終的に評価されました。
Mandiant は、このブログ投稿で説明されているような、新しく斬新な攻撃者の活動を常に発見しています。お客様を確実に保護するために、Mandiant の検出および脅威ハンティング機能は継続的に進化しており、最前線での経験に支えられています。
マルウェア ファミリの定義
デイブシェル
DAVESHELLは、メモリ内ドロッパーとして機能するシェルコードです。その埋め込まれたペイロードはメモリにマップされ、実行されます。
エアドライ
AIRDRYは、HTTP 経由で通信する C++ で記述されたバックドアです。その機能には、シェル コマンドの実行、ファイル転送、安全なファイルの削除、ファイル管理、プロセスの終了、およびプロセスの列挙が含まれます。
エアドライ.V2
AIRDRY.V2は、HTTP、ファイルベース、SMB の 3 つの通信モードをサポートする AIRDRY バックドアの進化版です。 AIRDRY.V2 は、AIRDRY にある広範なコマンド リストをサポートしていません。代わりに、その機能は、メモリ内で直接実行されるダウンロードされたプラグインを介して拡張されます。 AIRDRY.V2 は、その構成を更新することもできます。
キュートループ
CUTELOOPは C++ で書かれたダウンローダーで、HTTPS 経由でペイロードを取得します。ダウンロードされたペイロードはメモリにマップされ、実行されます。 CUTELOOP は、ペイロード URL の復号化に使用されるコマンドライン引数を想定しています。
テクニカル指標
ホストおよびネットワークベースのインジケーター
マルウェアファミリー |
MD5 |
SHA256 |
ISOアタッチメント |
90adcfdaead2fda42b9353d44f7a8ceb |
8cc60b628bded497b11dbc04facc7b5d7160294cbe521764df1a9ccb219bba6b |
ISOアタッチメント |
6d1a88fefd03f20d4180414e199eb23a |
e03da0530a961a784fbba93154e9258776160e1394555d0752ac787f0182d3c0 |
トロイの木馬化された PuTTY ドロッパー |
8368bb5c714202b27d7c493c9c0306d7 |
1492fa04475b89484b5b0a02e6ba3e52544c264c294b57210404b96b65e63266 |
トロイの木馬化された PuTTY ドロッパー |
18c873c498f5b90025a3c33b17031223 |
cf22964951352c62d553b228cf4d2d9efe1ccb51729418c45dc48801d36f69b4 |
DAVESHELL用Themidaパックスポイト |
c650b716f9eb0bd6b92b0784719081cd |
aaad412aeb0f98c2c27bb817682f08673902a48b65213091534f96fe6f5494d9 |
DAVESHELL用Themidaパックスポイト |
4914bcbbe36dfa9d718d02f162de3da1 |
3ac82652cf969a890345db1862deff4ea8885fe72fb987904c0283a2d5e6aac4 |
タイプ |
価値 |
コメント |
IPv4 アドレス |
137.184.15[.]189 |
|
URL |
https://hurricanepub[.]com/include/include.php |
エアドライ.V2 C2 |
URL |
https://turnscor[.]com/wp-includes/contacts.php |
エアドライ.V2 C2 |
URL |
https://www.elite4print[.]com/support/support.asp |
エアドライ.V2 C2 |
ファイル |
C:ProgramDataPackageColorcolorcpl.exe |
DLL 検索順序ハイジャックに使用される Microsoft バイナリ |
ファイル |
C:ProgramDataPackageColorcolorui.dll |
DAVESHELL用Themidaパックスポイト |
スケジュールされたタスク |
タスク名: PackageColor |
持続メカニズム |
MITRE ATT&CK マッピング
ATT&CK戦術カテゴリ |
テクニック |
初期アクセス |
T1566.001: フィッシング: スピアフィッシングの添付ファイル T1566.003: フィッシング: サービス経由のスピアフィッシング |
実行 |
T1059.003: コマンドおよびスクリプト インタープリター: Windows コマンド シェル T1053.005: スケジュールされたタスク/ジョブ: スケジュールされたタスク |
持続性 |
T1574.001: ハイジャック実行フロー: DLL 検索順序ハイジャック T1053.005: スケジュールされたタスク/ジョブ: スケジュールされたタスク |
防御回避 |
T1574.001: ハイジャック実行フロー: DLL 検索順序ハイジャック T1055.001: プロセス インジェクション: ダイナミック リンク ライブラリ インジェクション T1218: システム バイナリ プロキシの実行 T1620: リフレクティブ コードの読み込み |
コマンドと制御 |
T1071.001: アプリケーション層プロトコル: Web プロトコル T1071.002: アプリケーション層プロトコル: ファイル転送プロトコル T1132.001: データ エンコーディング: 標準エンコーディング T1573.001: 暗号化されたチャネル: 対称暗号化 T1573.002: 暗号化されたチャネル: 非対称暗号化 |
参照: https://www.mandiant.com/resources/blog/dprk-whatsapp-phishing
Comments