Published August 16, 2025

Evading EDR with IRIS C2: A Practitioner's Guide to Fileless Operations

The red team operators who consistently manage to evade detection share one trait: they understand that evasion requires orchestrating dozens of small, disciplined choices across the wire, memory, behavior, and artifacts. IRIS C2 was built to encode that discipline into a platform. The C2 Operations tab makes advanced fileless tradecraft accessible to any thoughtful operator, eliminating the need to hand-roll loaders or memorize hundreds of arcane sequences.

This guide provides an introductory walk through exactly how IRIS keeps you off disk, out of telemetry, and statistically consistent with legitimate activity. As an experienced redteam operator reading this article, you may have certain tactical preferences that differ from mine. The good news is that I've handcrafted IRIS C2 to be maximally modular and extensible, so that you may quickly add in your own custom bypasses, BOFs, exploits and more.


Understanding the Detection Surface

Modern EDR correlates signals across four surfaces. The wire carries your traffic patterns and TLS fingerprints. Memory holds your code's layout, permissions, and entropy. Behavioral analytics track your API sequences, handle relationships, and process ancestry. Artifacts are the files, registry keys, and named objects you create.

IRIS C2's C2 Operations tab maps controls directly to these surfaces. Each sub-tab owns its piece of the evasion story, with defaults that lean quiet. You don't need to understand Windows internals to use them effectively.

While this guide focuses on Windows concepts (AMSI/ETW, BOFs, execute-assembly), IRIS provides equivalent capabilities for macOS through EndpointSecurity/TCC-aware implants and for Linux through kernel rootkits and eBPF/auditd-conscious payloads. The fileless-first philosophy carries across all three platforms.


Shaping Traffic to Match the Environment

Open C2 Operations and navigate to Traffic Profiles. You'll find dozens of pre-built profiles emulating common enterprise applications: cloud storage syncs, collaboration tools, update checkers. Each implements realistic protocol behavior down to the header order and timing patterns.

IRIS C2 Traffic Profiles interface showing various enterprise application profiles including Normal, Crimeware, and APT categories

When you select a profile, the preview shows the exact wire format. An enterprise telemetry profile sleeps for 60 seconds with 20-30% jitter. GET requests go to `/v2/metrics/heartbeat` with User-Agent `TelemetryAgent/2.4.1 (Windows NT 10.0)`. Metadata encodes as base64url in a session cookie. Responses wrap in JSON with cache-control headers that match the real service.

Malleable profile editor showing detailed configuration options including Global Options, HTTP-GET/POST Configuration, and Generated Profile Preview

Each profile undergoes statistical validation against its legitimate counterpart. You want traffic that blends into baseline noise, period.


Memory Discipline Through Every Phase

Navigate to Bypasses. AMSI and ETW will inspect your code before behavioral analytics even start. IRIS provides validated bypass chains you prepend to launchers, with important operational constraints you need to understand.

IRIS C2 bypass template selection interface showing PowerShell bypass options including AMSI, ETW, Script Block Logging, and other protection bypasses

AMSI bypasses operate at process scope. Many EDRs now detect the bypass attempt itself through call-graph analysis and memory patch signatures. IRIS's "Test Bypass" performs a dry run in your agent's context. If that test fails, the task never issues. This fail-closed approach prevents the desperate retry loops that generate telemetry spikes.

ETW suppression follows the same philosophy. You alter provider state for the current process, execute your task, then explicitly revert. Kernel callbacks and call-stack analytics continue to observe behavior. You're reducing one telemetry source while others remain active. Each bypass template documents its footprint: which APIs it touches, the scope and lifetime of changes, and whether reversion happens explicitly or implicitly.

Bypass testing interface showing obfuscation levels and code transformation with original and obfuscated code panels

From Payloads, generate stagers that execute purely in memory. IRIS enforces strict allocation discipline. Pages transition from RW to RX, never RWX. Permissions stay minimal. Where possible, sections map as IMAGE to avoid "unbacked executable" detection logic. VADs remain small and properly aligned—oversized arenas immediately flag as suspicious.

Payload generation interface showing shellcode launcher configuration with memory permissions, architecture settings, and bypass options

For .NET execution on modern hosts, IRIS uses AssemblyLoadContext isolation with single-shot execution. JIT artifacts don't linger. Legacy AppDomain patterns that reveal tool age are avoided entirely. BOF execution follows equally strict discipline: single argument marshalling into scratch space, controlled stack growth, and mandatory buffer zeroization before return.


Operational Execution

The Modules browser shows each capability's risk profile clearly. OPSEC-safe modules guarantee predictable call graphs with shallow stacks, careful API sequencing that avoids detection patterns, proper handle management with immediate cleanup, and output shaped to match your traffic profile.

