Skip to main content

Hands-On DARPA TC E3: Entity & Event Statistics

This document provides a deep dive into the entity and event statistics of three key DARPA TC E3 datasets: CADETS (FreeBSD), ClearScope (Android), and THEIA (Linux). The following analysis offers critical insights for feature engineering and APT detection modeling.

1. Headline Numbers & Cross-Dataset Observations​

EntityCADETSClearScopeTHEIA
Event41,350,895143,732,321106,044,692
Subject224,6295,529279,391
FileObject2,503,402233,0061,062,289
NetFlowObject155,322179,702245,107
MemoryObjectβ€”β€”5,661,799
Principal637361
UnnamedPipeObject56,675586β€”
SrcSinkObject113,35072,321β€”
Host334

Three things jump out before any feature engineering:

  1. The three datasets are not interchangeable. Each has a different "shape" β€” different dominant entities, different dominant events, different Subject density. Treating them as one benchmark (as much of the SOTA literature does) is statistically dishonest.
  2. MemoryObject only exists in THEIA. Confirmed: CADETS and ClearScope do not instrument memory at the object level.
  3. Principal counts are tiny across the board (61–73). A Principal node type would be near-degenerate; this belongs as a Subject attribute, not its own node class.

Cross-Dataset Event Observations​

  • No single dataset has both strong memory and strong principal signal. THEIA gives memory but not auth; CADETS gives auth but barely any memory. Claims of "complete APT kill-chain coverage" on a single E3 dataset should be read with skepticism.

  • Event distribution is wildly skewed in every dataset. The top 1–2 event types account for 50–80% of the volume:

    • CADETS: EVENT_READ (30%) + EVENT_CLOSE (15%)
    • ClearScope: EVENT_READ (82%)
    • THEIA: EVENT_MPROTECT (52%) + EVENT_RECVFROM (13%)

    This means raw event counts in a node's neighborhood are dominated by mundane I/O. Edge-type weighting or rare-event upweighting is essential β€” a uniformly-trained GNN will mostly learn "what does normal READ traffic look like."


2. Per-Dataset Insights & Raw Statistics​

2.1 CADETS (FreeBSD)​

  • Subject density is healthy (224K Subjects / 41M events β‰ˆ 184 events/process). A standard Process–File–NetFlow graph works well here.
  • Principal/auth signal is the strongest of the three. 304K EVENT_CHANGE_PRINCIPAL + 10.5K EVENT_LOGIN events. This is the only dataset where privilege-escalation modeling has real signal density.
  • Memory-injection signal is weak. Only 11.5K EVENT_MPROTECT events β€” about 0.03% of events. EVENT_MMAP is plentiful (4.6M) but mostly benign file-backed mappings. CADETS is not the dataset for fileless-malware detection.
  • UnnamedPipeObject (56K) is non-trivial but still benign-dominated. FreeBSD shell pipelines and daemon IPC produce most of these. Adding them inflates the graph without proportionate signal.
  • SrcSinkObject (113K) is large enough to merit a histogram check. Don't include blindly; pull the subtype distribution first.
View CADETS Raw Statistics

Entities​

Entity TypeCount
Event41,350,895
FileObject2,503,402
Subject224,629
NetFlowObject155,322
SrcSinkObject113,350
UnnamedPipeObject56,675
Principal63
Host3

Events (Top)​

Event TypeCount% of Events
EVENT_READ12,628,77330.54%
EVENT_CLOSE6,156,31714.89%
EVENT_MMAP4,648,09611.24%
EVENT_FCNTL4,499,42210.88%
EVENT_LSEEK4,016,4029.71%
EVENT_OPEN3,843,4159.29%
EVENT_WRITE1,694,9874.10%
EVENT_CHANGE_PRINCIPAL304,9190.74%
EVENT_FORK223,7810.54%
EVENT_EXECUTE210,9470.51%
EVENT_MPROTECT11,5800.03%
EVENT_LOGIN10,5620.03%

(Note: Table truncated to show significant events for APT modeling)


2.2 ClearScope (Android)​

  • Subject count is pathologically low. 5,529 Subjects against 143M events is ~26K events per process. Android has few, long-running services handling everything. Standard process-centric provenance modeling will not work here β€” most of the graph collapses onto a handful of mega-nodes.
  • EVENT_READ dominance (118M, 82%) signals over-instrumentation. Most reads are framework/library calls inside the JVM/ART runtime. Aggressive event filtering is mandatory.
  • Memory signal is essentially absent. 18K EVENT_MMAP, no EVENT_MPROTECT. EVENT_LOADLIBRARY (1.7K) is the closest Android analog and is the only memory-adjacent feature worth using.
  • No EVENT_FORK, no EVENT_EXECUTE, no EVENT_LOGIN. Process-creation and authentication semantics are abstracted by the Android framework. Privilege escalation cannot be modeled the way it is on Unix.
  • Practical implication: ClearScope likely needs a different graph schema (object-centric, or app-component-centric) rather than the Process–File–NetFlow schema used elsewhere.
View ClearScope Raw Statistics

Entities​

Entity TypeCount
Event143,732,321
FileObject233,006
NetFlowObject179,702
SrcSinkObject72,321
Subject5,529
UnnamedPipeObject586
Principal73
Host3

