Kimsukyの高度な攻撃技術: JSONPing、Webexスプーフィング、新しいHttpSpyバリアント
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Kimsuky は、セキュリティソフトウェアや Webex 会議を偽装したソーシャルエンジニアリングページを使用して、マルチステージ HttpSpy RAT を配信しました。このキャンペーンは、JSONPing と呼ばれる JSONP ベースの感染チェックを導入し、ペイロードをインストーラー、ローダー、メインモジュールに分割しました。指標には、共有 RC4 キー、XAMPP 証明書、および以前のキャンペーンとのインフラの重複が含まれます。
調査
チームは偽のインストールページを分析し、ドロッパーのバイナリをキャプチャし、RC4 キーを抽出し、nos-setup.exe/astx-setup.exe から MemLoader.dll、engine.dat および cacheMon.dat を経て最終的な HttpSpy モジュールに至る三段階の実行チェーンを再構築しました。ネットワークトラフィックは、ローカルポートと C2 URL に対する GET リクエストを示しました。
緩和策
企業は疑わしいドメインや IP のブロック、未知のソースからのスクリプトファイルの実行を無効化するべきであり、regsvr32 とスケジュールされたタスクの作成を監視し、コードサイニングの検証を強制するべきです。クリックする前に Webex 会議リンクを検証し、TLS 検査を使用して JSONPing トラフィックを検出します。
対応策
識別されたバイナリ、レジストリの Run キー、スケジュールされたタスク、ネットワーク指標の存在を検出します。影響を受けたホストを隔離し、侵害されたコードサイニング証明書を取り消し、ペイロードおよび永続化メカニズムのフォレンジック分析を行います。
攻撃フロー
この部分はまだ更新中です。通知を受けるにはサインアップしてください。
Notify Me検出
可能性のある永続化ポイント [ASEPs – Software/NTUSER ハイブ] (registry_event 経由)
表示
非典型的なパスからのシステムプロセス実行 (process_creation 経由)
表示
疑わしい場所でのペイロード実行を行う regsvr32 (cmdline 経由)
表示
データエンコーディングおよび証明書操作に使用される Certutil (cmdline 経由)
表示
パブリックユーザープロファイルからの疑わしい実行 (process_creation 経由)
表示
Kimsuky 高度な攻撃技術を検出するための IOC (HashSha256): JSONPing、Webex スプーフィング、新しい HttpSpy バリアント
表示
Kimsuky 高度な攻撃技術を検出するための IOC (HashMd5): JSONPing、Webex スプーフィング、新しい HttpSpy バリアント Part 2
表示
Kimsuky 高度な攻撃技術を検出するための IOC (HashMd5): JSONPing、Webex スプーフィング、新しい HttpSpy バリアント Part 1
表示
Kimsuky 高度な攻撃技術を検出するための IOC (SourceIP): JSONPing、Webex スプーフィング、新しい HttpSpy バリアント
表示
Kimsuky 高度な攻撃技術を検出するための IOC (DestinationIP): JSONPing、Webex スプーフィング、新しい HttpSpy バリアント
表示
HttpSpy バリアント C&C 通信の検出 [Windows ネットワーク接続]
表示
悪意のある DLL 実行のための regsvr32 と PowerShell の疑わしい実行 [Windows プロセス作成]
表示
エグゼクティブサマリー
- テストケース ID: TC-20260529-A7Z3Q
- TTPs:
- T1005 (ローカルシステムからのデータ)
- T1010 (アプリケーション ウィンドウの検出)
- T1012 (レジストリのクエリ)
- T1027.009 (難読化されたファイルまたは情報: 組み込みペイロード)
- T1027.010 (難読化されたファイルまたは情報: バイナリパディング)
- T1027.013 (ツールからのインディケータの除去)
- T1036.004 (偽装: タスクまたはサービスの偽装)
- T1041 (コマンド & コントロールチャネルを介したデータ流出)
- T1053.005 (スケジュールされたタスク/ジョブ: スケジュールされたタスク)
- T1055.001 (プロセス注入: ダイナミックリンクライブラリ注入)
- T1057 (プロセス検出)
- T1059.003 (コマンドとスクリプトのインタープリタ: Windows コマンドシェル)
- T1059.007 (コマンドとスクリプトのインタープリタ: JavaScript)
- T1070.004 (ホスト上のインディケータの削除: ファイル削除)
- T1070.006 (ホスト上のインディケータの削除: レジストリキーの削除)
- T1070.009 (ホスト上のインディケータの削除: Windows イベントログのクリア)
- T1071.001 (アプリケーション層プロトコル: ウェブプロトコル)
- T1082 (システム情報の発見)
- T1083 (ファイルとディレクトリの発見)
- T1090 (プロキシ)
- T1113 (スクリーンキャプチャ)
- T1132.001 (データエンコーディング: 標準エンコーディング)
- T1134.002 (アクセストークン操作: トークンの作成と偽装)
- T1140 (難読化/デコードされたファイルまたは情報)
- T1204.002 (ユーザー実行: 悪意のあるファイル)
- T1497.001 (仮想化/サンドボックス回避: システムチェック)
- T1547.001 (ブートまたはログオンの自動起動実行: レジストリの実行キー/スタートアップフォルダー)
- T1566 (フィッシング)
- T1573.001 (暗号化されたチャネル: 対称暗号化)
- T1620 (リフレクティブコードローディング)
- 検出ルールの論理要約: PowerShell コマンドを検出します。これは
regsvr32.exeを隠ウィンドウで起動し、DLL をローディングします。C:ProgramDataディレクトリからです。 - 検出ルール言語/フォーマット: Sigma (YAML)
- ターゲットセキュリティ環境:
- OS: Windows 10 / Windows Server 2019 (プロセス作成イベント)
- ログ記録: Windows Sysmon (イベント ID 1) と Windows セキュリティイベントログ (イベント ID 4688)
- セキュリティスタック: Sigma ルールを取り込む SIEM(例:Azure Sentinel、Splunk、Elastic)と EDR カバレッジ(Microsoft Defender for Endpoint)を使用
- レジリエンススコア (1-5): 3
- 正当性: このルールは特定の PowerShell の起動パターンと
regsvr32.exe実行を厳密に結び付けており、説明された正確な技術に対して効果的です。しかし、攻撃者は (1) 代替のロードメカニズム(例:rundll32,PowerShell -EncodedCommand)、(2)regsvr32.exe名前の変更、あるいは (3)regsvr32を使用せずにリフレクティブラ賛大を通じて DLL を実行することで回避する可能性があります。したがって、中程度のレジリエンスです。 - 主な成果: このルールは、正確な PowerShell-regsvr32 コマンドが実行された場合に確実に発生します;
regsvr32.exePowerShell ラッパーなしでの正当な使用にはアラートがトリガーされません。 - 推奨事項: このルールを、追加のパターン(例:直接呼び出される
regsvr32.exeの検出、非定型パスからの DLL ロードの監視、エンコードされた PowerShell コマンドの検出)で補完して、レジリエンスを 4-5 に引き上げます。
シミュレーション環境と文脈
-
テストされる TTPs:
- T1055.001: プロセス注入 – ダイナミックリンクライブラリ注入(悪意のある DLL が
regsvr32.exe) - T1059.003: コマンドとスクリプトのインタープリタ – Windows コマンドシェル(PowerShell 使用で実行を隠蔽)
- T1027.009 / T1027.010 / T1027.013: 難読化されたファイルまたは情報 (DLL 名の難読化、隠しウィンドウ)
- T1055.001: プロセス注入 – ダイナミックリンクライブラリ注入(悪意のある DLL が
-
TTP 文脈と関連性:
- T1055.001: 攻撃者は、
regsvr32.exeを利用して、信頼されたプロセスに悪意のある DLL(mTSTCv8.mdxm)をロードし、アプリケーションホワイトリスティングを回避します。 - T1059.003: PowerShell は、ユーザーの認識とエンドポイントの UI 監視を回避するために
regsvr32コマンドを-windowstyle hiddenで起動します。 - 難読化 TTPs: 非標準の DLL 拡張子(
.mdxm)を使用し、隠しウィンドウがクラシックな回避技術であり、このルールが表面化しようとしているものです。
- T1055.001: 攻撃者は、
-
ターゲット環境:
- OS: Windows 10 Enterprise (ビルド 1909)
- ログ記録: デフォルトのルールセットで構成された Sysmon(プロセス作成、イメージロードをキャプチャ)、および有効な Windows セキュリティイベントログ 4688。
- セキュリティスタック: Azure Sentinel(ログ分析ワークスペース)が Sysmon/Windows ログを取り込み、Microsoft Defender for Endpoint がホストベースのアラートを提供。
テレメトリーとベースラインの事前検査
理論: 攻撃をシミュレートする前に、対象ホストが必要なログを生成するように構成されていること、これらのログが SIEM に取り込まれていること、また、検出ルールが正当な活動で起動しないことを確認する必要があります。
-
1. テレメトリー構成手順:
-
Sysmon(v13 以降)を次の構成スニペットを使用してインストールします(次にように保存
sysmon-config.xml):<Sysmon schemaversion="4.70"> <EventFiltering> <ProcessCreate onmatch="include"> <Image condition="is">regsvr32.exe</Image> </ProcessCreate> </EventFiltering> </Sysmon>実行:
sysmon -i -accepteula -c sysmon-config.xml -
「プロセス生成の監査」が有効になっていることを確認します(ポリシー:
コンピュータの構成 → Windows の設定 → セキュリティの設定 → 詳細な監査ポリシー設定 → システム監査ポリシー → 詳細なトラッキング → プロセス生成の監査– 成功に設定)。 -
イベントコレクターがイベント ID 4688(プロセス生成)と Sysmon イベント ID 1 を Log Analytics エージェント経由で Azure Sentinel に転送することを確認します。
-
-
2. 取り込みとベースラインの検証:
-
アクション(正当なテレメトリー): 正当な
regsvr32呼び出しを実行し not PowerShell または隠しウィンドウを関与させません(例: Microsoft DLL を登録します)。# Windows DLL の正当な登録(隠しウィンドウなし) regsvr32.exe /s C:WindowsSystem32shdocvw.dll -
検証クエリ(取り込み): Azure Sentinel(KQL)で、正当なイベントが取り込まれたが、 not ルールに一致しなかったことを確認します。
// 正当な regsvr32 実行の取り込みを検証 Event | where SourceSystem == "Security" and EventID == 4688 | where Process == "regsvr32.exe" | where CommandLine !contains "powershell.exe" | project TimeGenerated, Computer, Process, CommandLine, EventID結果セットには正当なイベントが含まれている必要があり、Sigma ルールのアラートは沈黙している必要があります。
-
シミュレーション実行
前提条件: テレメトリーとベースラインの事前検査が合格している必要があります。
理論: このセクションでは、検出ルールをトリガーするために設計された攻撃者技術 (TTP) の正確な実行を詳述します。コマンドと説明は、識別された TTP を直接反映し、検出ロジックで期待される正確なテレメトリーを生成することを目的としています。
-
攻撃シナリオとコマンド:
攻撃者はカスタム DLL を入手しました(mTSTCv8.mdxm)に、第二段階のペイロードのリフレクティブラーダーが含まれています。インタラクティブな実行を避けるため、攻撃者はregsvr32.exeを実行する PowerShell ワンライナーを作成し、/sサイレントフラグで実行しながら PowerShell コンソールを隠します(-WindowStyle Hidden)。DLL は、正当なアプリケーションデータと混ざるためにC:ProgramDataに配置されています。実行手順:- 悪意のある DLL を
C:ProgramDatamTSTCv8.mdxm. - にコピーします
regsvr32.exe /s C:ProgramDatamTSTCv8.mdxm. - を実行する隠された PowerShell を起動します
regsvr32.exe、これにより regsvr32 は自身のプロセス空間に DLL をロードします。これにより、信頼されたバイナリでコード実行が達成されます。
- 悪意のある DLL を
-
リグレッションテストスクリプト:
# ============================== # リグレッションテスト: PowerShell 経由の regsvr32(悪意のある DLL) # ============================== # 1. 悪意のある DLL を展開します(安全のために既知の無害な DLL でシミュレート) $dllPath = "C:ProgramDatamTSTCv8.mdxm" Copy-Item -Path "$env:SystemRootSystem32windows.storage.dll" -Destination $dllPath -Force # 2. Sigma ルールが探す PowerShell 隠し起動を実行します $psCommand = "powershell.exe -WindowStyle Hidden regsvr32.exe /s `"$dllPath`"" Start-Process -FilePath "powershell.exe" -ArgumentList "-WindowStyle Hidden", "regsvr32.exe", "/s", "`"$dllPath`"" -NoNewWindow # オプション: プロセスがログに表示されるのを待つための数秒 Start-Sleep -Seconds 5 # 3. テスト検証用にコンソールにマーカーイベントを生成します Write-Host "[*] PowerShell 経由で隠し起動された regsvr32 実行。" -
クリーンアップコマンド:
# シミュレートされた悪意のある DLL を削除します Remove-Item -Path "C:ProgramDatamTSTCv8.mdxm" -Force -ErrorAction SilentlyContinue # 残っている regsvr32.exe プロセスを閉じます(もしあれば) Get-Process -Name regsvr32 -ErrorAction SilentlyContinue | Stop-Process -Force Write-Host "[*] クリーンアップ完了。"