Darmowy fragment publikacji:
Tytuł oryginału: Mastering Kali Linux for Advanced Penetration Testing - Second Edition
Tłumaczenie: Grzegorz Kowalczyk
ISBN: 978-83-283-4037-4
Copyright © Packt Publishing 2017. First published in the English language under the title Mastering Kali
Linux for Advanced Penetration Testing - Second Edition - (9781787120235)
Polish edition copyright © 2018 by Helion SA
All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były
kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane
z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION
nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji
zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/kalit2
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
• Kup książkę
• Poleć książkę
• Oceń książkę
• Księgarnia internetowa
• Lubię to! » Nasza społeczność
Spis treści
O autorze
O recenzencie
Przedmowa
Rozdział 1. Testy penetracyjne ukierunkowane na osiągnięcie celu
Koncepcyjny przegląd testów bezpieczeństwa
Zmierzch klasycznych testów penetracyjnych,
skanowania w poszukiwaniu podatności i działań zespołów Red Team
Metodologia przeprowadzania testów
Wprowadzenie do systemu Kali Linux — jego historia i przeznaczenie
Instalowanie i aktualizowanie systemu Kali Linux
Uruchamianie systemu Kali Linux z urządzenia przenośnego
Instalowanie systemu Kali Linux w maszynie wirtualnej
VMware Workstation Player
VirtualBox
Instalowanie aplikacji Docker
Instalowanie systemu Kali Linux w chmurze — tworzenie instancji AWS
Dostosowywanie systemu Kali Linux
Konfigurowanie i dostosowywanie systemu Kali Linux
Zmiana hasła użytkownika root
Dodawanie zwykłego konta użytkownika
Przyspieszanie działania systemu Kali Linux
Udostępnianie i współużytkowanie folderów z systemem operacyjnym hosta
Dostosowywanie systemu Kali Linux do własnych potrzeb
przy użyciu skryptów powłoki bash
Budowanie środowiska testowego
Konfigurowanie sieci wirtualnej z usługą Active Directory
Instalowanie zdefiniowanych celów
13
15
17
23
24
24
26
28
30
30
31
32
34
39
41
43
44
44
44
45
46
48
49
49
52
Poleć książkęKup książkę
Kali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Metasploitable3
Mutillidae
Zarządzanie testami penetracyjnymi przy użyciu pakietu Faraday
Podsumowanie
Rozdział 2. OSINT oraz rozpoznanie pasywne
Podstawowe zasady przeprowadzania rozpoznania
Biały wywiad (OSINT)
Ofensywny biały wywiad
Maltego
CaseFile
Usługi Google Cache
Scraping
Pozyskiwanie nazw kont użytkowników i adresów e-mail
Zbieranie informacji o użytkownikach
Wyszukiwarki Shodan i censys.io
Google Hacking Database
Używanie zaawansowanych operatorów Google
Serwery szybkiej wymiany danych
Zastosowanie skryptów do automatycznego zbierania informacji OSINT
Defensywny biały wywiad
Profilowanie użytkowników pod kątem przygotowywania listy haseł
Tworzenie słowników do łamania haseł
Zastosowanie programu CeWL do mapowania witryny internetowej
Pozyskiwanie listy słów z serwisu Twitter przy użyciu programu Twofi
Podsumowanie
Rozdział 3. Aktywne rozpoznawanie zewnętrznych i wewnętrznych środowisk celu
Trudne do wykrycia techniki skanowania
Modyfikowanie źródłowych adresów IP
52
53
54
58
59
60
61
62
63
66
67
68
69
70
70
71
72
73
74
75
78
78
79
80
80
83
84
Rozpoznanie DNS i mapowanie sieci
Polecenie whois
i dostosowywanie ustawień używanych narzędzi
Modyfikowanie parametrów pakietów
Używanie serwerów proxy i sieci anonimowych
Framework recon-ng
Protokół IPv6 — wybrane narzędzia
Mapowanie trasy do celu
85
86
88
91
92
Wykorzystywanie kompleksowych aplikacji wspomagających przeprowadzanie rozpoznania 94
94
99
100
103
104
105
107
108
109
109
Identyfikowanie zewnętrznej infrastruktury sieciowej
Mapowanie sieci poza zaporą sieciową
Identyfikacja systemów IDS/IPS
Wyszukiwanie hostów
Wykrywanie aktywnych hostów
Wykrywanie otwartych portów, systemu operacyjnego oraz działających usług
Skanowanie portów
4
Poleć książkęKup książkę
Spis treści
Skanowanie dużych środowisk celu
Tworzenie własnego skanera portów przy użyciu programu netcat
Identyfikacja systemu operacyjnego zdalnego hosta
Wykrywanie usług działających na zdalnych hostach
110
111
112
113
114
Wykorzystanie danych DHCP
115
Wykrywanie oraz identyfikacja hostów w wewnętrznych sieciach środowiska celu
116
Wbudowane polecenia konsolowe systemu Windows
117
Rozgłoszenia ARP
Wykrywanie hostów w sieci za pomocą pakietów ping
117
Zastosowanie skryptów do łączenia skanów z użyciem programów masscan i nmap 119
Wykorzystanie protokołu SNMP
120
Pozyskiwanie informacji o kontach użytkowników Windows
za pośrednictwem sesji SMB
Identyfikacja udziałów sieciowych
Rozpoznawanie serwerów w domenie Active Directory
Zastosowanie narzędzi złożonych (SPARTA)
Przykład konfiguracji pakietu SPARTA
Podsumowanie
Rozdział 4. Wyszukiwanie podatności i luk w zabezpieczeniach
Trochę nomenklatury
Lokalne i sieciowe bazy podatności i luk w zabezpieczeniach
Skanowanie w poszukiwaniu podatności przy użyciu programu nmap
Wprowadzenie do skryptów LUA
Dostosowywanie skryptów NSE do własnych potrzeb
Skanery podatności aplikacji sieciowych
Wprowadzenie do skanerów Nikto i Vega
Dostosowywanie skanerów Nikto i Vega do własnych potrzeb
Skanery podatności dla aplikacji mobilnych
Skaner podatności OpenVAS
Dostosowywanie skanera OpenVAS do własnych potrzeb
Specjalizowane skanery podatności
Modelowanie zagrożeń
Podsumowanie
Rozdział 5. Bezpieczeństwo fizyczne i metody socjotechniczne
Metodologia przeprowadzania ataków
Ataki z wykorzystaniem komputera
Ataki z wykorzystaniem telefonu
Ataki z dostępem fizycznym
Ataki z dostępem do konsoli systemu
Programy samdump2 i chntpw
Ułatwienia dostępu — opcja Sticky Keys
Ataki na pamięć systemową przy użyciu programu Inception
Tworzenie złośliwych urządzeń fizycznych
Ataki z wykorzystaniem urządzeń mikroprocesorowych
121
123
124
125
126
127
129
130
131
135
137
137
139
140
142
146
148
150
150
151
153
155
157
157
158
159
159
160
163
164
166
168
5
Poleć książkęKup książkę
Kali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Pakiet SET
Ataki na witryny internetowe — atak ze zbieraniem poświadczeń logowania
Ataki na witryny internetowe — atak typu tabnabbing
Ataki na witryny internetowe — ataki złożone
Atak ze wstrzykiwaniem alfanumerycznego kodu shellcode z powłoki Powershell
Ataki z wykorzystaniem aplikacji HTA
170
174
176
177
178
179
181
183
Ataki typu spear phishing
184
Przeprowadzanie kampanii phishingowej z wykorzystaniem pakietu Phishing Frenzy 188
192
194
Ukrywanie plików wykonywalnych oraz maskowanie adresu URL napastnika
Eskalowanie ataków przy użyciu przekierowań DNS
Przeprowadzanie ataku phishingowego
Podsumowanie
Rozdział 6. Ataki na sieci bezprzewodowe
Konfigurowanie systemu Kali Linux do przeprowadzania ataków na sieci bezprzewodowe
Przeprowadzanie rozpoznania w sieciach bezprzewodowych
Kismet
Omijanie zabezpieczenia sieci z ukrytym identyfikatorem SSID
Omijanie zabezpieczenia sieci z filtrowaniem adresów MAC
oraz otwartym uwierzytelnianiem
Atakowanie sieci z szyfrowaniem WPA i WPA2
Ataki typu brute-force
Atakowanie routerów sieci bezprzewodowych przy użyciu programu Reaver
Ataki typu DoS na sieci bezprzewodowe
Ataki na sieci WLAN z szyfrowaniem WPA/WPA2-Enterprise
Praca z pakietem Ghost Phisher
Podsumowanie
Rozdział 7. Rozpoznawanie i przełamywanie zabezpieczeń aplikacji internetowych
Metodologia
Planowanie ataku
Przeprowadzanie rozpoznania witryny internetowej
Wykrywanie zapór WAF oraz systemów równoważenia obciążenia
Tworzenie sygnatur aplikacji internetowych i systemów CMS
Tworzenie lustrzanej kopii strony internetowej z poziomu wiersza poleceń
Serwery proxy po stronie klienta
Burp Proxy
Poszerzanie funkcjonalności przeglądarek internetowych
Przeszukiwanie sieci i ataki typu brute-force na struktury katalogów
Skanery podatności wykrywające podatności określonych usług i aplikacji
Ataki specyficzne dla określonych aplikacji
Ataki typu brute-force na poświadczenia logowania
Wstrzykiwanie poleceń systemu operacyjnego przy użyciu narzędzia commix
Ataki ze wstrzykiwaniem danych lub kodu do baz danych
Utrzymywanie dostępu za pomocą powłok webshell
Podsumowanie
6
195
196
197
200
202
204
206
207
210
211
213
217
218
221
222
224
225
227
228
231
232
232
237
239
239
241
241
241
243
245
247
Poleć książkęKup książkę
Spis treści
Rozdział 8. Ataki na zdalny dostęp
Wykorzystywanie luk w zabezpieczeniach protokołów komunikacyjnych
Przełamywanie zabezpieczeń protokołu RDP
Przełamywanie zabezpieczeń protokołu SSH
Przełamywanie zabezpieczeń protokołu VNC
Ataki na połączenia SSL
Słabe strony i luki w zabezpieczeniach protokołu SSL
Praca z programem Testssl
Rozpoznawanie połączeń SSL
Zastosowanie programu sslstrip do przeprowadzania ataku man-in-the-middle
Ataki typu DoS na połączenia SSL
Ataki na wirtualne sieci prywatne z protokołem IPSec
Skanowanie w poszukiwaniu bramek VPN
Tworzenie cyfrowego odcisku palca bramy VPN
Przechwytywanie kluczy PSK
Łamanie kluczy PSK w trybie offline
Identyfikacja domyślnych kont użytkowników
Podsumowanie
Rozdział 9. Ataki po stronie klienta
Backdooring — tworzenie plików wykonywalnych wyposażonych w tylne wejścia
Atakowanie systemów przy użyciu złośliwych skryptów
Przeprowadzanie ataków za pomocą skryptów w języku VBScript
Atakowanie systemów przy użyciu skryptów powłoki PowerShell
Pakiet XSS Framework
Pakiet BeEF
Konfigurowanie pakietu BeEF
Praca z pakietem BeEF
Integracja pakietów BeEF i Metasploit
Używanie pakietu BeEF jako tunelującego serwera proxy
Podsumowanie
Rozdział 10. Omijanie mechanizmów zabezpieczających
Omijanie zabezpieczeń wprowadzanych przez mechanizm NAC
Weryfikacja przed uzyskaniem dostępu do sieci
Weryfikacja po uzyskaniu dostępu do sieci
Omijanie programów antywirusowych przy użyciu różnych narzędzi
Korzystanie z pakietu Veil Framework
Używanie programu Shellter
Omijanie zabezpieczeń działających na poziomie aplikacji
Zastosowanie protokołu SSH do tunelowania połączeń
przez zapory sieciowe działające po stronie klienta
Omijanie białej listy aplikacji
249
250
250
253
255
257
257
259
260
265
268
269
270
271
272
272
273
273
275
276
279
279
282
285
289
290
293
296
297
299
301
302
303
305
305
307
312
316
316
320
7
Poleć książkęKup książkę
Kali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Omijanie zabezpieczeń systemu operacyjnego Windows
Pakiet EMET (Enhanced Migration Experience Toolkit)
UAC — kontrola konta użytkownika
Inne zabezpieczenia systemu operacyjnego Windows
Podsumowanie
Rozdział 11. Wykorzystywanie podatności i luk w zabezpieczeniach
Pakiet Metasploit
Biblioteki
Interfejsy
Moduły
Tworzenie i konfiguracja bazy danych
Atakowanie celów przy użyciu pakietu Metasploit Framework
Atakowanie pojedynczych systemów z użyciem odwróconej powłoki
Atakowanie pojedynczych systemów z użyciem odwróconej powłoki PowerShell
Atakowanie wielu systemów przy użyciu plików zasobów pakietu Metasploit Framework
Atakowanie wielu systemów przy użyciu pakietu Armitage
Używanie publicznych exploitów
Lokalizowanie i weryfikowanie publicznie dostępnych exploitów
Kompilowanie i używanie exploitów
Tworzenie exploitów dla systemu Windows
Identyfikacja podatności i luk w zabezpieczeniach przy użyciu fuzzingu
Tworzenie exploita dla systemu Windows
Podsumowanie
Rozdział 12. Powłamaniowa eksploracja środowiska celu
Eksploracja skompromitowanego systemu lokalnego
Przeprowadzenie szybkiego rozpoznania skompromitowanego systemu
Wyszukiwanie i pobieranie wrażliwych danych — plądrowanie celu
Narzędzia wspomagające powłamaniową eksplorację
systemu (MSF, framework Veil-Pillage, skrypty)
Pakiet Veil-Pillage
Eskalacja pozioma i atakowanie innych systemów
Kompromitowanie relacji zaufania między domenami oraz udziałów sieciowych
PsExec, WMIC i inne narzędzia
Eskalacja pozioma z użyciem usług
Pivoting i przekierowywanie portów
Podsumowanie
Rozdział 13. Podnoszenie uprawnień
Typowa metodologia podnoszenia uprawnień
Podnoszenie uprawnień w systemie lokalnym
Podnoszenie uprawnień z poziomu administratora na poziom systemu
Wstrzykiwanie bibliotek DLL
Narzędzie PowerShell Empire
322
322
323
328
331
333
334
334
335
336
337
342
342
344
345
346
349
349
351
353
354
360
363
365
366
367
368
372
375
379
380
381
385
385
388
389
390
391
392
393
395
8
Poleć książkęKup książkę
Spis treści
Ataki pozwalające na zbieranie poświadczeń i podnoszenie uprawnień
Sniffery haseł
Responder
Ataki typu SMB relay
Podnoszenie uprawnień w Active Directory
Ataki typu Golden Ticket na protokół Kerberos
Podsumowanie
Rozdział 14. Sterowanie i kontrola
Używanie agentów persystencji
Używanie programu Netcat jako agenta persystencji
Zastosowanie programu schtasks do konfigurowania trwałych zadań
Utrzymywanie trwałego dostępu przy użyciu pakietu Metasploit
Używanie skryptu persistence
Tworzenie samodzielnego trwałego agenta z wykorzystaniem pakietu Metasploit
Utrzymywanie trwałego dostępu
za pomocą mediów społecznościowych i poczty Gmail
Eksfiltracja danych
Korzystanie z istniejących usług systemowych (Telnet, RDP i VNC)
Eksfiltracja danych z wykorzystaniem protokołu DNS
Eksfiltracja danych z wykorzystaniem protokołu DNS
Pakiet Data Exfiltration Toolkit (DET)
Eksfiltracja danych z wykorzystaniem powłoki PowerShell
Ukrywanie śladów ataku
Podsumowanie
Skorowidz
400
401
402
405
405
412
414
415
416
417
421
422
423
424
426
429
430
431
433
435
437
437
439
441
9
Poleć książkęKup książkę
Kali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
10
Poleć książkęKup książkę1
Testy penetracyjne
ukierunkowane
na osiągnięcie celu
„Istnieją tylko dwa rodzaje ludzi: ci, którzy hakują, i ci, którzy zostaną zhakowani”
Wszystko rozpoczyna się od wyznaczenia celu, który chcesz osiągnąć. Z tego względu w tym
rozdziale będziemy omawiać znaczenie testów penetracyjnych ukierunkowanych na osiągnię-
cie celu oraz wyjaśnimy, dlaczego bez wyznaczenia takiego celu przeprowadzanie skanowania
w poszukiwaniu podatności (ang. vulnerability scanning), testy penetracyjne czy inne działa-
nia zespołów Red Team1 mogą zakończyć się spektakularnym niepowodzeniem. W tym roz-
dziale omówimy również szereg zagadnień związanych z przeprowadzaniem testów bezpie-
czeństwa, tworzeniem i konfigurowaniem środowiska testowego oraz używaniem systemu
Kali Linux do przeprowadzania zaawansowanych testów penetracyjnych. Po przeczytaniu te-
go rozdziału będziesz wiedział:
Na czym polegają testy bezpieczeństwa systemów informatycznych.
Dlaczego skanowanie w poszukiwaniu podatności, testy penetracyjne
i inne działania zespołu Red Team mogą zakończyć się niepowodzeniem.
Jak aktualizować i konfigurować system Kali Linux.
Jak za pomocą skryptów powłoki bash dostosowywać system Kali Linux
do własnych potrzeb.
1 Red Team — zespół czerwony, ofensywny, w scenariuszach testów cyberbezpieczeństwa odpowiedzialny
za przeprowadzanie kontrolowanych ataków mających na celu przełamywanie zabezpieczeń środowiska
komputerowego chronionego przez zespół defensywny (Blue Team; zespół niebieski) — przyp. tłum.
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Jak wyznaczać cele działania.
Jak zbudować środowisko testowe.
Koncepcyjny przegląd
testów bezpieczeństwa
Praktycznie każda firma czy organizacja na świecie może się obawiać różnych zagrożeń zwią-
zanych z cyberprzestrzenią, takich jak wycieki wrażliwych danych, złośliwe oprogramowanie czy
cyberterroryzm. Każda próba przeciwdziałania musi rozpocząć się od przygotowania ogólne-
go zarysu i koncepcji planowanych zabezpieczeń. Jeżeli stu różnym konsultantom zadasz py-
tanie: „Czym jest testowanie bezpieczeństwa środowiska teleinformatycznego?”, to z dużą dozą
prawdopodobieństwa możesz założyć, że otrzymasz bardzo wiele różnych odpowiedzi. Naj-
prościej mówiąc, testowanie bezpieczeństwa to proces polegający na sprawdzaniu, czy dane
środowisko teleinformatyczne i poszczególne działające w nim systemy są odpowiednio chro-
nione i czy mogą funkcjonować zgodnie z oczekiwaniami.
Zmierzch klasycznych
testów penetracyjnych,
skanowania w poszukiwaniu podatności
i działań zespołów Red Team
W tym podrozdziale skoncentrujemy się na omawianiu ograniczeń tradycyjnych bądź, jak kto
woli, klasycznych metod przeprowadzania testów penetracyjnych, wyszukiwania podatności
i działań zespołów Red Team. Najpierw jednak spróbujemy w prostych słowach objaśnić
obecne znaczenie tych trzech zagadnień i pokazać ich ograniczenia.
Skanowanie w poszukiwaniu podatności (ang. vulnerability scanning) — jest to
proces mający na celu identyfikację podatności na ataki i luk w zabezpieczeniach
atakowanego środowiska i działających w nim systemów. Poważnym ograniczeniem
takiego skanowania jest fakt, że jego wyniki to lista potencjalnych podatności, z których
duża część może być fałszywie pozytywna. Dla właściciela danego biznesu może
to stanowić poważny problem z oszacowaniem ryzyka, ponieważ w takiej sytuacji
nie mamy jasnego obrazu tego, która z podatności stanowi rzeczywiste zagrożenie
dla funkcjonowania środowiska, a która jest tylko fałszywie potencjalnym
zagrożeniem niemającym odzwierciedlenia w rzeczywistości.
Testy penetracyjne (ang. penetration testing) — jest to proces mający na celu
dokonanie próby bezpiecznego wykorzystania wykrytych wcześniej podatności
i luk w zabezpieczeniach do przeprowadzenia kontrolowanego ataku na badane
24
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
środowisko bez wprowadzania poważnych zagrożeń dla jego normalnego
funkcjonowania. Przeprowadzenie takich testów daje znacznie mniejszy odsetek
wyników fałszywie pozytywnych, ponieważ pentesterzy próbują użyć każdej
ze znalezionych podatności. Poważnym ograniczeniem testów penetracyjnych
może być to, że z reguły są one zawężane tylko do publicznie znanych podatności
i exploitów. Co więcej, podczas przeprowadzania testów penetracyjnych często
słyszymy słowa: „Bingo! Mamy roota!”, ale bardzo rzadko pada pytanie: „Co robimy
dalej?”. Dzieje się tak z wielu bardzo różnych powodów, takich jak narzucone
z góry ograniczenia zakresu przeprowadzanych testów penetracyjnych, konieczność
raportowania tylko podatności wysokiego ryzyka czy ograniczenie przez klienta
zakresu testów tylko do wybranych systemów czy segmentów sieci.
Ćwiczenia zespołów Red Team (ang. Red Team Exercises) — jest to proces
szacowania efektywności ochrony badanego środowiska przed zagrożeniami
z cyberprzestrzeni i poprawiania zaimplementowanych zabezpieczeń. Podczas
takich ćwiczeń z reguły stosowanych jest wiele różnych sposobów atakowania
badanego środowiska, wykorzystujących metody socjotechniczne, kampanie
phishingowe, ataki na sieci bezprzewodowe czy fizyczne testy penetracyjne.
Ograniczeniem takich ćwiczeń mogą być ramy czasowe, restrykcje budżetowe,
postępowanie według z góry ustalonych scenariuszy czy pomijanie niektórych
działań, które mogą być zbyt niebezpieczne do przeprowadzenia w rzeczywistym
środowisku produkcyjnym.
Bardzo często wszystkie trzy opisane procesy powiązane są z określeniami takimi jak hacking
czy łamanie zabezpieczeń. Możemy co prawda powiedzieć klientowi, że spróbujemy włamać
się do jego sieci i pokazać słabe strony jej zabezpieczeń, ale czy tak naprawdę klient czy wła-
ściciel środowiska rozumie, na czym takie „hakowanie” czy „łamanie zabezpieczeń” będzie pole-
gało? Jak możemy je zmierzyć? Jakie są kryteria „hakowania”? Skąd możemy wiedzieć, że „hako-
wanie” czy „łamanie zabezpieczeń sieci” zostało zakończone? Wszystkie tego typu pytania
w prostej mierze prowadzą do jednego, fundamentalnego zagadnienia — jaki jest podstawo-
wy cel przeprowadzania danej operacji?
Podstawowym celem przeprowadzania testów penetracyjnych czy ćwiczeń zespołów Red Team
jest określenie stopnia podatności danego środowiska na cyberataki, wyznaczenie zagrożeń
dla jego poszczególnych elementów składowych (poszczególnych segmentów sieci i działają-
cych w nim systemów) oraz oszacowanie ryzyka, jakie stanowią dla funkcjonowania całego
środowiska firmy czy organizacji. Z reguły nie jest to jednak kwestia ilości podatności znalezio-
nych na poszczególnych hostach, ale to, jak bardzo eksponowany jest dany system i jak jego dzia-
łanie jest krytyczne dla funkcjonowania całego środowiska. Nie każda znaleziona podatność i luka
w zabezpieczeniach jest istotna i nie zawsze musi się ona wiązać z poważnym zagrożeniem. Na
przykład znaleziona podatność na ataki typu Cross-Site Scripting (XSS) na odseparowanym, infor-
macyjnym serwerze WWW nie musi stanowić poważnego zagrożenia dla funkcjonowania całej
firmy; nie zmienia to jednak faktu, że po wykryciu takiej luki właściciel systemu może podjąć
decyzję o minimalizacji zagrożenia poprzez zaimplementowanie takich rozwiązań jak WAF
(ang. Web Application Firewall), zapobiegających przeprowadzaniu ataków typu XSS.
25
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Metodologia przeprowadzania testów
Niestety metodologia przeprowadzania testów penetracyjnych bardzo często nie obejmuje
powodów, dla których klient zlecił przeprowadzenie takich testów, ani nie zawiera listy da-
nych, które są krytyczne dla biznesu i powinny być chronione w szczególny sposób. Pominięcie
tak istotnych informacji już na samym początku procesu może spowodować, że właściwy cel
przeprowadzania takiego testu penetracyjnego ulegnie rozmyciu.
Bardzo wielu pentesterów niechętnie podchodzi do z góry wyznaczonych metodologii postę-
powania, obawiając się, że może to w jakiś sposób ograniczać ich kreatywność w wyszukiwaniu
podatności i luk w zabezpieczeniach, a następnie w ich efektywnym wykorzystywaniu. Testy pe-
netracyjne często nie odzwierciedlają sposobu, w jaki może postępować potencjalny napastnik. Na
przykład klient zlecający test chce sprawdzić, czy pentester będzie w stanie w nieautoryzowany
sposób uzyskać dostęp na poziomie administratora do atakowanego systemu, podczas gdy intencją
prawdziwego napastnika może być skopiowanie z tego systemu wrażliwych danych w sposób,
który ani nie wymaga uzyskania takiego dostępu, ani nie spowoduje awarii systemu.
Aby można było poradzić sobie z ograniczeniami wynikającymi z formalnych metod testowa-
nia, testy penetracyjne muszą być zintegrowane w ramach, które pozwalają spojrzeć na ata-
kowaną sieć z punktu widzenia napastnika i w uporządkowany sposób przeprowadzić sku-
teczny atak.
W roku 2009 Mike Cloppert, pracujący w zespole CERT firmy Lockheed Martin, opracował kon-
cepcję znaną obecnie jako atak cybernetyczny (ang. Attacker Kill Chain), która opisywała poszcze-
gólne kroki, jakie musi podjąć napastnik w celu przeprowadzenia efektywnego cyberataku na sys-
tem sieciowy. Ataki takie nie zawsze mają przebieg liniowy, ponieważ niektóre z ich faz mogą być
przeprowadzane równolegle. W danym okresie ten sam cel może być atakowany wielokrotnie,
przy czym niektóre równoległe fazy ataku mogą być przeprowadzane w tym samym czasie.
W tej książce zmodyfikowaliśmy nieco oryginalny koncept cyberataku opracowany przez Mike’a
Clopperta, aby jeszcze dokładniej odzwierciedlić poszczególne operacje podejmowane przez
potencjalnego napastnika podczas atakowania całych sieci komputerowych oraz funkcjonują-
cych w nich systemów, aplikacji i usług sieciowych.
Na rysunku przedstawionym poniżej pokazano, jak wygląda typowy atak cybernetyczny:
26
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Typowy atak cybernetyczny może wyglądać tak:
Faza rozpoznania — twierdzenie, że „rekonesans nigdy nie jest stratą czasu”,
przyjęte i powszechnie stosowane przez wojsko na całym świecie, jest prostym
potwierdzeniem tego, że przed rozpoczęciem ataku zawsze dobrze jest zebrać jak
największą ilość informacji o nieprzyjacielu. Z tego samego powodu hakerzy przed
rozpoczęciem cyberataku przeprowadzają zakrojone na szeroką skalę rozpoznanie
celu. W praktyce szacuje się, że na przeprowadzenie odpowiedniego rozpoznania
środowiska celu cyberprzestępcy (jak również profesjonalni pentesterzy) zużywają
nawet 70 procent czasu i zasobów całego ataku! Ogólnie rzecz biorąc,
cyberprzestępcy najczęściej wykorzystują dwa scenariusze fazy rozpoznania:
Rozpoznanie pasywne — w takim scenariuszu napastnik nie wchodzi
w bezpośrednią interakcję ze środowiskiem celu, lecz korzysta na przykład
z zawartości publicznie dostępnych stron internetowych, materiałów konferencyjnych,
informacji dostępnych w mediach i serwisach sieciowych (a zwłaszcza w serwisach
społecznościowych). Bazując na pozyskanych informacjach, stara się wyznaczyć
odpowiednią płaszczyznę ataku (ang. attack surface). Jedną z operacji często
wykonywanych podczas rozpoznania pasywnego jest przygotowywanie listy
obecnych i poprzednich pracowników atakowanej firmy, która może stanowić
dobrą bazę do łamania haseł metodą brute-force lub może być wykorzystana
do przeprowadzania ataków socjotechnicznych. Rozpoznanie przeprowadzane
w sposób pasywny jest bardzo trudne, a często wręcz niemożliwe do wykrycia.
Rozpoznanie aktywne — aktywność napastnika związana z aktywnym
rozpoznawaniem środowiska celu może zostać wykryta, ale w praktyce bardzo
trudno ją odróżnić od tego, z czym większość firm czy organizacji styka się na
co dzień. Rozpoznanie aktywne może obejmować skanowanie portów, zdalne
skanowanie systemów w poszukiwaniu podatności i luk w zabezpieczeniach,
a nawet fizyczne odwiedziny w siedzibie firmy pod pozorem udawania klienta,
dostawcy pizzy czy serwisanta.
Faza dostawy — w tej fazie dokonywany jest wybór i opracowanie narzędzia, które
zostanie użyte do wykorzystania danego exploita podczas przeprowadzania ataku.
To, jakie narzędzie zostanie finalnie wybrane, zależy zarówno od intencji atakującego,
jak i od planowanego sposobu dostarczenia narzędzia do atakowanego celu (na przykład
za pomocą wiadomości poczty elektronicznej, sieci bezprzewodowej czy usługi sieci
WWW). Znaczenie fazy dostawy i jej wpływ na przeprowadzanie ataku zostaną
szczegółowo omówione w drugiej połowie książki.
Faza penetracji (faza ataku) — jest to faza, w której określony exploit zostaje
pomyślnie wykorzystany, co pozwala napastnikowi na osiągnięcie zaplanowanego
celu. Skompromitowanie celu mogło wystąpić w jednej fazie (na przykład napastnik
wykorzystał dobrze znaną podatność danego systemu na ataki z przepełnianiem
bufora), ale równie dobrze mogło wymagać przeprowadzenia operacji wielofazowej
(na przykład napastnik, wykorzystując metody socjotechniczne, przedostał się na
teren firmy i skradł egzemplarz firmowej książki telefonicznej. Znajdujące się tam
informacje zostały wykorzystane do utworzenia słownika danych użytego następnie
27
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
do przeprowadzenia ataku typu brute-force na portal firmy. Dodatkowo na pozyskane
poprzez kradzież książki adresy poczty elektronicznej pracowników napastnik
porozsyłał wiadomości mające na celu skłonić użytkowników do kliknięcia osadzonego
łącza i pobrania odpowiednio spreparowanego, złośliwego dokumentu PDF,
za pomocą którego napastnik mógłby przejąć kontrolę nad zainfekowanymi
systemami). Ataki wielofazowe są powszechnie wykorzystywane w scenariuszach,
gdzie celem ataku jest określona firma czy organizacja.
Faza post-exploit (eksploracja środowiska celu) — faza eksploracji środowiska
celu bardzo często bywa niepoprawnie nazwana fazą eksfiltracji (ang. exfiltration
phase), ponieważ dość powszechnie takie ataki postrzegane są niemal wyłącznie
jako metody kradzieży poufnych i wrażliwych danych (takich jak listy użytkowników
i haseł dostępu, dane osobowe czy informacje finansowe). W praktyce jednak
napastnicy mają często zupełnie inne cele. Na przykład nieuczciwa firma może
być zainteresowana przeprowadzeniem ataku typu DoS na internetową sieć usług
swojego konkurenta, czego efektem będzie potencjalne zwiększenie zainteresowania
klientów swoimi rozwiązaniami. Z tego względu faza eksploracji środowiska celu
musi skupiać się na wielu potencjalnie możliwych czynnościach napastnika. Jedne
z najczęściej obserwowanych działań związanych z exploitami mają miejsce wtedy,
gdy napastnicy próbują zwiększyć swoje uprawnienia do najwyższego możliwego
poziomu (eskalacja pionowa) i uzyskać dostęp do jak największej liczby kont
i systemów (eskalacja pozioma).
Faza post-exploit (utrzymanie dostępu) — przełamanie zabezpieczeń i uzyskanie
dostępu do atakowanego systemu może być dla napastnika bardzo wartościowe,
ale z pewnością ta wartość znacząco wzrośnie, jeżeli napastnikowi uda się utworzyć
przyczółek i zachować stały dostęp do skompromitowanego systemu, dzięki czemu
będzie mógł w dowolnym momencie powrócić do zaatakowanego systemu. Z punktu
widzenia zespołu odpowiedzialnego za ochronę systemu ten element cyberataku
jest zazwyczaj najłatwiejszy do wykrycia.
Przebieg ataku cybernetycznego (ang. kill chain) jest swego rodzaju metamodelem zachowania
napastnika próbującego przełamać zabezpieczenia atakowanego celu i uzyskać do niego nie-
autoryzowany dostęp. Jako metamodel atak cybernetyczny może zawierać dowolną, otwartą lub
komercyjną metodologię przeprowadzania testów penetracyjnych. W przeciwieństwie jednak
do metodologii cyberatak pokazuje przebieg ataku na środowisko celu z perspektywy strate-
gicznej. Układ i zawartość naszej książki zostały dobrane tak, aby odzwierciedlić czynności
wykonywane przez napastnika podczas przeprowadzania ataku.
Wprowadzenie do systemu Kali Linux
— jego historia i przeznaczenie
System Kali Linux jest następcą znanego i bardzo popularnego niegdyś systemu BackTrack.
W środowisku pentesterów Kali Linux jest swego rodzaju standardem wśród narzędzi i pa-
kietów wspomagających przeprowadzanie testów penetracyjnych sieci komputerowych. Autorami
28
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
systemu są Mati Aharoni oraz Devon Kearns z firmy Offensive Security. Poniżej przedsta-
wiamy krótką historię systemu Kali Linux od momentu jego powstania:
W marcu 2013 roku system BackTrack został zastąpiony systemem Kali Linux,
wykorzystującym nową architekturę opartą na systemie Debian GNU/Linux.
Kali 1.1.0 (data wydania: 9 lutego 2015) — kolejna wersja systemu Kali Linux
pojawiła się dopiero po dwóch latach od jego premiery i przyniosła aktualizację jądra
systemu do wersji 3.18, poprawki modułów wspomagających ataki ze wstrzykiwaniem
ramek do sieci Wi-Fi oraz obsługę nowych sterowników bezprzewodowych kart
sieciowych; w sumie w tym wydaniu poprawionych zostało ponad 58 błędów.
W następnych wydaniach tej wersji, takich jak Kali 1.1.0a, poprawione zostały
również drobne błędy i inne problemy instalatora.
Kali 2.0 (data wydania: 11 sierpnia 2015) — wersja 2.0 była bardzo poważną
aktualizacją, zawierającą m.in. duże zmiany w interfejsie użytkownika; stała się
tzw. dystrybucją ciągłą systemu Kali Linux (ang. rolling distribution). Począwszy
od wersji 2.0, można dokonywać aktualizacji systemu Kali Linux ze starszej do nowszej
wersji.
Kali 2016.1 (data wydania: 21 stycznia 2016) — pierwsze ciągłe wydanie systemu
Kali Linux, które przyniosło aktualizację jądra do wersji 4.3 oraz nowe środowisko
GNOME w wersji 3.18.
Kali 2016.2 (data wydania: 31 sierpnia 2016) — kolejne ciągłe wydanie systemu
Kali Linux, wyposażone w jądro 4.6, środowisko GNOME 3.20.2 oraz wiele
poprawek i aktualizacji.
System Kali Linux w wersji 2.0 (i w kolejnych aktualizacjach) posiada między innymi nastę-
pujące cechy:
Ponad 300 narzędzi wspomagających przeprowadzanie testów penetracyjnych oraz
ekspertyz z informatyki śledczej. W kolejnych wydaniach systemu poszczególne
narzędzia są sukcesywnie aktualizowane bądź zastępowane nowymi wersjami. Wiele
z tych narzędzi współpracuje z bezprzewodowymi kartami sieciowymi i pozwala
na przeprowadzanie testów penetracyjnych w sieciach Wi-Fi.
Obsługa wielu środowisk desktopowych, takich jak KDE, GNOME, Xfce, Mate,
e17, lxde czy i3wm.
Narzędzia zgodne z dystrybucją Debian są synchronizowane z repozytoriami
co najmniej cztery razy dziennie, co pozwala na ich aktualizację oraz instalację
poprawek niemal natychmiast po ich opublikowaniu.
Obsługa środowiska Secure Development Environment oraz pakietów i repozytoriów
podpisanych kluczem GPG.
Wsparcie dla użytkowników chcących przygotować indywidualne, dostosowane
do własnych potrzeb dystrybucje ISO systemu Kali Linux. Funkcja bootstrap
znakomicie ułatwia instalowanie systemu również w dużych środowiskach
korporacyjnych, gdzie proces instalacji może być zautomatyzowany przy użyciu
predefiniowanych plików konfiguracyjnych (ang. Linux preseed files).
29
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Ze względu na rosnącą popularność (i spadające ceny) systemów z procesorami
ARM w systemie zaimplementowana została również obsługa architektur ARMEL
i ARMHF, dzięki czemu Kali Linux można instalować na takich urządzeniach jak
rk3306 mk/ss808, Raspberry Pi, ODROID U2/X2, Samsung Chromebook, EfikaMX,
Beaglebone Black, CuBox czy Galaxy Note 10.1.
Mimo rosnącej popularności Kali Linux nadal pozostaje systemem klasy open
source, dostępnym bezpłatnie dla każdego i co najważniejsze — aktywnie wspieranym
przez ogromną społeczność użytkowników.
Celem systemu Kali Linux jest zebranie wszystkich najważniejszych narzędzi wspomagających
przeprowadzanie testów bezpieczeństwa i testów penetracyjnych w jednej, elastycznej i bar-
dzo uniwersalnej platformie systemowej.
Instalowanie i aktualizowanie
systemu Kali Linux
W poprzednich wydaniach tej książki koncentrowaliśmy się głównie na procesie instalacji
systemu Kali Linux w maszynach wirtualnych VMware, zatem tym razem postaramy się nieco
bardziej zagłębić w różne inne techniki instalowania i aktualizowania systemu Kali Linux.
Uruchamianie systemu Kali Linux
z urządzenia przenośnego
Proces instalowania systemu Kali Linux na urządzeniu przenośnym jest całkiem prosty. W niektó-
rych sytuacjach klienci nie zezwalają na podłączanie i używanie „obcych” laptopów w ich sie-
ci — klient dostarcza wtedy pentesterowi odpowiednie komputery, przy użyciu których ma
on przeprowadzić testowanie. Przeprowadzanie testów penetracyjnych przy użyciu systemu
Kali Linux uruchomionego z urządzenia przenośnego ma wiele zalet, na przykład:
Wszystko zmieścisz w kieszeni (pamięci USB czy zewnętrzne dyski twarde mają
małe rozmiary).
System Kali Linux możesz uruchomić na komputerze bez konieczności
wprowadzania jakichkolwiek modyfikacji w zainstalowanym systemie operacyjnym.
Korzystając z urządzeń przenośnych, możesz utworzyć kilka osobnych wersji
systemu Kali Linux, dostosowanych do określonych scenariuszy testowania
i wymagań klienta.
30
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Jeżeli pracujesz na komputerze działającym pod kontrolą systemu Windows, zainstalowanie
systemu Kali Linux na urządzeniu przenośnym będzie wymagało wykonania zaledwie trzech
kroków:
1. Pobierz oficjalny obraz systemu Kali Linux ze strony internetowej o adresie:
https://docs.kali.org/introduction/download-official-kali-linux-images
2. Pobierz program Win32 Disk Imager ze strony internetowej
https://sourceforge.net/projects/win32diskimager/.
3. Uruchom program Win32 Disk Imager jako administrator. Podłącz przenośną pamięć
USB do dowolnego portu USB komputera. Na ekranie powinno pojawić się okno
podobne do przedstawionego poniżej. Wybierz urządzenie, na którym chcesz
zainstalować system Kali Linux, i naciśnij przycisk Write (zapisz):
Po zakończeniu instalowania systemu zamknij program Win32 Disk Imager i bezpiecznie
odłącz pamięć USB. Kali Linux zainstalowany na tym urządzeniu jest już gotowy do użycia; mo-
żesz je na przykład podłączyć do laptopa i uruchomić z niego system Kali Linux. Jeżeli chcesz
zainstalować system Kali Linux z poziomu komputera działającego pod kontrolą systemu Linux,
proces instalacji jest jeszcze prostszy i wymaga wykonania z poziomu konsoli tylko dwóch
poleceń. Pierwsze to sudo fdisk -l, które wyświetla listę wszystkich zamontowanych napędów
dyskowych, a drugie to dd if=kali linux.iso of=/dev/nazwa_urządzenia bs=512k. To wszystko.
Polecenie dd pobiera instalacyjny plik ISO i zapisuje jego zawartość na podanym urządzeniu.
Polecenie pobiera kilka argumentów wywołania, gdzie if to nazwa wejściowego pliku ISO, of
to nazwa urządzenia docelowego, a bs to rozmiar zapisywanych bloków.
Instalowanie systemu Kali Linux
w maszynie wirtualnej
W tej sekcji szczegółowo omówimy sposób instalowania systemu Kali Linux w maszynach wirtu-
alnych działających pod kontrolą oprogramowania VMware Workstation Player oraz Oracle
VirtualBox.
31
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
VMware Workstation Player
VMware Workstation Player (starsze wersje nosiły nazwę VMware Player) to oprogramowa-
nie wirtualizacyjne, pozwalające na uruchamianie maszyn wirtualnych działających pod kon-
trolą innych systemów operacyjnych, które jest bezpłatne dla zastosowań osobistych. Dla za-
stosowań komercyjnych wymagane jest zakupienie odpowiedniej licencji. Oprogramowanie
można pobrać ze strony internetowej o następującym adresie URL:
https://www.vmware.com/products/player/playerpro-evaluation.html
Poniżej przedstawiamy krok po kroku procedurę instalacji systemu Kali Linux w maszynie
wirtualnej VMware Workstation Player.
Po pobraniu pliku instalacyjnego VMware Workstation Player uruchom go, a na ekranie po-
jawi się pierwszy ekran kreatora instalacji, tak jak to zostało pokazane poniżej. Naciśnij przy-
cisk Next (dalej).
Na ekranie pojawi się okno z warunkami licencji. Naciśnij przycisk Accept (akceptuję), a na-
stępnie na kolejnych ekranach naciskaj przycisk Next — aż do momentu, kiedy pojawi się
ekran przedstawiony na pierwszym rysunku na następnej stronie, sygnalizujący, że proces in-
stalacji programu VMware Workstation Player został zakończony pomyślnie.
Kolejnym krokiem będzie utworzenie maszyny wirtualnej i zainstalowanie w niej systemu
Kali Linux, którego instalacyjny obraz ISO pobraliśmy już wcześniej z oficjalnej strony interneto-
wej. Naciśnij przycisk Create a New Virtual machine (utwórz nową maszynę wirtualną), a następ-
nie wybierz opcję Installer disc image file (iso) (plik obrazu ISO dysku instalacyjnego), wskaż
odpowiedni plik ISO i naciśnij przycisk Next. Wpisz nazwę tworzonej maszyny wirtualnej (na
przykład HackBox) i wybierz miejsce, w którym będą przechowywane jej pliki. Naciśnij przy-
cisk Next, określ rozmiar dysku maszyny wirtualnej dla systemu Kali Linux (rekomendowany
rozmiar to 10 GB), naciskaj przycisk Next na kolejnych ekranach kreatora aż do utworzenia
maszyny wirtualnej. Po jej uruchomieniu powinieneś zobaczyć następujący ekran (patrz drugi
rysunek na następnej stronie).
32
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Z poziomu menu uruchomieniowego możesz wybrać opcję instalacji systemu Kali Linux na
dysku lub uruchomienia go w wersji Live (bez konieczności instalacji). Po zakończeniu insta-
lacji system Kali Linux powinien uruchamiać się w maszynie wirtualnej VMware bez żadnych
problemów, tak jak to zostało pokazane na rysunku:
33
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Począwszy od wersji 2016.2, z systemu Kali Linux zostały usunięte repozytoria Sana. Sana to
nazwa kodowa wersji systemu Kali Linux, która używała repozytoriów zawierających pakiety.
Z tego powodu pierwszym, zdecydowanie zalecanym krokiem, jaki powinieneś wykonać po
zainstalowaniu i uruchomieniu systemu Kali Linux, powinno być wykonanie polecenia apt-
get update, dzięki któremu zaktualizowana zostanie zawartość pliku sources.lst.
VirtualBox
Program VirtualBox jest rozwiązaniem bardzo podobnym do VMware Workstation Player. Jest
to oprogramowanie pozwalające na tworzenie i uruchamianie maszyn wirtualnych, które jest
bezpłatnie udostępniane w wersji open source. Pakiet VirtualBox możesz pobrać z następują-
cej strony internetowej:
https://www.virtualbox.org/wiki/Downloads
Teraz pokażemy sposób instalacji systemu Kali Linux w maszynie wirtualnej działającej pod
kontrolą oprogramowania VirtualBox. Podobnie jak to miało miejsce w przypadku VMware,
najpierw musimy zainstalować sam pakiet VirtualBox. Aby to zrobić, uruchom pobrany pro-
gram instalacyjny; na ekranie powinieneś zobaczyć pierwsze okno kreatora instalacji (patrz
pierwszy rysunek na następnej stronie).
Naciśnij przycisk Next (dalej), a na ekranie pojawi się lista opcji konfiguracyjnych pakietu. W na-
szym przypadku wybierzemy domyślną opcję VirtualBox Application (patrz drugi rysunek na
następnej stronie).
34
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Naciśnij przycisk Next, a na ekranie pojawi się kolejne okno kreatora, pokazujące postęp pro-
cesu instalacji, tak jak to zostało pokazane na rysunku poniżej:
35
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Jeżeli proces instalacji pakietu Oracle VirtualBox zakończy się pomyślnie, po uruchomieniu
programu ekran powinien wyglądać tak, jak to zostało pokazane poniżej:
Kolejnym krokiem będzie utworzenie maszyny wirtualnej i zainstalowanie w niej systemu
Kali Linux. Aby to zrobić, naciśnij przycisk New (nowy), znajdujący się na pasku narzędzi
programu VirtualBox. Na ekranie powinno się pojawić okno kreatora tworzenia nowej maszyny
wirtualnej. W polu Name (nazwa) wpisz żądaną nazwę maszyny (na przykład HackBox), a na-
stępnie w zależności od pobranej wersji systemu Kali Linux wybierz odpowiedni typ maszyny
wirtualnej, na przykład Debian (64-bit) albo Debian (32-bit) (zobacz rysunek poniżej).
Naciśnij przycisk Next i podaj żądany rozmiar pamięci RAM dla systemu Kali Linux. Rekomen-
dowana wielkość to co najmniej 1 GB. W kolejnym kroku utworzymy wirtualny dysk twardy
dla instalowanego systemu. Naciśnij przycisk Next i wybierz typ dysku; w większości przy-
padków będziemy korzystać z domyślnej opcji VDI (VirtualBox Disk Image), tak jak to zostało
pokazane na pierwszym rysunku na następnej stronie.
36
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Naciśnij przycisk Next i w kolejnym oknie kreatora wybierz rozmiar dysku twardego, który
zostanie utworzony (zobacz rysunek poniżej):
Na koniec musimy przejść do ustawień maszyny wirtualnej HackBox (opcja Settings) i podłą-
czyć instalacyjny obraz ISO systemu Kali Linux jako dysk zewnętrzny, tak jak to zostało poka-
zane na pierwszym rysunku na następnej stronie.
37
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Gotowe. Po uruchomieniu maszyny wirtualnej na ekranie powinno się pojawić okno, w któ-
rym z menu uruchomieniowego możesz wybrać opcję uruchomienia wersji Live lub zainsta-
lowania systemu Kali Linux na dysku (zobacz rysunek poniżej):
38
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Instalowanie aplikacji Docker
Docker to aplikacja typu open source pozwalająca na tworzenie, dostarczanie i uruchamianie
aplikacji w tzw. kontenerach. Docker zapewnia również dodatkową warstwę abstrakcji i au-
tomatyzacji na poziomie wirtualizacji systemu operacyjnego.
Docker jest dostępny w wersjach dla systemów Windows, macOS, AWS (ang. Amazon Web
Services) oraz Azure. Dla systemu Windows pakiet Docker możesz pobrać z następującego
adresu URL:
https://download.docker.com/win/stable/InstallDocker.msi
Poniżej pokażemy, w jaki sposób możesz zainstalować pakiet Docker na komputerze działają-
cym pod kontrolą systemu Windows 10:
Docker wykorzystuje mechanizm Hyper-V systemu Microsoft Windows. Jeżeli Hyper-V nie
jest włączony, to najprawdopodobniej na ekranie pojawi się następujący komunikat:
Po naciśnięciu przycisku Ok mechanizm Hyper-V zostanie włączony i będziesz mógł spraw-
dzić działanie programu Docker, uruchamiając konsolę i wykonując polecenie docker, tak jak
to zostało pokazane na rysunku:
39
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Na tym proces instalowania aplikacji Docker zostaje zakończony. Teraz musimy zainstalować
system Kali Linux. Aby to zrobić, powinieneś z poziomu konsoli wykonać polecenie docker
pull kalilinux/kali-linux-docker, tak jak to zostało pokazane na rysunku poniżej:
Po załadowaniu systemu Kali Linux do aplikacji Docker powinieneś być w stanie uruchomić
powłokę bash z pobranego kontenera Kali Docker poprzez wykonanie polecenia run -t -i
kalilinux/kal-linux-docker /bin/bash, tak jak to zostało pokazane na rysunku poniżej:
System Kali Linux możesz teraz uruchomić bezpośrednio z poziomu kontenera Docker.
Zwróć uwagę, że Docker wykorzystuje pracujące w tle środowisko VirtualBox, zatem w takiej
sytuacji nasza maszyna wirtualna z systemem Kali Linux działa w środowisku VirtualBox za
pośrednictwem kontenera Docker.
40
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Instalowanie systemu Kali Linux w chmurze
— tworzenie instancji AWS
AWS to opracowana przez firmę Amazon platforma oparta na technologii chmury, której pod-
stawowym przeznaczeniem jest udostępnianie użytkownikom mocy obliczeniowej, przestrzeni
dyskowej oraz dostarczanie treści. Jako pentester możesz wykorzystać AWS do przeprowa-
dzania testów penetracyjnych. W tym podrozdziale pokażemy najłatwiejszą metodę zainsta-
lowania systemu Kali Linux w chmurze AWS, co może być bardzo użyteczne w przypadku korzy-
stania z zewnętrznych serwerów C2 (ang. command and control).
Najpierw musimy utworzyć swoje konto na platformie AWS. Aby to zrobić, powinieneś od-
wiedzić następującą stronę internetową:
https://console.aws.amazon.com/console/home
Po zalogowaniu się na konto AWS możesz zobaczyć listę wszystkich dostępnych usług, tak jak
to zostało pokazane na rysunku poniżej:
Kolejnym krokiem będzie uruchomienie systemu Kali Linux na platformie AWS. Zrobimy to,
korzystając z odpowiednio dostosowanej wersji systemu Kali Linux bazującej na dystrybucji
Debian. Dzięki społeczności programistów open source możemy w bardzo prosty sposób uru-
chomić prekonfigurowaną wersję systemu Kali Linux 2016.2 za pośrednictwem platformy
Amazon Marketplace. Adres URL przedstawiony poniżej pozwoli Ci na szybkie uruchomie-
nie systemu Kali Linux:
https://aws.amazon.com/marketplace/pp/B01M26MMTT
Po jego uruchomieniu w oknie przeglądarki powinna się pojawić strona, która będzie wyglą-
dała mniej więcej tak:
41
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Naciśnij przycisk Accept Software Terms Launch with 1-Click (zaakceptuj warunki licencji
i uruchom jednym kliknięciem), a następnie przejdź do konsoli AWS, odwiedzając stronę
https://console.aws.amazon.com/ec2/v2/home?region=us-east-1. Teraz powinieneś być już w stanie
uruchomić wybraną instancję systemu Kali Linux, wybierając odpowiedni wiersz lub identyfika-
tor instancji (ang. Instance ID) i naciskając przycisk Launch Instance (uruchom instancję), tak
jak to zostało pokazane na rysunku poniżej:
Teraz musisz utworzyć parę kluczy, co zagwarantuje, że tylko Ty będziesz miał dostęp do tej
instancji systemu Kali Linux. Po utworzeniu będziesz mógł zalogować się do konta w chmu-
rze AWS za pomocą swojego wygenerowanego wcześniej klucza prywatnego. Aby to zrobić,
powinieneś z poziomu wiersza poleceń powłoki wykonać następującą komendę:
ssh -i klucz_prywatny.pem ec2-user@ip_serwera_DNS_Amazon
Pojawienie się ekranu pokazanego na następnej stronie będzie świadczyło o tym, że pomyśl-
nie zainstalowałeś system Kali Linux w chmurze AWS:
42
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Aby legalnie używać zasobów chmury AWS do przeprowadzania testów penetracyjnych, mu-
sisz przestrzegać wszystkich postanowień i warunków licencji. Przed rozpoczęciem jakich-
kolwiek testów czy ataków musisz też posiadać wszystkie wymagane prawem zgody i spełnić
wszystkie inne niezbędne warunki prawne.
Dostosowywanie systemu Kali Linux
Zainstalowanie systemu Kali Linux to zaledwie początek, ponieważ równie ważnym, o ile nie
ważniejszym etapem jest odpowiednie skonfigurowanie i dostosowanie systemu do własnych
potrzeb i wymagań. W tym podrozdziale szczegółowo omówimy proces konfigurowania tego
systemu.
43
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Konfigurowanie i dostosowywanie
systemu Kali Linux
Kali Linux to system wspomagający przeprowadzanie testów penetracyjnych. Jednak aby taki
system był efektywny, pentester nie może się czuć w żaden sposób związany czy ograniczony
przez domyślnie zainstalowane narzędzia czy domyślną konfigurację interfejsu użytkownika
i pulpitu. Dostosowując system Kali Linux do własnych potrzeb i wymagań, pentester może
polepszyć poziom zabezpieczenia danych na temat środowiska celu, zbieranych podczas te-
stów penetracyjnych, a także znacząco ułatwić ich przeprowadzanie.
Najczęściej podczas dostosowywania systemu Kali Linux wykonywane są następujące operacje:
Resetowanie i zmiana hasła użytkownika root.
Dodawanie innych kont użytkowników, którzy nie posiadają uprawnień
użytkownika root.
Optymalizacja i przyspieszanie działania systemu Kali Linux.
Udostępnianie i współużytkowanie wybranych folderów z systemem Windows.
Tworzenie zaszyfrowanych folderów.
Zmiana hasła użytkownika root
Aby zmienić hasło użytkownika root, powinieneś wykonać następujące polecenie:
passwd root
System poprosi o wpisanie nowego hasła, tak jak to zostało pokazane na rysunku poniżej:
Dodawanie zwykłego konta użytkownika
Bardzo wiele narzędzi dostępnych w systemie Kali Linux musi być uruchamianych na pra-
wach użytkownika root. Ciągła praca z uprawnieniami użytkownika root niesie jednak ze sobą
poważne zagrożenia, na przykład prosta pomyłka czy błąd podczas wpisywania nazwy pole-
cenia może skutkować awarią danej aplikacji czy nawet uszkodzeniem testowanego systemu.
W niektórych przypadkach preferowanym rozwiązaniem jest wcześniejsze sprawdzenie działania
polecenia na prawach zwykłego użytkownika. Warto zauważyć, że niektóre aplikacje wręcz
wymuszają uruchamianie z poziomu użytkownika o niższych uprawnieniach niż administrator
systemu.
44
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Aby utworzyć konto zwykłego użytkownika, możesz po prostu z poziomu konsoli użyć pole-
cenia adduser, a następnie postępować według poleceń pojawiających się na ekranie, tak jak
to zostało pokazane na rysunku poniżej:
Przyspieszanie działania systemu Kali Linux
Istnieje co najmniej kilka narzędzi, których możesz używać do optymalizacji i przyspieszania
działania systemu Kali Linux:
Jeżeli korzystasz z systemu Kali Linux działającego w maszynie wirtualnej,
powinieneś dodatkowo zainstalować w niej pakiet Guest Additions (VirtualBox)
lub VMware Tools (VMware). Pamiętaj, aby przed instalacją dodatkowo wykonać
polecenie apt-get update.
Kiedy tworzysz nową maszynę wirtualną, powinieneś zamiast dysku alokowanego
dynamicznie wybrać dysk twardy o stałej wielkości. Takie rozwiązanie powoduje
szybsze zapisywanie plików na dysku i zmniejsza ich fragmentację.
Aplikacja preload identyfikuje najczęściej wykorzystywane przez użytkownika
programy i przyspiesza działanie systemu poprzez wcześniejsze buforowanie
odpowiednich plików wykonywalnych i zależności. Aby ją zainstalować, powinieneś
wykonać polecenie apt-get install preload. Po zainstalowaniu i zrestartowaniu
systemu aplikacja działa całkowicie automatycznie.
BleachBit (apt-get install bleachbit) to aplikacja, która optymalizuje działanie
systemu poprzez zwalnianie niepotrzebnie zajętych zasobów dyskowych, usuwanie
ciasteczek, czyszczenie historii przeglądania sieci internet, usuwanie plików
tymczasowych, kasowanie logów oraz innych niepotrzebnych plików. Oprócz tego
aplikacja posiada kilka dodatkowych, przydatnych funkcji, takich jak usuwanie
plików metodą nadpisywania — co uniemożliwia ich odzyskanie — czy nadpisywanie
niealokowanej przestrzeni dyskowej — co powoduje definitywne usunięcie resztek
danych pozostawionych przez skasowane wcześniej pliki.
45
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Domyślnie Kali Linux nie wyświetla wszystkich aplikacji uruchamianych podczas
ładowania systemu. Każda aplikacja ładowana i uruchamiana podczas bootowania
systemu wydłuża ten proces, może zabierać cenne zasoby i wpływać na zmniejszenie
wydajności działania systemu. Aby przeglądać listę takich programów i zablokować
aplikacje niepotrzebnie ładowane podczas uruchamiania systemu, powinieneś
zainstalować program Boot Up Manager (BUM), pokazany na rysunku poniżej.
Aby to zrobić, powinieneś wykonać polecenie apt-get install bum.
Zainstaluj program gnome-do (apt-get install gnome-do), który pozwala na
uruchamianie aplikacji bezpośrednio z poziomu klawiatury. Aby ją skonfigurować,
musisz ją uruchomić z menu Applications/Accessories (aplikacje/akcesoria), a następnie
wybrać menu Preferences (właściwości), aktywować opcję Quiet Launch (ciche
uruchamianie), wybrać uruchamiającą kombinację klawiszy (na przykład Ctrl+Shift)
i wpisać wiersz polecenia, który powinien zostać wykonany po naciśnięciu tej
kombinacji.
Pamiętaj, że do wykonywania bardziej złożonych operacji możesz używać nie tylko
skrótów klawiszowych, ale też odpowiednio przygotowanych skryptów powłoki.
Udostępnianie i współużytkowanie folderów
z systemem operacyjnym hosta
System Kali Linux pozwala na udostępnianie plików i danych aplikacjom działającym pod
kontrolą innych systemów operacyjnych, a zwłaszcza systemu Microsoft Windows. Najbardziej
efektywnym sposobem udostępniania danych jest utworzenie dedykowanego foldera, który
będzie dostępny zarówno z poziomu systemu operacyjnego hosta, jak i z poziomu systemu
Kali Linux działającego w maszynie wirtualnej.
46
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
Kiedy w takim współdzielonym folderze zostaną umieszczone jakieś pliki, stają się one na-
tychmiast dostępne dla wszystkich innych systemów korzystających z tego foldera.
Aby utworzyć taki współdzielony folder, powinieneś wykonać następujące polecenia:
1. Utwórz folder w systemie plików hosta. W naszym przypadku utworzymy folder
o nazwie Kali_Share.
2. Kliknij nowo utworzony folder prawym przyciskiem myszy i wybierz polecenie
Sharing (udostępnianie).
3. Włącz udostępnianie foldera i upewnij się, że dostęp będą mieli wszyscy
użytkownicy (Everyone), a poziom uprawnień ustawiony jest na prawo odczytu
i zapisu (Read/Write).
4. Jeżeli jeszcze tego nie zrobiłeś, zainstaluj w maszynie wirtualnej dodatki Guest
Additions (dla VirtualBox) lub VMware Tools (dla VMware); więcej szczegółowych
informacji na ten temat znajdziesz w dodatku, w sekcji „Instalowanie systemu Kali
Linux”.
5. Po zakończeniu instalacji przejdź do menu głównego VMware, wybierz polecenie
Manage/Virtual Machine Settings (zarządzaj/ustawienia maszyny wirtualnej), przejdź
na kartę Options (opcje), kliknij kategorię Shared Folders (foldery współdzielone)
i zaznacz opcję Always Enabled (zawsze włączone). Wybierz katalog w systemie
plików hosta, który ma być współdzielony, tak jak to zostało pokazane na rysunku
poniżej:
47
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
6. Jeżeli używasz programu Oracle VirtualBox, zaznacz maszynę wirtualną, wybierz
polecenie Settings (ustawienia), zaznacz opcję Shared Folders (foldery współdzielone)
i wybierz katalog w systemie plików hosta, który ma być współdzielony, tak jak to
zostało pokazane na rysunku poniżej:
W starszych wersjach programu VMware Player menu wygląda nieco inaczej.
7. Przejdź do systemu Kali Linux w maszynie wirtualnej i uruchom przeglądarkę
plików. Wybrany współdzielony katalog powinien być widoczny w folderze mnt
(lub w jego subfolderze hgfs).
8. Przeciągnij ikonę współdzielonego foldera na pulpit systemu Kali Linux,
aby utworzyć na nim skrót do tego foldera.
9. Od tej chwili wszystkie pliki, jakie umieścisz we współdzielonym folderze, będą
dostępne zarówno dla systemu Kali Linux, jak i z poziomu systemu operacyjnego
hosta maszyny wirtualnej.
Pamiętaj, że jeżeli we współdzielonym folderze chcesz przechowywać wrażliwe dane pozy-
skane w trakcie przeprowadzania testu penetracyjnego, to zawartość takiego foldera powinna
być zaszyfrowana. Dzięki temu wrażliwe dane klienta będą lepiej zabezpieczone i chronione
przed przypadkowym wyciekiem, gdyby zawierający je dysk został zagubiony lub skradziony.
Dostosowywanie systemu Kali Linux do własnych potrzeb
przy użyciu skryptów powłoki bash
W systemie Linux dostępnych jest wiele różnych rodzajów powłok, za pomocą których mo-
żemy korzystać z systemu z poziomu wiersza poleceń konsoli. Najczęściej możemy spotkać
powłoki sh, bash, csh, tcsh oraz ksh.
48
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
W zależności od celu przeprowadzanego testu penetracyjnego do dostosowania systemu Kali
Linux do własnych potrzeb możemy użyć jednego z następujących skryptów powłoki bash:
https://github.com/leebaird/discover/blob/master/update.sh
https://code.google.com/archive/p/lazykali/downloads
Budowanie środowiska testowego
Każdy pentester powinien utworzyć swoje własne środowisko testowe, w którym będzie
można testować różne podatności i luki w zabezpieczeniach przed dokonaniem próby ich wy-
korzystania podczas rzeczywistego testu penetracyjnego w środowisku klienta.
Konfigurowanie sieci wirtualnej z usługą Active Directory
Zdecydowana większość dużych firm i organizacji do zarządzania kontami użytkowników, za-
sobami plikowymi, czy drukarkami sieciowymi wykorzystuje w swoich środowiskach usługę
Microsoft Active Directory. Potencjalni napastnicy obecnie nie są już zainteresowani wyłącz-
nie możliwością wykonywania poleceń na skompromitowanym serwerze, ponieważ znacznie
bardziej atrakcyjnym dla nich celem może być przejęcie kontroli nad kontrolerem domeny,
który spełnia rolę swego rodzaju podwójnej helisy DNA dla całej firmy. W dalszej części książki
będziemy opisywać niektóre zaawansowane ataki na usługę Active Directory oraz serwery
DNS danego środowiska. W tej sekcji pokażemy, jak zainstalować usługę Active Directory na
serwerze Windows 2008 R2.
Najpierw musimy w naszym środowisku testowym zainstalować serwer Windows 2008 R2.
Aby to zrobić, musimy wykonać takie same kroki, jakie wykonywaliśmy podczas instalowania
systemu Kali Linux.
Następnie na ekranie pojawi się kreator, który krok po kroku przeprowadzi nas przez proces
instalowania usług Active Directory Domain Services. Załóżmy zatem, że serwer Windows
2008 R2 mamy już zainstalowany i na ekranie pojawił się kreator instalowania usług Active
Directory. Kliknij polecenie Server Manager (zarządzanie serwerem), przejdź do opcji Roles
(role), a następnie wybierz polecenie Add Roles (dodaj role). Na ekranie pojawi się pierwszy krok
kreatora, Before you begin (zanim rozpoczniesz). Naciśnij przycisk Next (dalej), a na ekranie
zobaczysz okno przedstawione na pierwszym rysunku na następnej stronie.
Zaznacz opcję Active Directory Domain Services (domenowe usługi Active Directory). Ist-
nieje duże prawdopodobieństwo, że po wybraniu tej opcji na ekranie pojawi się komunikat
z prośbą o zainstalowanie pakietu Microsoft .NET Framework 3.5.1, który jest niezbędny do
poprawnego działania usług Active Directory. Naciśnij przycisk Add Required Features (dodaj
wymagane komponenty), tak jak to zostało pokazane na drugim rysunku na następnej stronie.
49
Poleć książkęKup książkęKali Linux. Testy penetracyjne i bezpieczeństwo sieci dla zaawansowanych
Aby rozpocząć instalowanie, naciśnij przycisk Install (instaluj). Wybrane komponenty zostaną
zainstalowane i na ekranie pojawi się okno z informacją o pomyślnym zakończeniu procesu
instalacji usług Active Directory, tak jak to zostało pokazane na pierwszym rysunku na następnej
stronie.
Po zakończeniu instalacji usług Active Directory musimy się upewnić, że wszystko działa popraw-
nie. Aby to zrobić, musimy kliknąć przycisk uruchamiający kreatora usług Active Directory Do-
main Services i utworzyć nowy las AD (ang. Active Directory Forest). W naszym przypadku
będziemy tworzyć nowy las, którego pełna nazwa domenowa FQDN (ang. Fully Qualified
Domain Name) to Secure.kali.com. Nazwę domeny NetBIOS ustawiamy na Secure, następnie
50
Poleć książkęKup książkęRozdział 1. • Testy penetracyjne ukierunkowane na osiągnięcie celu
ustawiamy poziom funkcjonalności lasu (ang.
Pobierz darmowy fragment (pdf)