fix(corpus): retarget AS-REP detection + add GCP parity pairs#51
Merged
Conversation
Acts on the weekly corpus-review findings (issue #50): - asrep-probing-4771: key the detection on the real roast artifact — a successful 4768 with pre-auth type 0 (RC4 0x17) — and demote the 4771 0x18 burst to a secondary Kerbrute enumeration/spray tell. Previously the pair only saw the collateral probing, not the AS-REP its red mate emits. - Add two GCP pairs for parity with the other big-three clouds: IAM policy backdoor (T1098, setIamPolicy) + its SetIamPolicy audit detection, and Cloud Audit log tamper (T1562.008, DeleteSink/auditConfigs strip) + its self-witnessing Admin Activity detection. - Add an unpaired Discovery recon entry gcp-enum-recon (T1580/T1526/T1069.003), mirroring the unpaired smb-enum-nxc. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013hEgodLmdYjrEGBLo5wdiQ
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the companion red↔blue corpus based on the weekly review by (1) correcting AS-REP roasting detection to key on the real Windows artifact and (2) expanding GCP coverage with additional paired persistence / defense-evasion entries plus an intentionally-unpaired recon entry.
Changes:
- Retarget
asrep-probing-4771to primarily detect successful4768no-preauth AS-REP activity, keeping4771 0x18as a secondary Kerbrute/spray signal. - Add two new GCP parity pairs: IAM policy backdoor ↔ audit detection, and audit-log tamper ↔ audit detection; plus a standalone GCP recon entry.
- Update
[Unreleased]inCHANGELOG.mdto reflect the additions/changes.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| entries/blue/asrep-probing-4771.md | Retargets AS-REP detection to 4768 no-preauth; retains 4771 burst as secondary. |
| entries/red/gcp-iam-policy-backdoor.md | New red entry describing persistence via setIamPolicy binding changes. |
| entries/blue/gcp-iam-policy-audit.md | New blue entry detecting GCP IAM binding deltas (SetIamPolicy ADD). |
| entries/red/gcp-audit-log-disable.md | New red entry describing audit/log tampering via sinks / auditConfigs. |
| entries/blue/gcp-audit-log-tamper-audit.md | New blue entry for detecting sink/audit policy tampering activity. |
| entries/red/gcp-enum-recon.md | New intentionally-unpaired GCP recon/discovery entry. |
| CHANGELOG.md | Documents the new GCP entries and the AS-REP detection retargeting. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…filter From Copilot review on #51: - asrep-probing-4771: drop the Ticket_Encryption_Type=0x17 constraint from the primary 4768 clause. The AS-REP etype is negotiated (RC4 in RC4-enabled domains, AES where RC4 is disabled), so pinning 0x17 misses AES-only roasts. The invariant is pre-auth type 0 on a user account; key on that. Prose and CHANGELOG softened to "RC4 or AES" accordingly. - gcp-audit-log-tamper-audit: restrict the SetIamPolicy branch to auditConfigDeltas REMOVE so it detects audit-config tampering specifically, instead of matching every IAM grant (noisy, and overlapping the gcp-iam-policy-audit detection). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013hEgodLmdYjrEGBLo5wdiQ
Collaborator
Author
|
Addressed all four review comments in b3de4d5:
Generated by Claude Code |
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.
Acts on the weekly corpus-review findings in #50.
Finding #1 — AS-REP detection retargeted to the real roast artifact
entries/blue/asrep-probing-4771.mdfired only on4771 / 0x18, which is the wrong-password pre-auth failure — the password-spray / Kerbrute-enum signal, not the roast. A successful AS-REP roast against a no-preauth account emits a successful4768with pre-authentication type 0 (ticket under the account key, RC40x17), which never generates a4771 0x18, so the load-bearing artifact was invisible to the detection.EventCode=4768 Pre_Authentication_Type=0 Account_Name!="*$" Ticket_Encryption_Type=0x17— the roastable AS-REP its red mate actually emits and thathashcat -m 18200cracks.4771 0x18one-source-many-accounts burst is kept as a secondary Kerbrute enumeration/spray tell.event_ids→[4768, 4771]; ATT&CK tag unchanged (T1558.004).Finding #2 — GCP parity (1 pair → 3)
GCP had only
gcp-sa-key ↔ gcp-sa-key-audit. Added two pairs mirroring the AWS/Okta/Snowflake shape:gcp-iam-policy-backdoor(setIamPolicy → rogue principal)gcp-iam-policy-audit(SetIamPolicyADDbinding delta)T1098gcp-audit-log-disable(DeleteSink / stripauditConfigs)gcp-audit-log-tamper-audit(self-witnessing Admin Activity events + Data Access gap)T1562.008Finding #3 — Discovery edge (optional in the review)
Added an unpaired recon entry
gcp-enum-recon(pair: null) — projects / Asset Inventory / IAM blast-radius mapping, taggedT1580/T1526/T1069.003— mirroring the intentionally-unpaired on-premsmb-enum-nxc. Read-only, low-signal, so it ships unpaired rather than forcing a low-value detection.Validation
./gen-views.sh --check— clean (standalone: no flat-view targets).<angle-bracket>cloud placeholders, no{{slots}}.CHANGELOG.md[Unreleased]updated (Added / Changed).Closes #50
🤖 Generated with Claude Code
https://claude.ai/code/session_013hEgodLmdYjrEGBLo5wdiQ
Generated by Claude Code