Praktyczna Analiza Malware. Przewodnik po usuwaniu złośliwego oprogramowania - ebook
Praktyczna Analiza Malware. Przewodnik po usuwaniu złośliwego oprogramowania - ebook
Analiza złośliwego oprogramowania to ogromny biznes, gdyż ataki mogą słono kosztować firmę. Gdy malware naruszy Twoją obronę, musisz działać szybko, aby wyleczyć bieżące infekcje i zapobiec występowaniu przyszłych.
Tych, którzy chcą być kilka kroków przed najnowszym złośliwym oprogramowaniem, książka Praktyczna analiza malware nauczy narzędzi i technik używanych przez profesjonalnych analityków. Mając tę książkę jako przewodnik, będziesz w stanie bezpiecznie analizować, debugować i deasemblować każde malware, które pojawi się na Twojej drodze.
| Kategoria: | Hacking |
| Zabezpieczenie: |
Watermark
|
| ISBN: | 978-83-01-21972-7 |
| Rozmiar pliku: | 13 MB |
FRAGMENT KSIĄŻKI
– DINO DAI ZOVI, NIEZALEŻNY KONSULTANT W ZAKRESIE BEZPIECZEŃSTWA
„…najbardziej wszechstronny przewodnik po analizie złośliwego oprogramowania, oferujący szczegółowe omówienie wszystkich niezbędnych umiejętności niezbędnych do zrozumienia konkretnych wyzwań, przed którymi stoi współczesne malware”.
– CHRIS EAGLE, STARSZY WYKŁADOWCA W ZAKRESIE NAUK INFORMATYCZNYCH, NAVAL POSTGRADUATE SCHOOL
„Praktyczne wprowadzenie do analizy złośliwego oprogramowania – poleciłbym to każdemu, kto chce wnikliwie analizować złośliwe oprogramowanie występujące w systemach Windows”.
– ILFAK GUILFANOV, TWÓRCA IDA PRO
„...świetne wprowadzenie do analizy złośliwego oprogramowania. Każdy rozdział zawiera szczegółowe wyjaśnienia techniczne i praktyczne ćwiczenia laboratoryjne zapewniające bezpośrednie wprowadzenie do rzeczywistego malware”.
– SEBASTIAN PORST, INŻYNIER OPROGRAMOWANIA W GOOGLE
„...inżynieria odwrotna dla czytelników na wszystkich poziomach umiejętności. Bogate technicznie i przystępne laboratoria pogłębią Twoje zrozumienie sztuki i nauki związanej z inżynierią odwrotną. Gorąco polecam tę książkę zarówno początkującym, jak i ekspertom”.
– DANNY QUIST, DOKTOR, ZAŁOŻYCIEL OFFENSIVE COMPUTING
„Jeśli chciałbyś przeczytać tylko jedną książkę o złośliwym oprogramowaniu lub chcesz włamać się do świata analizy malware, to powinieneś sięgnąć po tę książkę”.
– PATRICK ENGBRETSON, PROFESOR W ZAKRESIE BEZPIECZEŃSTWA INFORMACJI, DAKOTA STATE UNIVERSITY I AUTOR _The Basics of Hacking and Pen Testing_
„...doskonały dodatek do materiałów szkoleniowych dla zaawansowanego kursu z zakresu bezpieczeństwa oprogramowania lub systemów wykrywania włamań. Laboratoria są szczególnie przydatne dla studentów w nauczaniu metod inżynierii odwrotnej, analizy i zrozumienia złośliwego oprogramowania”.
– SAL STOLFO, PROFESOR, COLUMBIA UNIVERSITYO autorach
MICHAEL SIKORSKI jest konsultantem ds. bezpieczeństwa komputerowego w firmie Mandiant. Zajmuje się inżynierią odwrotną w zakresie złośliwego oprogramowania na potrzeby dochodzeń związanych z pojawiającymi się incydentami oraz zajmuje się badaniami i tworzeniem specjalistycznych rozwiązań w zakresie bezpieczeństwa dla klientów firmy. Mike stworzył wiele kursów z zakresu analizy złośliwego oprogramowania i prowadzi je dla różnych odbiorców, w tym FBI i Black Hat. Do Mandiant przeniósł się z MIT Lincoln Laboratory, gdzie prowadził badania w zakresie pasywnego mapowania sieci i testów penetracyjnych. Mike jest również absolwentem trzyletniego System and Network Interdisciplinary Program (SNIP) w NSA. Będąc w NSA, miał znaczący udział w badaniach w zakresie technik inżynierii odwrotnej i otrzymał wiele nagród za kreatywność w dziedzinie analizy sieci.
ANDREW HONIG jest ekspertem w zakresie bezpieczeństwa informacji w Departamencie Obrony. Prowadzi kursy z zakresu analizy oprogramowania, inżynierii odwrotnej i programowania w systemie Windows w National Cryptologic School oraz posiada certyfikat Certified Information Systems Security Professional (CISSP). Andy’emu jest powszechnie przypisywanych kilka zero-day exploitów w produktach wirtualizacyjnych VMware. Opracował on także narzędzia do wykrywania nowatorskiego złośliwego oprogramowania, w tym dotyczącego jądra. Jest ekspertem w analizie i poznawaniu zarówno złośliwego, jak i normalnego oprogramowania, ma również ponad 10-letnie doświadczenie jako analityk w branży bezpieczeństwa komputerowego.
_O RECENZENCIE TECHNICZNYM_
STEPHEN LAWLER jest założycielem i prezesem małej firmy konsultingowej zajmującej się oprogramowaniem i bezpieczeństwem. Stephen od ponad 7 lat aktywnie działa w zakresie bezpieczeństwa informacji, przede wszystkim w inżynierii odwrotnej, analizie złośliwego oprogramowania i badaniach podatności na zagrożenia. Był członkiem Malware Analysis Team w firmie Mandiant oraz pomagał w głośnych włamaniach komputerowych mających wpływ na kilka firm z listy Fortune 100. Wcześniej pracował w dziale Security and Mission Assurance (SMA) firmy ManTech International, gdzie w ramach ciągłych działań związanych z zapewnieniem bezpieczeństwa oprogramowania wykrył liczne luki zero-day i oraz techniki badania podatności na błędy. Wcześniej, gdy nie miał nic wspólnego z bezpieczeństwem komputerowym, był głównym programistą komponentu symulatora sonaru w programie SMMTT US Navy.
O WSPÓŁPRACUJĄCYCH AUTORACH
NICK HARBOUR jest analitykiem malware w Mandiant i doświadczonym weteranem branży inżynierii odwrotnej. Swoją 13-letnią karierę w dziedzinie bezpieczeństwa informacji rozpoczął jako ekspert w dziedzinie kryminalistyki komputerowej i badacz w Department of Defense Computer Forensics Laboratory. Przez ostatnie 6 lat Nick pracował w Mandiant i koncentrował się głównie na analizie malware. Jest badaczem w dziedzinie technik inżynierii odwrotnej oraz napisał kilka programów pakujących i narzędzi do zaciemniania kodu, w tym PE-Scrambler. Kilkakrotnie podczas Black Hat i Defcon prezentował tematy dotyczące przeciwdziałania technikom inżynierii odwrotnej i śledczej. Jest głównym programistą i wykładowcą kursu Black Hat Advanced Malware Analysis.
LINDSEY LACK jest dyrektorem technicznym w Mandiant z ponad 12-letnim doświadczeniem w zakresie bezpieczeństwa informacji; specjalizuje się w inżynierii odwrotnej malware, ochronie sieci i działaniach związanych z bezpieczeństwem. Pomogła utworzyć i uruchomić Security Operations Center, prowadziła badania w zakresie ochrony sieci oraz opracowała rozwiązania związane z zabezpieczaniem usług hostingowych. Wcześniej pracowała w National Information Assurance Research Laboratory, Executive Office of the President (EOP), Cable and Wireless oraz w armii amerykańskiej. Oprócz tytułu licencjata z informatyki na Uniwersytecie Stanforda, w Naval Postgraduate School Lindsey otrzymała również tytuł magistra informatyki w zakresie bezpieczeństwa informacji.
JERROLD „JAY” SMITH jest głównym konsultantem w Mandiant, gdzie specjalizuje się w inżynierii odwrotnej malware i analizach kryminalistycznych. W tej roli brał udział w wielu reakcjach na incydenty, pomagając wielu klientom firm z listy Fortune 500. Przed dołączeniem do Mandiant Jay pracował w NSA, ale nie wolno mu na ten temat mówić. Jay uzyskał tytuł licencjata w dziedzinie elektrotechniki i informatyki na Uniwersytecie Kalifornijskim w Berkeley oraz tytuł magistra w dziedzinie informatyki na Johns Hopkins University.Przedmowa
Niewiele dziedzin bezpieczeństwa cyfrowego wydaje się być równie asymetrycznych, co te dotyczące złośliwego oprogramowania, narzędzi ochrony i systemów operacyjnych.
Latem 2011 roku uczestniczyłem w prezentacji Peitera (Mudge) Zatko podczas Black Hat w Las Vegas w stanie Nevada. Podczas swojego przemówienia Mudge przedstawił asymetryczny charakter nowoczesnego oprogramowania. Wyjaśnił, w jaki sposób przeanalizował 9000 plików binarnych malware oraz wyznaczył średnią wynoszącą 125 linii kodu (LOC) dla swojego zestawu próbek.
Można byłoby stwierdzić, że próbki Mudge zawierały tylko „prosty” lub „prymitywny” malware. Można byłoby spytać – a co z czymś naprawdę „uzbrojonym”? Czymś w stylu (wstrzymaj oddech) — Stuxnet? Według Larry'ego L. Constantine'a¹ Stuxnet zawierał około 15 000 LOC, a zatem był 120 razy większy niż próbka złośliwego oprogramowania o średniej wartości 125 LOC. Stuxnet był wysoce wyspecjalizowany i ukierunkowany, prawdopodobnie ze względu na swój ponadprzeciętny rozmiar.
Opuszczając na chwilę świat malware’u, edytor tekstowy, którego używam (gedit, edytor tekstowy GNOME), zawiera _gedit.c_ z 295 LOC, _gedit.c_ zaś jest tylko jednym ze 128 plików źródłowych (wraz z 3 dodatkowymi katalogami) opublikowanym w git-owym repozytorium kodu źródłowego dla gedit². Zsumowanie wszystkich 128 plików i 3 katalogów daje 70 484 LOC. Stosunek LOC nieszkodliwych aplikacji do malware’u wynosi ponad 500 do 1. W porównaniu z dość prostym narzędziem, takim jak edytor tekstu, typowa próbka złośliwego oprogramowania wydaje się bardzo wydajna!
Wartość 125 LOC podana przez Mudge'a wydawała mi się dość niska, ponieważ istnieją różne definicje „złośliwego oprogramowania”. Wiele złośliwych aplikacji istnieje jako „pakiety” z wieloma funkcjami i elementami infrastruktury. Aby ocenić tego rodzaju złośliwe oprogramowanie, policzyłem to, co można zasadnie uznać za elementy „źródłowe” trojana Zeus (.cpp, .obj, .h itp.) i uzyskałem 253 774 LOC. Porównując program taki jak Zeus z typową próbką Mudge’a, mamy stosunek ponad 2000 do 1.
Mudge następnie porównał LOC złośliwego oprogramowania z wartością wyznaczoną dla produktów przeznaczonych do przechwytywania i eliminowania złośliwego oprogramowania. Jako swoje oszacowanie dla nowoczesnych produktów obronnych podał wartość 10 milionów LOC. Aby uprościć matematykę, wyobraźmy sobie, że istniejące produkty zawierają co najmniej 12,5 milionów linii kodu, ustanawiając stosunek ofensywnego LOC do defensywnego LOC na poziomie 100 000 do 1. Innymi słowy, na 1 „ofensywną” linię kodu obrońcy piszą 100 000 LOC służących obronie.
Mudge porównał także LOC szkodliwego oprogramowania z systemami operacyjnymi, dla których szkodliwe oprogramowanie zostałe utworzone w celu ich ataku. Analitycy szacują, że Windows XP został zbudowany z 45 milionów LOC, natomiast nikt nie wie, z ilu linii kodu jest zbudowany Windows 7. Mudge podał 150 milionów jako wartość dla współczesnych systemów operacyjnych, przypuszczalnie myśląc o najnowszych wersjach Windowsa. Aby uprościć matematykę, zredukujmy to do 125 milionów, przez co będziemy mieli stosunek 1 milion do 1 określający rozmiar docelowego systemu operacyjnego do wielkości złośliwego oręża stworzonego do atakowania go.
Zatrzymajmy się, aby podsumować wyniki, które uzyskaliśmy, licząc LOC:
120:1 Stuxnet w stosunku do typowego malware
500:1 prosty edytor tekstu w stosunku do typowego malware
2000:1 pakiet malware w stosunku do typowego malware
100 000:1 narzędzie ochrony w stosunku do typowego malware
1 000 000:1 docelowy system operacyjny w stosunku do typowego malware
Z punktu widzenia obrońcy, stosunek wielkości narzędzi do obrony i docelowych systemów operacyjnych do typowych przykładów złośliwego oprogramowania wypada blado. Nawet przyjęcie pakietu malware jako typowej wielkości próbki nie wydaje się zbytnio poprawiać sytuacji obrońcy! Wygląda na to, że narzędzia do obrony (i ich sprzedawcy) poświęcają dużo wysiłku na wyprodukowanie tysięcy LOC, ale tylko po to, by mogli obejść ich sprytni, zwinni intruzi, którzy mają znacznie mniej LOC.
Co ma zrobić obrońca? Odpowiedzią jest wzięcie przykładu z tych, którzy mają przewagę nad przeciwnikiem – potraktujmy „przeszkodę” jako „okazję”! Zapomnijmy o rozmiarach narzędzi służących do obrony i systemów operacyjnych – niewiele można na to poradzić. Cieszmy się faktem, że próbki złośliwego oprogramowania są tak (relatywnie) małe, jakie są w rzeczywistości.
Wyobraźmy sobie, że próbujemy zrozumieć na poziomie kodu źródłowego zawierającego 12,5 miliona LOC, jak działa narzędzie przeznaczone do obrony. To trudne zadanie, chociaż niektórzy badacze zajmują się tego typu projektami. Jednym z niesamowitych przykładów jest artykuł „Sophail: A Critical Analysis of Sophos Antivirus” autorstwa Tavisa Ormandy’ego³, zaprezentowany podczas Black Hat w Las Vegas w 2011 roku. Tego rodzaju analiza jest jednak wyjątkiem, a nie regułą.
Zamiast martwić się milionami LOC (albo setkami lub dziesiątkami tysięcy), przenieśmy się do obszaru zawierającego tysiąc lub mniej – czyli miejsca, w którym można znaleźć znaczną część światowego malware. Naszym głównym celem jako obrońcy przed malware jest określenie, co ono robi, jak objawia się w naszym środowisku i co z tym zrobić. Kiedy mamy do czynienia z próbkami o rozsądnych rozmiarach i odpowiednimi umiejętnościami, mamy szansę odpowiedzieć na te pytania i tym samym zmniejszyć ryzyko dla swojej firmy.
Jeśli autorzy malware są gotowi tworzyć złośliwe oprogramowanie, to autorzy książki, którą czytacie, są tu po to, aby dostarczyć umiejętności. _Praktyczne analizowanie malware_ to książka, którą moim zdaniem każdy analityk złośliwego oprogramowania powinien mieć pod ręką. Jeśli jesteś początkujący, to warto, żebyś zapoznał się z wprowadzającym, praktycznym materiałem, którego potrzebujesz, aby wziąć udział w walce. Jeśli jesteś średniozaawansowanym praktykiem, to zabierze cię ona do następnego poziomu. Jeśli jesteś zaawansowanym inżynierem, to znajdziesz tu perełki, które popchną cię jeszcze wyżej – i dzięki temu będziesz mógł powiedzieć: „proszę, przeczytaj ten świetny podręcznik”, gdy otrzymasz pytania od tych, dla których jesteś mentorem.
_Praktyczne analizowanie malware_ to tak naprawdę dwie książki w jednej – pierwsza zawiera tekst pokazujący czytelnikom, jak analizować współczesne złośliwe oprogramowanie. Moglibyście kupić książkę tylko z tego powodu, a i tak wiele byście skorzystali z jej porad. Jednak autorzy postanowili pójść o krok dalej i napisać drugą książkę – ten dodatkowy tom można by nazwać _Analiza malware w zastosowaniach_ i składa się on z ćwiczeń, krótkich odpowiedzi i szczegółowych rozważań przedstawionych na końcu każdego rozdziału oraz w załączniku C. Autorzy napisali również całe złośliwe oprogramowanie, którego używają jako przykładów, po to, aby zapewnić bogate, ale bezpieczne środowisko do nauki.
Dlatego zamiast rozpaczać nad widocznymi asymetriami, przed którymi stoją cyfrowi obrońcy, cieszmy się, że złośliwe oprogramowanie ma taką postać, jaką obecnie ma. Uzbrojeni w książkę taką jak _Praktyczne analizowanie malware_, będziemy mieć przewagę, której potrzebujemy, aby lepiej wykrywać włamania do naszej firmy lub firmy naszych klientów i odpowiednio na nie reagować. Autorzy są ekspertami w swoich królestwach, porady zaś pochodzą z pierwszej linii frontu, nie z teorii z odosobnionego laboratorium badawczego. Życzymy miłej lektury i pamiętajcie, że każdy fragment złośliwego oprogramowania, które poddajecie inżynierii odwrotnej i analizie, zwiększa koszty przeciwnika, wystawiając jego mroczne sztuczki na światło wiedzy.
Richard Bejtlich (@taosecurity)
Chief Security Officer w Mandiant oraz założyciel TaoSecurity
Manassas Park, Virginia
2 stycznia 2012 rokuPodziękowania
Podziękowania dla Lindsey Lack, Nicka Harboura i Jerrolda „Jaya” Smitha za wkład w rozdziały dotyczące ich specjalizacji. Dziękujemy naszemu recenzentowi technicznemu Stephenowi Lawlerowi, który samodzielnie przejrzał ponad 50 ćwiczeń laboratoryjnych i wszystkie nasze rozdziały. Dziękujemy Sethowi Summersettowi, Williamowi Ballenthinowi i Stephenowi Davisowi za opracowanie kodu do tej książki.
Specjalne podziękowania za wysiłek należą się wszystkim w No Starch Press. Alison, Bill, Travis i Tyler – z radością współpracowaliśmy z wami, i wszystkimi innymi w No Starch Press.
_INDYWIDUALNE PODZIĘKOWANIA_
MIKE: Dedykuję tę książkę Rebecce – nie mógłbym tego zrobić bez tak wspierającej i kochającej osoby w moim życiu.
ANDY: Chciałbym podziękować Molly, Claire i Eloise za to, że są najlepszą rodziną, jaką może mieć facet.Wprowadzenie
Dzwoni telefon i koleś od sieci mówi, że cię zhakowano i że poufne informacje twoich klientów zostały skradzione z twojej sieci. Śledztwo zaczynasz od sprawdzenia dzienników w celu zidentyfikowania zaatakowanych hostów. Skanujesz maszyny za pomocą antywirusa w celu znalezienia złośliwego programu i masz łut szczęścia, gdy zostaje wykryty koń
trojański o nazwie _TROJ.snapAK_. Kasujesz ten plik w celu rozwiązania problemu i korzystając z zapisu ruchu sieciowego, tworzysz sygnaturę w systemie wykrywania włamań (_Intrusion Detection System_, IDS) w celu upewnienia się, że żadne inne maszyny nie zostaną zainfekowane. Następnie łatasz dziurę, przez którą atakujący się włamali, aby się upewnić, że to się więcej nie powtórzy.
Kilka dni później goście od sieci wracają z informacją, że z twojej sieci znowu są kradzione poufne dane. Wygląda to na taki sam atak, ale nie masz pojęcia, co robić. Najwyraźniej twoja sygnatura IDS nie działa jak należy, ponieważ zainfekowanych jest więcej komputerów, a twoje oprogramowanie antywirusowe nie zapewnia wystarczającej ochrony, aby odizolować zagrożenie. Teraz kierownictwo wyższego szczebla domaga się wyjaśnienia, co się stało, a wszystko, co możesz im powiedzieć o złośliwym oprogramowaniu, to to, że jest to _TROJ.snapAK._ Nie znasz odpowiedzi na najważniejsze pytania i wygląda to trochę kiepsko.
Jak dokładnie określić, co robi _TROJ.snapAK_, dzięki czemu będzie można wyeliminować zagrożenie? Jak wygenerować bardziej efektywną sygnaturę sieciową? Jak się dowiedzieć, czy tym złośliwym oprogramowaniem zainfekowane są inne maszyny? Jak się upewnić, że udało się usunąć cały pakiet złośliwego oprogramowania, a nie tylko jedną jego część? W jaki sposób można odpowiedzieć na pytania kierownictwa dotyczące działania tego złośliwego programu?
Wszystko, co możesz zrobić, to powiedzieć szefowi, że musi zatrudnić drogich zewnętrznych konsultantów, ponieważ nie jesteś w stanie chronić swojej sieci. To nie jest jednak najlepszy sposób na zapewnienie sobie utrzymania stanowiska.
Ach, ale na szczęście wykazałeś się wystarczającą inteligencją, aby zdobyć egzemplarz _Praktycznego analizowania malware_. Umiejętności, których nabędziesz dzięki tej książce, nauczą cię odpowiadać na te trudne pytania i pokażą, jak chronić sieć przed złośliwym oprogramowaniem.
CZYM JEST ANALIZA MALWARE?
Złośliwe oprogramowanie, zwane także _malware_, odgrywa rolę w większości włamań do komputerów i incydentów związanych z bezpieczeństwem. Każde oprogramowanie, które wyrządza szkodę użytkownikowi, komputerowi lub sieci, może zostać uznane za złośliwe oprogramowanie. Należą do niego wirusy, konie trojańskie, robaki, rootkity, scareware i spyware. Podczas gdy różne inkarnacje szkodliwego oprogramowania wykonują różne szkodliwe działania (jak zobaczymy w tej książce), to my – analitycy złośliwego oprogramowania – dysponujemy pewnym podstawowym zestawem narzędzi i technik do jego analizy.
_Analiza malware_ jest sztuką badania złośliwego oprogramowania w celu zrozumienia, jak ono działa, jak je zidentyfikować oraz jak je pokonać lub wyeliminować. I nie musimy być hakerami, aby tego dokonać.
Biorąc pod uwagę, że istnieją miliony złośliwych programów, a każdego dnia ich przybywa, analiza malware ma kluczowe znaczenie dla każdego, kto reaguje na incydenty związane z bezpieczeństwem komputerowym. A przy braku specjalistów zajmujących się analizą malware na wykwalifikowanych analityków złośliwego oprogramowania istnieje duże zapotrzebowanie.
Nie jest to książka o tym, jak znaleźć złośliwe oprogramowanie. Koncentrujemy się na analizie malware po jego wykryciu. Będziemy skupiać się na złośliwym oprogramowaniu działającym w systemie operacyjnym Windows – zdecydowanie najbardziej popularnym systemie operacyjnym, który jest obecnie używany – ale zdobyte umiejętności przydadzą się także podczas analizy złośliwego oprogramowania w dowolnym systemie operacyjnym. Będziemy się koncentrować na plikach wykonywalnych, ponieważ to one najczęściej występują i są najtrudniejszymi plikami, jakie można napotkać. Jednocześnie postanowiliśmy uniknąć omawiania złośliwych skryptów i programów w Javie. Zamiast tego zagłębimy się w metody stosowane do analizy zaawansowanych zagrożeń, takich jak backdoory, ukryte malware i rootkity.
WYMAGANIA WSTĘPNE
Bez względu na twoją znajomość lub doświadczenie w analizie malware, w tej książce znajdziesz coś pożytecznego dla siebie.
W rozdziałach od 1 do 3 zostaną omówione podstawowe techniki analizy złośliwego oprogramowania, które nawet osoby bez doświadczenia w zakresie bezpieczeństwa lub w programowaniu będą w stanie wykorzystać do oceny malware. Rozdziały od 4 do 14 zawierają bardziej zaawansowany materiał, który uzbroi cię w najważniejsze narzędzia i umiejętności potrzebne do analizy większości złośliwych programów. Te rozdziały wymagają pewnej wiedzy na temat programowania. Najbardziej zaawansowany materiał z rozdziałów od 15 do 19 będzie przydatny nawet dla doświadczonych analityków malware, ponieważ obejmuje strategie i techniki analizy również najbardziej wyrafinowanych złośliwych programów, takich jak te wykorzystujące techniki zapobiegania deasemblacji i debugowania czy techniki pakowania.
Ta książka cię nauczy, jak i kiedy korzystać z różnych technik analizy malware. Zrozumienie, kiedy zastosować określoną technikę, może być równie ważne jak jej znajomość, ponieważ użycie niewłaściwej techniki w niewłaściwej sytuacji może być frustrującą stratą czasu. Nie będziemy zajmować się każdym narzędziem, ponieważ zmieniają się one przez cały czas, najważniejsze zaś są podstawowe umiejętności. Ponadto w całej książce będziemy wykorzystywać realistyczne próbki złośliwego oprogramowania (które można pobrać ze strony _http://www.practicalmalwareanalysis.com/_ lub _http://www.nostarch.com/malware.htm_), aby pokazać ci różne rzeczy, które będziesz mógł spotkać podczas analizy złośliwego oprogramowania.
NAUKA W PRAKTYCE
Nasze bogate doświadczenie w prowadzeniu profesjonalnych zajęć z inżynierii odwrotnej i analizy złośliwego oprogramowania nauczyło nas, że uczniowie najlepiej się uczą, gdy ćwiczą zdobywane umiejętności. Przekonaliśmy się, że jakość ćwiczeń laboratoryjnych jest równie ważna jak jakość wykładu i bez tego komponentu prawie niemożliwe jest nauczenie się analizowania złośliwego oprogramowania.
W tym celu ćwiczenia laboratoryjne podane na końcu większości rozdziałów pozwalają rozwijać umiejętności nabyte w danym rozdziale. Te ćwiczenia rzucą ci wyzwanie z użyciem realistycznego malware zaprojektowanego w celu zademonstrowania najczęstszych rodzajów zachowań, które napotkasz w złośliwym oprogramowaniu z rzeczywistego świata. Ćwiczenia laboratoryjne mają na celu rozwinięcie koncepcji przedstawionych w danym rozdziale, bez przytłaczania cię niepowiązanymi informacjami. Każde laboratorium zawiera jeden lub więcej złośliwych plików (które można pobrać ze stron _http://www.practicalmalwareanalysis.com/_ lub _http://www.nostarch.com/malware.htm_), kilka pytań, które poprowadzą cię przez laboratorium, krótkie odpowiedzi na pytania oraz szczegółową analizę malware’u.
Ćwiczenia laboratoryjne mają symulować realistyczne scenariusze analizy złośliwego oprogramowania. Jako takie zawierają generyczne nazwy lików, które nie zawierają sugestii co do funkcjonalności złośliwego oprogramowania. Podobnie jak w przypadku prawdziwego złośliwego oprogramowania, zaczniemy od braku informacji i będziemy musieli użyć nabytych tu umiejętności, aby zebrać wskazówki i dowiedzieć się, co robi dane malware.
Czas wymagany na każde laboratorium będzie zależeć od twojego doświadczenia. Możesz spróbować ukończyć dane ćwiczenie samodzielnie lub postępować zgodnie ze szczegółową analizą, aby zobaczyć, jak w praktyce są stosowane różne techniki.
Większość rozdziałów zawiera trzy laboratoria. Pierwsze ćwiczenie laboratoryjne jest na ogół najłatwiejsze i większość czytelników powinna być w stanie je ukończyć. Drugie ćwiczenie jest umiarkowanie trudne, a większość czytelników będzie potrzebować pewnych wskazówek znajdujących się w rozwiązaniu. Trzecie laboratorium będzie trudne i tylko najbardziej biegli czytelnicy będą w stanie je ukończyć bez pomocy wskazówek znajdujących się w rozwiązaniu.
CO ZNAJDUJE SIĘ W KSIĄŻCE?
_Praktyczne analizowanie malware_ zaczyna się od prostych metod, które można wykorzystać do uzyskania informacji od stosunkowo niewyszukanych złośliwych programów, i przechodzi do coraz bardziej skomplikowanych technik, które można wykorzystać do postępowania z nawet najbardziej wyrafinowanym malware. Oto co znajduje się w poszczególnych rozdziałach:
• rozdział 0, „Elementarz analizy malware” ustanawia ogólny proces i metodologię analizy złośliwego oprogramowania;
• rozdział 1, „Podstawowe techniki statyczne” uczy sposobów uzyskiwania informacji z pliku wykonywalnego bez jego uruchamiania;
• rozdział 2, „Analiza malware na maszynach wirtualnych” przeprowadzi cię przez proces konfigurowania maszyn wirtualnych jako bezpiecznych środowisk do uruchamiania złośliwego oprogramowania;
• rozdział 3, „Podstawowa analiza dynamiczna” uczy łatwych w użyciu, ale skutecznych technik analizy złośliwego programu poprzez jego uruchomienie;
• rozdział 4, „Kurs błyskawiczny asemblera x86” to wprowadzenie do asemblera x86, który stanowi podstawę do używania IDA Pro i przeprowadzania dogłębnej analizy złośliwego oprogramowania;
• rozdział 5, „IDA Pro” pokazuje, jak korzystać z IDA Pro – jednego z najważniejszych narzędzi do analizy malware; IDA Pro będziemy używać w pozostałej części książki;
• rozdział 6, „Rozpoznawanie w asemblerze konstrukcji języka C” zawiera przykłady kodu języka C w asemblerze i uczy, jak zrozumieć wysokopoziomową funkcjonalność kodu asemblera;
• rozdział 7, „Analizowanie malware w systemie Windows” obejmuje szeroki zakres pojęć specyficznych dla systemu Windows, niezbędnych do zrozumienia szkodliwych programów z tego systemu;
• rozdział 8, „Debugowanie” wyjaśnia podstawy debugowania oraz to, jak debuggera powinni używać analitycy złośliwego oprogramowania;
• rozdział 9, „OllyDbg” pokazuje, jak korzystać z OllyDbg – najpopularniejszego debuggera dla analityków malware;
• rozdział 10, „Debugowanie jądra za pomocą WinDbg” opisuje, jak używać debuggera WinDbg do analizowania rootkitów oraz malware działającego w jądrze;
• rozdział 11, „Zachowanie malware” opisuje popularne funkcjonalności malware i pokazuje, jak rozpoznać daną funkcjonalność podczas analizy złośliwego oprogramowania;
• rozdział 12, „Ukryte uruchamianie malware” omawia sposób analizowania szczególnie podstępnej klasy złośliwych programów, które ukrywają swoje wykonanie w innym procesie;
• rozdział 13, „Szyfrowanie danych” pokazuje, w jaki sposób złośliwe oprogramowanie może szyfrować dane, aby utrudnić identyfikację jego działań w ruchu sieciowym lub na hoście ofiary;
• rozdział 14, „Sygnatury sieciowe dotyczące malware” uczy, jak używać analizy malware do tworzenia sygnatur sieciowych, które przewyższają sygnatury utworzone tylko na podstawie przechwyconego ruchu;
• rozdział 15, „Zapobieganie deasemblacji” wyjaśnia, w jaki sposób niektórzy autorzy malware projektują swoje szkodliwe oprogramowanie tak, że trudno jest je deasemblować, oraz jak rozpoznać i pokonać te techniki;
• rozdział 16, „Zapobieganie debugowaniu” opisuje sztuczki stosowane przez twórców malware w celu utrudnienia debugowania kodu i sposoby przezwyciężania tych przeszkód;
• rozdział 17, „Zapobieganie użyciu maszyn wirtualnych” pokazuje techniki stosowane przez malware utrudniające analizę na maszynie wirtualnej oraz to, jak obejść te techniki;
• rozdział 18, „Pakowanie i rozpakowywanie” uczy, w jaki sposób złośliwe oprogramowanie wykorzystuje pakowanie, aby ukryć swój prawdziwy cel, a następnie opisuje krok po kroku podejście służące rozpakowywaniu spakowanych programów;
• rozdział 19, „Analizowanie shellcode” wyjaśnia, czym jest shellcode oraz przedstawia wskazówki i porady dotyczące analizy złośliwego shellcode;
• rozdział 20, „Analizowanie C++” pokazuje, jak zmienia się kod C++ po skompilowaniu oraz jak przeprowadzić analizę złośliwego oprogramowania utworzonego za pomocą C++;
• rozdział 21, „64-bitowe malware” wyjaśnia, dlaczego autorzy szkodliwego oprogramowania mogą tworzyć 64-bitowe malware oraz co należy wiedzieć o różnicach między wersjami x86 a x64;
• dodatek A, „Ważne funkcje systemu Windows” krótko opisuje funkcje systemu Windows powszechnie używane w złośliwym oprogramowaniu;
• dodatek B, „Narzędzia do analizy malware” zawiera listę przydatnych narzędzi dla analityków malware;
• dodatek C, „Rozwiązania ćwiczeń laboratoryjnych” zawiera rozwiązania ćwiczeń laboratoryjnych zawartych w rozdziałach w całej książce.
Naszym celem jest uzbrojenie cię w umiejętności analizowania i zwalczania wszelkiego rodzaju złośliwego oprogramowania. Jak zobaczysz, zajmiemy się wieloma problemami, natomiast za pomocą ćwiczeń laboratoryjnych rozwiniemy przedstawioną wiedzę. Po przeczytaniu tej książki zdobędziesz umiejętności analizowania dowolnego złośliwego oprogramowania, w tym prostych technik szybkiego analizowania typowego malware oraz złożonych, wyrafinowanych umiejętności do analizy nawet najbardziej enigmatycznego złośliwego oprogramowania.
Zaczynajmy!0.
Elementarz analizy malware
Zanim przejdziemy do szczegółów analizy malware, musimy zdefiniować terminologię, uwzględnić typowe rodzaje złośliwego oprogramowania i wprowadzić podstawowe podejścia do jego analizy. Każde oprogramowanie, które robi coś, co powoduje szkodę dla użytkownika, komputera lub sieci – takie jak wirusy, konie trojańskie, robaki, rootkity, scareware i spyware – można uznać za _malware_. Chociaż złośliwe oprogramowanie występuje w wielu różnych postaciach, do jego analizy są wykorzystywane pewne typowe techniki. Ich wybór zależy od tego, jaki jest nasz cel.
Cel analizy malware
Celem analizy malware jest zazwyczaj zdobycie informacji potrzebnych do zareagowania na wtargnięcie intruza do sieci. Zazwyczaj chcemy ustalić, co się stało, i upewnić się, że udało się nam zlokalizować wszystkie zainfekowane maszyny i pliki. Analizując podejrzane malware, zwykle naszym celem jest ustalenie, co konkretny podejrzany plik binarny może zrobić, jak go wykryć w sieci oraz jak oszacować i powstrzymać powodowane przez niego szkody.
Po określeniu, które pliki wymagają pełnej analizy, nadchodzi moment na opracowanie sygnatur wykrywających infekcje złośliwym oprogramowaniem w sieci. Jak się dowiesz z tej książki, analiza malware może zostać wykorzystana do opracowania sygnatur hostowych i sieciowych.
_Sygnatury hostowe_ lub indykatory służą do wykrywania złośliwego kodu na komputerach ofiarach. Indykatory te często określają pliki utworzone lub zmodyfikowane przez złośliwe oprogramowanie lub określone zmiany, które zostały wprowadzone do rejestru. W przeciwieństwie do sygnatur antywirusowych, indykatory malware koncentrują się na tym, co złośliwe oprogramowanie robi w systemie, a nie zaś na jego własnościach, co czyni je bardziej skutecznymi w wykrywaniu złośliwego oprogramowania, które zmienia swoją postać lub zostało usunięte z dysku twardego.
_Sygnatury sieciowe_ służą do wykrywania złośliwego kodu poprzez monitorowanie ruchu sieciowego. Sygnatury sieciowe można tworzyć bez analizy złośliwego oprogramowania, chociaż indykatory tworzone za pomocą analizy malware są zwykle znacznie bardziej skuteczne, oferując wyższy wskaźnik wykrywalności i mniej fałszywych trafień.
Po utworzeniu sygnatur ostatecznym celem jest ustalenie, w jaki sposób działa złośliwe oprogramowanie. Jest to zazwyczaj najczęściej zadawane pytanie przez członków kierownictwa wyższego szczebla, którzy chcą pełnego wyjaśnienia poważnych włamań. Dogłębne techniki, których nauczysz się z tej książki, pozwolą ci określić cel i zdolności złośliwych programów.
Techniki analizy złośliwego oprogramowania
Najczęściej podczas przeprowadzania analizy malware będziemy dysponować tylko plikiem wykonywalnym, który nie jest czytelny dla człowieka. Aby go zrozumieć, będziemy używać różnych narzędzi i sztuczek, z których każde będzie ujawniać niewielką ilość informacji. Aby zobaczyć pełny obraz, będziemy musieli użyć różnych narzędzi.
Istnieją dwa podstawowe podejścia do analizy złośliwego oprogramowania: statyczne i dynamiczne. _Analiza statyczna_ obejmuje badanie malware bez jego uruchamiania. _Analiza dynamiczna_ polega na uruchomieniu malware. Obie techniki dzielą się również na podstawowe lub zaawansowane.
Podstawowa analiza statyczna
Podstawowa analiza statyczna polega na sprawdzeniu pliku wykonywalnego bez przeglądania rzeczywistych instrukcji. Może ona potwierdzić, czy plik jest złośliwy, podać informacje o jego funkcjonalności, a czasem dostarczyć informacje, które pozwolą na wygenerowanie prostych sygnatur sieciowych. Podstawowa analiza statyczna jest prosta i może być szybka, ale w dużej mierze jest nieskuteczna wobec wyrafinowanego złośliwego oprogramowania i może pomijać ważne zachowania.
Podstawowa analiza dynamiczna
Techniki podstawowej analizy dynamicznej polegają na uruchamianiu złośliwego oprogramowania i obserwowaniu jego zachowania w systemie w celu usunięcia infekcji, uzyskania skutecznych sygnatur lub uzyskania obu tych rezultatów. Zanim jednak będzie można bezpiecznie uruchomić złośliwe oprogramowanie, należy skonfigurować środowisko, które pozwoli przestudiować jego działanie bez ryzyka uszkodzenia systemu lub sieci. Podobnie jak techniki podstawowej analizy statycznej, techniki podstawowej analizy dynamicznej mogą być używane przez większość osób bez dogłębnej wiedzy na temat programowania, ale nie będą skuteczne w przypadku wszystkich złośliwych programów i mogą pominąć ważne funkcjonalności.
Zaawansowana analiza statyczna
Zaawansowana analiza statyczna polega na inżynierii odwrotnej elementów wewnętrznych malware poprzez załadowanie pliku wykonywalnego do deasemblera i sprawdzenie instrukcji programu w celu odkrycia, co on robi. Instrukcje są wykonywane przez CPU, a zatem zaawansowana analiza statyczna dokładnie nam powie, co robi program. Jednak ta analiza ma bardziej stromą krzywą uczenia się niż podstawowa analiza statyczna i wymaga specjalistycznej wiedzy na temat deasemblacji, konstrukcji kodu i koncepcji systemu operacyjnego Windows, o których będziemy uczyć się w tej książce.
Zaawansowana analiza dynamiczna
Zaawansowana analiza dynamiczna wykorzystuje debugger do sprawdzania wewnętrznego stanu działającego złośliwego pliku wykonywalnego. Techniki zaawansowanej analizy dynamicznej oferują inny sposób wydobywania szczegółowych informacji z pliku wykonywalnego. Są one najbardziej przydatne, gdy próbujemy uzyskać informacje, które trudno jest zebrać za pomocą innych technik. W tej książce pokażemy, jak korzystać z zaawansowanej analizy dynamicznej wraz z zaawansowaną analizą statyczną w celu pełnej analizy podejrzanego złośliwego oprogramowania.
Rodzaje złośliwego oprogramowania
Podczas przeprowadzania analizy malware często się okazuje, że możemy przyspieszyć analizę, zgadując, co próbuje zrobić złośliwe oprogramowanie, a następnie potwierdzając te hipotezy. Oczywiście lepiej to zrobimy, jeśli będziemy wiedzieć, jakie rzeczy typowo robi malware. W tym celu przedstawiamy kategorie, do których należy większość złośliwego oprogramowania:
BACKDOOR – złośliwy kod, który instaluje się na komputerze, aby umożliwić atakującemu dostęp; backdoory zazwyczaj pozwalają atakującemu połączyć się z komputerem przy użyciu prostego uwierzytelnienia lub nawet bez uwierzytelnienia i wykonywać polecenia w systemie lokalnym.
BOTNET – podobny do backdoora, ponieważ umożliwia atakującemu dostęp do systemu, ale w tym przypadku wszystkie maszyny zainfekowane tym samym botnetem otrzymują te same instrukcje z jednego miejsca, z którego odbywa się atak.
DOWNLOADER – złośliwy kod, który istnieje tylko w celu pobrania innego złośliwego kodu; programy pobierające są zwykle instalowane przez atakujących, gdy po raz pierwszy uzyskują dostęp do systemu; program typu downloader pobiera i instaluje dodatkowy złośliwy kod.
MALWARE ZAJMUJĄCE SIĘ WYKRADANIEM INFORMACJI – złośliwe oprogramowanie, które gromadzi informacje z komputera ofiary i zwykle wysyła je do atakującego; przykłady obejmują sniffery – moduły przechwytujące hasła i keyloggery; ten typ oprogramowania jest zwykle używany do uzyskiwania dostępu do kont internetowych, takich jak poczta e-mail lub bankowość internetowa.
LAUNCHER – złośliwy program używany do uruchamiania innych złośliwych programów; tego typu programy zazwyczaj używają nietradycyjnych technik do uruchamiania innych złośliwych programów w celu zapewnienia sobie ukrycia lub lepszego dostępu do systemu.
ROOTKIT – złośliwy kod zaprojektowany w celu ukrycia istnienia innego kodu; rootkity są zwykle łączone z innym złośliwym oprogramowaniem, takim jak backdoory, aby umożliwić zdalny dostęp do atakującego i utrudnić wykrycie kodu przez ofiarę.
SCAREWARE – malware zaprojektowany do przestraszenia zainfekowanego użytkownika i zmuszenia do zakupienia czegoś; zwykle ma taki interfejs użytkownika, który sprawia, że wygląda jak program antywirusowy lub inny program zabezpieczający; informuje użytkowników, że w ich systemie znajduje się złośliwy kod i że jedynym sposobem, aby się go pozbyć, jest zakup „oprogramowania”, a w rzeczywistości sprzedawane przez niego oprogramowanie nie usuwa niczego więcej niż tylko scareware.
MALWARE ROZSYŁAJĄCE SPAM – złośliwe oprogramowanie, które infekuje komputer użytkownika, a następnie używa go do rozsyłania spamu; to malware generuje dochody dla atakujących, umożliwiając im sprzedaż usług rozsyłania spamu.
ROBAK LUB WIRUS – złośliwy kod, który może się kopiować i infekować dodatkowe komputery.
Malware często obejmuje wiele kategorii. Na przykład program może mieć komponent będący keyloggerem, który zbiera hasła, oraz robaka, który rozsyła spam. Często nie da się ściśle zaklasyfikować złośliwego oprogramowania według jego funkcjonalności.
Malware można również klasyfikować na podstawie tego, czy cel atakującego jest masowy, czy konkretnie wybrany. Malware nastawione na atak masowy, takie jak scareware, stosuje podejście mające na celu oddziaływanie na jak najwięcej komputerów. Spośród tych dwóch rodzajów występuje ono częściej, zwykle jest mniej zaawansowane i łatwiejsze do wykrycia oraz obrony, ponieważ to głównie na nim skupia się działanie oprogramowania zabezpieczającego.
Malware nastawione na konkretny cel, takie jak jedyny w swoim rodzaju backdoor, jest dostosowane do konkretnej organizacji. Stanowi ono większe zagrożenie dla sieci niż malware nastawione na atak masowy, ponieważ nie jest szeroko rozpowszechnione, a nasze produkty służące obronie prawdopodobnie przed nim nie ochronią. Bez szczegółowej analizy tego typu malware ochrona sieci przed nim i usunięcie infekcji jest prawie niemożliwe. Jest ono zwykle bardzo wyrafinowane, a jego zbadanie często wymaga zaawansowanych umiejętności analitycznych opisanych w tej książce.
Ogólne zasady analizy malware
Zakończymy to wprowadzenie kilkoma zasadami, o których należy pamiętać podczas przeprowadzania analizy.
Po pierwsze, nie warto dać się wciągnąć w szczegóły. Większość złośliwych programów jest dużych i złożonych i nie można zrozumieć każdego szczegółu. Zamiast tego należy skupić się na kluczowych cechach. Kiedy natrafimy na trudne i złożone fragmenty, postarajmy się uzyskać ogólne spojrzenie, zanim utkniemy w detalach.
Po drugie, pamiętajmy, że do różnych celów istnieją różne narzędzia i podejścia. Nie ma uniwersalnego sposobu. Każda sytuacja jest inna, a narzędzia i techniki, których się nauczymy, będą miały podobne, a czasem pokrywające się funkcjonalności. Jeśli nie osiągamy sukcesu za pomocą jednego narzędzia, wypróbujmy inne. Jeśli utkniemy, nie spędzajmy zbyt wiele czasu na jednym problemie – przejdźmy do czegoś innego. Spróbujmy przeanalizować malware z innej perspektywy lub po prostu spróbujmy innego podejścia.
Na koniec pamiętajmy, że analiza malware jest jak gra w kotka i myszkę. W miarę opracowywania nowych technik analizy malware, jego autorzy reagują nowymi technikami, by tę analizę udaremnić. Aby odnieść sukces jako analitycy malware, musimy być w stanie rozpoznać, zrozumieć i bronić się przed tymi technikami oraz reagować na zmiany w sztuce analizy złośliwego oprogramowania.