You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ Most synthetic log generators produce isolated, single-format data that experien
25
25
26
26
-**Deterministic engine, LLM-assisted authoring.** Scenario creation uses Claude Code Skills for interactive, research-backed attack planning. Log generation is fully deterministic — no LLM calls, no API costs, reproducible output every time.
27
27
28
-
-**Built-in quality evaluation.** A 4-pillar scoring framework (20 sub-scores) measures parseability, plausibility, causality, and timing. Know exactly how good your data is before using it.
28
+
-**Built-in quality evaluation.** A 4-pillar scoring framework (21 sub-scores) measures parseability, plausibility, causality, and timing. Know exactly how good your data is before using it.
29
29
30
30
## Quick Start
31
31
@@ -82,7 +82,7 @@ For scripted or non-interactive use:
82
82
|---------|-------------|
83
83
|`eforge generate <scenario.yaml> -o <dir>`| Generate logs from a scenario file |
84
84
|`eforge validate <scenario.yaml>`| Validate scenario schema and cross-references |
|`eforge info [field]`| Show installation info, config paths, and data inventories. Pass a dot-path field for a specific value (e.g., `eforge info personas`). Use `--fields` to list available fields, `--json` for machine output. |
87
87
|`eforge validate-config`| Validate config files for cross-reference integrity. Use `--json` for machine output. |
88
88
|`eforge install-skills [--agent all\|claude\|chatgpt\|codex] [--global]`| Install project-local or user-wide agent skills; defaults to all agents (`codex` aliases `chatgpt`) |
@@ -128,7 +128,7 @@ Every generated scenario includes a `GROUND_TRUTH.md` file. Attack scenarios doc
128
128
-**Ground truth documentation** — Every run generates a GROUND_TRUTH.md; attack scenarios include narrative, timeline, and IOCs
129
129
-**Parallel generation** — Threaded emitters write all formats simultaneously with temporal consistency
| IDS signatures and alert policy |`references/config-ids.md`|
112
113
113
114
## Step 4: Interview for Completeness
114
115
@@ -126,6 +127,13 @@ duplicate names. Keep profile contents synthetic and behavior-shaped: URI shapes
126
127
method/status/byte ranges, User-Agent pools, and deterministic tokens are fine;
127
128
do not encode live malware IOC paths, domains, or exact campaign payloads.
128
129
130
+
**Changing IDS cadence:** Edit the project overlay at
131
+
`.eforge/config/activity/ids_signatures.yaml`; entries merge by `sid`. Add or
132
+
replace `alert_policy` with `detection_filter`, `event_filter`, or both, or set it
133
+
to `every`. Do not copy the whole packaged signature unless its metadata also
134
+
needs to change. Read `references/config-ids.md`, run `eforge validate-config`,
135
+
and start a fresh CLI process after the edit so cached signature data is reloaded.
136
+
129
137
**Adding an application:** Which OS(es)? Categories? Which personas? Image path? PE metadata? Command templates? Parent process? Children? Network traffic?
130
138
131
139
**Creating a persona:** Role description? Typical activities? Work hours (format: "9am-5pm (lunch 12pm-1pm)")? Risk profile (low/medium/high)? Browsing intensity (light/normal/heavy)? Applications? Custom traffic? Linux user?
Copy file name to clipboardExpand all lines: commands/eforge/evaluate.md
+16-2Lines changed: 16 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ description: >
11
11
12
12
# EvidenceForge Data Quality Evaluator
13
13
14
-
You are helping the user evaluate the quality of generated synthetic security log datasets using EvidenceForge's evaluation framework. The eval command scores datasets across **4 pillars** with 20 sub-scores, all deterministic and statistical. Your job is to run the eval, interpret the results, review sample records for realism, and provide actionable improvement suggestions.
14
+
You are helping the user evaluate the quality of generated synthetic security log datasets using EvidenceForge's evaluation framework. The eval command scores datasets across **4 pillars** with 21 sub-scores, all deterministic and statistical. Your job is to run the eval, interpret the results, review sample records for realism, and provide actionable improvement suggestions.
15
15
16
16
## Quick Start
17
17
@@ -25,6 +25,19 @@ Default to `eforge` for all CLI execution. If `eforge` is not found and you are
25
25
in an EvidenceForge source checkout, retry the same command with
26
26
`uv run eforge ...`.
27
27
28
+
Canonical IDS reconciliation is automated by the zero-weight
29
+
`plausibility.ids_integrity` hard gate. It compares every per-sensor `(gid, sid)`
30
+
count and ordered normalized digest in `GROUND_TRUTH.json` with parsed Snort
31
+
rows, including the sensor-visible UTC timestamp, signature metadata, complete
32
+
tuple, ephemeral source port, and NAT/PAT projection. It also reconciles policy
33
+
filtering and observation totals and requires every emitted row to have an
34
+
authorized authored, built-in, or raw origin. Legacy datasets without
35
+
`ids_evaluation` skip this check with a warning, but a scenario containing
36
+
authored `ids_alerts` fails when the summary is missing or invalid.
37
+
For DHCP, count only the authored transaction, not later automatic renewals; for
38
+
DNS tunnel activity, exclude generated background cover queries. For web scans,
39
+
account for automatic and authored SIDs and the authored-wins duplicate rule.
40
+
28
41
If they don't have generated output yet, suggest using `/eforge generate` first.
29
42
30
43
For detailed field documentation and known limitations of each log format, use the `/eforge:references:evidence-formats` skill.
@@ -133,12 +146,13 @@ For each pillar, explain what the score means in practical terms:
133
146
- Cross-Source Field Agreement: When the same event appears in multiple log sources, do shared fields agree? Uses pivot-key joins defined in `cross_source_pairs.yaml` plus built-in email checks — pairs include Windows 4688 ↔ eCAR PROCESS/CREATE (same PID+host → same process name), zeek_conn ↔ Cisco ASA (same 4-tuple), web_access/proxy ↔ zeek_http (same client+URI+10s bucket → same status/method), zeek_ssl ↔ zeek_x509 (cert chain fuids → server_name ∈ SAN), and email checks where SMTP UIDs join to conn.log, visible SMTP FUIDs join to files.log, and plaintext SMTP subject metadata agrees with `ARTIFACTS_MANIFEST.json` email records. A score below 100 means real field disagreements were found.
134
147
- User Behavioral Diversity: Do different users behave differently, or are they cookie-cutter clones?
135
148
- Benign Anomaly Rate: Is there a realistic 1–5% rate of anomalous-but-benign events? Zero anomalies is as implausible as 50%.
149
+
- IDS Correlation Integrity: Do sensor-local Snort rows exactly match canonical counts, ordered digests, origins, and observation totals? This is a 100% hard gate with zero scoring weight.
136
150
137
151
**Pillar 3: Causality (weight 0.25)**
138
152
- Causal Ordering: Are logon→process→logoff and lock→reauth→unlock sequences correctly ordered? DNS before TCP? Kerberos/DC TGT/TGS before domain logons? NTLM/DC validation and Windows audit/process-access companions after their owning evidence?
139
153
- Storyline Event Presence: Are all expected-visible storyline events visible in at least one log source? For non-`complete` observation profiles with a manifest, source rows marked `dropped`, `filtered`, or `out_of_window` are excluded from this coverage denominator.
140
154
- Indicator Accuracy: Do traces carry the correct IPs, usernames, hostnames from the scenario?
141
-
- Pivot Linkability: Can a hunter pivot between consecutive expected-visible attack steps using shared field values?
155
+
- Pivot Linkability: Can a hunter pivot along inferred narrative edges built from shared typed indicators such as hosts, IPs, accounts, domains, URLs, files/hashes, and artifact/message IDs? Unrelated interleaved steps are not connected, generic ports/protocols are excluded, and isolated events are reported separately.
142
156
- Storyline Temporal Integrity: Are expected-visible attack events in the right relative order at the right times?
143
157
- Storyline Trace Coverage: For each expected-visible log format group on each involved host, does the storyline leave a trace?
0 commit comments