T1176 Software extensions

T1176 Software Extensions covers adversaries who keep access by adding browser or IDE extensions and plugins. This page shows how to detect it with open-source tooling and rehearse the response in a private cyber range.

On this page

How T1176 software extensions keep an attacker's foothold

T1176 Software Extensions is a technique in which an adversary installs an extension, plugin or add-on into software that users already trust, so its code runs inside that application and continues to run after restarts. It sits under the Persistence tactic (TA0003), where the adversary is trying to maintain its foothold on the system. For a SOC lead, the concern is that extensions execute with the privileges of the logged-in user and the trusted host application, so they can avoid the scrutiny that standalone binaries often receive from endpoint controls and analysts.

The technique has two sub-techniques. One covers add-ons loaded by web browsers, and the other covers plugins loaded by developer tooling such as code editors. Both are mapped across Linux, macOS and Windows. Detection content for this page targets ATT&CK v20.0, and the team should record that version in every rule, analytic and coverage report. Because MITRE can rename, deprecate or revoke techniques between releases, confirm the version each detection was written against before reusing it after an upgrade.

Start with an inventory of installed extensions on managed endpoints and compare it with an approved baseline. Then confirm which telemetry your EDR or Wazuh deployment captures for file creation and process activity inside the extension directories used by each browser and developer tool. Decide who approves new extension sources and how exceptions are recorded. Those three decisions, made before an incident, determine whether an unexpected extension is found in hours or only after an attacker has relied on it for weeks.

Which telemetry reveals software extension installs

This table maps each telemetry source relevant to T1176 Software Extensions to the signal it gives, the open-source collector that gathers it, and its coverage limits. Read it as a starting point for choosing collectors, then confirm coverage for each sub-technique against the ATT&CK v20.0 data components before building detections.

Telemetry sourceSignal for extension installsOpen-source collectorCoverage notes
Process Creation (DC0032)Package manager, browser or IDE plugin manager, or extension CLI invoked to add or enable an extensionSysmon-style Windows process logging, auditd execve records on Linux, Wazuh agent process monitoringRecords the invocation, not the extension contents. Confirm the event fields your collector captures.
Command Execution (DC0064)Command lines that install, enable or update extensions, including script and shell invocationsWazuh command monitoring, Velociraptor artifacts, auditd with command captureCommand line visibility depends on logging policy. Confirm whether arguments are retained in your environment.
File Creation (DC0039)New extension directories, unpacked plugin folders or new extension files in user and application profilesWazuh file integrity monitoring, Velociraptor file hunts, auditd file watch rulesWatch scope drives noise. Limit watches to known extension and profile paths.
File Modification (DC0061)Changed extension manifests, configuration files or enabled-state flags for existing extensionsWazuh file integrity monitoring with hash comparison, Velociraptor scheduled collectionManifests change during normal updates, so pair changes with a known update window or a package manager event.
Windows Registry Key Modification (DC0063)Registry entries that register or enable extension components on Windows hostsSysmon registry events, Wazuh Windows registry monitoringAdds context for some Windows sub-techniques. Confirm coverage against the ATT&CK v20.0 data components.
Application Log Content (DC0038)Application-level messages recording extension load, enable or failure eventsWazuh log collection, Security Onion log ingestionAdds context where the application logs extension activity. Logging levels vary by product, so confirm what each application emits.
Coverage check against ATT&CK v20.0Which data components the detection strategies for T1176 and its sub-techniques referenceEnterprise ATT&CK STIX bundle for version 20.0 in the attack-stix-data repositoryData component mappings can change between versions. Record the ATT&CK version your detections target.

Detection logic for extension installs on endpoints

Software extensions run with the trust of the application that loads them, so an unexpected install can persist quietly across restarts. The four detection ideas below work together: one watches where extensions land on disk, one compares installs against managed deployment channels, one flags loads from user-writable paths, and one catches installs driven by scripts. Tune each against your own baseline before treating an alert as an incident.

New unsigned extensions in profile paths

Watch File Creation events under browser profile directories and IDE plugin folders for new extension packages, especially ones without a valid signature or with a manifest that requests broad host or file permissions. Alert when a new extension appears on an endpoint that has no matching entry in the managed inventory, and record the creating process and user. Tune by excluding known package caches and updater staging folders, which create similar files. Expect false positives from developer tooling that sideloads extensions for testing and from browser profile sync, so confirm the source before escalating.