Module browser interface displaying OPSEC Safe badge and MITRE ATT&CK technique classifications for the Get-ClipboardContents module

The Custom Module Manager applies these same guarantees to your code. Your modules inherit all profile, bypass, and obfuscation settings automatically. Static validation catches dangerous operations before deployment. The "Test Module" function runs your code through the identical pipeline the agent uses, validating behavior before production.

Custom module manager showing comprehensive module tree, validation pipeline, and module metadata configuration with YAML validation and testing capabilities

Injection happens only when conditions support quiet execution. IRIS scores targets based on integrity level, mitigation flags, PPL/Credential Guard status, module composition, and process relationships. Threadless techniques get preference when alertable threads exist. Module stomping, when necessary, includes immediate header restoration and artifact cleanup. If the host state would force loud primitives, IRIS abstains entirely.


Two Complete Scenarios

For initial access and reconnaissance, start with an enterprise telemetry profile. Verify the JA3 signature, ALPN negotiation, session tickets, and 0-RTT settings match your target environment. Apply AMSI reflection and ETW suppression, confirming both pass sandboxed tests. Deploy a reflective .NET stager using RW→RX transitions and IMAGE-backed sections. Confirm your 60-second heartbeat with 20% jitter establishes cleanly.

Execute BOF-based reconnaissance for windows and processes. The 2KB output transmits and zeroizes immediately. Your artifact manifest shows empty. For extended dwell, rotate to 90-second sleep with 30% jitter, clear task history, and purge the downloads vault.

For credential access, pre-obfuscate your modules to bring entropy from 4.2 to 5.1, staying below thresholds. The import surface remains consistent with legitimate helpers. When PPL blocks standard access, fall back to snapshot methods. When Credential Guard is active, limit collection to accessible stores. Any override requires documented justification.

Enable your process-local ETW filter, execute the snapshot-based collection, then immediately restore ETW state. Exfiltrate in fixed 4KB chunks at profile-consistent intervals. Padding keeps response sizes uniform. A 120KB collection takes approximately 3 minutes, appearing as normal telemetry throughout. Destroy snapshot handles, close duplicates, verify your artifact manifest is empty. If you need persistent access, rotate to an adjacent host rather than dwelling.


Metrics and Validation

The UI provides hard numbers. Beacon variance shows inter-arrival times within two standard deviations of baseline. Your TLS fingerprint displays with full JA3/JA4 hash and certificate chain. Memory entropy appears as section-by-section heat maps. Handle lifetime graphs track creation and destruction timing.

IRIS blocks dangerous patterns by default. RWX allocations require override with justification. CreateRemoteThread into PPL fails unless explicitly forced. MiniDump via comsvcs.dll raises warnings. Excessive API velocity triggers mandatory cooldown periods.

The platform includes analytics fixtures for common EDR products. These measure deviation from normal, not "bypass" claims. Test against Defender for Endpoint baselines, CrowdStrike Falcon thresholds, and SentinelOne relationship graphs before touching production networks.


The Practitioner's Advantage

IRIS consolidates the entire operational workflow into C2 Operations. No tool switching, no external scripts, no separate packers. Not if you don't want them. Every action shows preview data: wire shape, memory layout, entropy distribution, artifact footprint. Bypasses validate before execution. Tasks abort when preconditions fail.

Policy inheritance works automatically. Profiles, obfuscation, and bypasses cascade to all modules including custom ones. Every override and deviation logs with mandatory justification, creating professional audit trails.

The disciplines that matter after thousands of operational hours are temporal consistency, memory parsimony, API restraint, handle hygiene, and artifact minimization. IRIS enforces these through platform defaults. Operators execute proven patterns rather than memorizing checklists.


Conclusion

Fileless operations require making dozens of correct small choices consistently. IRIS C2's C2 Operations tab structures these choices into repeatable workflows. You shape traffic to match the environment's baseline, neutralize memory scanners before post-exploitation, execute purely in memory with proper discipline, run modules that respect detection boundaries, inject only when conditions allow quiet primitives, and clean up completely.

The platform makes advanced TTPs accessible without sacrificing rigor. The same previews, validators, and guardrails that protect junior operators accelerate senior ones. Advanced fileless tradecraft becomes industrial-strength and repeatable, available to every red team that needs it.

Ready to elevate your tradecraft? IRIS C2 is available for qualified red teams and security professionals. Contact info@IRISC2.com

IRIS C2 - Professional Command & Control for the Modern Operator

Disclaimer: This tool is for authorized security testing only. Users are responsible for complying with all applicable laws and regulations. Unauthorized access to computer systems is illegal and unethical.