Swarmerツール: Windowsレジストリのステルスな修正でEDRを回避して持続性を保つ
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Swarmerは、低権限のWindows永続化ユーティリティで、必須ユーザープロファイルハイブ(NTUSER.MAN)を作成し、オフラインレジストリAPIを介して編集します。従来のReg* Windows APIに依存しないため、標準的なレジストリ書き込みの振る舞いに調整されたEDRのテレメトリへの可視性を削減しながら、Runキーの永続性を植え付けることが可能です。この手法は管理者権限なしでログオン間を越えたスタートアップエントリを持ち越すための必須プロファイルの取り扱いを悪用しています。Swarmerは独立した実行ファイルまたはPowerShellモジュールとして利用可能で、ディスク上のアーティファクトを最小限に抑える方法で使用できます。
調査
レポートは、Swarmerのエンドツーエンドのフローを概説しています: 現在のHKCUハイブをエクスポートし、スタートアップ永続性を含むようにエクスポートされたデータを変更し、Offreg.dllルーチン(ORCreateHiveやORSetValueなど)を使用してハイブを再構築します。再構築されたハイブは、ログイン中に適用されるようユーザープロファイルパスにNTUSER.MANとして配置されます。実行は、ターゲットスタートアップ値と実行するペイロードの場所を定義するコマンドラインオプションを通じて制御されます。著者はWindows 10およびWindows 11でこの技術を検証しました。
緩和策
作成を監視する NTUSER.MAN が必須プロファイルが予期されないユーザーコンテキストで作成された場合に警告し、Offreg.dllが異常なプロセスで読み込まれたときに警告します。必須プロファイルに使用されるディレクトリを保護し、整合性をチェックし、正規のオフラインレジストリ操作をベースライン化して逸脱を際立たせます。ログオン時に発効する怪しいハイブの変更に対する検出を追加します。可能な限り、ユーザーが必須プロファイルのアーティファクトを作成または操作する能力を制限します。
対応
識別された場合、エンドポイントを隔離し、分析のためにNTUSER.MANハイブを取得し、注入されたキーエントリを列挙します。許可されていないスタートアップ値を削除し、永続性を排除するために既知の正常なユーザーハイブを復元します。副次的ペイロードまたは代替の永続パスが確立されていないことを確認するために、より広範なフォレンジックレビューを実行し、同じハイブ書き込みパターンについて艦隊全体を捜索します。低権限ユーザーが必須プロファイルを作成するのを防ぐために最小特権制御を強化します。
攻撃フロー
この部分はまだ更新しています。通知を受け取るためにサインアップしてください。
通知するシミュレーション実行
前提条件: テレメトリおよびベースラインの事前準備チェックが通過していること。
理由: このセクションは、検出ルールを作動させることを目的とした敵対者技術(TTP)の正確な実行を詳述しています。命令と記述は、特定されたTTPに直接反映され、検出ロジックが期待する正確なテレメトリを生成することを目指します。抽象的または無関連な例は誤診につながります。
-
攻撃の説明とコマンド:
攻撃者は、侵害されたホストで足がかりを得て、標準のレジストリハイブに触れずに(EDRフックを回避するために)ユーザーログオンを生き残る永続性を確立したいと考えています。この点で Swarmer ツールを使用して、攻撃者は以下を行います:- ターゲットユーザーのプロファイルディレクトリを特定します(
C:Usersvictim). - 悪意のあるハイブファイルを作成します(
NTUSER.MAN)ログオン時にバックドアペイロードを起動するRunキーを含む。 - WinAPIの高レベルコールをバイパスする低レベルのファイルI/Oを使用して、ファイルを直接被害者のプロファイルに書き込みます。
- 次に、 オフラインレジストリAPI
ORCreateHiveを呼び出して新しく作成したハイブをメモリにロードし、Runキーを登録し、最終的にORSaveHiveを呼び出して変更を保持します。
これらの動作は両方とも次のログを生成します:
- Sysmon イベントID 11 – ファイル作成(
NTUSER.MAN. - セキュリティイベントID 4688 – プロセス(
swarmer.exe)のコマンドラインにORCreateHive(または他のOR*フラグ)を含む。
- ターゲットユーザーのプロファイルディレクトリを特定します(
-
回帰テストスクリプト:
#-------------------------------------------------------------- # Swarmer式レジストリ永続性シミュレーション (PowerShell) #-------------------------------------------------------------- # 1. 被害者のプロファイルパスを定義します $victimProfile = "$env:SystemDriveUsersvictim" $ntUserManPath = Join-Path $victimProfile "NTUSER.MAN" # 2. 最小限のハイブファイルを作成します(バイナリプレースホルダー) # 実際の攻撃では、これは作成されたレジストリハイブになります。 $hiveBytes = [byte[]] (0..255) # ダミーデータ [IO.File]::WriteAllBytes($ntUserManPath, $hiveBytes) # 3. ヘルパー実行ファイルを介してオフラインレジストリAPIを呼び出します。 # swarmer_helper.exeはネイティブオフラインレジストリ機能をラッピングした # コンパイル済みバイナリであると仮定します。 $helper = "C:Toolsswarmer_helper.exe" $args = @( "ORCreateHive", "`"$ntUserManPath`"" "ORSetValue", "HKLMSoftwareMicrosoftWindowsCurrentVersionRunmyBackdoor", "`"C:Malwarebackdoor.exe`"" "ORSaveHive", "`"$ntUserManPath`"" ) & $helper $args #-------------------------------------------------------------- -
クリーンアップコマンド:
# 悪意のあるハイブを削除し、必要であればアンロードします Remove-Item -Path "$env:SystemDriveUsersvictimNTUSER.MAN" -Force # ヘルパーがメモリ内にハイブを残した場合、強制アンロードします(例) & "$env:ProgramFilesWindows Kits10binx64reg.exe" unload "HKUTempHive"
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. |