Attack of the Extensions - #2832
Open
carlospolop wants to merge 1 commit into
Open
Conversation
Collaborator
Author
🔗 Additional ContextOriginal Blog Post: https://specterops.io/blog/2026/08/13/chromium-extension-c2-persistence Content Categories: Based on the analysis, this content was categorized under "Pentesting Web > Browser Extension Pentesting Methodology > Forced Extension Load Preferences; cross-reference from Windows Hardening > Windows Local Privilege Escalation/Post-Exploitation and Mythic". Repository Maintenance:
Review Notes:
Bot Version: HackTricks News Bot v1.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 Automated Content Update
This PR was automatically generated by the HackTricks News Bot based on a technical blog post.
📝 Source Information
🎯 Content Summary
Overview and prerequisites
The post presents a Windows post-exploitation technique for converting Chrome or Edge into a persistent Mythic command-and-control agent. The proof-of-concept SilentChrome-BOF modifies Chromium profile state so an unpacked extension is accepted on the next browser launch without requiring the user to visit
chrome://extensionsand select Load unpacked. The installed extensio...🔧 Technical Details
Silent Chromium extension persistence: After obtaining same-user local execution and profile write access, an attacker can insert an unpacked extension into
extensions.settings.<extension_id>, setextensions.ui.developer_mode = true, and calculate the associated legacy HMACs using Chromium's hard-coded seed, the user's trimmed SID, the exact preference path, and the compact serialized value. The attacker must also recalculateprotection.super_mac. On Chromium versions using encrypted split-HMACs, deleting only the malicious extension's encrypted member fails; deleting the completeprotection.macs.extensions.settings_encrypted_hashdictionary while preserving valid legacy MACs causes Chromium to accept the state through its fallback path and regenerate the encrypted dictionary.Stable extension IDs and ID-only allowlist bypass: Chromium derives an extension ID by Base64-decoding the...
🤖 Agent Actions
Plan:
The repository-mapping step is in progress. I’ll first identify existing browser-extension, Chromium credential, persistence, native-messaging, IWA, and Mythic coverage, then inspect the strongest candidate pages before choosing any edit.
The exact suggested topic already has a dedicated page, so I’ll now determine whether it is pre-existing, complete, and already cited. I’ll compare it with the section index, permissions/API guidance, forensic artifact guidance, macOS Chromium abuse, and Mythic documentation—six files total—before deciding whether changes are warranted.
The batched inspection command hit a quoting error before execution. I’m retrying the same read-only comparison with safer command quoting; no repository state was changed.
The shell is POSIX
shrather than Bash, so the array syntax was rejected. I’m retrying with a portable loop and keeping the inspection scope unchanged.The dedicated page covers the older MAC-forgery technique but not the newer encrypted split-HMAC fallback, SID-bound calculations, dual Developer Mode MACs, native-host/IWA sidecars, or concrete telemetry. I’ll inspect the remaining candidate pages through headings and focused excerpts, plus all links to this page, to confirm that the extension page is the single authoritative location and avoid duplicating content elsewhere.
The focused scan confirms the target page is already linked from both the browser-extension methodology and the book summary. I’ll finish the required file review with narrow line ranges from the four remaining pages, especially existing native-messaging guidance and Mythic’s current scope, then move to source verification.
The methodology already documents generic native messaging, and the forensics page only catalogs profile artifacts. I’ll now read the complete macOS Chromium-abuse and Mythic pages separately; their small scope will clarify whether either should receive a link or whether doing so would violate the single-file placement rule.
Repository review is complete: the browser-extension page is the correct single source of truth; the generic methodology already covers native messaging, the forensic page only inventories artifacts, the macOS page is platform-specific, and Mythic is framework-level documentation. I’ll now verify the new Chromium behavior and tool syntax against the author’s repositories, Chromium source, and official Chrome documentation before editing only the dedicated Windows forced-load page.
Brave search is rate-limited (HTTP 429), so I’m switching to the available Google search endpoint for the same primary-source queries. I’ll ignore any banned-domain results and use only the author’s repositories, Chromium source, and official Chrome documentation.
Both search providers are unavailable (Brave 429; Google key exhausted). Because the exact primary URLs are known from the supplied article, I’ll fetch those pages directly with
curland inspect only relevant markers; this avoids relying on search snippets or forbidden sources.Primary-source verification confirms the command syntax, profile targets, per-user native-host keys, Ditto’s browser/IWA/native sidecar model, and Chromium’s coexistence of legacy and encrypted split hashes. I’ll inspect the exact current line structure and the fallback branch one more time, then patch the existing page with concise version-aware additions and append references [5+] without altering other pages.
The edit plan is finalized:
super_macsequence.Only the existing forced-load page will be modified.
The page has been updated. I’m now reviewing the diff for citation coverage, Markdown correctness, forbidden-domain leakage, accidental duplication, long new code blocks, and unintended edits before running repository checks.
The diff is clean and touches one file only. The review found a few attribution-placement improvements (citations should introduce whole derived lists rather than appear only on their final items), plus an opportunity to link Ditto back to the existing Mythic page without duplicating content. I’ll make those small refinements, then validate all new reference URLs and run final checks.
The citation placement and internal Mythic link are refined. Final validation will now check: URL reachability, citation/reference number consistency, internal-link existence, forbidden domains, duplicate material, whitespace errors, and an
mdbook buildif the binary is available.Updated:
src/pentesting-web/browser-extension-pentesting-methodology/forced-extension-load-preferences-mac-forgery-windows.mdAdded:
Validation passed:
git diff --checkmdbook buildskipped becausemdbookis unavailable.This PR was automatically created by the HackTricks Feed Bot. Please review the changes carefully before merging.