Detection rules › Sigma
New Module Module Added To IIS Server
Detects the addition of a new module to an IIS server.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Persistence | T1505.004 Server Software Component: IIS Components |
| Defense Impairment | T1685.001 Disable or Modify Tools: Disable or Modify Windows Event Log |
Event coverage
| Provider | Event | Title |
|---|---|---|
| IIS-Configuration | Event ID 29 | Changes to 'Configuration' at 'ConfigPath' have successfully been committed |
Rule body yaml
title: New Module Module Added To IIS Server
id: dd857d3e-0c6e-457b-9b48-e82ae7f86bd7
status: test
description: Detects the addition of a new module to an IIS server.
references:
- https://learn.microsoft.com/en-us/iis/manage/provisioning-and-managing-iis/configure-logging-in-iis
- https://www.microsoft.com/en-us/security/blog/2022/12/12/iis-modules-the-evolution-of-web-shells-and-how-to-detect-them/
- https://www.microsoft.com/en-us/security/blog/2022/07/26/malicious-iis-extensions-quietly-open-persistent-backdoors-into-servers/
- https://learn.microsoft.com/en-us/iis/get-started/introduction-to-iis/iis-modules-overview
author: frack113
date: 2024-10-06
tags:
- attack.persistence
- attack.defense-impairment
- attack.t1685.001
- attack.t1505.004
logsource:
product: windows
service: iis-configuration
detection:
selection:
EventID: 29
Configuration|contains: '/system.webServer/modules/add'
filter_main_builtin:
NewValue:
- 'AnonymousAuthenticationModule'
- 'CustomErrorModule'
- 'DefaultDocumentModule'
- 'DirectoryListingModule'
- 'FileCacheModule'
- 'HttpCacheModule'
- 'HttpLoggingModule'
- 'ProtocolSupportModule'
- 'RequestFilteringModule'
- 'StaticCompressionModule'
- 'StaticFileModule'
- 'TokenCacheModule'
- 'UriCacheModule'
filter_main_remove:
NewValue: ''
condition: selection and not 1 of filter_main_*
falsepositives:
- Legitimate administrator activity
level: medium
Stages and Predicates
Stage 0: condition
selection and not 1 of filter_main_*Stage 1: selection
selection:
EventID: 29
Configuration|contains: '/system.webServer/modules/add'
Stage 2: not filter_main_*
filter_main_builtin:
NewValue:
- 'AnonymousAuthenticationModule'
- 'CustomErrorModule'
- 'DefaultDocumentModule'
- 'DirectoryListingModule'
- 'FileCacheModule'
- 'HttpCacheModule'
- 'HttpLoggingModule'
- 'ProtocolSupportModule'
- 'RequestFilteringModule'
- 'StaticCompressionModule'
- 'StaticFileModule'
- 'TokenCacheModule'
- 'UriCacheModule'
filter_main_remove:
NewValue: ''
Exclusions
Top-level NOT(...) conjuncts: predicates this rule actively suppresses.
| Field | Kind | Excluded values |
|---|---|---|
NewValue | eq | AnonymousAuthenticationModule |
NewValue | eq | CustomErrorModule |
NewValue | eq | DefaultDocumentModule |
NewValue | eq | DirectoryListingModule |
NewValue | eq | FileCacheModule |
NewValue | eq | HttpCacheModule |
NewValue | eq | HttpLoggingModule |
NewValue | eq | ProtocolSupportModule |
NewValue | eq | RequestFilteringModule |
NewValue | eq | StaticCompressionModule |
NewValue | eq | StaticFileModule |
NewValue | eq | TokenCacheModule |
NewValue | eq | UriCacheModule |
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
Configuration | match |
|