Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事は、脅威アクターがローカル管理者アクセス権を持つ場合に、.NETアセンブリをグローバルアセンブリキャッシュ(GAC)で改ざんし、信頼された実行パスからコードを実行できる方法を説明します。MIGUIControls.dllのようなDLLを入れ替えることで、攻撃者は持続性を確立し、正当なプロセスの下で悪意のあるペイロードを引き起こすことができます。この方法は、GACの場所に書き込むための特権を必要とし、ネイティブイメージを削除してランタイムが変更されたアセンブリをロードするようにすることを含む場合があります。
調査
概念実証ユーティリティ(GAC-POC.exe)は、正当なDLLをコピーし、Mono.Cecilでメッセージボックスを表示するようにパッチを当て、変更されたバージョンをGACに書き戻すことでワークフローを示しています。観測可能なアクションには、GACへの書き込み操作、ngen.exeを使用したネイティブイメージの削除、更新されたアセンブリがロードされたときに発生する後続のプロセス生成活動が含まれます。
緩和
GACディレクトリの詳細なプロセス生成監査(イベントID4688)およびファイルシステム監査(イベントID4663)を有効にします。ngen.exeの疑わしい使用、mscorsvw.exeの実行、GACパスでの予期しないDLL書き込み活動にアラートを設定します。ローカル管理者アクセスの制限およびGACに格納されているアセンブリのコード署名検証または整合性チェックを強制することで、露出を減らします。
対応
GAC-POC.exeの実行、予期しないアセンブリの変更、ネイティブイメージの削除が検出された場合、ホストを隔離し、フォレンジックアーティファクトを保存し、既知の良好なベースラインからGACアセンブリを復元します。攻撃者が管理者権限を取得した方法と追加の持続性が確立されたかどうかを判断するために範囲を特定し続けます。
“graph TB %% クラス定義セクション classDef technique fill:#ffcc99 classDef process fill:#c2f0c2 classDef malware fill:#ffeb99 %% ノード定義 tech_valid_accounts[“<b>技術</b> – <b>T1078.003 有効なアカウント: ローカルアカウント</b><br/><b>説明</b>: 攻撃者は管理者を含むローカルアカウントの資格情報を取得して悪用し、不正なアクセスを獲得します。”] class tech_valid_accounts technique tech_hijack_exec[“<b>技術</b> – <b>T1574.014 実行フローのハイジャック: AppDomainManager</b><br/><b>説明</b>: 攻撃者はグローバルアセンブリキャッシュで.NET AppDomainManagerアセンブリを置換または改造し、.NETアプリケーションの実行フローをハイジャックします。”] class tech_hijack_exec technique tech_dll_injection[“<b>技術</b> – <b>T1055.001 ダイナミックリンクライブラリのインジェクション</b><br/><b>説明</b>: 攻撃者は信頼されたプロセスに悪意のあるDLLを注入して、そのプロセスのコンテキストでコードを実行します。”] class tech_dll_injection technique process_task_sched[“<b>プロセス</b> – タスクスケジューラーMMCスナップイン<br/><b>役割</b>: タスクをスケジュールするために使用される信頼されたシステムコンポーネントです。”] class process_task_sched process malicious_dll[“<b>マルウェア</b> – 悪意のあるDLL(例:ペイロード)<br/><b>目的</b>: インジェクション後に悪意のあるアクションを実行します。”] class malicious_dll malware %% 攻撃フローを示す接続 tech_valid_accounts u002du002d>|enables| tech_hijack_exec tech_hijack_exec u002du002d>|leads to| tech_dll_injection tech_dll_injection u002du002d>|uses| process_task_sched process_task_sched u002du002d>|loads| malicious_dll “
攻撃フロー
シミュレーションの実行
前提条件: テレメトリとベースラインの準備段階の確認が完了していること。
-
攻撃のストーリーとコマンド:
攻撃者は、悪意のあるアセンブリ(
GAC‑PoC.exe)を準備しており、グローバルアセンブリキャッシュに配置されると、一致する強い名前を解決する任意の.NETプロセスによってロードされます。即時実行をトリガーし、検出ルールが正確なコマンドラインを確認できるようにするため、攻撃者はアセンブリを直接実行し、さらにngen.exeを呼び出して悪意のあるDLLを事前コンパイルし、GACハイジャックにおけるステルス性を向上させる一般的なステップを実行します。これらのアクションは、監視対象の文字列を含む特有の4688イベントを生成します。- 悪意のあるアセンブリを書き込み可能なディレクトリにコピーします (例:
C:Temp). - 概念実証のバイナリを実行し、ハイジャックを実証します。 to demonstrate the hijack.
- Run
ngen.exe悪意のあるアセンブリに対して GAC配置後によく見られるネイティブイメージ生成ステップをシミュレートします。
- 悪意のあるアセンブリを書き込み可能なディレクトリにコピーします (例:
-
回帰テストスクリプト:
# ------------------------------------------------- # GACハイジャック検出検証スクリプト # ------------------------------------------------- # 前提条件: テストアカウントがローカル管理者権限を持つことを確認 # し、プレフライトステップでWindows監査ポリシーが有効 # になっていることを確認 # ------------------------------------------------- # 1. 悪意のある実行可能ファイルをデプロイ(シミュレーション) $tempDir = "C:Temp" if (-not (Test-Path $tempDir)) { New-Item -Path $tempDir -ItemType Directory | Out-Null } $gacPoCPath = Join-Path $tempDir "GAC-PoC.exe" # ペイロードをシミュレート – ログに書き込む小さな実行可能ファイルを作成 # 実際のテストでは本物のファイルをコピーします Write-Output "偽ペイロードのプレースホルダー" | Out-File "$gacPoCPath.txt" # 実演のために、cmd /c echo(コマンドラインにもファイル名が表示されます)を呼び出します & cmd.exe /c "echo GAC-PoCシミュレーション実行中 > NUL" # 2. GAC-PoC.exeを直接実行 Write-Host "[*] GAC-PoC.exeを実行中" Start-Process -FilePath $gacPoCPath -WindowStyle Hidden -PassThru | Out-Null # 3. 同じバイナリに対してngen.exeを呼び出す $ngenPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319ngen.exe" if (Test-Path $ngenPath) { Write-Host "[*] GAC-PoC.exeに対してngen.exeを実行中" & $ngenPath install $gacPoCPath } else { Write-Warning "ngen.exeがこのホスト上にありません – ステップをスキップしています。" } # 4. アナリスト用に完了をログ Write-Host "[+] シミュレーション完了。SIEMでイベントID 4688アラートを確認。" -
クリーンアップコマンド:
# ------------------------------------------------- # GACハイジャック検証後のクリーンアップ # ------------------------------------------------- $tempDir = "C:Temp" $gacPoCPath = Join-Path $tempDir "GAC-PoC.exe" if (Test-Path $gacPoCPath) { Remove-Item -Path $gacPoCPath -Force Write-Host "[*] GAC-PoC.exeを削除しました" } # 生成されたネイティブイメージ(もしあれば)を削除します。 $ngenPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319ngen.exe" if (Test-Path $ngenPath) { & $ngenPath uninstall $gacPoCPath 2>$null Write-Host "[*] ネイティブイメージをアンインストール(もし存在した場合)。" } # 空の場合は一時フォルダをオプションで削除 if ((Get-ChildItem $tempDir).Count -eq 0) { Remove-Item -Path $tempDir -Force Write-Host "[*] 一時ディレクトリ$tempDirを削除しました" } Write-Host "[+] クリーンアップ完了。"
SOC PrimeのDetection as Codeプラットフォームに参加し ビジネスに最も関連性のある脅威に対する可視性を向上させましょう。開始して即座に価値をもたらすためには、今すぐSOC Primeの専門家とのミーティングを予約してください。
Cookie Settings
You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.
| Name | Descripiton |
|---|---|
| PHPSESSID | Preserves user session state across page requests. Cookie generated by applications based on the PHP language. This is a general purpose identifier used to maintain user session variables. It is normally a random generated number, how it is used can be specific to the site, but a good example is maintaining a logged-in status for a user between pages. |
| sp_i | Used to store information about authenticated User. |
| sp_r | Used to store information about authenticated User. |
| sp_a | Used to store information about authenticated User. |
All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.
| Name | Descripiton |
|---|---|
| tuuid | Collects anonymous data related to the user's visits to the website, such as the number of visits, average time spent on the website and what pages have been loaded. |
| tuuid_last_update | Collects anonymous data related to the user's visits to the website, such as the number of visits, average time spent on the website and what pages have been loaded. |
| um | Collects anonymous data related to the user's visits to the website, such as the number of visits, average time spent on the website and what pages have been loaded. |
| umeh | Collects anonymous data related to the user's visits to the website, such as the number of visits, average time spent on the website and what pages have been loaded. |
| na_sc_x | Used by the social sharing platform AddThis to keep a record of parts of the site that has been visited in order to recommend other parts of the site. |
| APID | Collects anonymous data related to the user's visits to the website. |
| IDSYNC | Collects anonymous data related to the user's visits to the website. |
| _cc_aud | Collects anonymous statistical data related to the user's website visits, such as the number of visits, average time spent on the website and what pages have been loaded. The purpose is to segment the website's users according to factors such as demographics and geographical location, in order to enable media and marketing agencies to structure and understand their target groups to enable customised online advertising. |
| _cc_cc | Collects anonymous statistical data related to the user's website visits, such as the number of visits, average time spent on the website and what pages have been loaded. The purpose is to segment the website's users according to factors such as demographics and geographical location, in order to enable media and marketing agencies to structure and understand their target groups to enable customised online advertising. |
| _cc_dc | Collects anonymous statistical data related to the user's website visits, such as the number of visits, average time spent on the website and what pages have been loaded. The purpose is to segment the website's users according to factors such as demographics and geographical location, in order to enable media and marketing agencies to structure and understand their target groups to enable customised online advertising. |
| _cc_id | Collects anonymous statistical data related to the user's website visits, such as the number of visits, average time spent on the website and what pages have been loaded. The purpose is to segment the website's users according to factors such as demographics and geographical location, in order to enable media and marketing agencies to structure and understand their target groups to enable customised online advertising. |
| dpm | Via a unique ID that is used for semantic content analysis, the user's navigation on the website is registered and linked to offline data from surveys and similar registrations to display targeted ads. |
| acs | Collects anonymous data related to the user's visits to the website, such as the number of visits, average time spent on the website and what pages have been loaded, with the purpose of displaying targeted ads. |
| clid | Collects anonymous data related to the user's visits to the website, such as the number of visits, average time spent on the website and what pages have been loaded, with the purpose of displaying targeted ads. |
| KRTBCOOKIE_# | Registers a unique ID that identifies the user's device during return visits across websites that use the same ad network. The ID is used to allow targeted ads. |
| PUBMDCID | Registers a unique ID that identifies the user's device during return visits across websites that use the same ad network. The ID is used to allow targeted ads. |
| PugT | Registers a unique ID that identifies the user's device during return visits across websites that use the same ad network. The ID is used to allow targeted ads. |
| ssi | Registers a unique ID that identifies a returning user's device. The ID is used for targeted ads. |
| _tmid | Registers a unique ID that identifies the user's device upon return visits. The ID is used to target ads in video clips. |
| wam-sync | Used by the advertising platform Weborama to determine the visitor's interests based on pages visits, content clicked and other actions on the website. |
| wui | Used by the advertising platform Weborama to determine the visitor's interests based on pages visits, content clicked and other actions on the website. |
| AFFICHE_W | Used by the advertising platform Weborama to determine the visitor's interests based on pages visits, content clicked and other actions on the website. |
| B | Collects anonymous data related to the user's website visits, such as the number of visits, average time spent on the website and what pages have been loaded. The registered data is used to categorise the users' interest and demographical profiles with the purpose of customising the website content depending on the visitor. |
| 1P_JAR | These cookies are used to gather website statistics, and track conversion rates. |
| APISID | Google set a number of cookies on any page that includes a Google reCAPTCHA. While we have no control over the cookies set by Google, they appear to include a mixture of pieces of information to measure the number and behaviour of Google reCAPTCHA users. |
| HSID | Google set a number of cookies on any page that includes a Google reCAPTCHA. While we have no control over the cookies set by Google, they appear to include a mixture of pieces of information to measure the number and behaviour of Google reCAPTCHA users. |
| NID | Google set a number of cookies on any page that includes a Google reCAPTCHA. While we have no control over the cookies set by Google, they appear to include a mixture of pieces of information to measure the number and behaviour of Google reCAPTCHA users. |
| SAPISID | Google set a number of cookies on any page that includes a Google reCAPTCHA. While we have no control over the cookies set by Google, they appear to include a mixture of pieces of information to measure the number and behaviour of Google reCAPTCHA users. |
| SID | Google set a number of cookies on any page that includes a Google reCAPTCHA. While we have no control over the cookies set by Google, they appear to include a mixture of pieces of information to measure the number and behaviour of Google reCAPTCHA users. |
| SIDCC | Security cookie to protect users data from unauthorised access. |
| SSID | Google set a number of cookies on any page that includes a Google reCAPTCHA. While we have no control over the cookies set by Google, they appear to include a mixture of pieces of information to measure the number and behaviour of Google reCAPTCHA users. |
| __utmx | This cookie is associated with Google Website Optimizer, a tool designed to help site owners improve their wbesites. It is used to distinguish between two varaitions a webpage that might be shown to a visitor as part of an A/B split test. This helps site owners to detemine which version of a page performs better, and therefore helps to improve the website. |
| __utmxx | This cookie is associated with Google Website Optimizer, a tool designed to help site owners improve their wbesites. It is used to distinguish between two varaitions a webpage that might be shown to a visitor as part of an A/B split test. This helps site owners to detemine which version of a page performs better, and therefore helps to improve the website. |
If you do not allow these cookies then some or all of these services may not function properly.
| Name | Descripiton |
|---|---|
| _hjid | Hotjar cookie. This cookie is set when the customer first lands on a page with the Hotjar script. It is used to persist the random user ID, unique to that site on the browser. This ensures that behavior in subsequent visits to the same site will be attributed to the same user ID. |
| _hjIncludedInSample | This cookie is associated with web analytics functionality and services from Hot Jar, a Malta based company. It uniquely identifies a visitor during a single browser session and indicates they are included in an audience sample. |
| intercom-id-[xxx] | This cookie is used by Intercom as a session so that users can continue a chat as they move through the site. |
| intercom-session-[xxx] | Used to keeping track of sessions and remember logins and conversations. |
| demdex | Via a unique ID that is used for semantic content analysis, the user's navigation on the website is registered and linked to offline data from surveys and similar registrations to display targeted ads. |
| CookieConsent | Stores the user's cookie consent state for the current domain. |
| __cfduid | Used by the content network, Cloudflare, to identify trusted web traffic. |
| ss | These cookies enable the website to provide enhanced functionality and
personalisation . They may be set by us or by third party providers whose
services we have added to our pages. These services may include the Live Chat facility, Contact Us form(s), the Product Quotation forms and submission process, and the Email Newsletter sign up functionality . |
They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.
| Name | Descripiton |
|---|---|
| _ga | This cookie name is asssociated with Google Universal Analytics - which is a significant update to Google's more commonly used analytics service. This cookie is used to distinguish unique users by assigning a randomly generated number as a client identifier. It is included in each page. Registers a unique ID that is used to generate statistical data on how the visitor uses the website. request in a site and used to calculate visitor, session and campaign data for the sites analytics reports. By default it is set to expire after 2 years, although this is customisable by website owners. |
| _gat | Used by Google Analytics to throttle request rate. This cookie name is associated with Google Universal Analytics, according to documentation it is used to throttle the request rate - limiting the collection of data on high traffic sites. It expires after 10 minutes. |
| _gid | This cookie name is asssociated with Google Universal Analytics. This appears to be a new cookie and as of Spring 2017 no information is available from Google. It appears to store and update a unique value for each page visited. Registers a unique ID that is used to generate statistical data on how the visitor uses the website. |
| IDE | Used by Google DoubleClick to register and report the website user's actions after viewing or clicking one of the advertiser's ads with the purpose of measuring the efficacy of an ad and to present targeted ads to the user. |
| r/collect | Used by Google DoubleClick to register and report the website user's actions after viewing or clicking one of the advertiser's ads with the purpose of measuring the efficacy of an ad and to present targeted ads to the user. |
| test_cookie | Used to check if the user's browser supports cookies. |
| collect | Used to send data to Google Analytics about the visitor's device and behaviour. Tracks the visitor across devices and marketing channels. |
| ads/user-lists/# | These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. |
| c | Registers anonymised user data, such as IP address, geographical location, visited websites, and what ads the user has clicked, with the purpose of optimising ad display based on the user's movement on websites that use the same ad network. |
| khaos | Registers anonymised user data, such as IP address, geographical location, visited websites, and what ads the user has clicked, with the purpose of optimising ad display based on the user's movement on websites that use the same ad network. |
| put_# | Registers anonymised user data, such as IP address, geographical location, visited websites, and what ads the user has clicked, with the purpose of optimising ad display based on the user's movement on websites that use the same ad network. |
| rpb | Registers anonymised user data, such as IP address, geographical location, visited websites, and what ads the user has clicked, with the purpose of optimising ad display based on the user's movement on websites that use the same ad network. |
| rpx | Registers anonymised user data, such as IP address, geographical location, visited websites, and what ads the user has clicked, with the purpose of optimising ad display based on the user's movement on websites that use the same ad network. |
| tap.php | Registers anonymised user data, such as IP address, geographical location, visited websites, and what ads the user has clicked, with the purpose of optimising ad display based on the user's movement on websites that use the same ad network. |