Chciałbym poprzedzić ten artykuł stwierdzeniem, że jeśli jesteś taki jak ja, początkujący w analizie złośliwego oprogramowania i masz ograniczony budżet, studiowanie bez dostępu do materiałów szkoleniowych może nie być dla ciebie najlepszą opcją. Najlepszym sposobem na uzyskanie certyfikatu SANS GREM bez źródła finansowania kursu jest złożenie wniosku o udział w programie SANS Work Study dla kursu FOR610. W zamian za asystowanie instruktorowi kursu, będziesz mógł ocenić kurs i podejść do egzaminu certyfikacyjnego. Otrzymasz również kopie książek i materiałów kursowych, które nie mogą być nabyte w inny sposób ze względu na politykę SANS dotyczącą udostępniania materiałów kursowych. Całkowity koszt tego programu jest w rzeczywistości niższy niż to co zapłaciłem z własnej kieszeni za sam egzamin.
Aby wziąć udział w programie Work Study, jednakże, Twoja aplikacja musi zostać zaakceptowana i musisz być w stanie uczestniczyć w konferencji SANS przez 6 dni. Nie skorzystałem z tej opcji, ponieważ konferencje SANS w mojej okolicy kolidowały z innymi ważnymi rzeczami w moim harmonogramie. Nie uważałem również za stosowne prosić mojego pracodawcę o pokrycie kosztów kursu, ponieważ nie był on bezpośrednio związany z moją rolą w projekcie. Z tych powodów, szkolenie SANS nie wchodziło w rachubę.
Teraz, gdy już ustaliłem dlaczego zrobiłem to co zrobiłem, przejdźmy do tego „jak”.
Czego musiałem się nauczyć
Prosto ze strony SANS, dla GREM, którego potrzebowałem:
- Windows assembly concepts for reverse engineering – What you do in IDA Pro, why you need assembly and C knowledge
- Commommon characteristics of Windows Malware – API functions, threads, struktury
- Dogłębna analiza złośliwych i chronionych plików wykonywalnych – co zrobisz w IDA Pro po kilku ćwiczeniach
- Analiza złośliwych dokumentów – Atakujący umieszczają skrypty w plikach
- Analiza skryptów złośliwych przeglądarek internetowych – Atakujący umieszczają skrypty w Internecie, Command and Control Traffic flows over the wire
- Memory forensics – Volatility
The Importance of Assembly Language and C
Zanim przejdę do różnych zasobów, których używałem do przygotowania się do egzaminu, chcę zauważyć, że istotne jest, aby mieć przynajmniej chwiejne pojęcie o x86 assembly. Bez tego naprawdę nie da się odtworzyć przenośnego kodu wykonywalnego lub shellcode’u. To naprawdę nie jest takie złe jak się wydaje, montaż w swojej istocie jest po prostu arytmetyką, która sprawia, że komputery robią różne rzeczy. Wszystko co musisz wiedzieć, aby rozpocząć naukę binarnej inżynierii wstecznej to rejestry x86, typy zmiennych (word, dword, int, char, itp.), podstawy stosu i kilka instrukcji przepływu programu. Oto zasób, który uważam za pomocny w nauce podstaw:
Pracująca znajomość C jest ważna, ale będziesz wiedział większość z tego, czego potrzebujesz, jeśli wiesz, jak programować w języku podobnym do C, takim jak Java. Jedyne nowe koncepcje, których będziesz potrzebował do inżynierii wstecznej złośliwego oprogramowania to wskaźniki, alokacja pamięci i sterta. Nauczyłem się tego, co było mi potrzebne dzięki tym dwóm źródłom:
Inżynieria odwrotna „Inżynieria odwrotna”
Zdecydowałem się zatytułować ten artykuł „Testowanie szarej skrzynki”, ponieważ patrząc wstecz, zdałem sobie sprawę, że to było w zasadzie to, co robiłem, aby uczyć się do tego egzaminu. Jako ktoś, kto był nowy w analizie złośliwego oprogramowania, niewiele wiedziałem, czego się spodziewać. W trakcie przygotowań do egzaminu korzystałem z następujących źródeł informacji:
- Książki polecane przez tych, którzy zdali egzamin bez płacenia za kurs trzy do pięciu lat temu
- Oficjalny sylabus kursu SANS FOR610
- Arkusze pomocnicze do analizy złośliwych plików stworzone przez Lenny’ego Zeltsera
Podzielę te pozycje na sekcje, aby pokazać, czego nauczyłem się z każdego źródła.
Rekomendacje książkowe
Wybór przydatnych książek jest bardzo ważny dla sukcesu GREM, ponieważ możesz zabrać ich mnóstwo na egzaminy GIAC jako referencje. Większość posiadaczy certyfikatu GREM z chęcią podzieli się listą (nie-SANS) książek, z których korzystali podczas przygotowań z osobami zastanawiającymi się, od czego zacząć naukę do egzaminu. Moim pierwszym krokiem było przejrzenie list lektur polecanych przez absolwentów GREM, których udało mi się znaleźć. Najbardziej konsekwentnie polecane książki to:
- „Practical Malware Analysis”- Fantastyczny przewodnik po analizie behawioralnej, inżynierii wstecznej i pokonywaniu antyanalizy. Ta książka jest niezastąpiona, nie znajdziesz źródła, które by jej nie polecało. Oprócz informacji, zawiera bardzo pomocne laboratoria, aby wzmocnić twoją wiedzę.
- „The Malware Analyst’s Cookbook” – Przewodnik po wielu różnych narzędziach do analizy złośliwego oprogramowania. Laboratoria i skrypty są bardzo przestarzałe, ale przeglądy narzędzi były bardzo przydatne. Wykorzystałem sekcje dotyczące analizy pamięci, złośliwego oprogramowania skryptowego w przeglądarce oraz analizy złośliwych dokumentów, aby przygotować się do egzaminu.
- „The Art of Memory Forensics” – Warto mieć to niekoniecznie jako główne źródło, ale jako źródło uzupełniające do sekcji „Malware Analyt’s Cookbook” dotyczącej analizy pamięci. Wiele z wtyczek Volatility, których będziesz potrzebował, nie jest omówionych zbyt szczegółowo, a informacje z MAC powinny być porównywane z informacjami z tej książki. Ta książka obejmuje również wiele wewnętrznych Windows, które są przydatne do egzaminu.
- „Windows Internals 6 lub 7” – Osobiście uważam, że te książki są overkill. Jeśli jesteś zaznajomiony z Windows z punktu widzenia bezpieczeństwa, wcześniejsze książki są wszystkim, czego potrzebujesz, aby zrozumieć Windows Internals. Nigdy nie zalecałbym zabierania tych książek ze sobą na egzamin, a nawet indeksowania go. Wszystkie istotne informacje znajdują się już w „Art of Memory Forensics” lub na stronie MSDN.
- „The IDA Pro Book” – Nie sądzę, aby ktokolwiek powiedział ci, abyś wziął tę książkę na egzamin, ale to, czy w ogóle ją wykorzystasz, jest naprawdę kwestią tego, jak uczysz się narzędzi. Ja nauczyłem się IDA Pro używając PMA i trochę fiddlingu w wolnym czasie, więc nie skończyło się na tym, że jej potrzebowałem. Jeśli uczysz się narzędzi najlepiej czytając długie książki z małą ilością obrazów lub ilustracji, jest to idealna książka dla Ciebie.
Sylabus SANS FOR610
Ten jest całkiem prosty. Egzamin SANS GREM jest egzaminem związanym z kursem SANS FOR610, więc można bezpiecznie założyć, że to czego nauczysz się na kursie jest tym, co zastosujesz na egzaminie. Chociaż nie miałem dostępu do kursu, miałem dostęp do syllabusa na stronie SANS, przeglądu zarówno tematów jak i narzędzi, które kurs obejmował. Syllabus FOR610 był bardziej przydatny jeśli chodzi o narzędzia niż tematy, choć nie jest to prawdą w przypadku wszystkich kursów SANS DFIR. Niektóre wydają się wymieniać niewiele narzędzi, ale mają podział na każdy temat. Myślę, że to zależy od tego jak bardzo techniczny vs. oparty na teorii jest kurs.
Lista narzędzi w syllabusie może nie być wyczerpująca, ale to jedyna lista jaką dostaniesz. Zapoznaj się z każdym narzędziem na liście, jak wyglądają, jak działają i co robią. Zazwyczaj zaczynam od strony githuba danego narzędzia i stamtąd przechodzę dalej. „The Malware Analyst’s Cookbook” oraz strona Lenny’ego Zeltsera zawierają świetne referencje narzędzi.
Chcesz zawęzić zakres wiedzy potrzebnej do egzaminu? Jeśli jakiś temat wydaje się zbyt obszerny lub narzędzie zbyt ważne, by nie wspomnieć o nim w sylabusie, prawdopodobnie nie ma go w kursie ani na egzaminie.
Lenny Zeltser’s Infosec Cheat Sheets
Lenny Zeltser, jeden z instruktorów SANS FOR610, który pomógł napisać zarówno kurs jak i egzamin, publikuje arkusze z materiałami pomocniczymi na takie tematy jak inżynieria wsteczna złośliwego kodu i analiza złośliwych dokumentów. Tak się składa, że są to te same tematy, o których mowa zarówno w sylabusie FOR610, jak i na stronie GREM. Dobrym pomysłem może być studiowanie i robienie notatek na temat zawartości tych cheat sheets.
A cheat sheet that may really help you with the „Practical Malware Analysis” labs and x86 assembly calling conventions:
Next Steps: Labs, Special Topics, and Proper Indexing
Zalecam podążanie za laboratoriami w „Practical Malware Analysis” oraz sekcją memory forensics w „The Malware Analyst’s Cookbook” podczas czytania tych książek. Rób jedno laboratorium na noc, jedno na dwie noce, cokolwiek będzie dla ciebie najlepsze. Czas ćwiczeń jest elastyczny, ale praktyka nie jest opcjonalna. Praktyka jest najlepszym sposobem, aby wzmocnić zrozumienie materiału, zwłaszcza gdy masz do czynienia z wieloma narzędziami. Najlepszym sposobem na nauczenie się narzędzi jest ich używanie. Dla złośliwych dokumentów kryminalistycznych, może być przydatne do podjęcia niektórych warsztatów online Didier Stevens, jak napisał wiele z narzędzi wymienionych w sylabusie FOR610 w tej sekcji.
Pomiędzy robieniem wszystkich laboratoriów i indeksowania, musiałem zrobić przerwę mózgu. Postanowiłem zająć się tematem, który pomógłby mi w egzaminie, ale również odciągnąłby mnie od wyczerpujących przygotowań do egzaminu: podstawowe pisanie exploitów i shellcode’ów. Po trzech tygodniach tych wakacji wróciłem odświeżony i bardziej zmotywowany niż kiedykolwiek. Polecam znalezienie zabawnego tematu, który dotyka montażu i inżynierii odwrotnej do nauki, jeśli czujesz się wyczerpany lub zdemotywowany.
Po przejściu przez wszystkie książki, których będziesz używał, zrobiłeś kilka laboratoriów i zrobiłeś sobie przerwę na mózg, nadszedł czas, aby przygotować się do pierwszego egzaminu praktycznego. Wiele osób zaleca, aby nie używać indeksu do egzaminu praktycznego, ale myślę, że tworzenie indeksu przed próbą egzaminu praktycznego jest niezbędne. Częściowo dlatego, że egzaminy praktyczne mogą być używane, aby powiedzieć, gdzie dziury w indeksie leżą, częściowo dlatego, że indeksowanie jest najlepszym sposobem, aby przejrzeć wszystkie informacje, które nauczyłeś się przez to, co mogło być miesiącami studiowania.
Co to jest indeks?
Wraz z twoimi książkami referencyjnymi, jesteś dozwolone, aby wziąć notatki do egzaminu praktycznego. Tradycyjnie, większość ludzi zabiera na egzamin indeks wszystkich książek, które przeczytali. Indeksy są zazwyczaj tworzone jako arkusze kalkulacyjne z filtrowanymi kolumnami. Polecam oznaczenie indeksu kolorami. Indeks powinien zawierać wszystkie ważne tematy, numery stron dla każdego tematu i notatki dla każdego tematu. Mój indeks zawierał również domenę FOR610, do której zakładałem, że każdy temat należy. W moich notatkach, podkreśliłem ważne rzeczy, takie jak funkcje API Windows, struktury i wtyczki Volatility. Numery stron powinny być również umieszczone w zakładkach w książkach, które przyniesiesz na egzamin. Oznaczyłem kolorami moje zakładki, aby pasowały do indeksu, co było dużą pomocą, gdy musiałem szybko coś sprawdzić.
W przypadku tego egzaminu będzie wiele tematów poruszanych w zasobach online, ale nie w żadnej z Twoich książek. Lubię dodawać notatki na te tematy do indeksu z pustym numerem strony. Jest to bardziej schludne niż tworzenie oddzielnych arkuszy notatek dla każdego tematu nie znajdującego się w książce.
Zauważ, że twój indeks będzie prawdopodobnie bardzo różny od mojego, ponieważ znajdziesz styl, który najbardziej ci odpowiada. Nigdy nie używaj indeksu innej osoby, ponieważ jest to zarówno pogwałcenie wytycznych SANS, jak i bezużyteczne jako pomoc naukowa, ponieważ nie został on stworzony przez Ciebie. Z tego samego powodu zwykle zaleca się, aby osoby, które uczestniczyły w kursie i posiadają książki SANS zawierające gotowe indeksy, stworzyły własne indeksy, zamiast używać tych indeksów. Nigdy nie kopiuj żadnych informacji do indeksu bezpośrednio ze strony internetowej lub słowo w słowo z książki. Możesz to zrobić w osobnym arkuszu notatek, jeśli chcesz, ale nie w swoim indeksie. To nie jest naruszenie zasad, tylko dobra zasada kciuka. Wszystko w twoim indeksie powinno być napisane własnymi słowami, własnoręcznie. Akt tworzenia indeksu jest kluczowy dla przygotowania do egzaminu.
Każdy indeks, który stworzysz przed pierwszym egzaminem praktycznym będzie miał dziury, zwłaszcza jeśli nie brałeś udziału w kursie. Nie bój się wchodzić na swój pierwszy egzamin praktyczny z indeksem 20 lub 30 stron. Ja wszedłem z indeksem 25 stron, ale mój indeks w noc przed prawdziwym egzaminem miał ponad 40 stron długości.
Egzaminy praktyczne
Przed rozpoczęciem: TYLKO kupuj OFICJALNE próby egzaminów praktycznych na stronie GIAC, www.giac.org. NIGDY nie używaj żadnych innych źródeł do egzaminów praktycznych. Jest to zabronione zgodnie z wytycznymi egzaminacyjnymi GIAC i uważane za oszustwo. Te nieoficjalne egzaminy praktyczne wykorzystują skradzione, nieaktualne pytania egzaminacyjne i nie powinny być traktowane jako źródło do nauki. Zakup oficjalnych próbnych egzaminów praktycznych tutaj:
Teraz, gdy to jest już za nami, zalecam, abyś wziął udział w egzaminie praktycznym przed zakupem testu. Test pochodzi z dwóch egzaminów praktycznych, ale w czasie, gdy jesteś tam spędził $ 2,000 i nie mają pojęcia, czy jesteś gotowy do egzaminu. Twój pierwszy egzamin praktyczny jest doskonałym sposobem, aby dowiedzieć się, jak daleko jesteś od możliwości zakupu egzaminu. Jeśli zdasz go, polecam zakup egzaminu tak szybko, jak to możliwe. Jeśli nie, to powie Ci obszary, które są słabe w tak, że można skupić się na tych przed zakupem egzaminu.
Pierwszy i kolejne testy praktyczne są również doskonałym sposobem, aby wypełnić dziury w indeksie. Jak wspomniałem wcześniej, Syllabus FOR610 nie jest kompleksowy, a egzaminy praktyczne są jedynym sposobem, aby znaleźć narzędzia i tematy, które trzeba studiować więcej. Unikaj wpisywania do indeksu tylko tego, co pamiętasz z odpowiedzi. Jest to świetny sposób na zaliczenie przyszłych egzaminów praktycznych, ponieważ wszystkie one mają wspólny bank pytań. Jest to również świetny sposób na oblanie prawdziwego egzaminu. Jest to również powód, dla którego nie polecam zdawania więcej niż trzech egzaminów praktycznych, ponieważ malejące zyski dadzą ci fałszywe poczucie bezpieczeństwa. Zamiast tego, użyj tego, co się pomyliłeś jako punkt wyjścia do dalszych badań. Testy praktyczne są również doskonałym sposobem, aby dowiedzieć się, jak dobrze musisz znać każdy temat.
Egzaminy praktyczne zapoznają Cię również z tym, jak działają egzaminy GIAC. Byłem nowy w GIAC i zaznajomiony z CompTIA, więc nie byłem przygotowany na to, że wiele pytań będzie miało wiele poprawnych odpowiedzi i jedną „dobrą” odpowiedź. Musiałem również nauczyć się, kiedy należy „pomijać” pytania. Masz ograniczoną liczbę pytań, które możesz pominąć i wrócić do nich później, a jeśli odpowiesz na pytanie i wyślesz je, nie będziesz mógł do niego wrócić. Czytanie pytań bardzo uważnie wydaje się być banałem, ale była to uzasadniona umiejętność, którą musiałem rozwinąć, aby przygotować się do egzaminu. I naprawdę doceniam, że z GIAC, nie ma substytutu na każdym etapie do badania, praktyki i stosowane wysiłek.
Przed planowaniem prawdziwy egzamin, wiedz, że egzamin praktyki jest łatwiejsze niż prawdziwy egzamin, więc powinieneś być coraz wynik 5-10 punktów wyżej niż trzeba. To faktycznie różni się w zależności od różnych egzaminów GIAC. Widziałem wielu, którzy zdawali inne egzaminy SANS DFIR, którzy twierdzili, że ich egzaminy praktyczne były trudniejsze niż ich egzaminy.
Egzamin GIAC „Aplikacja”
Kiedy kupujesz swój egzamin GREM, będziesz musiał wypełnić aplikację i poczekać dwa dni na zatwierdzenie, zanim będziesz mógł zaplanować lub uzyskać dostęp do darmowych egzaminów praktycznych. Nie sądzę, żeby ktoś naprawdę zagłębił się w to, co należy na tym umieścić, ale nie stresowałbym się tym. Wątpię, żeby przykładali zbyt dużą wagę do tego, jakie są twoje kwalifikacje, ale prawdopodobnie zależy im na tym, jak się uczyłeś i co wnosisz do egzaminu. Kiedy wypełniasz aplikację, bądź szczery. Nie bój się wspomnieć o certyfikatach innych niż SANS, które już posiadasz, o kursach, które przeszedłeś u nich lub u innych, o swoim obecnym stanowisku, o książkach, których używałeś do przygotowania się do egzaminu i o tym, na czym opiera się Twój indeks. Prawdopodobnie zostaniesz zatwierdzony w ciągu jednego dnia lub tak.
Żal z powodu egzaminu
Moim największym żalem jest prawdopodobnie odkładanie wszystkiego związanego z analizą behawioralną sieci i złośliwym oprogramowaniem opartym na skryptach do ostatniej sekundy. Byłem nieprzygotowany do tej sekcji i chociaż zdałem egzamin z wynikiem 81,3%, mój wynik w tych sekcjach byłby znacznie wyższy, gdybym zrobił więcej ćwiczeń zamiast tylko czytać związane z tym tematem. Położyłem zbyt duży nacisk na analizę wykonywalną, nawet po zorientowaniu się, że jest to mój najsłabszy obszar. Moją rekomendacją jest skupienie się na najsłabszych obszarach, które widzisz w swoich testach praktycznych przed czymkolwiek innym.
Moje następne kroki
Memory forensics, analiza behawioralna związana z siecią i debugowanie trybu jądra to trzy rzeczy, o których chciałbym dowiedzieć się więcej. Postanowiłem zrobić to wszystko za jednym zamachem, analizując rootkity. Wkrótce opublikuję artykuł o tym, jak stworzyć laboratorium do analizy rootkitów Win32, oraz kolejny, w którym przeanalizuję próbkę rootkita trybu jądra (prawdopodobnie Cutwail, może ulec zmianie) przy użyciu narzędzi do analizy behawioralnej, narzędzi sieciowych takich jak INetSim, debugera trybu jądra WinDBG oraz wtyczek Volatility do analizy pamięci rootkitów.
Powinienem również prawdopodobnie przeanalizować więcej próbek makr javascript i VB opartych na dokumentach, aby upewnić się, że moje zrozumienie technik używanych do analizy tego typu złośliwego oprogramowania jest solidne.