PowerShell Script with Log Clear Capabilities
Identifies PowerShell script block content that clears Windows event logs using Clear-EventLog, Remove-EventLog, or EventLogSession/EventLog Clear methods. Attackers clear local logs to evade detection and destroy forensic evidence.
Rule type: query
Rule indices:
- winlogbeat-*
- logs-windows.powershell*
Rule Severity: low
Risk Score: 21
Runs every: 60m
Searches indices from: now-119m
Maximum alerts per execution: 100
References:
- https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.eventlog.clear
- https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.eventing.reader.eventlogsession.clearlog
Tags:
- Domain: Endpoint
- OS: Windows
- Use Case: Threat Detection
- Tactic: Defense Evasion
- Data Source: PowerShell Logs
- Rule Type: BBR
- Resources: Investigation Guide
Version: 210
Rule authors:
- Elastic
Rule license: Elastic License v2
PowerShell Script Block Logging must be enabled to generate the events used by this rule (e.g., 4104). Setup instructions: https://ela.st/powershell-logging-setup
Disclaimer: This guide was created by humans with the assistance of generative AI. While its contents have been manually curated to include the most valuable information, always validate assumptions and adjust procedures to match your internal runbooks and incident triage and response policies.
This alert identifies PowerShell script block content associated with clearing Windows event logs through cmdlets or .NET methods. Clearing local logs can reduce forensic visibility and interrupt security monitoring. Because script block logging records executed content, confirm whether log clearing occurred and identify the broader activity that led to this action.
user.name,user.domain,user.id: Account execution context for correlation, prioritization, and scoping.host.name,host.id: Host execution context for correlation, prioritization, and scoping.powershell.file.script_block_text: Script block content that matched the detection logic.powershell.file.script_block_id,powershell.sequence,powershell.total: Script block metadata to pivot to other fragments or reconstruct full script content when split across multiple events.file.path,file.directory,file.name: File-origin context when the script block is sourced from an on-disk file.powershell.file.script_block_length: Script block length (size) context.
Analyze
powershell.file.script_block_textto determine intent and scope:- Identify the clearing technique used (for example,
Clear-EventLog,Remove-EventLog,EventLogSession.ClearLog, orDiagnostics.EventLog.Clear). - Extract referenced log names/channels and any values that indicate breadth (single log vs multiple logs, loops, or log enumeration).
- Note any remote targets, session objects, or hostnames that suggest log clearing on other systems.
- If
Remove-EventLogis used, treat it as higher impact and determine whether it targets built-in logs or custom logs/event sources.
- Identify the clearing technique used (for example,
Reconstruct full content when the script block is split:
- Pivot on
powershell.file.script_block_idto collect all fragments. - Order by
powershell.sequenceand confirm completeness usingpowershell.total. - Use
powershell.file.script_block_lengthto identify unusually large content that may include additional actions beyond log clearing.
- Pivot on
Establish execution context and likely origin:
- Review
user.name,user.domain, anduser.idto determine whether the account is expected to perform log maintenance and whether the timing is consistent with approved activity. - Review
host.nameandhost.idto determine whether the affected system is high value (for example, servers or shared systems) and to scope other alerts on the same host. - If
file.path,file.directory, orfile.nameare present, capture the script location/name and evaluate whether it aligns with known administrative scripts or automation. - If file context is absent, treat the activity as inline or dynamically generated and prioritize identifying how PowerShell was launched (interactive session, scheduled execution, service, or parent process) using adjacent endpoint telemetry.
- Review
Confirm whether logs were actually cleared and identify what was impacted:
- Review available Windows logging for records indicating event logs were cleared around
@timestamp, and document which logs were affected. - Look for gaps in event coverage or abrupt changes in event volume beginning at or shortly after the alert time on the same
host.id.
- Review available Windows logging for records indicating event logs were cleared around
Correlate with adjacent activity around
@timestamp(as available in your environment):- Process execution: identify the PowerShell host process, its parent process, and any related automation that triggered the script.
- Authentication and remote access: identify new or unusual logons, session establishment, or privilege changes leading up to the event.
- Network activity: review connections consistent with remote administration or lateral movement preceding the log clearing.
- Additional PowerShell activity: review other script block events for the same
host.idanduser.idbefore and after the alert to identify precursor actions and follow-on cleanup.
Scope across the environment:
- Search for the same or similar
powershell.file.script_block_textpatterns on other hosts to determine whether this is isolated behavior, shared tooling, or coordinated activity. - Pivot on
user.idto identify whether the same account performed similar activity on multiple hosts within a short time window.
- Search for the same or similar
- Authorized administrators may clear logs during troubleshooting, controlled testing, or specific maintenance procedures. Validate against change records, maintenance windows, and documented responsibilities for the account in
user.name. - Endpoint provisioning, imaging, or environment resets (for example, labs or short-lived systems) can include log clearing as part of baseline preparation. Validate whether
host.nameis part of an expected rebuild or reset workflow. - Operational scripts may clear specific logs to address performance or retention constraints. Benign activity is more likely when
file.pathandfile.nameare from a controlled script repository and no additional suspicious activity is present for the sameuser.idandhost.id.
If activity is unauthorized or suspicious:
- Treat this as potential evidence destruction. Preserve remaining forensic data and collect relevant telemetry from the affected host.
- Preserve the full script content by capturing all fragments linked by
powershell.file.script_block_id(usepowershell.sequenceandpowershell.totalfor ordering) and retain it with the case record. - Contain the involved account and host according to incident response procedures (for example, restrict access, reset credentials, and isolate the endpoint if required).
- Investigate for additional post-compromise activity on the same
host.idand by the sameuser.id, prioritizing persistence, credential access, and lateral movement around the alert time. - Assess logging resilience: verify critical logs are centrally forwarded and retained, and review access controls that allow event log clearing to ensure they are limited to necessary administrative roles.
If activity is confirmed benign:
- Document the authorized workflow (who, what, where, and when), including expected
host.name,user.name, and any associated script identifiers (file.name/file.path). - Maintain monitoring for deviations from the approved pattern (unexpected accounts, hosts, timing, or expanded targeting) to reduce noise without losing coverage.
- Document the authorized workflow (who, what, where, and when), including expected
event.category:process and host.os.type:windows and
powershell.file.script_block_text : (
"Clear-EventLog" or
"Remove-EventLog" or
("Eventing.Reader.EventLogSession" and ".ClearLog") or
("Diagnostics.EventLog" and ".Clear")
) and
not powershell.file.script_block_text : (
"CmdletsToExport=@(\"Add-Content\""
) and
not file.directory : "C:\Program Files\WindowsAdminCenter\PowerShellModules\Microsoft.WindowsAdminCenter.Configuration"
Framework: MITRE ATT&CK
Tactic:
- Name: Defense Evasion
- Id: TA0005
- Reference URL: https://attack.mitre.org/tactics/TA0005/
Technique:
- Name: Indicator Removal
- Id: T1070
- Reference URL: https://attack.mitre.org/techniques/T1070/
Sub Technique:
- Name: Clear Windows Event Logs
- Id: T1070.001
- Reference URL: https://attack.mitre.org/techniques/T1070/001/
Framework: MITRE ATT&CK
Tactic:
- Name: Execution
- Id: TA0002
- Reference URL: https://attack.mitre.org/tactics/TA0002/
Technique:
- Name: Command and Scripting Interpreter
- Id: T1059
- Reference URL: https://attack.mitre.org/techniques/T1059/
Sub Technique:
- Name: PowerShell
- Id: T1059.001
- Reference URL: https://attack.mitre.org/techniques/T1059/001/