Skip to content
UPLINK
Operation Tinsel Trace I — IR Report

Operation Tinsel Trace I — IR Report

HTB-OpTinselTrace-2023November – December 2023ConfidentialClosed
Incident ID
HTB-OpTinselTrace-2023
Date of Report
April 7, 2026
Prepared By
Warawut Manosong (Chicken0248)
Classification
Confidential
Executive Summary

Between November 27 and December 13, 2023, North Pole Operations sustained a coordinated, multi-phase intrusion attributed to the threat actor group the Grinch. The campaign began with a targeted social engineering operation against a privileged insider (referred to as Elfin) who was manipulated over two days into exfiltrating the santa_deliveries project binary.

That binary contained hardcoded credentials and a direct reference to an AWS S3 bucket (papa-noel), which the threat actor exploited the following day to harvest cloud-hosted assets. Among the retrieved files was claus.py, a script embedding AWS access and secret keys for the elfadmin account and a reference to a private bucket (north-pole-private). Using those keys, the threat actor pivoted to the private bucket and retrieved bytesparkle.ovpn: a VPN configuration file that provided authenticated access into the North Pole internal network.

With internal network access established, the threat actor staged a weaponized archive (present_for_santa.zip) on a file share accessible to TINKERTECH-WKS001. When the Santa Claus account opened the archive, a multi-stage infection chain (LNK shortcut → PowerShell → obfuscated VBScript → shellcode loader) executed, culminating in process injection into svchost.exe (PID 724) and a reverse shell back to the threat actor's C2 infrastructure. From this position, Windows Defender exclusions were applied and LSASS was dumped via a renamed ProcDump binary, yielding credential material for subsequent phases.

On December 8, 2023, the threat actor pivoted laterally to the internal network printer (NorthPole HP LaserJet 4200n, 192.168.68.128) and exploited the unauthenticated PJL interface on port 9100 to read files directly from its embedded filesystem. Nice and Naughty children's lists, a pending employee termination notice, a scheduled Christmas announcement, and, critically, an SSH private key for the christmas.gifts server were exfiltrated via FSUPLOAD commands.

On December 13, 2023, the threat actor executed the final and most destructive phase. CVE-2020-1472 (ZeroLogon) was exploited from 192.168.68.200 against DC01.northpole.local, instantly resetting the domain controller's machine account (DC$) and granting unauthenticated domain-level access. The Bytesparkle account was repurposed via a forced password reset, and an RDP session was established to the domain controller. A VNC backdoor (svchost.exe + vnc2.dll) and a svc_vnc scheduled task were deployed for persistent remote access. At 11:03:20 UTC, the ransomware splunk_svc.dll was executed, encrypting files across the domain controller using a repeating XOR cipher and appending the .xmax extension. A ransom note demanding 5,000,000 XMAS tokens to wallet GR1NCH-5ANTA-2023XMAS was deployed. Encryption completed at 11:07:28 UTC.

The full attack chain (spanning 16 days from initial social engineering to ransomware deployment) progressed entirely through exploitation of insider trust, misconfigured cloud storage, unpatched network services, and an unpatched domain controller. No zero-day capabilities were required at any stage.

Business & Stakeholder Impact

1. Confidentiality

The threat actor exfiltrated a substantial volume of sensitive organizational data across multiple phases. The santa_deliveries binary and associated santa-list.csv exposed recipient names, home addresses, gift assignments, and behavioral classifications. The printer's onboard filesystem yielded children's Nice and Naughty classification lists, a pending employee termination notice, a scheduled organizational announcement, and an SSH private key granting potential access to the christmas.gifts server. AWS-hosted operational scripts and configuration files, including credentials embedded in claus.py, were also retrieved in full.

2. Integrity

