Metodologia testów penetracyjnych
Testy penetracyjne to kontrolowane ataki symulujące działania rzeczywistych napastników w celu wykrycia luk w zabezpieczeniach. Proces pentestingu składa się z kilku kluczowych etapów oraz bazuje na uznanych standardach branżowych.
📌 Etapy testów penetracyjnych
1️⃣ Rozpoznanie (Reconnaissance)
Celem tego etapu jest zebranie jak największej ilości informacji o celu ataku. Może być ono pasywne (OSINT, Google Dorking) lub aktywne (skanowanie sieci, fingerprinting aplikacji).
Przykładowe techniki:
- Google Dorking – wyszukiwanie wrażliwych informacji w Google
- WHOIS Lookup – uzyskanie danych o domenie
- Shodan – wyszukiwanie podatnych systemów
- theHarvester – zbieranie e-maili i metadanych
Przykład użycia theHarvester:
theHarvester -d example.com -b google
2️⃣ Skanowanie (Scanning & Enumeration)
Po zebraniu informacji następuje analiza infrastruktury sieciowej i aplikacji w poszukiwaniu podatności.
Narzędzia:
- Nmap – skanowanie portów i usług
- Gobuster – fuzzing katalogów i plików
- Nikto – skanowanie podatności serwerów WWW
Przykład skanowania Nmap:
nmap -A -p- example.com
3️⃣ Eksploatacja (Exploitation)
Na tym etapie wykorzystujemy znalezione podatności do przejęcia kontroli nad systemem.
Typowe ataki:
- SQL Injection (sqlmap)
- Cross-Site Scripting (XSS)
- Remote Code Execution (RCE)
- Brute-force haseł (Hydra)
Przykład ataku SQL Injection:
sqlmap -u "http://example.com/login.php?id=1" --dump
4️⃣ Eskalacja uprawnień (Privilege Escalation)
Po uzyskaniu dostępu do systemu atakujący dąży do przejęcia pełnej kontroli. Można to osiągnąć poprzez:
- Eksploatację podatnych uprawnień użytkowników
- Wykorzystanie błędnych konfiguracji systemu
- Przejmowanie haseł i tokenów
Przykładowa eksploitacja SUID w Linuksie:
find / -perm -4000 -type f 2>/dev/null
5️⃣ Raportowanie (Reporting)
Każdy profesjonalny pentest kończy się raportem opisującym:
- Znalezione podatności
- Wykorzystane techniki
- Zalecenia dotyczące poprawy bezpieczeństwa
Dobre raportowanie jest kluczowe dla zespołów bezpieczeństwa, które na podstawie analizy wdrażają poprawki.
Przykładowe narzędzia do generowania raportów:
- Dradis – współpraca i raportowanie
- Faraday – framework do pentestów
- Metasploit Pro – automatyczne raporty
Modelowanie zagrożeń (Threat Modeling)
Modelowanie zagrożeń to formalna technika identyfikacji tego, co może pójść źle zanim zaczniemy testować — pozwala skupić wysiłek na obszarach o największym ryzyku.
Data Flow Diagrams (DFD)
Diagram przepływu danych pokazuje jak dane przechodzą między komponentami systemu:
[Użytkownik] → HTTP → [Load Balancer] → [App Server] → [Baza danych]
↓
[API trzecia strona]
Dla każdego przepływu zadaj: „co atakujący może tutaj przechwycić lub zmanipulować?"
Punkty wejścia (Entry Points)
Lista powierzchni ataku aplikacji:
- Formularze logowania i rejestracji
- Parametry URL i ciało żądań POST/PUT
- Nagłówki HTTP (User-Agent, Referer, X-Forwarded-For)
- Pliki uploadowane przez użytkowników
- Endpointy API (REST, GraphQL, WebSocket)
- Tokeny JWT i cookies
Poziomy zaufania (Trust Levels)
Każda część systemu ma inny poziom zaufania:
| Poziom | Przykład |
|---|---|
| 0 – Brak zaufania | Anonimowy użytkownik z internetu |
| 1 – Niski | Zalogowany użytkownik |
| 2 – Średni | Pracownik wewnętrzny |
| 3 – Wysoki | Administrator aplikacji |
| 4 – Pełny | Serwer/baza danych |
Podatności zwykle polegają na przeskoku między poziomami bez autoryzacji (privilege escalation, IDOR, injection).
Rules of Engagement (ROE) – zakres i zasady testu
Przed każdym testem klient i pentester ustalają zakres na piśmie. Checklist ROE:
- Adresy IP i domeny w scope — tylko te systemy można testować
- Weryfikacja własności zasobów — klient potwierdza, że bloki IP są jego (AWS, Cloudflare, CDN często mają własne zasady)
- Okno czasowe testu — kiedy można testować (poza godzinami szczytu?)
- Metody wykluczone — np. zakaz DoS, zakaz testów socjotechnicznych
- Kontakt awaryjny — kto odbiera, gdy test nieumyślnie wywoła incident
- Typ testu — Black Box (brak wiedzy), Grey Box (częściowa wiedza), White Box (pełna dokumentacja)
- Przechowywanie danych — jak chronić i kiedy usunąć zebrane dane wrażliwe
Brak pisemnego ROE = brak autoryzacji = nielegalne działanie, nawet jeśli klient ustnie wyraził zgodę.
Standardy w testach penetracyjnych
OWASP (Open Web Application Security Project)
OWASP to najbardziej znany standard testowania bezpieczeństwa aplikacji webowych. Lista OWASP Top 10 opisuje najczęściej wykorzystywane podatności, np.:
- Injection (SQL, Command, LDAP)
- Broken Authentication
- Security Misconfiguration
OWASP oferuje także zestaw narzędzi, np. OWASP ZAP, do automatycznej analizy podatności.
PTES (Penetration Testing Execution Standard)
Jest to szczegółowa metodologia pentestingu, obejmująca:
- Rozpoznanie
- Analizę zagrożeń
- Wykorzystanie podatności
- Eskalację uprawnień
- Przechwycenie systemu
- Raportowanie
Więcej na: https://www.pentest-standard.org/
NIST SP 800-115
NIST to standard rządowy USA określający procedury testów penetracyjnych:
- Planowanie testów
- Zbieranie informacji
- Ataki na systemy i aplikacje
- Dokumentacja wyników
Dokumentacja dostępna: https://csrc.nist.gov/
Po opanowaniu metodologii pentestów możemy przejść do kolejnego kroku – rekonesansu i skanowania systemów.