Installs outside managed channels

Compare extension installs against the approved deployment channel, such as the browser or IDE policy pushed by your endpoint management tool. An install that did not come through that channel is the core signal: it suggests a user or process added the extension manually or through a side path. Correlate the install with Process Creation events for the browser or editor and with Command Execution records for the installing process. Expect false positives from users who install approved extensions from a store before policy catches up, so require the extension to be absent from the approved list as well.

Plugin loads from user-writable directories

Alert when a browser, editor or application loads an extension or plugin from a directory that standard users can write to, such as a user home or temporary folder, instead of a system-wide install location. Use File Modification and Process Creation telemetry to identify the load and the write that preceded it. Tune the path list to your environment, since some developer frameworks legitimately load from user directories. Confirm with the owning team before disabling a plugin, because removing a required developer dependency can disrupt production builds.

Script-driven extension installs

Flag command-line activity that invokes a browser, IDE or package manager to install an extension, particularly when the parent process is a script interpreter, a scheduled task or an unfamiliar process. Command Execution telemetry with parent process context is the key input, and an install followed by a restart of the host application raises the priority. Expect false positives from configuration management, onboarding scripts and CI runners that install approved plugins, so maintain an allowlist of known automation accounts and parent processes.

How to confirm the detection fires before you trust it

This sequence checks that the T1176 Software extensions detections fire on the platforms in scope, that the alerts reach the SOC queue in a usable form, and that gaps are recorded before the rule is promoted. It runs in a private lab or cyber range so that benign and simulated extension installs can be tested without touching production hosts.

  1. Define the test matrix per platform

    The detection owner and a SOC analyst agree on a matrix that lists each platform in scope (Linux, macOS and Windows), the extension types that platform supports, and the benign and simulated extension installs to be run for each. The benign installs reflect approved change activity, such as a browser add-on or an approved editor plugin, and the simulated installs reflect the behaviors described in the technique and its sub-techniques. The matrix is complete when every row names a platform, an install type, an expected data component (for example Process Creation, Command Execution or File Creation) and an expected alert outcome.

  2. Prepare isolated test hosts and baselines

    The lab team builds clean test hosts for each platform in the range, forwards their telemetry to the same log pipeline used in production, and captures a baseline of existing extensions before any test runs. Hosts are kept off production networks and snapshotted so each test starts from a known state. The step is done when a baseline export exists for every host and a reviewer has confirmed that the telemetry sources arrive at the SIEM or Wazuh manager.

  3. Run controlled benign and simulated installs

    The test operator executes the planned benign and simulated installs in a timed, logged session and notes the exact start time, host and install type for each one. Simulated installs should be described in the test plan in general terms and handled by the detection engineer, not improvised on the day. The step is complete when every matrix row has a recorded run, and any run that did not execute as planned is marked for re-test.

  4. Confirm the alert reaches the SOC queue

    The SOC analyst checks whether each expected alert appears in the case management queue, is routed to the right analyst group and carries the host, user and extension name needed for triage. Benign runs should either be suppressed by an approved allowlist or produce a low-severity event with a clear reason. The step is done when each simulated run maps to a queued alert or a documented miss, and each benign run maps to a suppressed or low-severity outcome.

  5. Record time to alert and captured fields

    For every run, the analyst records the time between the install event and the alert being visible in the queue, and lists which fields were captured, such as the process name, parent process, file path, signer and user context. Missing fields are logged as gaps against the data component they depend on. The step produces a results table with one row per run, and a reviewer signs off that the timing and field coverage meet the thresholds the team set beforehand.

  6. Log misses and tune against the matrix

    Each simulated install that produced no alert, or produced an alert missing key fields, is logged with a root cause such as a missing log source, a rule condition that does not match the platform, or an upstream parsing error. The detection engineer fixes the rule or the pipeline and re-runs only the affected rows. The step is complete when every miss has either a fix and a passing re-test or a documented accepted risk owned by a named person.

  7. Retain the evidence and version the rule

    The team stores the matrix, baseline exports, run logs, queue screenshots and results table together, and records the ATT&CK version the detection targets so later releases can be checked against it. ATT&CK releases can rename or deprecate techniques, so the mapping must name its version. The step is done when the evidence package is filed with the detection rule, a retest date is set, and the rule owner has approved it for production.

