Skip to content
Back to skills

Webapp Analyzing Powershell Script Block Logging

ASecurity

Parse Windows PowerShell Script Block Logs (Event ID 4104) from EVTX files to detect obfuscated commands, encoded payloads, and living-off-the-land techniques.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
securitypythongoshellbashtestinggitsecurity

Works with

  • cli

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned November 7, 2026

npx -y skills add bitbytelabio/arsenal --skill webapp-analyzing-powershell-script-block-logging --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Webapp Analyzing Powershell Script Block Logging?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Webapp Analyzing Powershell Script Block Logging
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bitbytelabio-webapp-analyzing-powershell-script-block-logging/badge)](https://www.skillsdirectory.com/skills/bitbytelabio-webapp-analyzing-powershell-script-block-logging)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: webapp-analyzing-powershell-script-block-logging
description: Parse Windows PowerShell Script Block Logs (Event ID 4104) from EVTX files to detect obfuscated commands, encoded payloads, and living-off-the-land techniques.
domain: webapp
category: security-operations
hide: true
license: Apache-2.0
metadata:
  manifest_entry: src/corpus/webapp-analyzing-powershell-script-block-logging/SKILL.md
---
## Helper prerequisites

This bundled skill supplies operational methodology; execution should use evidence_exec or the documented underlying security binaries directly in accordance with engagement scope.



# Analyzing PowerShell Script Block Logging


## When to Use

- When investigating security incidents that require analyzing powershell script block logging
- When building detection rules or threat hunting queries for this domain
- When SOC analysts need structured procedures for this analysis type
- When validating security monitoring coverage for related attack techniques

## Detection Gaps & Validation

- **If 4104 is disabled, you have nothing:** Script Block Logging must be enabled via GPO (`Administrative Templates > Windows PowerShell > Turn on PowerShell Script Block Logging`) or registry `HKLM\...\PowerShell\ScriptBlockLogging\EnableScriptBlockLogging=1`. Attackers running `powershell -version 2` downgrade to an engine with no 4104/AMSI at all. Hunt for 400/600 engine-start events showing v2 and for the absence of expected 4104 volume on a host.
- **AMSI bypass precedes the malicious block:** `amsiInitFailed`, `[Ref].Assembly.GetType('...AmsiUtils')`, and reflection/obfuscated variants neutralize scanning. Detect the *bypass string itself* in 4104, since the subsequent payload may log as benign or not at all.
- **Obfuscation defeats naive regex:** tick marks (`I`+`EX`), string `-join`/`-f` format ops, `[char]` arrays, gzip+base64, and `SecureString` hide `IEX`/`DownloadString`. Score on Shannon entropy and decoded content, not literal keywords. Reconstruct multi-part scripts by `ScriptBlockId` ordered by `MessageNumber` before scoring — a split payload evades per-event matching.
- **Watch 4103 too:** Module/pipeline logging (EID 4103) captures invocation detail 4104 misses; correlate both.
- **Validate the rule fires:** in a lab, run an `-EncodedCommand` download cradle and an AMSI bypass, then confirm your parser flags both EID 4104 entries and that base64 decodes as UTF-16LE. **FP tuning:** legitimate admin tooling, Chocolatey, SCCM, and installers emit large/encoded blocks — baseline by signing cert and parent process before alerting.

## Prerequisites

- Familiarity with security operations concepts and tools
- Access to a test or lab environment for safe execution
- Python 3.8+ with required dependencies installed
- Appropriate authorization for any testing activities

## Instructions

1. Install dependencies: `pip install python-evtx lxml`
2. Collect PowerShell Operational logs: `Microsoft-Windows-PowerShell%4Operational.evtx`
3. Parse Event ID 4104 entries using python-evtx to extract ScriptBlockText, ScriptBlockId, and MessageNumber/MessageTotal for multi-part script reconstruction.
4. Apply detection heuristics:
   - Base64-encoded commands (`-EncodedCommand`, `FromBase64String`)
   - Download cradles (`DownloadString`, `DownloadFile`, `Invoke-WebRequest`, `Net.WebClient`)
   - AMSI bypass patterns (`AmsiUtils`, `amsiInitFailed`)
   - Obfuscation indicators (high entropy, tick-mark insertion, string concatenation)
5. Generate a report with reconstructed scripts, risk scores, and MITRE ATT&CK mappings.

```bash
evidence_exec --evtx-file /path/to/PowerShell-Operational.evtx --output ps_analysis.json
```

## Examples

### Detect Encoded Command Execution
```python
import base64
if "-encodedcommand" in script_text.lower():
    encoded = script_text.split()[-1]
    decoded = base64.b64decode(encoded).decode("utf-16-le")
```

### Reconstruct Multi-Block Script
Scripts split across multiple 4104 events share a `ScriptBlockId`. Concatenate blocks ordered by `MessageNumber` to recover the full script.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.