Featured image of post Why ECS Actually Matters for DFIR

Why ECS Actually Matters for DFIR

Investigating Across Logs Without Losing Your Mind

Why ECS Actually Matters for DFIR

If you’re working in a SOC or doing DFIR and your environment includes multiple log sources, ECS is not just helpful — it’s a practical necessity.

Most environments today are a mix. You’ve got host telemetry like Sysmon, forensic data like Prefetch, maybe some EDR, a firewall or two, and network telemetry from Zeek or packet logs. Each speaks its own language. One uses Image, another calls it exe, a third uses file_path. It’s all describing the same thing — you just can’t search it the same way.

The overhead of this normalization shows up fast. Your queries get longer, more error-prone. Saved searches only work for a specific log type. You start writing detection logic that’s source-dependent. Correlation across sources? Messy at best.

ECS fixes this.

Not in theory — in practice.


ECS field mapping example

When everything speaks ECS, you don’t need to remember which log source calls it src_ip and which calls it client_ip. You write the query once:

1
source.ip:10.42.42.42

Before ECS, that same query looked like this:

1
src:10.42.42.42 OR client_ip:10.42.42.42 OR apache.access.remote_ip:10.42.42.42 OR context.user.ip:10.42.42.42 OR src_ip:10.42.42.42

This simplification isn’t just about typing less. It makes saved queries readable, portable, and shareable across the team — across tools, even.

📎 The Elastic Common Schema (ECS) is an open source specification that defines a common set of fields to be used when storing event data in Elasticsearch, such as logs and metrics. It enables better analysis, visualization, and correlation by providing consistent field names and data types across sources.


In actual investigations, ECS starts pulling its weight when you move between artifacts. A process runs — you see it in Prefetch with a last run time and path. Then you pivot to Sysmon, which logs the actual execution with parent process details and command-line. Autoruns might show you that same path as a persistence method. The common fields — process.name, process.executable, host.name, @timestamp — they let you walk across those sources like they came from the same place.


There are a few fields in ECS that aren’t often populated, but when they are, they’re gold.

process.entity_id is one of them. Sysmon gives you a GUID for each process that doesn’t get reused, even across reboots. When that’s mapped into ECS, you get a way to track one specific process cleanly, even if it shares a name and PID with something else.

Another one: code_signature.trusted. If your telemetry includes signature validation (some EDRs and newer logging agents do), ECS can hold whether the signature was valid or not. That lets you filter for unsigned binaries, mismatched signers, or untrusted roots — right in the query.

If you’re pulling PE metadata, ECS supports that too. Fields like file.pe.imphash let you group suspicious samples even if their names and hashes differ.

And sometimes it’s about clarity. ECS has user.name, but also user.target.name and user.effective.name — useful in cases like privilege escalation or impersonation. When an admin runs a command as another user, the action and context are separated.

These aren’t headline features, but they’re the ones that save hours when you’re buried in logs and trying to understand what really happened.

📎 You can dig into the full list of ECS fields over at Elastic’s official field reference. It’s worth browsing — even just once — to know what’s available when you need it.


Detection logic benefits too.

I wrote a rule once that looked for suspicious parent-child process combos. It matched on process.command_line and process.parent.name. Because both EDR and Sysmon were mapped to ECS, I didn’t have to build two versions of the rule. One rule, multiple sources. That’s the real-world win here.


ECS isn’t perfect. Some logs won’t map cleanly. Some tools won’t populate every field. But even partial normalization changes how you work.

It’s not about “using the standard” it’s about reducing friction. Less time translating logs. More time following the evidence.

If you’re dealing with more than one log source, ECS isn’t something to consider later. It’s something to implement now.

You’ll feel the difference the next time you’re in the middle of an investigation and the logs — all of them — finally speak the same language.


References

Built with Hugo
Theme Stack designed by Jimmy