Why extension detections miss in practice

The most common reason T1176 Software Extensions detections fail is that the extension install is not treated as a security event at all. Browsers and IDEs such as VS Code often update extensions silently in the background, so the file writes that occur during an update look identical to a malicious install on the file system. A rule that alerts on any new extension directory will fire constantly, and teams quickly learn to ignore it. Before tuning anything, confirm in your own environment whether each browser and IDE channel updates extensions automatically, which user accounts run those updates, and whether updates pass through a managed catalog or a vendor store. Those answers decide whether an update should be a baseline change or an alert.

Profile and extension locations also differ by operating system and by product, so a detection written for one path will silently miss the others. Chromium-based browsers, Firefox, and IDE extension folders each keep their data under per-user profile directories, and those paths vary between Linux, macOS and Windows and between stable and beta builds. Confirm the full list of extension and profile paths for every browser and IDE in use, including portable installs and roaming profiles on managed endpoints. Then confirm that your File Creation or File Modification telemetry actually covers each of those paths on each endpoint class, because coverage is often limited by audit policy or agent configuration.

The third gap is that file telemetry records that something was written but not what the extension does. A File Creation event can show a new file under an extension folder, but it will not show the manifest permissions, the requested host access or the scripts the extension runs, unless your pipeline collects and parses those contents. Decide whether you will collect manifest or package metadata, how you will hash or inventory extensions, and who reviews new permission grants. Managed installs add a further problem: policy-pushed extensions from an enterprise catalog generate the same events as an attacker-placed one, so alert fatigue grows unless approved extension identifiers are recorded in an allowlist that the detection can check against.

Mitigations that limit software extension installs

Software extension abuse depends on how easily new extensions reach a host or application. The four controls below narrow that path: they record what is installed, decide what may be installed, and funnel installs through channels someone can review. Each one maps to ATT&CK mitigations for T1176 Software Extensions, and each can be checked in your own environment.

Audit extension inventories

Audit (M1047) means recording extension activity and reviewing it on a schedule. For T1176, start with a current inventory of every browser add-on, IDE plug-in, office add-in and application extension on managed endpoints, including version, publisher and install path. Check that the inventory is collected from the endpoints directly and that a new entry raises an alert for review. Confirm that the records are kept long enough for an investigator to establish when an extension first appeared.

Allow-list approved extensions

Allow-listing means only extensions on a reviewed list can load. For T1176, each entry should name the extension, publisher, approved version or signature, and an owner who signs off on changes. Many browser, IDE and office platforms offer policy settings that block installs outside a set list, but confirm which settings your management tooling supports and pilot them on a small group first. Route blocked requests to a queue with a response time agreed by the owners, so business users do not stall and start working around the control.

Restrict installs to managed channels

Limit Software Installation narrows where extensions can come from. For T1176, that means approved stores, internal repositories or deployment tooling only, with direct installs from unknown sources disabled by policy. Check which channels your endpoint management can enforce, and whether users can still install from a local package file. Document the exception process, because an unmanaged install path left open will undo the other controls. Confirm the current mitigation identifier on its ATT&CK entry before citing it.

Pin the ATT&CK version

Mitigation mappings change between ATT&CK releases, and these pages use Enterprise ATT&CK 20.0. Before you cite a mitigation in a control matrix or audit file, open the T1176 entry in the 20.0 STIX bundle and confirm which mitigations it lists. Record the version in your evidence so an assessor can reproduce your mapping. Re-check after each release, because releases can rename, deprecate or revoke techniques.

Triage steps when an extension detection fires

When a T1176 Software Extensions detection fires, the first decision is whether the extension is approved. Check the detection against your software inventory, your browser or IDE extension allowlist, and your change records before anyone touches the host. Confirm with the owning team which extension ID, publisher and version are sanctioned for that user group. If the extension is on the approved list but the install came from an unexpected source, such as a sideloaded package or an unmanaged profile, treat that as a separate finding. Next, identify the user account, the host and the logged-on session so that the identity and endpoint owners can be engaged with the same facts. Record the detection's timestamp, the rule that fired and the ATT&CK version the mapping targets, so the analyst's notes stay tied to the exact detection logic.