DC01.northpole.local (the organization's primary domain controller) was fully encrypted, with files across 69 targeted extension categories rendered inaccessible. The DC$ machine account and Bytesparkle domain account were both tampered with directly on the controller. A VNC backdoor and persistence scheduled task were installed.

3. Availability

Ransomware execution on the domain controller caused direct operational disruption. File recovery does not require ransom payment: the encryption scheme uses a trivially reversible repeating XOR cipher with the fully recovered key EncryptingC4Fun!, enabling complete decryption of all .xmax files.

4. Reputational and Regulatory

Exfiltration of children's personal data from the Nice and Naughty lists (including names and behavioral records) may carry regulatory notification obligations. The disclosure of the Announcment-25Dec.ps organizational announcement prior to its scheduled release date represents an additional confidentiality breach.

Timeline
Date/Time (UTC)EventSource
2023-11-27 17:27:26The threat actor sent their first email to Elfinem client on Elfin's workstation
2023-11-28 09:56:11Elfin replied to threat actor, inadvertently revealing access to a secret binaryem client on Elfin's workstation
2023-11-28 11:42The threat actor convinced Elfin to act against his employer. Elfin agreedem client on Elfin's workstation
2023-11-28 16:53–16:54The threat actor guided Elfin toward exfiltrating the secret projectem client on Elfin's workstation
2023-11-28 16:56:13Elfin offered to share the santa_deliveries binary with the threat actorem client on Elfin's workstation
2023-11-28 17:01:29Elfin compressed santa_deliveries into santa_deliveries.zipMFT and USN Journal — Elfin's workstation
2023-11-28 17:01:46Elfin sent santa_deliveries.zip (containing hardcoded credentials) to the threat actorem client on Elfin's workstation
2023-11-28 17:06:42Elfin began searching for keywords related to misconduct cover-up and flights to GreeceChrome browser history — Elfin's workstation
2023-11-29 08:24:07The threat actor automated bulk object retrieval from exposed S3 bucket (papa-noel)AWS CloudTrail
2023-11-29 08:24:16Automated S3 retrieval completedAWS CloudTrail
2023-11-29 10:15:02The threat actor probed access to private S3 bucket (north-pole-private)AWS CloudTrail
2023-11-29 10:15:28The threat actor used elfadmin access key to list objects in north-pole-privateAWS CloudTrail
2023-11-29 10:16:30The threat actor changed IP address to interact with north-pole-privateAWS CloudTrail
2023-11-29 10:16:53The threat actor retrieved bytesparkle.ovpn from north-pole-privateAWS CloudTrail
2023-11-30 16:42:21Santa Claus accessed \\SANTA-FS\ImportantFiles share and copied present_for_santa.zip to TINKERTECH-WKS001santaclaus.bin
2023-11-30 16:42:23present_for_santa.zip was created on Santa's Desktop on TINKERTECH-WKS001santaclaus.bin
2023-11-30 16:42:28present_for_santa.zip was extractedsantaclaus.bin
2023-11-30 16:42Santa Claus clicked the malicious LNK shortcut, triggering the infection chainsantaclaus.bin
2023-11-30 16:42:40–41Shellcode loader (present.exe) was downloaded and executed on TINKERTECH-WKS001santaclaus.bin
2023-11-30 16:42:5xEvent logs cleared on TINKERTECH-WKS001santaclaus.bin
2023-11-30 16:43The threat actor attempted to disable Windows Defender on TINKERTECH-WKS001 (failed)santaclaus.bin
2023-11-30 16:43:12–15The threat actor added C:\Users\Public to Windows Defender exclusion pathsantaclaus.bin
2023-11-30 16:43:18ProcDump was dropped as PresentForNaughtyChild.exe in the exclusion foldersantaclaus.bin
2023-11-30 16:43:27ProcDump was used to dump LSASS memory to stolen_gift.dmpsantaclaus.bin
2023-12-08 12:01:39The threat actor port-scanned the NorthPole HP LaserJet 4200n printer (192.168.68.128), discovering ports 22 and 9100networktraffic.pcapng
2023-12-08 12:02:14The threat actor established a PJL session with the printer on port 9100networktraffic.pcapng
2023-12-08 12:03:07 – 12:09:27The threat actor used PJL FSUPLOAD to exfiltrate Christmas lists, a termination notice, an upcoming announcement, and the SSH private keynetworktraffic.pcapng
2023-12-13 09:24:21The threat actor exploited ZeroLogon (CVE-2020-1472) from 192.168.68.200 against DC01, resetting the DC$ machine account password at 09:24:23DC01.northpole.local-KAPE
2023-12-13 09:27:36The threat actor reset the Bytesparkle account password using the local Administrator account on DC01DC01.northpole.local-KAPE
2023-12-13 10:03 – 10:57:38The threat actor established RDP to DC01 as Bytesparkle, dropped VNC backdoor, and created svc_vnc scheduled task for persistenceDC01.northpole.local-KAPE
2023-12-13 11:03:20 – 11:07:28Ransomware (splunk_svc.dll) executed on DC01, dropping ransom note and encrypting all files with .xmax extensionDC01.northpole.local-KAPE
Scope & Evidence

Evidence

EvidenceTypeDetails
DESKTOP-D32FKTI triage dataTriage DataElfin's workstation
DESKTOP-D32FKTI live responseLive ResponseElfin's workstation
Sparky Cloud logsAWS CloudTraileu-west-2 and eu-west-3
santaclaus.binMemory DumpTINKERTECH-WKS001
networktraffic.pcapngNetwork Traffic Capture (PCAP)Printer traffic
DC01.northpole.local-KAPETriage DataDC01

Affected Systems & Devices

Hostname/Device NameIP AddressOSRole
TINKERTECH-WKS001192.168.68.4Windows 10Workstation used by Santa Claus
NorthPole HP LaserJet 4200n192.168.68.128Network Printer
DC01.northpole.local192.168.68.11Windows Server 2016Primary Domain Controller (northpole.local)

Affected Users

UsernameCompromised FromDetails
elf-adminHardcoded credentials in santa_deliveries binaryLeaked to the threat actor by Elfin
elfadminHardcoded access and secret key in claus.pyExposed via papa-noel S3 bucket
BytesparklePassword forcibly reset on DC01Domain account; repurposed by threat actor after ZeroLogon; used for RDP and ransomware deployment
AdministratorZeroLogon vulnerabilityLocal Administrator on DC01; accessible after ZeroLogon reset of DC$
DC$ZeroLogon vulnerabilityMachine account for DC01; Netlogon channel password reset to empty by CVE-2020-1472

Files Stolen / Exfiltrated

File Name / File PathSource
santa_deliveriesDESKTOP-D32FKTI triage data (Elfin's workstation)
NPoleScripts/check.jspapa-noel S3 bucket — AWS CloudTrail
NPoleScripts/backup.pypapa-noel S3 bucket — AWS CloudTrail
NPoleScripts/santa_journey_log.csvpapa-noel S3 bucket — AWS CloudTrail
NPoleScripts/disk.pspapa-noel S3 bucket — AWS CloudTrail
NPoleScripts/organise.rbpapa-noel S3 bucket — AWS CloudTrail
NPoleScripts/claus.pypapa-noel S3 bucket — AWS CloudTrail
NPoleScripts/update.shpapa-noel S3 bucket — AWS CloudTrail
santa-list.csvpapa-noel S3 bucket — AWS CloudTrail
bytesparkle.ovpnnorth-pole-private S3 bucket — AWS CloudTrail
stolen_gift.dmpLSASS dump on TINKERTECH-WKS001
0:/christmas/2023/Nice-kids/list1.txtNorthPole HP LaserJet 4200n — PJL FSUPLOAD
0:/christmas/2023/Naughty-kids/list.txtNorthPole HP LaserJet 4200n — PJL FSUPLOAD
0:/saveDevice/SavedJobs/InProgress/Layoff-notice/Personal-Notice-Employee43.pclNorthPole HP LaserJet 4200n — PJL FSUPLOAD
Announcment-25Dec.psNorthPole HP LaserJet 4200n — PJL FSUPLOAD
0:/Administration/securitykeys/ssh_systems/id_rsaNorthPole HP LaserJet 4200n — PJL FSUPLOAD
Findings
FINDING #1
Insider Threat Leads to Secret Binary Exfiltration
Email thread recovered from DESKTOP-D32FKTI em client

On November 27, 2023, the threat actor initiated contact with Elfin from the address definitelynotthegrinch@gmail[.]com, posing as "Wendy Elflower" and fabricating a shared familiarity: a classic pretexting technique to establish trust early in the social engineering chain.

First email from threat actor to Elfin
Email exchange — Elfin's initial reply
Continued email thread

Over the course of two days, the threat actor methodically cultivated the relationship, steering the conversation toward Elfin's workplace grievances. This allowed Elfin to voluntarily disclose that he held access to confidential Secret Santa project assets.

Email — threat actor frames exfiltration as self-liberation
Email continuation

Exploiting Elfin's accumulated workplace resentment, the threat actor successfully convinced him to act against his employer's interests.

Elfin agrees to cooperate
Threat actor probes for project details
Elfin offers to send the binary
Elfin sends santa_deliveries.zip

At 17:01:29 UTC, MFT and USN Journal records from DESKTOP-D32FKTI confirm that Elfin compressed santa_deliveries into santa_deliveries.zip. At 17:01:46 UTC, the archive was transmitted to the threat actor via the em client.

MFT/USN Journal record of zip creation and transmission

Static analysis of the santa_deliveries binary revealed a hardcoded credential for the elf-admin account. Upon successful authentication, the binary retrieves santa-list.csv from the AWS S3 bucket at https://papa-noel.s3.eu-west-3.amazonaws.com/santa-list.csv.

Binary static analysis — hardcoded elf-admin credential and S3 bucket reference
Binary output parsing santa-list.csv

Following the exfiltration, Chrome browser history recovered from DESKTOP-D32FKTI shows Elfin conducting searches related to circumventing corporate security controls, concealing insider activity, email deletion, and flights to Greece, indicating a clear attempt to cover his tracks and flee.

FINDING #2
Hardcoded Credentials in Public S3 Bucket Enable Private Bucket Access and OpenVPN Configuration Exfiltration
AWS CloudTrail — automated retrieval from papa-noel S3 bucket

On November 29, 2023, at 08:24:07 UTC, AWS CloudTrail logs recorded an automated bulk retrieval from 191[.]101[.]31[.]57 targeting the publicly accessible papa-noel S3 bucket. The operation completed within nine seconds at 08:24:16 UTC.

CloudTrail — automated bulk S3 retrieval from papa-noel

Among the files retrieved from papa-noel was NPoleScripts/claus.py, which contained hardcoded AWS access and secret keys belonging to the elfadmin account, along with a direct reference to the private S3 bucket north-pole-private.

claus.py — hardcoded elfadmin AWS keys and north-pole-private reference

At 10:15:02 UTC, the threat actor began probing the north-pole-private bucket using HeadBucket and GetBucketAcl API calls. At 10:15:28 UTC, the same elfadmin access key was used to successfully execute a ListObjects call against the bucket, confirming partial access.

CloudTrail — HeadBucket, ListObjects against north-pole-private

At 10:16:30 UTC, activity shifted to a second IP address, 45[.]133[.]193[.]41, from which the threat actor retrieved bytesparkle.ovpn at 10:16:53 UTC. The AWS CLI user-agent string captured (aws-cli/2.12.0 Python/3.11.5 Linux/6.1.0-kali9-amd64) is consistent with a Kali Linux host.

CloudTrail — bytesparkle.ovpn retrieval from north-pole-private

The bytesparkle.ovpn OpenVPN configuration file provided the threat actor with authenticated credentials and routing configuration to establish a VPN tunnel directly into the North Pole internal network. This exfiltrated configuration is assessed to be the primary access vector enabling all subsequent on-premises activity.

FINDING #3
Malicious LNK Delivery Chain Leads to Process Injection and Credential Harvesting
Internal network access via bytesparkle.ovpn
santaclaus.bin — present_for_santa.zip copied to Desktop

With authenticated VPN access established, the threat actor pivoted from cloud-based operations to on-premises targets. On November 30, 2023, at 16:42:21 UTC, memory forensics of santaclaus.bin show the Santa Claus account on TINKERTECH-WKS001 accessing the \\SANTA-FS\ImportantFiles network share and copying present_for_santa.zip to the user's Desktop.

Archive extracted — contents showing click_for_present.lnk and present.vbs

At 16:42:28 UTC, the archive was extracted to a present_for_santa folder on the Desktop. The archive contained two malicious files: present.vbs, a heavily obfuscated VBScript dropper, and click_for_present.lnk, a weaponized shortcut designed to trigger the infection chain.

click_for_present.lnk details
LNK target — PowerShell spawning cscript for present.vbs

click_for_present.lnk when executed spawned a PowerShell command that recursively searched C:\Users\ for any file matching present*.vbs and invoked it via cscript, executing present.vbs without requiring user awareness of the underlying payload.

LNK execution chain details
present.vbs obfuscated payload
VBScript — present.exe download URL and execution

The VBScript payload downloaded a shellcode loader (present.exe) from the C2 server at 77[.]74[.]198[.]52 via hxxp[://]77.74.198.52/destroy_christmas/evil_present.jpg, dropping it into the executing user's temp directory before launching it to establish a reverse shell back to the C2.

present.exe download from C2
MFT records — present.exe written and executed

MFT records corroborate that present.exe was written to disk at 16:42:40 UTC and executed one second later. The shellcode loader retrieved a second-stage shellcode from the C2 on port 445 and injected it into the svchost.exe process (PID 724).

Process start events in memory dump
Shellcode injection into svchost.exe (PID 724)

At approximately 16:42:59 UTC, the threat actor executed a PowerShell command to clear all Windows event logs on TINKERTECH-WKS001.

Event logs cleared via PowerShell

At 16:43:04 UTC, the threat actor attempted to disable Windows Defender via PowerShell, but the command failed due to a syntax error. At 16:43:12 UTC, the threat actor added C:\Users\Public to the Windows Defender exclusion path instead.

Windows Defender disable attempt — failed due to syntax error
Defender disable command details
Defender exclusion path added — C:\Users\Public
Windows Defender Event ID 5007 — exclusion applied

At 16:43:18 UTC, Sysinternals ProcDump was transferred onto the host as C:\Users\Public\PresentForNaughtyChild.exe. At 16:43:27 UTC, it was invoked to dump the LSASS process memory to C:\Users\Public\stolen_gift.dmp.

ProcDump dropped as PresentForNaughtyChild.exe
MFT — stolen_gift.dmp written to disk
FINDING #4
Printer Filesystem Exploitation via PJL FSUPLOAD Leads to Sensitive Document and SSH Key Exfiltration
Port scan against NorthPole HP LaserJet 4200n
Port scan results — TCP 22 and 9100 open on printer

On December 8, 2023, at 12:01:39 UTC, the threat actor conducted a port scan against the NorthPole HP LaserJet 4200n printer (192.168.68.128). The scan revealed TCP 22 (SSH) and TCP 9100 (PJL interface entry point).

PJL session established on port 9100

At 12:02:14 UTC, the threat actor established a connection to the printer on port 9100, initiating a PJL session.

PJL FSUPLOAD — Nice-kids list1.txt retrieved

At 12:03:07 UTC, the threat actor issued a PJL FSUPLOAD command to read 0:/christmas/2023/Nice-kids/list1.txt directly from the printer's internal filesystem, containing full names of children flagged as "Nice."

PJL FSUPLOAD — Naughty-kids list.txt retrieved

At 12:03:21 UTC, the threat actor followed up with a second FSUPLOAD request for 0:/christmas/2023/Naughty-kids/list.txt.

Personal-Notice-Employee43.pcl — termination notice for Elfin

At 12:04:18 UTC, the threat actor identified and read 0:/saveDevice/SavedJobs/InProgress/Layoff-notice/Personal-Notice-Employee43.pcl, revealing a termination notice for Elfin.

Announcment-25Dec.ps identified in printer filesystem
Christmas announcement content retrieved

At 12:08:14 UTC, the threat actor identified the PostScript scheduled print job Announcment-25Dec.ps and retrieved its contents via FSUPLOAD at 12:08:18 UTC.

SSH private key discovered
Retrieval of SSH private key

At 12:09:12 UTC, the threat actor discovered an SSH backup private key at 0:/Administration/securitykeys/ssh_systems/id_rsa and retrieved its contents at 12:09:27 UTC. An attempt to delete the key at 12:18:14 UTC failed.

Attempted to delete SSH private key
FINDING #5
ZeroLogon Exploitation Leads to Domain Compromise and Ransomware Deployment

Building on the credential material harvested from the LSASS dump and internal network persistence from prior phases, the threat actor executed the most destructive stage on December 13, 2023.

CVE-2020-1472 ZeroLogon exploit against DC01.northpole.local
ZeroLogon exploit — DC$ machine account password reset at 09:24:23

At 09:24:21 UTC, the threat actor, operating from internal IP 192.168.68.200, exploited CVE-2020-1472 (ZeroLogon) against DC01.northpole.local, successfully resetting the DC$ machine account password at 09:24:23 UTC.

Malicious service executable file creation
Service Path installed on DC at same time as ZeroLogon
vulnerable_to_zerologon service installed and started on DC01

As part of the exploitation chain, a malicious service named vulnerable_to_zerologon was installed on the domain controller, backed by the binary hAvbdksT.exe.

Bytesparkle domain account password forcibly reset

At 09:27:36 UTC, leveraging the local Administrator account now accessible via the domain controller, the threat actor reset the password of the Bytesparkle domain account, repurposing it as a controlled credential.

RDP session established to DC01 as Bytesparkle

At approximately 10:03 UTC, the threat actor established an RDP session to DC01.northpole.local using the newly controlled Bytesparkle account.

svchost.exe and vnc2.dll dropped to Downloads\svc
User executed svchost.exe — evidence from User Assist

At 10:47 UTC, two suspicious files (a masqueraded svchost.exe and an accompanying vnc2.dll) were dropped into C:\Users\bytesparkle\Downloads\svc. Execution at 10:53:21 UTC established a VNC-based remote access channel.

Threat actor opened Task Scheduler
Task Scheduler — svc_vnc task created

At 10:57:38 UTC, the threat actor created a scheduled task named svc_vnc, establishing a persistence mechanism that would survive a reboot.

Ransomware dropped on the DC
Ransomware encryption routine started
Ransomware encryption routine ended

At 11:00:16 UTC, the threat actor dropped the ransomware payload splunk_svc.dll into C:\tmp. Execution followed at 11:03:20 UTC, deploying a ransom note to C:\Users\bytesparkle\Desktop\README.txt and beginning file encryption. All encrypted files had their extensions replaced with .xmax. The encryption process completed at 11:07:28 UTC.

Ransom note — GR1NCH-5ANTA-2023XMAS wallet, 5,000,000 XMAS tokens demand
Ransom note deployed to C:\Users\bytesparkle\Desktop\README.txt
MALWARE ANALYSIS
Ransomware Analysis: splunk_svc.dll

Static analysis of splunk_svc.dll (executed at 11:03:20 UTC) reveals a self-contained recursive encryption routine consistent with the observed .xmax extension renaming and ransom note deployment.

69 targeted extensions by this ransomware

The binary implements a depth-first directory walker using FindNextFileW, iterating through the filesystem and checking each discovered file against a hardcoded list of 69 targeted extensions. The target list covers documents, source code, email stores, virtual machine disk images, databases, and archives.

XOR cipher loop — 16-byte repeating key EncryptingC4Fun!

For each matching file, the routine encrypts content byte-by-byte using a repeating 16-byte XOR cipher. The key (EncryptingC4Fun!) cycles across a 16-byte window. This encryption scheme is cryptographically trivial: XOR is symmetric, so the same operation restores plaintext, and the short repeating key is fully recoverable via known-plaintext attack.

Ransomnote content

The hardcoded ransom note demands 5,000,000 XMAS tokens to wallet GR1NCH-5ANTA-2023XMAS and is signed "The Grinch." The note is deployed to the current user's Desktop after every encrypted file.

Indicators of Compromise (IOCs)
IP Addresses
191[.]101[.]31[.]57: IP used for automated bulk retrieval from the papa-noel S3 bucket
45[.]133[.]193[.]41: IP used to access the north-pole-private S3 bucket and retrieve bytesparkle.ovpn
77[.]74[.]198[.]52: C2 server (shellcode delivery on port 445, reverse shell on port 447)
172[.]17[.]79[.]133: Internal IP (additional activity)
192[.]168[.]68[.]200: Internal IP; ZeroLogon source against DC01
Email Addresses
definitelynotthegrinch@gmail[.]com: Threat actor email used to social engineer Elfin
URLs & Domains
hxxp[://]77.74.198.52/destroy_christmas/evil_present.jpg: URL used by present.vbs to download shellcode loader
File Hashes (SHA256)
4ca68446b660675ac2cd37baf0c3a38f9c860d32730224fc6729140943c5f264: present_for_santa.zip
2997fc7a9a59ec7b98b307b1bec35743852f402f398361ce8b90d175f049d582: click_for_present.lnk
78ba1ea3ac992391010f23b346eedee69c383bc3fd2d3a125ede6cba3ce77243: present.vbs
6f48c94668fd48f42ef63ae30be60022d9ce95840e33fbc7efed56148051c9be: present.exe (shellcode loader)
337c24c2e6016a9bdca30f2820df9c1dae7b827ad73c93a14e1dc78906b63890: PresentForNaughtyChild.exe (Procdump)
943666ecc9dd5810c0b7e473e92604fdd54691fbfb101f9fec6e11d6c273233a: splunk_svc.dll (ransomware)
34894ab9f37a7e80304b0541bce9dce0e7dda6401617509f88f0109f11ee1756: README.txt (ransom note)
Other Indicators
CVE-2020-1472: ZeroLogon (Netlogon privilege escalation)
vulnerable_to_zerologon: Malicious service installed on DC01
hAvbdksT.exe: Binary backing the vulnerable_to_zerologon service
svc_vnc: Malicious scheduled task on DC01
svchost.exe + vnc2.dll: VNC backdoor components dropped to C:\Users\bytesparkle\Downloads\svc
stolen_gift.dmp: LSASS memory dump
.xmax: Ransomware file extension appended to all encrypted files
GR1NCH-5ANTA-2023XMAS: Threat actor cryptocurrency wallet
Recommendations

Immediate Tactical Fixes

  • Patch CVE-2020-1472 (ZeroLogon) immediately
    • Apply Microsoft's August 2020 patch (KB4557222) and enforce "enforcement mode" (FullSecureChannelProtection = 1) across all domain controllers.
    • Audit all machine account Netlogon channel activity retroactively.
  • Rotate all compromised credentials
    • Credentials confirmed compromised: elf-admin, elfadmin AWS access/secret key pair, Bytesparkle domain account, DC$ machine account, and the SSH private key retrieved from the printer.
    • Access to the christmas.gifts server must be assumed compromised until confirmed otherwise.
  • Purge VNC backdoor and persistence mechanism
    • Remove the VNC backdoor components (svchost.exe + vnc2.dll) and delete the svc_vnc scheduled task from DC01.northpole.local.
    • Perform a full sweep of all systems for additional persistence mechanisms.
  • Revoke and audit AWS IAM access
    • Immediately revoke the elfadmin IAM access/secret key pair.
    • Audit all CloudTrail logs for the papa-noel and north-pole-private S3 buckets.
  • Isolate and re-image affected systems
    • Isolate and re-image TINKERTECH-WKS001, DC01.northpole.local, and potentially the christmas.gifts server.
    • Domain re-promotion of DC01 should follow a clean rebuild, not an in-place remediation.
  • Disable PJL access on the printer
    • Immediately disable PJL filesystem commands (FSUPLOAD, FSDIRLIST) or firewall port 9100 to authorized print servers only.
    • Remove all sensitive files (SSH keys, HR documents) from the printer's embedded filesystem.

Strategic Improvements

  • Eliminate hardcoded credentials in source code and binaries
    • Implement a secrets management solution (e.g., AWS Secrets Manager, HashiCorp Vault) for all credentials. Integrate pre-commit hooks and SAST tooling into development pipelines.
  • Enforce least-privilege access on cloud storage
    • All S3 buckets must be private by default. Enable S3 Block Public Access at the account level and conduct a full audit of all buckets for public exposure.
  • Implement an insider threat program
    • Establish user activity monitoring on endpoints with access to sensitive IP, DLP controls for outbound file transfers, and a clear off-boarding process that immediately revokes access.
  • Deploy email security controls
    • Implement email authentication (DMARC, DKIM, SPF) enforcement. Deploy a secure email gateway with anti-phishing capabilities and conduct regular social engineering awareness training.
  • Network segmentation and printer hardening
    • Segment IoT and peripheral devices into a dedicated VLAN with strict firewall rules. Disable legacy protocols (PJL, FTP) on all network-attached peripherals.
  • Establish a vulnerability management program with SLA enforcement
    • CVE-2020-1472 remained unpatched over three years after public disclosure. Implement patching SLAs: critical vulnerabilities (CVSS ≥ 9.0) within 7 days, high (CVSS 7.0–8.9) within 30 days.
  • Develop and test an incident response playbook
    • This incident spanned 16 days without triggering a detection or response. Develop formal IR playbooks covering ransomware, lateral movement, and cloud credential abuse scenarios.
Appendix

Network Diagram

Network diagram — North Pole Operations infrastructure
North Pole Operations — network diagram

File Recovery: .xmax Decryptor

Because the ransomware uses a trivially reversible repeating XOR cipher with the hardcoded key EncryptingC4Fun!, all encrypted .xmax files can be fully recovered using the following Python script:

Python
#!/usr/bin/env python3 """ .xmax File Decryptor — XOR key: EncryptingC4Fun! Usage: python xmax_decrypt.py <target_directory> [--dry-run] """ import os, sys, argparse, logging XOR_KEY = b"EncryptingC4Fun!" logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S") log = logging.getLogger(__name__) def xor_decrypt(data, key): key_len = len(key) return bytes(b ^ key[i % key_len] for i, b in enumerate(data)) def find_xmax_files(root): for dirpath, _, filenames in os.walk(root): for fname in filenames: if fname.endswith(".xmax"): yield os.path.join(dirpath, fname) def decrypt_file(filepath, dry_run=False): original_path = filepath[:-5] if os.path.exists(original_path): log.warning(f"Skipping — original already exists: {original_path}") return False try: with open(filepath, "rb") as f: encrypted_data = f.read() decrypted_data = xor_decrypt(encrypted_data, XOR_KEY) if dry_run: log.info(f"[DRY RUN] Would restore: {filepath} -> {original_path}") return True with open(original_path, "wb") as f: f.write(decrypted_data) os.remove(filepath) log.info(f"Restored: {original_path}") return True except (PermissionError, OSError) as e: log.error(f"Error on {filepath}: {e}") return False def main(): parser = argparse.ArgumentParser(description="Decrypt .xmax files using XOR key.") parser.add_argument("target", help="Directory to scan") parser.add_argument("--dry-run", action="store_true", help="Preview without making changes") args = parser.parse_args() if not os.path.isdir(args.target): log.error(f"Target is not a valid directory: {args.target}") sys.exit(1) total = recovered = skipped = failed = 0 for xmax_file in find_xmax_files(args.target): total += 1 result = decrypt_file(xmax_file, dry_run=args.dry_run) if result: recovered += 1 elif os.path.exists(xmax_file[:-5]): skipped += 1 else: failed += 1 log.info(f"Done — Total: {total} | Recovered: {recovered} | Skipped: {skipped} | Failed: {failed}") if __name__ == "__main__": main()
↑ Back to top← All IR Reports|SOC · IR.REPORTS · CHICKEN0248