Events (Top)​

Event TypeCount% of Events
EVENT_READ118,737,30682.61%
EVENT_WRITE11,422,6457.95%
EVENT_CLOSE5,957,6234.14%
EVENT_DUP3,295,6632.29%
EVENT_OPEN436,0910.30%
EVENT_MODIFY_PROCESS363,6740.25%
EVENT_CONNECT54,8300.04%
EVENT_CLONE20,0500.01%
EVENT_MMAP18,7160.01%
EVENT_LOADLIBRARY1,7520.00%

2.3 THEIA (Linux)​

  • MemoryObject is fully populated (5.66M nodes). This is the right dataset for fileless-malware / injection detection.
  • EVENT_MPROTECT dominates the event stream (55.4M, 52% of all events). This is not all attack signal β€” Linux glibc loading, JIT compilers, and runtime linkers generate massive volumes of legitimate mprotect calls.
    • Filter aggressively: Keep only mprotects that result in W+X (writable+executable) regions, or transitions from non-exec to exec. The other 95%+ are benign and should be dropped.
  • No EVENT_CHANGE_PRINCIPAL, no EVENT_LOGIN. Privilege-escalation modeling has to rely on UID changes inferred from process state. THEIA is not the dataset for credential/privilege-focused detection.
  • No SrcSink, no UnnamedPipe. Cleaner graph schema, fewer modeling choices to make.
  • Healthy Subject density (279K). Standard process-centric provenance works.
View THEIA Raw Statistics

Entities​

Entity TypeCount
Event106,044,692
MemoryObject5,661,799
FileObject1,062,289
Subject279,391
NetFlowObject245,107
Principal61
Host4

Events (Top)​

Event TypeCount% of Events
EVENT_MPROTECT55,432,81352.27%
EVENT_RECVFROM14,219,45313.41%
EVENT_READ8,369,4517.89%
EVENT_OPEN6,613,2726.24%
EVENT_MMAP5,970,9865.63%
EVENT_WRITE3,679,2813.47%
EVENT_CONNECT592,8400.56%
EVENT_CLONE239,8200.23%
EVENT_EXECUTE116,8870.11%

CADETS​

  • Nodes: Subject, FileObject, NetFlowObject
  • Subject Attributes: Current UID/EUID, principal-change count
  • Special Edge Types: EVENT_CHANGE_PRINCIPAL (with before/after UID as edge features), EVENT_LOGIN, EVENT_EXECUTE
  • Skip: UnnamedPipeObject, SrcSinkObject (revisit only after subtype histogram), MemoryObject (doesn't exist)

THEIA​

  • Nodes: Subject, FileObject, NetFlowObject, MemoryObject (filtered)
  • MemoryObject Filter: Retain only objects involved in suspicious mprotect transitions (β†’ W+X, or anonymous + exec). Dropping the bulk of legitimate JIT/loader noise is non-negotiable; otherwise the 5.66M nodes will swamp the rest of the graph.
  • Special Edge Types: Filtered EVENT_MPROTECT, EVENT_MMAP with anonymous+exec flags, EVENT_EXECUTE, EVENT_CLONE
  • Skip: Principal modeling (no CHANGE_PRINCIPAL events to learn from)

ClearScope​

  • Nodes: Subject, FileObject, NetFlowObject (Subjects are mega-nodes)
  • Mandatory Preprocessing: Filter EVENT_READ aggressively (most are runtime-internal). Without this, 82% of edges are framework noise.
  • Special Edges: EVENT_LOADLIBRARY (best available memory-injection proxy)
  • Skip: UnnamedPipeObject (586 instances), SrcSinkObject, anything principal-related
  • Honest Assessment: ClearScope may not benefit from a generic provenance pipeline at all. Consider whether including it as a third dataset is helping your evaluation or just inflating the table.

4. Pitfalls Flagged by the Statistics​

Methodological Gaps

Reporting strong THEIA numbers without disclosing your mprotect filtering policy is the kind of methodological gap reproducibility studies flag. Document the filter explicitly.

  • The "MPROTECT trap" in THEIA: Generating high accuracy numbers on THEIA without filtering the 55M EVENT_MPROTECT edges often indicates the model is just memorizing benign JIT behaviors rather than learning attack patterns.
  • The "Subject collapse" in ClearScope: Any node-level metric (FPR per node, attack node recall) is misleading on ClearScope because the node count is artificially small. Edge-level or event-window metrics are more honest here.
  • Cross-dataset uniformity claims: If your pipeline applies identical hyperparameters and identical entity schemas to all three datasets, you are leaving signal on the table on at least two of them. Per-dataset configuration is the technically correct choice, even though it makes academic papers harder to write.

5. Bottom Line​

  1. Use CADETS for principal/privilege-escalation modeling.
  2. Use THEIA for memory-injection modeling (with aggressive mprotect filtering).
  3. Treat ClearScope as a separate problem that may need its own schema.

Encode Principal as an attribute, not a standalone node type. Filter the dominant event types before graph construction in every dataset, but especially in THEIA (EVENT_MPROTECT) and ClearScope (EVENT_READ).