T1491.001

Internal Defacement

Adversaries may deface systems internal to an organization in an attempt to intimidate or mislead users, discrediting the integrity of those systems. This manifests most commonly as ransomware operators setting desktop wallpaper to display ransom notes (Black Basta, BlackCat, Qilin, INC Ransomware, Diavol, RansomHub), dropping ransom note text or HTML files across the filesystem, modifying Windows logon legal notice messages, renaming disk volume labels to attacker contact information (ShrinkLocker), or changing lock screen images. Destructive APT groups such as Lazarus Group and Gamaredon have also used desktop wallpaper replacement to display threatening messages after rendering systems inoperable. Internal defacement occurs late in the attack lifecycle — after primary objectives such as data exfiltration or file encryption have been completed — because it reveals adversary presence and marks the point of no return for the victim.

Microsoft Sentinel / Defender
kusto
let LegitWallpaperProcs = dynamic(["explorer.exe", "SystemSettings.exe", "SystemSettingsBroker.exe", "dllhost.exe", "winlogon.exe"]);
let RansomNoteKeywords = dynamic(["README", "DECRYPT", "HOW_TO", "RESTORE_FILES", "YOUR_FILES", "RANSOM", "HELP_DECRYPT", "HOW-TO-DECRYPT", "FILES_ENCRYPTED", "RECOVER_FILES", "IMPORTANT_READ", "!!!READ", "RECOVERY_KEY", "LOCKED"]);
// Branch 1: Desktop wallpaper, lock screen, and logon message registry changes from non-standard processes
let WallpaperRegistryChanges = DeviceRegistryEvents
| where Timestamp > ago(24h)
| where ActionType == "RegistryValueSet"
| where (RegistryKey has "Control Panel\\Desktop" and RegistryValueName =~ "Wallpaper")
    or (RegistryKey has "PersonalizationCSP" and RegistryValueName in~ ("DesktopImagePath", "LockScreenImagePath", "DesktopImageStatus", "LockScreenImageStatus"))
    or (RegistryKey has "Winlogon" and RegistryValueName in~ ("LegalNoticeText", "LegalNoticeCaption"))
| where InitiatingProcessFileName !in~ (LegitWallpaperProcs)
| extend DefacementType = case(
    RegistryValueName =~ "Wallpaper" or RegistryValueName has "DesktopImage", "WallpaperChange",
    RegistryValueName has "LockScreen", "LockScreenChange",
    RegistryValueName in~ ("LegalNoticeText", "LegalNoticeCaption"), "LogonMessageChange",
    "RegistryDefacement"
  )
| extend IndicatorDetail = strcat("Key: ", RegistryKey, " | Value: ", RegistryValueName, " | Data: ", RegistryValueData)
| project Timestamp, DeviceName, InitiatingProcessAccountName, DefacementType, IndicatorDetail,
         InitiatingProcessFileName, InitiatingProcessCommandLine;
// Branch 2: Ransom note and defacement file creation
let RansomNoteCreation = DeviceFileEvents
| where Timestamp > ago(24h)
| where ActionType == "FileCreated"
| where FileName has_any (RansomNoteKeywords)
| where FileName endswith ".txt" or FileName endswith ".html" or FileName endswith ".hta"
    or FileName endswith ".bmp" or FileName endswith ".jpg" or FileName endswith ".png"
| extend DefacementType = "RansomNoteDropped"
| extend IndicatorDetail = strcat("File: ", FolderPath, "\\", FileName)
| project Timestamp, DeviceName, InitiatingProcessAccountName, DefacementType, IndicatorDetail,
         InitiatingProcessFileName, InitiatingProcessCommandLine;
// Branch 3: Disk volume label modification (ShrinkLocker ransomware pattern)
let DiskLabelChanges = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName =~ "cmd.exe"
| where ProcessCommandLine matches regex @"(?i)\blabel\s+[a-zA-Z]:"
| extend DefacementType = "DiskLabelModified"
| extend IndicatorDetail = ProcessCommandLine
| project Timestamp, DeviceName, AccountName, DefacementType, IndicatorDetail,
         InitiatingProcessFileName, InitiatingProcessCommandLine;
// Branch 4: PowerShell-based wallpaper change via SystemParametersInfo API
let PSWallpaperSet = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName in~ ("powershell.exe", "pwsh.exe")
| where ProcessCommandLine has_any ("SystemParametersInfo", "SPI_SETDESKWALLPAPER", "SetWallpaper", "DesktopWallpaper")
    or (ProcessCommandLine has "0x14" and ProcessCommandLine has "SystemParametersInfo")
| extend DefacementType = "PSWallpaperSet"
| extend IndicatorDetail = ProcessCommandLine
| project Timestamp, DeviceName, AccountName, DefacementType, IndicatorDetail,
         InitiatingProcessFileName, InitiatingProcessCommandLine;
union WallpaperRegistryChanges, RansomNoteCreation, DiskLabelChanges, PSWallpaperSet
| sort by Timestamp desc
high severity high confidence

Data Sources

Windows Registry: Registry Key Modification File: File Creation Process: Process Creation Microsoft Defender for Endpoint

Required Tables

DeviceRegistryEvents DeviceFileEvents DeviceProcessEvents

False Positives

  • Group Policy or Microsoft Intune/MDM solutions deploying corporate desktop wallpaper or compliance logon banners — these originate from gpsvc.exe, deviceenrollmentactivity.exe, or MDM management agents rather than ransomware processes, and occur in batches across many devices simultaneously
  • IT administrators manually configuring Windows logon legal notice text via reg.exe or PowerShell for CIS Benchmark, NIST, or STIG compliance requirements — review change tickets and originating workstation (should be a PAW or jump server)
  • Disk management during system provisioning, OS imaging, or storage configuration scripts that include volume labeling as part of build automation
  • Security or deployment tooling that drops README or documentation files during software installation — these typically originate from msiexec.exe or a known installer process and target software installation directories

Unlock Pro Content

Get the full detection package for T1491.001 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections