background image

Szkolenie

Testy penetracyjne systemów IT

wybrane fragmenty prezentacji

Michał Sajdak, CISSP

Securitum

www.securitum.pl

background image

O dokumencie

Niniejsza prezentacja zawiera 

wybrane slajdy 

ze szkolenia:

testy penetracyjne systemów IT
organizowanego przez Securitum

Więcej informacji:

www.securitum.pl/szkolenia

Copyright 2009 Securitum

www.securitum.pl

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Elementy testu penetracyjnego - przygotowanie

Dwiczenie

Test penetracyjny
Spróbujmy wypełnid checklistę

20

Copyright 2009 Securitum

www.securitum.pl

background image

Elementy testu penetracyjnego - harmonogram

Przykładowy harmonogram

Wykres Gantta

MS Project
MS Visio
dotProject

21

Copyright 2009 Securitum

www.securitum.pl

background image

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

background image

Metodologie / Dokumentacje

Inne

Penetration Test Framework: 

http://www.vulnerabilityassessment.co.uk/Penetration%2

0Test.html

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Exploity

Lokalizacja adresu powrotu
disassemble main
Set *0x… (adres skoku) = 0x…(adres następnej 
instrukcji)

29

Copyright 2009 Securitum

www.securitum.pl

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Exploity

IDS

Wykorzystanie realnych ataków…

http://wiki.wireshark.org/SampleCaptures

slammer.pcap

Inne zrzuty pcap dostępne w necie ;-)

http://pcapr.net/

(> 2300 pcaps)

Kilka dostępnych w tomahawk (extras@sourceforge)

Nagranie ruchu (tcpdump) wygenerowanego ręcznie 
przez metasploit

37

Copyright 2009 Securitum

www.securitum.pl