Once the extension is confirmed as unapproved, collect its manifest and install context for analysis. Preserve the extension directory, its manifest file and the relevant profile or configuration entries from the endpoint, and capture the installing process and its parent from your Process Creation telemetry. Hash the collected files and record where they came from, so the chain of custody holds if the case moves to incident response or legal review. Do not open or execute the extension in a production browser or IDE to see what it does. Analysis belongs on an isolated analysis host. Then query other endpoints for the same extension ID, publisher and file hash. A single unapproved install often points to a pushed or shared deployment, and a clean search on one host does not prove the rest of the fleet is clean.

Decide on containment after you know the scope. Options include removing the extension on one host, disabling installation for the affected profile, or isolating the endpoint if the install is tied to suspicious process activity. Agree these steps with the identity owner, who can review sessions and tokens tied to the account, and with the endpoint owner, who executes removal and isolation. Write down who approves each action and when, and keep your forensic copy before any removal changes the evidence. For a fixed-scope engagement or a cyber range rehearsal, confirm these roles and approval paths in advance, because the cost of the rehearsal itself depends on how many teams must take part.

Rehearsing T1176 detection in a private cyber range

The Windows range should include a domain-joined workstation and a member server, each forwarding Sysmon and Windows Security events to the SIEM or Wazuh manager through agents. Extensions on Windows commonly arrive as browser add-ons, Office add-ins, shell extensions or service-related components, so the range should contain at least one profile for each category that your environment permits. Keep the lab on an isolated network segment with snapshots so every exercise starts from a known state.

  • Benign install inject: Have a test user install an approved extension from a sanctioned internal catalog. Expect a process creation event and a file creation event in the user profile, which establishes the baseline your analytics should learn to tolerate.
  • Simulated unapproved install inject: Stage an unsigned or unlisted extension package that the facilitator places under a user-writable path. Detection should fire on the file creation and on any registry key modification tied to the extension load.
  • SOC console check: Confirm the alert names the host, user, parent process and extension path, and that the analyst can pivot to the process tree within the console.
  • Response check: Verify that the playbook quarantines the extension, records the registry state before removal and notifies the application owner.
  • Evidence check: Confirm the Sysmon configuration in use is the one documented for the range, so results can be compared across rehearsals.

After each run, confirm that the alert logic was tested against the ATT&CK version your detection mappings target.

Questions SOC leads and detection engineers ask about T1176

How do I tell a managed extension push from an attacker install?

Compare the installation source, the publisher signature and the change record, because a managed push and an unauthorized install usually differ on all three. A managed deployment normally arrives through your endpoint management or browser policy channel, carries a signature from a publisher you have approved, and matches a change ticket. An attacker install often appears outside those channels, from a user profile path, with an unknown or missing signature and no matching change. Build an inventory of approved extensions and add-ins from your deployment tooling, then alert on any identifier that is absent from it. Confirm with each platform owner how their management tool records pushes, since log fields differ across Windows, macOS, Linux and browsers. Review alerts over a sample period before you enable blocking so you can tune known false positives.

Do Sigma rules cover browser extension install paths?

Public Sigma repositories include rules related to software extensions and add-ins, but coverage varies by platform and by rule maturity, so check each rule before relying on it. Start by searching the public Sigma repository for the technique ID and for file creation and registry modification rules that name extension directories or add-in keys. Treat each match as a starting point. Confirm that the log source it needs exists in your environment and that its field names match your SIEM or log pipeline. Gaps tend to appear for less common browsers and for Linux and macOS extension locations. Write local rules where the public set is thin, and record in your detection catalog which ATT&CK version and log source each rule targets.

How should we version T1176 detections against ATT&CK v20.0?

Tag every detection with the ATT&CK version it was written against, and record the technique and sub-technique IDs it maps to, so a later release can be compared without guessing. These pages use ATT&CK v20.0, which MITRE released on 2026-10-13 according to the attack-stix-data repository index. Releases can rename, deprecate or revoke techniques. ATT&CK v18 also moved detections into detection strategies and analytics with DET IDs, so mappings written against older versions may need rework. Keep a changelog for each detection, load the new STIX bundle for each release, and diff technique and data component references before you accept a new mapping. Review the ATT&CK updates page for each release to see what changed.

