Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Czego uczą metodologie testów penetracyjnych (cz.1.)
Wstęp
pieczeństwa, jest procesem bardzo kreatywnym oraz spontanicznym. Wiele metodyk próbuje poskromić ten żywioł i usystematyzować pracę pentestera. Ale czy pentester w ogóle potrzebuje podążać ściśle za jakąś metodologią?
Odpowiedź na to pytanie okazuje się bardzo trudna, tym bardziej że opinie o metodologiach w środowisku pentesterów są podzielone. Początkujący testerzy często gubią się wśród metodyk lub trzymają się jednej, poznanej na początku. Profesjonaliści z dużym doświadczeniem z jednej strony potwierdzają swoje umiejętności przez certyfikacje, z drugiej – wypracowują sobie własne metody działania.
Odpowiedź na pytanie, czy warto podążać za konkretną metodologią, poznamy w ostatniej części artykułu. Tymczasem dowiedzmy się, jak z grubsza wyglądają dowolne metodologie testów penetracyjnych.
Spojrzenie ogólne
Okazuje się, że w uogólnieniu, wszystkie metodologie testów penetracyjnych zbudowane są wokół podobnego modelu. Model ten zakłada kolejno występujące po sobie fazy, w których wykorzystywane są różnego rodzaju narzędzia pentesterskie. Ważne jest to, że etapy te nie muszą występować ściśle po sobie — wyjście narzędzi konkretnej fazy staje się wejściem dla programów fazy kolejnej, więc zaleca się, aby jak najmniej zaburzać porządek, ale w uzasadnionych sytuacjach można to zrobić.
Powyższy schemat obrazuje dziesięć etapów metodycznego podejścia do testów penetracyjnych. Takie podejście zostało opracowane przez autorów książki o narzędziach systemu Backtrack/Kali Linux (Ali i Heriyanto 2011) i jest bardzo dobrym uogólnieniem w zasadzie każdej metodologii, która zostanie opisana w kolejnej części artykułu. Tester bezpieczeństwa musi oczywiście wykazywać się elastycznością i patrzeć na diagram z lekkim przymrużeniem oka, jednak poznanie generalnego opisu poszczególnych faz pozwoli szybciej zagłębić się w szczegóły konkretnych metodologii i standardów.
Przyjrzyjmy się dokładniej fazom przedstawionym na diagramie.
1. Target Scoping
Pierwszym etapem testu penetracyjnego jest zdefiniowanie wymagań klienta oraz podpisanie kilku rodzajów umów. Ustalenia z klientem dotyczą charakteru testów (blackbox, whitebox), jawności (czy administratorzy będą wiedzieli o ataku?) oraz przede wszystkim — zasięgu testów.
Zasięg testów jednoznacznie definiuje granice — usług, sieci, terytorium, zasobów ludzkich — do których ograniczone będą testy. Zasięg mocno wpływa z jednej strony na pracę pentestera (może go zbytnio przytłaczać lub ograniczać), z drugiej strony na działanie infrastruktury klienta oraz ponoszone przez niego koszty. W tej fazie ustala się również, czy przeprowadzane będą testy inżynierii społecznej, a jeśli tak, to pod jakimi obostrzeniami (patrz: punkt 6.). Po zdefiniowaniu zasięgu można określić czas testów, wielkość zespołu oraz cenę.
Wszystkie ustalenia spisuje się w dokumencie (ang. Rules of Engagement), który musi zostać zaakceptowany przez obie strony. Oprócz RoE, zespół testerów często zobowiązany jest do podpisania umowy o poufności (ang. Non-disclosure Agreement, NDA), która ściśle określa zasady zachowania tajemnicy rezultatów testów oraz restrykcje dotyczące rozprzestrzeniania wyników (np. w przypadku znajdywania luk w oprogramowaniu Open Souce lub programach firm trzecich).
2. Informaction Gathering
Każda informacja o celu jest cenna: dane osobowe pracowników, adresy IP, lokalizacja biura, nazwy maszyn, rodzaj świadczonych usług…
Faza Information Gathering polega na pasywnym zbieraniu informacji (ang. Passive Information Gathering) z publicznie dostępnych źródeł: przeglądarki internetowej, bazy whois, rekordów DNS itp.
Czynności wykonywane w tej fazie nie noszą znamion przestępstwa komputerowego i w zasadzie mogą być wykonane jeszcze przed faktycznym rozpoczęciem testu penetracyjnego. W fazie tej wykorzystuje się m.in. takie narzędzia jak Shodan, Recon-ng, dig, DMitry, theHarvester , Metagoofil czy Fierce2.
3. Target Discovery
To kolejny etap poprzedniej fazy, nazywany pół-pasywnym zbieraniem informacji (ang. Semi-Passive Information Gathering).
Podczas tej fazy pentester zaczyna poznawać cele, wyszczególnione w umowie z klientem. Zaczyna się identyfikacja podsieci, rodzaj używanej architektury, określa się używane systemy operacyjne.
W fazie pół-pasywnego zbierania informacji wykonuje się pojedyncze połączenia do infrastruktury klienta, ale w sposób nie wzbudzających podejrzeń – przykładowo odwiedza się stronę firmową, zapisuje się jej adres, identyfikuje się oprogramowanie i system operacyjny (w sposób pasywny, np. z wykorzystaniem narzędzia p0f lub xprobe). Większość czynności tej fazy również można wykonać jeszcze przed faktycznym rozpoczęciem testów.
4. Enumerating Target
Faza ta polega na aktywnym zbieraniu informacji. Jest to w praktyce pierwszy poważny kontakt z infrastrukturą klienta i może wpłynąć na działanie systemów.
Celem tej fazy jest enumeracja usług, portów, wykrywanie urządzeń pośredniczących, wykrywanie systemów IDS/IPS oraz zapór ogniowych. Każda informacja zebrana w tej fazie będzie stanowić punkt wejścia do testów w następnych fazach.
Popularnymi narzędziami wykorzystywanymi w tej fazie są: nmap, dirbuster, ike-scan, Unicornscan.
5. Vulnerability Mapping
Po zebraniu informacji o badanym systemie, można zacząć szukać podatności w elementach znalezionych w poprzednich fazach — w usługach, urządzeniach i innych punktach wejścia.
Mapowanie podatności polega na wykonaniu różnego rodzaju testów, które pozwolą określić, czy dany element systemu można wykorzystać w niebezpieczny sposób. Podatności szuka się, testując podatności opisane w publicznie dostępnych listach błędów (tzw. Bugtracq), jak i poprzez wykonanie analizy statycznej (whitebox) lub dynamicznej (blackbox) konkretnych usług.
Podczas tej fazy wykorzystywane są narzędzia takie jak:: OWASP ZAP , nmap NSE, OpenVAS, sqlmap, nikto2, w3af, SNMP Walk, JBroFuzz lub wpscan.
6. Social Engineering (faza opcjonalna)
Jeśli w zasięgu testów penetracyjnych ustalono, że wykonywane zostaną ataki inżynierii społecznej, to jest to najlepszy moment, aby zacząć je wykonywać. Poprzednie fazy dostarczyły wystarczających informacji o infrastrukturze klienta oraz o poziomie jej zabezpieczeń. Informacje te mogą zostać wykorzystane w celu przygotowania ukierunkowanego ataku socjotechnicznego na użytkowników systemu.
Cele tej fazy bardzo mocno zależą od ustaleń z klientem. Faza ta jest niezwykle rozbudowana, kreatywna oraz nieprzewidywalna. W skrajnych przypadkach może trwać od kilku godzin do kilku tygodni i mieć bardzo zmienny charakter. Za każdym razem jednak pentester musi stworzyć profil użytkowników systemu, aby jak najlepiej ich poznać i zwiększyć szanse ataku.
Często do ataków socjotechnicznych wykorzystuje się narzędzie takie jak: Social Engineering Toolkit (SET) lub Common User Password List (CUPP).
7. Target Exploitation
Eksploitacja ma na celu wykonanie penetracji wybranego systemu informatycznego poprzez stworzenie wektora ataku, który ominie kolejne elementy zabezpieczeń. Celem ataku jest zdobycie jakiegokolwiek zysku (profitu) — może to być zdobycie wrażliwych danych osobowych, odcięcie systemu od sieci zewnętrznej lub po prostu zdobycie maszyny do tzw. pivotingu, który pozwoli wejść w kolejną fazę.
Zdecydowanym liderem wśród narzędzi do eksploitacji jest Metasploit, choć warto tutaj również zaznaczyć takie narzędzia jak choćby: Core Impact czy CANVAS (co ciekawe można tu kupować odpowiednie paczki z błędami 0days pogrupowanymi po naszym obszarze zainteresowania; przykładowo „Gleg’s Agora SCADA+ Pack” – to paczka exploitów – w tym 0days – odpowiednia dla osób zainteresowanych tematyką bezpieczeństwa SCADA).
8. Privilage Escalation
To proces zwiększania uprawnień w przełamanym systemie i przeniesienia kontroli pentestera na kolejne usługi lub systemy.
Eskalacja uprawnień może prowadzić do ustawienia tzw. Pivot Pointu, czyli miejsca w sieci wewnętrznej (klienta), z którego kontynuowane będą ataki, przychodzące z sieci zewnętrznej (pentestera).
W przypadku aplikacji internetowych wynikiem eksploitacji może być lista skrótów haseł użytkowników. Eskalacja uprawnień może polegać na odzyskaniu oryginałów haseł przy wykorzystaniu Hashcat, a następnie wykorzystaniu tych haseł do uwierzytelnienia się w roli administratora w innej usłudze testowanego systemu.
9. Maintaining Access
Polega na skróceniu czasu dostępu do skompromitowanego systemu w przyszłości. W fazie tej instalowane są tylne furtki, rootkity, ukrywana jest również obecność pentestera w systemie.
Faza utrzymania dostępu jest szczególnie przydatna w testach, o których nie jest informowana jego administracja (tzw. testy Double Blind, Double Gray Box lub Reversal, o których będzie mowa w drugiej części artykułu). Utrzymanie dostępu jest też kluczowe w testach skomplikowanej, wielowarstwowej infrastruktury, w celu przyśpieszenia testów.
W nieskomplikowanych sytuacjach utrzymanie dostępu wykonuje się poprzez ustanowienie połączenia zwrotnego (netcat/cryptcat) lub poprzez użycie tzw. webshelli (r57.php, c99.php). Pakiety TCP mogą być ukrywane w ruchu DNS lub ICMP przy użyciu narzędzi takich jak dns2tcp lub ptunnel.
10. Documentation & Reporting
Raport jest kluczowym elementem testów penetracyjnych. Dokumentacja testów zawiera informacje o znalezionych podatnościach oraz zauważonych problemach. Jest to z jednej strony informacja dla biznesu o ryzyku prowadzonego projektu, ale również jest to informacja dla dyrektorów technicznych oraz inżynierów, którzy będą musieli przeanalizować luki oraz je wyeliminować.
Faza ta może być wspomagana przez różnego rodzaju narzędzia do generowania raportów, systemy bugtrackingowe i podobne.
— Adrian “Vizzdoom” Michalczyk dla serwisu Sekurak.pl
Sporą dawkę narzędzi związanych z wszystkimi poszczególnymi fazami pentestów można znaleźć na http://www.vulnerabilityassessment.co.uk/Penetration%20Test.html
Hey, Michał :)
O tym i wielu innych, podobnych papierkach w następnych częściach. Stay focus :)
swietny artykul oby tak dalej!
Brawo!! Gratuluję dobrego artykułu.
Dzięki, dobrze wiedzieć, że teksty dobrze się czyta i że się przydają – to motywuje do dalszego pisania :)
Barzdo fajne, ale dobrze by aby na koncu artykulu byly linki do czesci nastepnych :)
Jedna uwaga – abstrahując od merytoryki ale jednak poważna – autor popełnia dość często powtarzany w Polsce błąd wynikający z nieuważnego tłumaczenia terminów z języka angielskiego. Myli mianowicie pojęcia metodologii i metodyki. Zachęcam do sprawdzenia: http://pl.wikipedia.org/wiki/Metodologia vs http://pl.wikipedia.org/wiki/Metodyka. Artykuł jest oczywiście o metodykach nie metodologiach!
Pragnę podpowiedzieć, że „metodologia” to nauka o metodach, a „metodyka” to standaryzowany sposób wykonania.
Pozdrawiam,
Leszek