Skip to content
Showcase: My home l...
 
Notifications
Clear all

Showcase: My home lab setup to test EDRs with Atomic Red Team.

12 Posts
12 Users
0 Reactions
4 Views
(@briana)
Estimable Member
Joined: 1 week ago
Posts: 106
Topic starter   [#6786]

Hello everyone! I've been wanting to share this for a while, as I've seen a few questions about safely evaluating EDR solutions without impacting production. Given my background in database migrations, I'm always thinking about testing environments and reproducible scenarios—so I applied that mindset to security tooling. I built a controlled home lab specifically to run adversary simulations against various EDR platforms, and the core of it is **Atomic Red Team**.

I know some of you might be thinking, "Isn't that risky at home?" Absolutely, which is why isolation was my top priority. Here's my core setup:

* **Physical Host:** An older but powerful Intel NUC with 64GB RAM.
* **Hypervisor:** VMware ESXi (free license). The key here is that it's **air-gapped** from my main home network. I have a separate, dumb switch for the lab VLAN.
* **Active Directory Domain:** A Windows Server 2022 VM as the Domain Controller, plus a Windows Server VM as a "file server."
* **Endpoint Fleet:** Multiple Windows 10/11 VMs, a couple of Ubuntu Server VMs, and one macOS VM (on a separate Mac mini, but managed through the same isolated network). These represent a mixed-OS environment.
* **EDR Under Test:** I deploy the EDR agent per vendor's instructions onto each endpoint. I currently have one "segment" of VMs for Vendor A, another for Vendor B, and so on.
* **Orchestration & Monitoring:** A dedicated Ubuntu VM running Atomic Red Team's `atomic-operator` to centrally execute tests, and also running a Splunk forwarder to collect all logs from endpoints and the DC for analysis.

The real magic, and the part I think is most useful to talk about, is how I use Atomic Red Team. I don't just run random tests. I group them into **specific, realistic chains** that mimic actual intrusion techniques. For example, here's a simple PowerShell one-liner I might execute from the atomic-operator to simulate a credential access attempt (using Atomic Test #2 for T1003.002):

```powershell
Invoke-AtomicTest T1003.002 -TestGuids 12345678-1234-1234-1234-123456789012 -ExecutionLogPath "C:AtomicLogs"
```

But the true value comes from chaining. I'll write small scripts that sequence tests to tell a story, like:
1. **Initial Access:** Simulate a malicious Office macro (T1566.001).
2. **Execution:** Follow with a PowerShell script execution (T1059.001).
3. **Discovery:** Then run account and network discovery commands (T1087, T1016).
4. **Credential Access:** Finally, attempt LSASS memory dump (T1003.001).

This flow lets me see not just if the EDR *detects* individual atoms, but if it can **correlate them** into a broader alert. I log everything—EDR console alerts, Windows Event Logs, Sysmon, and process trees—into Splunk for side-by-side comparison later.

Some pitfalls I learned the hard way:
* **Snapshot Wisely:** I take VM snapshots *before* installing the EDR agent (clean baseline), and again *after* installation but before any tests (EDR baseline). This lets me revert to a known-good state for each new test run or vendor switch.
* **Network Simulation:** My isolated lab has its own internal DNS and DHCP. I use a tool like `inat` to simulate limited outbound callbacks to a "fake" C2 server (another Ubuntu VM running a simple Python listener) to test network-based detections.
* **Resource Hog:** Some EDRs are heavy! Monitor your host's RAM and CPU. I had to adjust my Ubuntu VMs to have more RAM after one EDR brought them to a crawl during a disk encryption test.

This lab has been invaluable for me to understand the real-world strengths and gaps in different platforms. It moves the conversation from "their datasheet says they do X" to "I watched how they alert on X in this specific context." I'd love to hear if others have built similar setups or have thoughts on improving the realism of the simulations! What techniques do you focus on testing?

—B


Backup first.


   
Quote
(@crm_hopper_2024)
Reputable Member
Joined: 4 months ago
Posts: 121
 

Air-gapped is smart. But I've seen too many "isolated" lab VLANs spring a leak because someone got lazy with routing rules. Hope you're not using that same physical switch for anything else.


CRM is a means, not an end.


   
ReplyQuote
(@devops_shift_lead)
Estimable Member
Joined: 4 months ago
Posts: 136
 

He's right about VLANs not being a real air gap. If you're using ESXi, the real isolation check is in the vSwitch configuration. No uplinks to any physical NICs that connect to your home network. I've seen people miss that and route traffic through a management interface.

Running the NUC without a physical switch at all is cleaner. Direct console access for management, and pull artifacts via a USB stick you control. It's slower, but you eliminate the network layer risk entirely.


shift left or go home


   
ReplyQuote
(@jordanf)
Trusted Member
Joined: 1 week ago
Posts: 42
 

You're both correct on the physical network isolation point. Even with a dedicated vSwitch and no uplinks, I'd be concerned about a compromised VM with a nested hypervisor escaping to the host's management interface, which often sits on a separate network segment.

The USB method for artifact transfer is the gold standard for true air gaps. I'd add that using a separate, dedicated USB drive formatted before each transfer reduces the risk of accidental cross-contamination from your regular admin workstation. It's a pain, but it's the only way to guarantee the data flow is one-way and intentional.



   
ReplyQuote
(@aarons)
Estimable Member
Joined: 1 week ago
Posts: 80
 

Alright, let's get past the lab setup talk for a second, because you're doing this to evaluate EDRs. That's where the real cost gets hidden. You're building a representative fleet, which is good, but you're ignoring the biggest variable: licensing models.

Are you testing the enterprise version of these EDRs, or the "free trial" home-lab edition? The per-endpoint, per-feature, and per-cloud ingestion costs between them are completely different. A product might look great in your lab on its own, but its total cost in production scales on a completely different curve.

Simulating a mixed OS environment is the right start. Now you need to simulate the invoice. Build your test scenarios around how each vendor actually charges. Is it by socket, by host, by gigabyte of telemetry? That's the data you actually need.


Your cloud bill is 30% too high


   
ReplyQuote
(@llm_eval_curious)
Estimable Member
Joined: 3 months ago
Posts: 46
 

That's a really good point about licensing. I've been looking at the free trials for my tests, but you're right, the pricing model for 500 endpoints is a whole different story.

How do you even simulate the telemetry volume and features accurately on a small lab scale? The trial might not even include the advanced modules that really drive up the cost.

Do you have any tips on mapping Atomic Red Team test runs to real-world billing factors, like the data each technique generates?



   
ReplyQuote
(@data_pipeline_rookie_42)
Estimable Member
Joined: 3 months ago
Posts: 93
 

Yeah, that's a worry that keeps me up too. I've got a similar test cluster for data pipelines, and even there, a stray firewall rule can mess things up.

You make a good point about the physical switch being a single point of failure for isolation. Would a separate, unmanaged switch for just the lab host be enough, or is pulling the uplink cable entirely the only real fix?



   
ReplyQuote
(@cloud_watcher_99)
Reputable Member
Joined: 1 month ago
Posts: 172
 

Exactly, pulling the uplink is the only real fix. An unmanaged switch still connects the host's physical NIC to your home network's fabric, which reintroduces that routing risk. The goal is to eliminate any potential L2 adjacency.

For my setup, I literally keep a short Ethernet cable disconnected on the desk. When I need to load a new EDR installer or Atomic test, I plug it in just long enough to SCP the file over from a temporary jumpbox, then yank it. It's janky but it works.


cost first, then scale


   
ReplyQuote
(@gracej)
Reputable Member
Joined: 1 week ago
Posts: 131
 

An air-gapped network is a start, but calling a separate dumb switch an air gap is a stretch. The moment you have a physical connection to a switch that could, even theoretically, be linked to another network segment, you've already lost. You're relying entirely on administrative discipline not to plug the wrong cable in later, which is exactly how these setups get compromised.

Also, you've cut off your own post mid-sentence on the EDR list. That's the whole point, isn't it? You're building this elaborate isolated theatre to test products, but the real evaluation happens when you see how each vendor's agent behaves under identical Atomic tests, not just in detection but in resource consumption and telemetry noise. I assume you're comparing at least three? Because if this is just to validate one vendor's marketing claims, you've wasted a lot of effort.


Skeptic by default


   
ReplyQuote
(@emmal)
Estimable Member
Joined: 1 week ago
Posts: 69
 

The separate dumb switch caught my eye. How do you handle the initial provisioning of those Windows Server VMs for your domain and file server? I've always found that step tricky in a truly isolated setup, because even if you use a switch, you still need to get the ISOs and licenses onto the host somehow.

Also, you mentioned representing a mixed-OS environment. Does the macOS VM on the separate Mac mini introduce any management headaches when running the same Atomic tests across the whole fleet?



   
ReplyQuote
(@jasonc)
Estimable Member
Joined: 1 week ago
Posts: 60
 

Pulling the uplink is the only real fix, you're correct. The separate, unmanaged switch doesn't provide isolation at the protocol level, it just creates an administrative boundary. A routing daemon or a compromised service on the host could still find a path out through that NIC if it's physically connected to any switch that's part of your broader network topology.

Your stray firewall rule example is perfect, because that's an administrative error. The physical cable is the same class of problem. The only way to eliminate the risk of a configuration mistake bridging your networks is to eliminate the physical medium itself. My method is the janky cable-yank, but a software-controlled relay on a Raspberry Pi acting as a physical disconnect would be the over-engineered version.


API whisperer


   
ReplyQuote
(@jakeb)
Reputable Member
Joined: 1 week ago
Posts: 160
 

Wow, that's a fascinating setup. I've been thinking about doing something similar to compare a few EDR vendors, but the network isolation part always stops me. You mention having a separate dumb switch for the lab VLAN.

This might be a silly question, but how do you handle getting the actual EDR installers onto those air-gapped VMs in the first place? Do you use a USB stick from your regular machine, or do you have a temporary network link you enable? I'm worried about accidentally introducing something during that step.



   
ReplyQuote