How often should T1176 detections be re-validated in production?

Re-validate after every change that affects the telemetry path, and on a fixed schedule that your change board approves. ATT&CK does not set a validation frequency, so base yours on how often your endpoints, browsers, Office suites and logging stack change. Common triggers include a browser or Office upgrade, a change to endpoint management policy, a new log forwarder, a SIEM schema change and any ATT&CK release that touches the mapping. Each validation should replay a known benign extension install and a known test install in your cyber range, confirm that the alert fires with the expected fields, and record the result with the date and detection version. Ask any provider for the schedule and the evidence format in writing before work starts.

Which telemetry sources matter most for detecting software extensions?

Three data components do most of the work for this technique, with a fourth for Windows add-ins.

  • Process Creation (DC0032) shows which process or installer started an extension or add-in change.
  • File Creation (DC0039) shows new extension files and manifests landing in user or system profile directories.
  • Command Execution (DC0064) shows command-line installs and scripted changes to extension settings.
  • Windows Registry Key Modification (DC0063) covers add-in registration on Windows.

Confirm which of these your endpoints actually emit before writing rules, because collection policy often omits file and command logging on user workstations. Map each source to the ATT&CK data component it satisfies so auditors can trace coverage.

Can our own team run T1176 detection work, or do we need a partner?

Your team can run this work if it already has log pipeline, SIEM rule and endpoint management skills, and a partner helps when those skills or hours are short. DeployOpen plans, implements, documents and supports self-hosted open-source platforms inside your own infrastructure, and it runs security testing and private cyber ranges. A fixed-scope engagement can cover rule build, validation in a range and handover, with ongoing validation available as a retainer. Costs fall into people time, tooling you already run and the range environment, with one-time build work separated from recurring tuning. Ask for scope, deliverables and timelines in writing before work starts, and confirm which platforms and log sources the scope includes.

What should a T1176 cyber range exercise include?

A useful exercise covers both the expected and the unexpected paths: a managed extension push, an unapproved install on a test endpoint and a sanctioned update that should not alert. Run each scenario against a range that mirrors your browsers, Office suites and operating systems, and record which log sources fired. Check that alerts carry the fields your triage runbook needs, such as host, user, extension identifier and installer. Include a logging failure case, such as a forwarder that stops, so you can confirm that a silent pipeline raises its own alert. Finish with a short review that updates the detection, the runbook and the validation record together. Illustrative only: a range can replay these paths in a few sessions, but the exact scope depends on the platforms you run.

How DeployOpen builds and rehearses T1176 detections

DeployOpen approaches T1176 Software extensions as a fixed-scope engagement: the detection logic, telemetry and response steps are agreed in writing before work starts. The detections are built on self-hosted open-source tooling inside the client's own environment and rehearsed in a private cyber range.

How we scope

  • Confirm which platforms are in scope for T1176 Software extensions, such as Linux, macOS and Windows hosts, and which sub-techniques apply.
  • Inventory the telemetry the client already collects for Process Creation, Command Execution and File Creation, and record any gaps.
  • Agree the ATT&CK version the detection mapping targets, so later releases do not silently change what is covered.

How we build

  • Write detection logic in words and as Sigma rules, then map it to the client's SIEM or Wazuh rule set.
  • Configure log collection and forwarding on the client's own infrastructure, including Security Onion or Zeek sources where they apply.
  • Document the mitigation mapping for Audit and Limit Software Installation, with the controls the client needs to confirm locally.

How we hand over

  • Deliver a written detection specification, data source map and known coverage gaps for T1176 Software extensions.
  • Run a rehearsal in a private cyber range that replays benign and adversary-style software extension activity, with results recorded.
  • Provide a response runbook and the evidence set that the client's internal or external assessors can review.

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer, covering rule tuning for T1176 Software extensions.
  • Review detection mappings when MITRE ATT&CK releases rename, deprecate or revoke techniques or sub-techniques.
  • Repeat cyber range rehearsals after environment changes, so detections are re-validated against current software and tooling.

Sources and further reading

Related

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.