Join our Newsletter — 33% off our NHI Course

How do you detect malicious IIS module installation?

Detect it by watching for changes to IIS configuration and for new or modified modules, handlers, or extension files. Correlate installation activity with the account used, the source path of the module, and unexpected web server behaviour. Suspicious indicators include modules placed in writable web directories, unusual post-install execution, and traffic changes that follow the modification.

What to look for first in IIS module installation activity

Start by treating the IIS configuration layer as the primary evidence source. Malicious module installation usually leaves a trail in applicationHost.config, web.config, IIS Manager changes, or file-system writes to module, handler, and extension paths. The useful question is not just whether a module exists, but whether it appeared without a normal deployment path, change ticket, or approved administrator action.

Correlate the change with the account that made it, the time it occurred, and the process that wrote the files. A module dropped by a low-trust account, a web process, or an unusual remote session is far more suspicious than the same change made by a known deployment identity during a maintenance window.

Module placement matters as much as module name. A DLL or extension stored in a writable web directory, staging folder, or other path that should not host executable server-side components is a strong indicator that the change was meant to persist rather than support normal administration.

How file and process clues reveal malicious intent

Installation behaviour becomes much more actionable when you join it to execution evidence. New or modified modules that are followed by unusual worker process behaviour, unexpected outbound traffic, odd child processes, or error patterns in the web application often indicate that the module is doing more than serving a legitimate function.

Watch for installation patterns that do not match the environment’s normal release process. For example, a module that appears outside a controlled package deployment, is named to resemble a standard component, or is accompanied by changes to handlers or extension mappings can be an attempt to intercept requests, alter content flow, or create a covert execution path.

For defenders who want a broader persistence view, Persistence Techniques Guide is useful because IIS module abuse often sits inside a wider pattern of software-based persistence, not an isolated web-only event.

Why IIS module abuse is easy to miss

Malicious module installation blends into routine platform administration because IIS is designed to be extensible. That makes change validation and baseline comparison more important than simple signature matching. If your monitoring only looks for known malware names, you can miss a custom DLL, a renamed file, or a module that uses legitimate IIS extension points to execute hostile logic.

The main failure mode is trusting the configuration layer without verifying the provenance of the change. Attackers exploit that gap by using write access to the web root, abusing a compromised deployment account, or modifying configuration files in a way that looks operational until request handling starts behaving differently.

If the web stack also uses application secrets or machine keys to protect state, a related IIS compromise can expand well beyond a module drop. In that case, ASP.NET machine key attacks 2025 is relevant because configuration-level abuse can become code execution or session tampering when cryptographic material is exposed or misused.

Risk and Threat Considerations

Malicious IIS module installation is risky because it creates server-side execution that sits in the request path. Once an attacker controls a module or handler, they can observe traffic, alter responses, run code inside the web process, or maintain access across restarts and normal application changes.

Failure mechanism: The attacker gains write access to IIS configuration or an executable module path, then registers or replaces a module so it loads automatically during request processing. That gives the attacker durable control over web server behaviour and can hide malicious logic inside normal site operations.

Impact: The result can include persistent web compromise, credential capture, request manipulation, web shell-like behaviour, data exposure, and a much larger blast radius if the server is trusted for downstream application or authentication flows.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK addresses the attack and risk surface, while CIS Controls v8 and NIST SP 800-53 Rev 5 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
MITRE ATT&CK T1505.004 — IIS Components Covers malicious IIS module and handler persistence on web servers.
Recommendation — Map suspicious IIS changes to T1505.004 and hunt for unexpected web-service persistence.
CIS Controls v8 CIS-12 — Network Infrastructure Management Supports monitoring and controlling changes to server and service configuration.
Recommendation — Track and review web-server configuration changes with documented change control.
NIST SP 800-53 Rev 5 CM-5 — Access Restrictions for Change Applies to restricting and reviewing who can modify IIS configuration and code paths.
SI-4 — System Monitoring Supports detecting anomalous module loads and unusual post-change behaviour.
AU-6 — Audit Record Review, Analysis, and Reporting Enables correlation of module changes with the account and source path involved.
Recommendation — Restrict who can change IIS modules and require approval for server-side execution changes. Monitor IIS configuration, module loads, and request behaviour for suspicious changes. Correlate IIS change events with account, path, and process telemetry during investigation.

Practitioner Guidance

What to verify: Confirm whether the module change came from a trusted deployment identity, a documented release, and a known source path. If any of those are missing, treat the event as suspicious until you can prove the change is legitimate.

Decision rule: If the module was written to a path that should not be writable by application users or if the change is followed by new worker process behaviour, prioritize containment and configuration review over cosmetic cleanup. If the same host also shows unexpected outbound connections or altered response patterns, assume the module may already be active.

What good looks like: Good detection combines file integrity, IIS configuration monitoring, and request-behaviour telemetry so you can distinguish an approved module rollout from a covert persistence attempt. The strongest signal is not a single file write, but a configuration change that lines up with an unusual account, an unexpected path, and new server-side behaviour.

Practitioner takeaway: Treat IIS module installation as a persistence and execution problem, not just a file-change problem, because the security value comes from proving who made the change, where the code lives, and whether the server started behaving differently afterward.