feat(sigma): close remaining #63/#64 items — recon, RBCD pairing, coverage notes#67
Merged
Merged
Conversation
…erage notes Handles the clean-to-author and doc-accuracy remainders from the weekly reports (#63/#64) that need no operator baseline. The environment-dependent tuning items (SaaS rule shapes, placeholder allowlists) remain deferred for a deploy-time pass. New detections (patterns the corpus already owns): - discovery/ldap_recon_explicit_creds_4648: value_count on 4648 explicit-cred logons fanning out to many targets — the alternate-credential recon sweep that left Discovery thin (one rule) in #64. T1087.002 / T1046. - persistence/machine_account_creation_burst_4741: value_count on 4741 computer accounts minted by one principal — MachineAccountQuota abuse, the RBCD/noPac precursor. T1136.002. This is the "4741 burst" pairing rbcd_allowedtoact_5136's description already calls for; rbcd is cross-linked to it so the chain no longer hinges on the delegation-admin allowlist alone. Coverage + freshness notes (no detection change): - Document that Golden Ticket (T1558.001), Silver Ticket (T1558.002), and NTLM relay (T1557.001) ARE covered in siem/splunk/correlation_searches.conf — they read as "0" in navigator/COVERAGE.md only because that roll-up is sigma-only. Noted in both the README and the .conf header so #64 stops re-flagging them. - Flag the MITRE moves: T1557.001 renamed to "Name Resolution Poisoning and SMB Relay"; T1558 gained a .005 Ccache Files sub-technique (not yet instrumented). Regenerated the drift-gated artifacts (COVERAGE.md, coverage-layer.json, the three SIEM forms) — now 71 rules / 78 documents / 47 techniques. Full sigma gate green: structural lint, Splunk compile, and all three drift checks. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YSMagcHY1PzH4UDwoaWJS1
There was a problem hiding this comment.
Pull request overview
Adds two new Sigma correlation detections to close remaining recon and RBCD-chain gaps from #63/#64, and updates the generated SIEM/Navigator artifacts plus documentation to clarify backend-layer (non-Sigma) coverage.
Changes:
- Added
ldap_recon_explicit_creds_4648correlation to detect explicit-credential fan-out across many targets (recon/discovery). - Added
machine_account_creation_burst_4741correlation to detect MachineAccountQuota-style bursts and cross-linked it from the existing RBCD 5136 rule description. - Clarified documentation/headers that Golden Ticket, Silver Ticket, and NTLM relay are covered at the Splunk correlation layer (not counted in Sigma-only coverage rollups), and regenerated drift-gated artifacts.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| detections/sigma/privilege_escalation/rbcd_allowedtoact_5136.yml | Updates rule description to explicitly pair RBCD writes with the new 4741 burst correlation. |
| detections/sigma/persistence/machine_account_creation_burst_4741.yml | New base + value_count correlation to detect burst computer-account creation by a single principal. |
| detections/sigma/discovery/ldap_recon_explicit_creds_4648.yml | New base + value_count correlation to detect explicit-credential fan-out recon across many targets. |
| detections/siem/splunk/savedsearches.generated.conf | Regenerated Splunk saved searches to include the new correlation. |
| detections/siem/splunk/correlation_searches.conf | Adds coverage/freshness notes clarifying backend-layer coverage vs Sigma-only rollups. |
| detections/siem/sentinel/rules.generated.kql | Regenerated KQL output with the new rules (with correlation limitations noted). |
| detections/siem/elastic/rules.generated.lucene | Regenerated Lucene output with the new rules (with correlation limitations noted). |
| detections/README.md | Updates counts and rule tables; clarifies Sigma-only coverage vs backend-layer coverage. |
| detections/navigator/COVERAGE.md | Updates Sigma-only coverage rollup counts and technique listings. |
| detections/navigator/coverage-layer.json | Updates Navigator layer technique scores/comments for the new coverage. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Address Copilot review: the base rule claimed "remote target" and "empty/local
targets are filtered", but the filter only excludes '-' and 'localhost'. Reword the
title ("with a named target") and description ("empty ('-') / localhost targets")
to match exactly what the rule enforces, and note that tighter self-referential
scoping is a per-environment tuning step. Regenerated the KQL/Lucene forms whose
comments embed the rule title.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YSMagcHY1PzH4UDwoaWJS1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes the clean-to-author and doc-accuracy remainders from the weekly reports (#63, #64) — the items that need no operator baseline. Follows the two merged PRs (#65 on-prem AD Sigma gaps, #66 C2 network tactic).
The environment-dependent tuning items (SaaS rule shapes,
rbcd/dcshadowplaceholder allowlists) remain deliberately deferred for a deploy-time pass, since their allowlists depend on a specific deployment's baseline.New detections (patterns the corpus already owns)
discovery/ldap_recon_explicit_creds_4648value_counton 4648 explicit-cred logons fanning out to many targets — the alternate-credential recon sweep. Mirrors the Kali PURPLE-TEAM "LDAP recon by one principal" 4648 row.persistence/machine_account_creation_burst_4741value_counton 4741 computer accounts minted by one principal — MachineAccountQuota abuse, the RBCD/noPac precursor. This is the "4741 burst" pairing thatrbcd_allowedtoact_5136's description already calls for (#63 §6); rbcd is now cross-linked to it, so the chain no longer hinges on the delegation-admin allowlist alone.Coverage + freshness notes (no detection change)
detections/README.mdand thecorrelation_searches.confheader — that Golden Ticket (T1558.001), Silver Ticket (T1558.002), and NTLM relay (T1557.001) are covered insiem/splunk/correlation_searches.conf. They read as "0" innavigator/COVERAGE.mdonly because that roll-up is generated from the Sigma tree only. This is why coverage-gap: weekly ATT&CK coverage holes #64 keeps surfacing them — now the docs say to read the report as Sigma coverage, not total..005Ccache Files sub-technique (noted as a not-yet-instrumented candidate).Verification
Regenerated the drift-gated artifacts from the Sigma source of truth — now 71 rules / 78 documents / 47 techniques. Full
sigma.ymlgate run locally, all green:--checkup to date)What's left after this (deferred, environment-dependent)
entra_illicit_consent_grant/snowflake_data_unload— restructure to admin-consent scope / volume correlation, with allowlists as deploy-time substitutions.rbcd/dcshadowplaceholder filters — document as required substitutions + a lint note.These are the "#3" items from the plan — a follow-up where the allowlists are explicitly deploy-time and benefit from your baseline.
🤖 Generated with Claude Code
https://claude.ai/code/session_01YSMagcHY1PzH4UDwoaWJS1
Generated by Claude Code