Szkolenie
Testy penetracyjne systemów IT
wybrane fragmenty prezentacji
Michał Sajdak, CISSP
Securitum
www.securitum.pl
O dokumencie
Niniejsza prezentacja zawiera
wybrane slajdy
ze szkolenia:
testy penetracyjne systemów IT
organizowanego przez Securitum
Więcej informacji:
Copyright 2009 Securitum
www.securitum.pl
Czym jest test penetracyjny?
Symulowany atak na system IT
Ewentualnie wybrane elementy systemu IT
Penetration Test (pentest)
Test penetracyjny vs Audyt Bezpieczeostwa
Copyright 2009 Securitum
www.securitum.pl
Po co wykonywad test penetracyjny?
Określenie bezpieczeostwa systemu
W zakresie realnej odporności na ataki
Najlepiej to zweryfikowad… przeprowadzając atak
Konkretny typ (klasa) ataku
np. próbujący wykraśd dane
Element całościowej analizy ryzyka
Chcę rozsądnie zarządzad ryzykiem w organizacji
Powinienem znad bieżący stan zabezpieczeo… oraz
ekspozycji na ataki
Copyright 2009 Securitum
www.securitum.pl
Po co wykonywad test penetracyjny?
Element całościowej analizy ryzyka
Zasób -> podatnośd -> zagrożenie -> ryzyko
Skupiam się na określonym zasobie (np. jednym
serwerze)
Skupiam się na określonej grupie zagrożeo (np. atak
techniczny z zewnątrz organizacji)
Skupiam się na wyszukaniu stosownych podatności
Określam ryzyko
Jakie mogą byd skutki udanego ataku?
Jakie jest prawdopodobieostwo udanego ataku?
Copyright 2009 Securitum
www.securitum.pl
Po co wykonywad test penetracyjny?
Zagrożenia
Test jest ograniczony czasowo
Realny atak taki nie jest…
Test powinien się skupiad na możliwie szerokiej gamie
zagrożeo / podatności
Do realnego ataku wystarczy wykorzystanie jednej
podatności
Test w znacznym stopniu zależy od kompetencji
pentesterów
Podobnie jak skuteczny atak w znacznym stopniu zależy od
kompetencji hackera
Copyright 2009 Securitum
www.securitum.pl
Po co wykonywad test penetracyjny?
Zagrożenia
Test może negatywnie zadziaład na funkcjonalnośd systemu
IT
Przypadkowy DoS…
Ciężko znaleźd kompletnie odseparowane środowisko testowe
Test nie wykryje wszystkich podatności
Podobnie jak QA nie wykryje wszystkich błędów funkcjonalnych…
Z czasem wyniki testu stają się coraz mniej aktualne
Nowe podatności
Zmiany w systemie
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego
A) – elementy związane z projektem IT
Project Management
B) – elementy związane z techniczną pracą
„realny test penetracyjny”
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
1) Określenie przedmiotu testu
[what?]
Co testujemy?
np. grupę serwerów usługowych – w tym wszystkie
usługi na tych serwerach
Czy testujemy środowisko produkcyjne / testowe?
Czy środowisko testowe jest lustrzane w stosunku do
produkcyjnego?
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
2) Określenie typu testów (ze względu na
rodzaj zagrożenia / głębokośd testu)
[how?]
Wiedza ograniczona (testy blackbox) – np.
symulacja ataków z Internetu na serwer w DMZ
Wiedza pełna (testy whitebox) – np. symulacja
ataków osoby z wewnątrz
Wiedza częściowa (testy graybox)
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
3) Określenie typu testów (ze względu na
lokalizację)
[where?]
Zdalne
Z jakiego IP wykonywane będą testy?
Lokalne
11
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
4) Określenie konkretnych testów
[how?]
Jakie klasy testów są brane pod uwagę?
DoS? Social Engineering? Brute force? 0-days?
Symulacja pełnego włamania (działające na wyobraźnię, jednak
czasochłonne)
Tylko wykrycie określonych podatności, które z dużym
prawdopodobieostwem mogą prowadzid do pełnego ataku
Testy ręczne
Częśd testów wręcz z definicji nie da się przeprowadzid automatycznie
– np. badanie błędów logicznych w aplikacji
Testy automatyczne
Nie sposób wyobrazid sobie testu bez narzędzi – o różnym stopniu
automatyzacji
12
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
5) Określenie harmonogramu
[when?]
Deadline?
Czy testujemy tylko w godzinach roboczych / dniach
roboczych?
Czy w harmonogramie zawieramy kolejne sprawdzenie?
Czy jasno wskazujemy kiedy rozpocznie się test?
6) Określenie zespołu
[who?]
Klient
Zespół pentesterów
13
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
7) Określenie sposobu raportowania
[how?]
Jakie elementy znajdą się w raporcie?
Czy raport przekazany zostanie na koniec prac, czy
np. wysyłany jest update po każdym wykrytym
błędzie krytycznym?
8)Wnioski z wykonanych prac
[why?]
Potrzebna kolejna iteracja pentestu?
Jakie były problemy podczas wykonania audytu?
14
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
Pomocny może się okazad Zachman Framework
Zobacz: na google ;-)
Odpowiedź na poniższe pytania:
Why?
How?
What?
Who?
Where?
When?
15
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
Dwiczenie
Wypisad po dwa zagrożenia dla każdego z
wcześniej wymienionych punktów
na koniec szkolenia powtórzymy to dwiczenie
16
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
Checklista
Czy wiemy po co testujemy?
Czy wiemy co testujemy?
Czy znamy harmonogram?
Czy wiemy (dokładnie) jakie testy mają byd
wykonane?
Czy posiadamy zezwolenie na atakowanie celu ?
(oraz czy właściciel zna ewentualne zagrożenia)
17
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
Checklista
Czy posiadamy stosowne dostępy do testowanych
systemów?
Czy wiemy w jaki sposób raportowad?
Czy wiemy w jaki sposób chronid dane z pentestu /
bezpiecznie przesyład informacje do właściciela
systemu?
18
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
Checklista
Czy wiemy gdzie zgłaszad ewentualne problemy
podczas testu?
Czy mamy dostępne wszystkie wzmagane
narzędzia / sprzęt?
Czy pracownicy (administratorzy) docelowych
systemów będą wiedzied o planowanych atakach?
TAK – blue teaming
NIE – red teaming
19
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - przygotowanie
Dwiczenie
Test penetracyjny
Spróbujmy wypełnid checklistę
20
Copyright 2009 Securitum
www.securitum.pl
Elementy testu penetracyjnego - harmonogram
Przykładowy harmonogram
Wykres Gantta
MS Project
MS Visio
dotProject
…
21
Copyright 2009 Securitum
www.securitum.pl
Metodologie / Dokumentacje
NIST (National Institute of Standards and
Technology)
OSSTMM (Open Source Security Testing
Methodology Manual)
ISSAF (Information Systems Security Assessment
Framework)
NSA (National Security Agency) Security
Configuration Guides
CIS Benchmarks
22
Copyright 2009 Securitum
www.securitum.pl
Metodologie / Dokumentacje
Inne
Penetration Test Framework:
http://www.vulnerabilityassessment.co.uk/Penetration%2
Elementy charakterystyczne dla danego elementu
Aplikacje webowe (np. OWASP)
Sied zbudowana na komponentach CISCO (np. CISCO Safe)
Systemy mobilne (np. odpowiednie rekomendacje NIST)
Nmap Network Scanning: The Official Nmap Project Guide
to Network Discovery and Security Scanning
…
23
Copyright 2009 Securitum
www.securitum.pl
Wybrane narzędzia
Nmap
Dwiczenie – przygotowad prosty skrypt w bashu
1) Prosty skan [TCP & UDP & Version & Script scan & OS fingerprint,
100 najpopularniejszych portów, tryb agresywny (czas), traceroute ]
IP do skanowania pobierz z pliku (np. networks.txt)
Wynik zapisz do osobnych plików wyjściowych / (jeden per host)
2.1) Full scan TCP & Version
2.2) Full scan UDP & Version
IP do skanowania pobierz z pliku (np. networks.txt)
Wynik zapisz do osobnych plików wyjściowych / (jeden per host)
– do tych samych co wyżej
3) Kilka nietypowych skanów (np. ACK, FIN, NULL, z danym portem
źródłowym – np. 80 TCP, 53 UDP, 500 UDP, z wykorzystaniem
fragmentacji, z błędnym checksum)
24
Copyright 2009 Securitum
www.securitum.pl
Wybrane narzędzia
Hping
Dwiczenie – kontynuowad prosty skrypt w bashu
Wysład kilka nietypowych pakietów ICMP (różne type & code)
Problem? Można napisad prosty skrypt w pythonie (& scapy)
Traceroute (TCP, port 80)
Weryfikacja IP ID
25
Copyright 2009 Securitum
www.securitum.pl
Exploity
Przepełnienie bufora
Program w pamięci:
Kod wykonywalny (code|
text
segment)
Dane (
data
,
bss
segment – zmienne globalne, statyczne)
Sterta (
heap
)
Stos (
stack
)
26
Copyright 2009 Securitum
www.securitum.pl
Exploity
Przepełnienie bufora
Stack
Wykorzystywany przy wywołaniu funkcji
m.in. zawiera adres powrotu (EIP)
Dwiczenie
Prosty program z wywołaniem jednej funkcji
GDB
EIP (instruction pointer)
ESP (stack pointer)
27
Copyright 2009 Securitum
www.securitum.pl
Exploity
gcc test.c –o test –g
gdb test
list 1, 20
ustawienie breakpointów
run
info register
x/16xw $esp
28
Copyright 2009 Securitum
www.securitum.pl
Exploity
Lokalizacja adresu powrotu
disassemble main
Set *0x… (adres skoku) = 0x…(adres następnej
instrukcji)
29
Copyright 2009 Securitum
www.securitum.pl
Exploity
Exploit
Kod wstrzykujący odpowiednie zmienne (przepełnienie
bufora + nadpisujący EIP)
Dowolny kod wykonywany przez atakowaną aplikację
(najczęściej
shell
code, ale niekoniecznie :-)
RET ustalamy tak aby trafił mniej więcej w nasz
shellcode (adres na stosie)
NOP|NOP|…NOP|SHELLCODE|RET|RET
\........................................./……/
30
Copyright 2009 Securitum
www.securitum.pl
Exploity
Omijanie IDS
Wykrywanie kodu wstrzykującego (charakterystycznego
dla aplikacji)
Wykrywanie shellcode
Wykrywanie NOP
Warstwa sieciowa – np. fragmentacja
Nadmierny ruch sieciowy (wydajnośd IDS)
31
Copyright 2009 Securitum
www.securitum.pl
Exploity
Omijanie IDS
Wykrywanie kodu wstrzykującego (charakterystycznego
dla aplikacji)
Alternatywne wstrzyknięcia
/ -> \
/ -> /././
Union -> /**/UniOn/**/
Wykorzystanie dodatkowych mechanizmów w warstwie
aplikacyjnej (np. RPC fragmentation)
32
Copyright 2009 Securitum
www.securitum.pl
Exploity
Omijanie IDS
Wykrywanie shellcode
Wykorzystanie /bin///./sh
Zakodowanie / odkodowanie /bin/sh
Polimorficzny shellcode (zmieniający swój kod „w locie”)
http://www.milw0rm.com/shellcode/generator
shellcode obfuscator
33
Copyright 2009 Securitum
www.securitum.pl
Exploity
Omijanie IDS
Wykrywanie NOP
0x90 0x90 0x90 …
Operacje dec / inc na rejestrach eax ebx ecx edx
echo –e „BITS32\ninc eax\ninc edx” > asm.s
nasm asm.s
hexdump –C asm
34
Copyright 2009 Securitum
www.securitum.pl
Exploity
Omijanie IDS
Warstwa sieciowa – np. fragmentacja IP
tcpreplay + zintegrowany fragroute
nagranie komunikacji exploita (tcpdump)
konfiguracja fragroute (odpowiednia fragmentacja –
poprawna, niepoprawna)
tcpreplay zmodyfikowanej komunikacji
35
Copyright 2009 Securitum
www.securitum.pl
Exploity
Omijanie IDS
Nadmierny ruch sieciowy (wydajnośd IDS)
Tomahawk
Generacja ruchu > 100Mbps
Replay ataków ze zrzutów sieciowych (jak tcpreplay)
Blokada wszystkich ataków (a nie np. 70% po przekroczeniu
„krytycznego” nasycenia łącza
Sam protokół http to tylko jeden protokół L7… -> IDS nie jest
fizycznie w stanie analizowad dokładnie całego ruchu
36
Copyright 2009 Securitum
www.securitum.pl
Exploity
IDS
Wykorzystanie realnych ataków…
http://wiki.wireshark.org/SampleCaptures
slammer.pcap
Inne zrzuty pcap dostępne w necie ;-)
(> 2300 pcaps)
Kilka dostępnych w tomahawk (extras@sourceforge)
Nagranie ruchu (tcpdump) wygenerowanego ręcznie
przez metasploit
37
Copyright 2009 Securitum
www.securitum.pl