PowerShell download chain confirmed as malicious
Public-safe case study Customer names, domains, employee identifiers, exact user addresses, internal evidence locations, and case-specific identifiers have been removed or replaced. Quantitative findings and defensive lessons are retained for educational use.
Executive assessment
At 14:22 UTC, WINWORD.EXE launched hidden PowerShell with a 1,840-character encoded command on WKSTN-HR-118. PowerShell retrieved a 286 KB second-stage script, reconstructed it in memory, and registered scheduled-task persistence. Script-block, DNS, proxy, AMSI, and endpoint telemetry confirm a malicious download chain. The host was isolated in 10 minutes 49 seconds.
95% autonomous investigation. 100% human authority.
TandemTrace AI agents completed 38 of 40 recorded investigation actions autonomously. The human analyst retained final verdict approval and containment authorization.
Agents reconstructed the chain. The analyst controlled the consequential decisions.
Agent-to-human handoff
Orange = AI · black diamond = human · green = responseInvestigation dataset
- Alert source
- EDR · Suspicious PowerShell
- First observed
- 2026-07-22 14:22:31 UTC
- Host
- WKSTN-HR-118 · Windows 11 23H2
- Identity
- j.ortiz · People Operations
- Origin
- benefits-review.docm attachment
- Endpoint
- 1,864 events · ±30 minutes
- PowerShell
- 19 events · 3 script blocks
- Network
- 6 DNS queries · 2 proxy GETs
- Prevalence
- 12,418 endpoints · 30 days
- Sources
- EDR, SIEM, 4104, AMSI, DNS, proxy
| Artifact | Sanitized value | Observation | Assessment |
|---|---|---|---|
| PowerShell command | 1,840 encoded characters | Hidden; noninteractive | No peer baseline match |
| Download domain | cdn-sync.invalid | First-seen; 6 queries | Reserved replacement |
| Second-stage SHA-256 | c027…e114 | 286 KB response | Unique enterprise-wide |
| Scheduled task | BrowserUpdateCheck | Runs every 30 minutes | Masquerading persistence |
Visual investigation brief
Original detection
EDR alert · rule v6.4Investigation funnel
1,864 → 1Evidence confidence matrix
Cross-source support| Finding | Endpoint | Script / AMSI | Network | Confidence |
|---|---|---|---|---|
| Malicious document chain | ✓ | ✓ | — | Confirmed |
| Payload download | ✓ | ✓ | ✓ | Confirmed |
| Memory execution | Context | ✓ | — | High |
| Persistence | ✓ | ✓ | — | Confirmed |
| Credential theft / exfiltration | None | None | None | Not observed |
Suspicious command line
- Office → PowerShell
- Encoded and hidden flags
- One endpoint identified
- Payload and impact unknown
Six-stage malicious chain
- Two payload responses recovered
- Memory execution reconstructed
- Scheduled persistence confirmed
- 12,418 endpoints searched
Layered execution chain
14:22:31–14:24:1814:22:31
14:22:34
14:22:36
14:22:38
14:23:02
14:24:18
Multi-source timeline
14:22–14:34 UTCEvidence that changed the verdict
Suspicious parentage
A word-processing application spawned PowerShell with hidden-window and encoded-command flags—absent from the user’s 30-day baseline.
Recovered script block
Logging showed a downloader, string reconstruction, and in-memory invocation. The command content had no administrative business purpose.
External infrastructure
DNS and proxy telemetry tied the process to a newly registered domain with no prior enterprise prevalence.
Persistence attempt
The chain created a scheduled task masquerading as browser maintenance and referencing a user-profile script.
Correlated timeline
Email attachment opened by the targeted user.
Hidden encoded command starts beneath the document process.
PowerShell resolves and contacts a first-seen domain.
Recovered script block invokes reconstructed code without writing the final payload to disk.
Scheduled task registered under a misleading maintenance name.
Host isolated; task removal and token revocation initiated.
Competing hypotheses tested
| Hypothesis | Test | Disposition |
|---|---|---|
| Legitimate login or deployment script | Compared parent process, signer, command-line pattern, domain age, and management records. | Rejected: no management job or approved script matched. |
| Benign document automation | Checked document macros and expected child processes against peer activity. | Rejected: encoded hidden PowerShell and network retrieval were anomalous. |
| Malicious staged downloader | Joined process ancestry, script blocks, DNS, proxy, and persistence telemetry. | Confirmed. |
Confirmed scope and uncertainty
- Macro, encoded PowerShell, download, memory execution, and task creation occurred on one host.
- Two HTTP 200 responses delivered 4.2 KB and 286 KB.
- Three script blocks reconstruct the observed chain.
- No matching indicators appeared on 12,418 peers.
- The final in-memory module was only partially recovered.
- No evidence establishes credential access, lateral movement, or data theft.
- The delivery path before the mail gateway remains unknown.
- No named-family or actor attribution is made.
Containment and follow-up
Preserve script-block logs, PowerShell operational logs, memory, task XML, document, and browser artifacts.
Disable the scheduled task and quarantine all staged scripts and the originating document.
Block the infrastructure and search for process ancestry, command patterns, task name, and DNS indicators.
Enforce script-block logging, constrained language where applicable, and document-origin protections.
Technical evidence and response
PowerShell telemetry correlation
One chain · five sources| Time UTC | Source | Record | Observation | Contribution |
|---|---|---|---|---|
| 14:22:34.114 | EDR | ProcessCreate | WINWORD → hidden powershell | Suspicious ancestry |
| 14:22:34.307 | PowerShell | 4104 / 78102 | Encoded launcher decoded | Intent established |
| 14:22:36.051 | DNS | Query | cdn-sync.invalid first seen | Infrastructure joined |
| 14:22:39.884 | Proxy | HTTP GET | 286 KB response | Payload transfer |
| 14:23:02.440 | AMSI / 4104 | Script block 3/3 | In-memory invocation | Execution confirmed |
| 14:24:18.702 | Security log | 4698 | Scheduled task created | Persistence confirmed |
Download waterfall
Sanitized network evidenceEnvironment and launcher
[encoded launcher redacted] → hidden execution contextRecord 78102 · 1,126 charactersRetrieval and reconstruction
[sanitized web request] → byte-array reconstructionRecord 78105 · 2,804 charactersMemory and persistence
[in-memory invocation] → scheduled-task definitionRecord 78111 · 3,422 charactersBaseline comparison
12,418 endpoints · 30 days| Attribute | Incident | Enterprise baseline | Interpretation |
|---|---|---|---|
| Word → PowerShell | Present | 0 occurrences | Highly anomalous |
| Encoded PowerShell | Present | 14 approved occurrences | Not conclusive alone |
| Hidden window | Present | 3 approved occurrences | Rare but explainable |
| First-seen domain | Present | 0 approved occurrences | Strong corroboration |
| Task after document | Present | 0 matching chains | Malicious sequence |
Parent = WINWORD · Child = PowerShellScriptBlockHash = c027…e114TaskName = BrowserUpdateCheckCredential access · SMB · RDP · uploadNegative evidence reviewed
Absence tested—not assumed| Question | Sources / window | Result | Meaning |
|---|---|---|---|
| Did the chain execute elsewhere? | EDR + 4104 · 12,418 hosts · 30d | 0 additional | Scope remains one host |
| Did credential access follow? | EDR memory-access telemetry · 24h | 0 matches | Credential theft not observed |
| Was lateral movement attempted? | SMB, RDP, WinRM, service creation · 24h | 0 matches | No confirmed lateral movement |
| Was data uploaded? | Proxy + DNS · 24h | Only 0.8 KB check-in | No material exfiltration observed |
Response status
Closing reviewEvidence ledger
Sanitized chain of evidence| ID | Source | Event UTC | Collected | Entity | Verdict contribution |
|---|---|---|---|---|---|
| P-01 | EDR | 14:22:34 | 14:22:35 | powershell.exe | Alert and ancestry |
| P-02 | PowerShell 4104 | 14:22:34 | 14:22:36 | Script block 1 | Launcher recovered |
| P-03 | Proxy | 14:22:39 | 14:22:51 | 286 KB response | Download confirmed |
| P-04 | AMSI | 14:23:02 | 14:23:04 | Memory stage | Execution corroborated |
| P-05 | Security 4698 | 14:24:18 | 14:24:20 | Scheduled task | Persistence confirmed |
MITRE ATT&CK mapping
| Technique | Observed behavior |
|---|---|
| T1204.002 · Malicious File | User opened the weaponized attachment. |
| T1059.001 · PowerShell | Encoded hidden PowerShell execution. |
| T1105 · Ingress Tool Transfer | Second-stage content retrieved from external infrastructure. |
| T1027 · Obfuscated Files or Information | Encoded command and reconstructed strings. |
| T1053.005 · Scheduled Task | User-context persistence through a misleading task. |