Rád bych tento článek předeslal, že pokud jste jako já nováčci v oblasti analýzy malwaru a máte omezený rozpočet, studium bez přístupu ke studijním materiálům pro vás nemusí být tou nejlepší volbou. Nejlepší způsob, jak získat certifikaci SANS GREM bez zdroje financování kurzu, je požádat o program SANS Work Study pro kurz FOR610. Výměnou za asistenci instruktorovi kurzu vám bude umožněno vyhodnotit kurz a pokusit se o certifikační zkoušku. Budou vám také poskytnuty kopie knih a materiálů kurzu, které nelze získat jiným způsobem vzhledem k politice společnosti SANS týkající se sdílení materiálů kurzu. Celkové náklady na tento program jsou ve skutečnosti nižší, než kolik jsem zaplatil z vlastní kapsy pouze za zkoušku.
Chcete-li se však účastnit programu Work Study, musí být vaše žádost přijata a musíte být schopni zúčastnit se konference SANS po dobu 6 dnů. Tuto možnost jsem nevyužil, protože konference SANS v mé oblasti kolidovaly s jinými důležitými body mého rozvrhu. Také jsem nepovažoval za vhodné požádat svého zaměstnavatele o úhradu nákladů na kurz, protože to přímo nesouviselo s mou projektovou rolí. Z těchto důvodů nepřipadalo školení SANS v úvahu.
Teď, když jsem stanovil, proč jsem udělal to, co jsem udělal, přejděme k tomu „jak“.
Co jsem se potřeboval naučit
Přímo z webových stránek SANS, pro GREM jsem potřeboval:
- Koncepty assembleru Windows pro reverzní inženýrství – co děláte v IDA Pro, proč potřebujete znalosti assembleru a C
- Obvyklé vlastnosti malwaru Windows – funkce API, vlákna, struktury
- Hloubková analýza škodlivých a chráněných spustitelných souborů – Co děláte v IDA Pro po určité praxi
- Analýza škodlivých dokumentů – Útočníci vkládají skripty do souborů
- Analýza skriptů škodlivých webových prohlížečů -Útočníci vkládají skripty na internet, příkazový a řídící provoz proudí po drátě
- Forenzní analýza paměti – Volatilita
Důležitost assembleru a jazyka C
Než se dostanu k různým zdrojům, které jsem použil při přípravě na zkoušku, chci poznamenat, že je nezbytné mít alespoň chatrné znalosti assembleru x86. Bez něj opravdu nemůžete reverzně inženýrovat přenositelný spustitelný soubor nebo shellcode. Opravdu to není tak špatné, jak se zdá, assembly je v jádru jen aritmetika, díky které počítače něco dělají. Vše, co potřebujete znát, abyste se mohli začít učit binární reverzní inženýrství, jsou registry x86, typy proměnných (word, dword, int, char atd.), základy zásobníku a některé instrukce toku programu. Zde je zdroj, který mi pomohl naučit se základy:
Pracovní znalost jazyka C je důležitá, ale většinu toho, co potřebujete, budete znát, pokud umíte programovat v jazyce podobném C, jako je Java. Jediné nové pojmy, které budete potřebovat pro reverzní inženýrství malwaru, jsou ukazatele, alokace paměti a halda. To, co jsem potřeboval, jsem se naučil díky těmto dvěma zdrojům:
Reverzní inženýrství „Reverse Engineering“
Rozhodl jsem se tento článek nazvat „Grey Box Testing“, protože při pohledu zpět jsem si uvědomil, že to je v podstatě to, co jsem dělal při studiu na tuto zkoušku. Jako někdo, kdo s analýzou malwaru začínal, jsem věděl jen málo o tom, co mohu očekávat. Během přípravy na zkoušku jsem se odkazoval na tyto zdroje informací:
- Doporučení knih zveřejněná těmi, kteří před třemi až pěti lety složili zkoušku, aniž by za kurz zaplatili
- Oficiální osnovy kurzu SANS FOR610
- Testovací listy analýzy škodlivých souborů vytvořené Lennym Zeltserem
Rozdělím tyto položky do částí, abych ukázal, co jsem se z jednotlivých zdrojů naučil.
Doporučené knihy
Vybrat si užitečné knihy je pro úspěch v GREM velmi důležité, protože si jich smíte vzít plnou náruč ke zkouškám GIAC jako reference. Většina držitelů certifikace GREM se s lidmi, kteří se zajímají o to, kde začít studovat na zkoušku, ochotně podělí o seznam (jiných než SANS) knih, které použili k přípravě. Mým prvním krokem bylo nahlédnutí do seznamů doporučené četby co nejvíce absolventů GREM, které jsem našel. Nejčastěji doporučované knihy, které jsem našel, byly:
- „Practical Malware Analysis“ – fantastický průvodce behaviorální analýzou, reverzním inženýrstvím a překonáváním anti-analýzy. Tato kniha je neoddiskutovatelná, nenajdete zdroj, který by ji nedoporučoval. Kromě informací je doplněna velmi užitečnými laboratořemi, které posílí vaše znalosti.
- „The Malware Analyst’s Cookbook“ – Průvodce velkým množstvím nástrojů pro analýzu malwaru. Laboratoře a skripty jsou velmi zastaralé, ale přehledy nástrojů byly velmi užitečné. K přípravě na zkoušku jsem použil části o forenzní analýze paměti, malwaru ve skriptech prohlížeče a analýze škodlivých dokumentů.
- „The Art of Memory Forensics“ – Je užitečné mít ji ne nutně jako primární zdroj, ale jako doplňkový zdroj k části „Malware Analyt’s Cookbook“ o forenzní analýze paměti. Mnoho zásuvných modulů Volatility, které budete potřebovat, není popsáno příliš podrobně a informace z MAC by měly být porovnávány s informacemi z této knihy. Tato kniha také pokrývá mnoho vnitřností Windows, které jsou užitečné pro zkoušku.
- „Windows Internals 6 nebo 7“ – osobně si myslím, že tyto knihy jsou přehnané. Pokud znáte Windows z hlediska bezpečnosti, stačí vám k pochopení Windows Internals předchozí knihy. Nikdy bych nedoporučoval brát si tyto knihy s sebou na zkoušku nebo ji dokonce indexovat. Všechny relevantní informace jsou již v knize „Art of Memory Forensics“ nebo na webu MSDN.
- „The IDA Pro Book“ – myslím, že vám nikdo neřekne, abyste si tuto knihu vzali ke zkoušce, ale to, zda ji vůbec využijete, je opravdu otázkou toho, jak se nástroje naučíte. Já jsem se IDA Pro naučil pomocí PMA a nějakých hrátek ve volném čase, takže jsem ji nakonec nepotřeboval. Pokud se nástroje nejlépe učíte čtením dlouhých knih s malým množstvím obrázků nebo ilustrací, je tato kniha pro vás ideální.“
The SANS FOR610 Syllabus
Tato je docela jednoduchá. Zkouška SANS GREM je zkouškou spojenou s kurzem SANS FOR610, takže lze předpokládat, že to, co se naučíte v kurzu, použijete při zkoušce. I když jsem neměl přístup ke kurzu, měl jsem přístup k sylabu na webových stránkách společnosti SANS, což je přehled témat i nástrojů, kterými se kurz zabývá. Sylabus FOR610 byl užitečnější pro nástroje než pro témata, i když to neplatí pro všechny kurzy SANS DFIR. Zdá se, že některé uvádějí jen málo nástrojů, ale mají rozpis každého tématu. Myslím, že záleží na tom, nakolik je kurz založen na technice a nakolik na teorii.
Seznam nástrojů v sylabu nemusí být úplný, ale je to jediný seznam, který dostanete. Seznamte se s každým nástrojem na seznamu, jak vypadá, jak funguje a co dělá. Obvykle začínám na stránce nástroje na githubu a vycházím z ní. „The Malware Analyst’s Cookbook“ a webové stránky Lennyho Zeltsera obsahují skvělé odkazy na nástroje.
Chcete zúžit okruh toho, co potřebujete znát ke zkoušce? Pokud se vám zdá, že je nějaké téma příliš široké nebo že je nějaký nástroj příliš důležitý na to, aby nebyl zmíněn v osnovách, pravděpodobně není v kurzu ani ve zkoušce.
Lenny Zeltser’s Infosec Cheat Sheets
Lenny Zeltser, jeden z instruktorů SANS FOR610, který pomáhal psát kurz i zkoušku, zveřejňuje taháky k tématům, jako je reverzní inženýrství škodlivého kódu a analýza škodlivých dokumentů. Shodou okolností se jedná o některá stejná témata, na která se odkazuje jak v sylabu kurzu FOR610, tak na webových stránkách GREM. Možná by bylo dobré si obsah těchto taháků prostudovat a udělat si poznámky.
Tahák, který vám může opravdu pomoci s laboratořemi „Praktická analýza malwaru“ a konvencemi pro volání assembleru x86:
Další kroky: Doporučuji sledovat laboratoře v knize „Practical Malware Analysis“ a část věnovanou forenzní analýze paměti v knize „The Malware Analyst’s Cookbook“ při čtení těchto knih. Provádějte jednu laboratoř za večer, jednu laboratoř každé dva večery, podle toho, co vám bude nejlépe vyhovovat. Čas na cvičení je flexibilní, ale cvičení není volitelné. Praxe je nejlepším způsobem, jak si upevnit pochopení látky, zejména když pracujete s velkým množstvím nástrojů. Nejlepší způsob, jak se nástroje naučit, je používat je. Pro forenzní analýzu škodlivých dokumentů může být užitečné absolvovat některé online semináře Didiera Stevense, protože je autorem mnoha nástrojů uvedených v sylabu FOR610 v této části.
Mezi prováděním všech laboratoří a indexováním jsem si potřeboval udělat mozkovou pauzu. Rozhodl jsem se věnovat tématu, které by mi pomohlo při zkoušce, ale zároveň by mě odvedlo od vyčerpávající přípravy na zkoušku: psaní základních exploitů a shellkódů. Po třech týdnech této přípravné dovolené jsem se vrátil osvěžený a motivovaný jako nikdy předtím. Doporučuji najít si zábavné téma, které se dotýká assembleru a reverzního inženýrství, které se můžete naučit, pokud se cítíte vyčerpaní nebo demotivovaní.
Poté, co jste si prošli všechny knihy, které budete používat, udělali několik laboratoří a odpočinuli si od mozku, je čas připravit se na první cvičnou zkoušku. Mnoho lidí doporučuje nepoužívat při cvičné zkoušce rejstřík, ale já si myslím, že vytvoření rejstříku před pokusem o cvičnou zkoušku je nezbytné. Částečně proto, že vám cvičné zkoušky mohou napovědět, kde jsou ve vašem indexu díry, částečně proto, že vytvoření indexu je nejlepší způsob, jak si zopakovat všechny informace, které jste se naučili během možná i několika měsíců studia.
Co je to index?
Společně s referenčními knihami si do cvičné zkoušky smíte vzít poznámky. Tradičně si většina lidí bere ke zkoušce index všech přečtených knih. Indexy se obvykle vytvářejí jako tabulky s filtrovanými sloupci. Doporučuji index barevně odlišit. Rejstřík by měl obsahovat všechna důležitá témata, čísla stránek u každého tématu a poznámky ke každému tématu. Můj index obsahoval také doménu FOR610, ke které jsem předpokládal, že každé téma patří. Ve svých poznámkách jsem zvýraznil důležité věci, jako jsou funkce API systému Windows, struktury a zásuvné moduly Volatility. Čísla stránek by měla být uvedena také na záložkách v knihách, které si přinesete ke zkoušce. Záložky jsem si barevně označil tak, aby odpovídaly rejstříku, což mi velmi pomohlo, když jsem potřeboval něco rychle vyhledat.
U této zkoušky bude spousta témat obsažena v online zdrojích, ale žádná z vašich knih. Rád přidávám poznámky k těmto tématům do rejstříku s prázdným číslem stránky. Je to přehlednější než vytvářet samostatné listy poznámek pro každé téma, které se nenachází v knize.
Všimněte si, že váš index se bude pravděpodobně velmi lišit od mého, protože si najdete styl, který vám bude nejlépe vyhovovat. Nikdy nepoužívejte cizí index, protože tím jednak porušujete směrnice SANS, jednak je jako studijní pomůcka nepoužitelný, protože nebyl vytvořen vámi. Ze stejného důvodu se obvykle doporučuje, aby si ti, kteří absolvovali kurz a mají knihy SANS, které obsahují předpřipravené indexy, vytvořili vlastní, místo aby tyto indexy používali. Nikdy nekopírujte žádné informace do indexu přímo z webových stránek nebo slovo od slova z knihy. Pokud chcete, můžete to udělat v samostatném poznámkovém listu, ale ne ve svém indexu. Nejedná se o porušení pravidel, pouze o dobré pravidlo. Vše ve vašem indexu by mělo být napsáno vašimi vlastními slovy, vaší vlastní rukou. Samotný akt vytvoření indexu je pro přípravu na zkoušku zásadní.
Každý index, který vytvoříte před první cvičnou zkouškou, bude mít díry, zejména pokud jste neabsolvovali kurz. Nebojte se jít na první cvičnou zkoušku s indexem o 20 nebo 30 stranách. Já jsem přišel s 25stránkovým indexem, ale můj index měl večer před skutečnou zkouškou přes 40 stran.
Praktické zkoušky
Než začnu: Na webových stránkách GIAC si kupujte POUZE OFICIÁLNÍ pokusy o cvičné zkoušky, www.giac.org. NIKDY nepoužívejte žádný jiný zdroj pro cvičné zkoušky. Je to zakázáno podle směrnic pro zkoušky GIAC a považuje se to za podvádění. Tyto neoficiální cvičné zkoušky používají ukradené, zastaralé zkušební otázky a nelze je považovat za studijní zdroj. Oficiální pokusy o cvičnou zkoušku zakoupíte zde:
Když už je to za námi, doporučuji, abyste si cvičnou zkoušku před zakoupením testu vyzkoušeli. Ke zkoušce jsou sice přiloženy dva cvičné pokusy, ale než se k nim dostanete, utratíte 2 000 dolarů a netušíte, zda jste na zkoušku připraveni. První cvičná zkouška je skvělý způsob, jak zjistit, jak daleko jste od toho, abyste si mohli zkoušku zakoupit. Pokud ji složíte, doporučuji zkoušku zakoupit co nejdříve. Pokud ne, zjistíte, v jakých oblastech jste slabí, abyste se na ně mohli před zakoupením zkoušky zaměřit.
První a další cvičné testy jsou také skvělým způsobem, jak si doplnit díry v rejstříku. Jak jsem již zmínil, učební plán FOR610 není vyčerpávající a cvičné zkoušky jsou jediným způsobem, jak najít nástroje a témata, která potřebujete více nastudovat. Vyhněte se tomu, abyste si do indexu zapisovali pouze to, co si pamatujete z odpovědí. Je to skvělý způsob, jak absolvovat budoucí cvičné testy, protože všechny mají společnou banku otázek. Je to také skvělý způsob, jak neuspět u skutečné zkoušky. To je také důvod, proč nedoporučuji absolvovat více než tři cvičné zkoušky, klesající návratnost vám dá falešný pocit jistoty. Místo toho použijte to, co se vám nepovedlo, jako odrazový můstek pro další zkoumání. Cvičné testy jsou také skvělým způsobem, jak zjistit, jak dobře musíte znát jednotlivá témata.
Cvičné testy vás také seznámí s tím, jak zkoušky GIAC fungují. Byl jsem v GIACu nový a znal jsem CompTIA, takže jsem nebyl připraven na to, že mnoho otázek bude mít mnoho správných odpovědí a jednu „dobrou“ odpověď. Musel jsem se také naučit, kdy otázky „přeskočit“. Máte omezený počet otázek, které můžete přeskočit a vrátit se k nim později, a pokud otázku zodpovíte a odešlete, nebudete se k ní moci vrátit. Velmi pečlivé čtení otázek se zdá být klišé, ale byla to oprávněná dovednost, kterou jsem si musel pro přípravu na zkoušku osvojit. Opravdu oceňuji, že u společnosti GIAC nelze v žádné fázi nahradit studium, praxi a aplikované úsilí.
Před naplánováním skutečné zkoušky vězte, že cvičná zkouška je jednodušší než skutečná zkouška, takže byste měli získat o 5-10 bodů vyšší skóre, než je třeba. To se ve skutečnosti u různých zkoušek GIAC liší. Viděl jsem mnoho lidí, kteří skládali jiné zkoušky SANS DFIR, říkat, že jejich cvičné zkoušky byly těžší než jejich zkouška.
Žádost o zkoušku GIAC „Application“
Když si kupujete zkoušku GREM, budete muset vyplnit žádost a počkat dva dny na schválení, než budete moci naplánovat nebo získat přístup ke zkouškám zdarma. Myslím, že se nikdo nezabýval tím, co se do ní má napsat, ale nestresoval bych se tím. Pochybuji, že přikládají velkou váhu tomu, jakou máte kvalifikaci, ale pravděpodobně je zajímá, jak jste se učili a co si ke zkoušce přinesete. Když vyplňuješ přihlášku, buď upřímná. Nebojte se zmínit certifikáty jiné než od agentury SANS, které již máte, kurzy, které jste absolvovali u nich nebo u jiných, svou současnou pozici, knihy, které jste použili k přípravě na zkoušku, a z čeho vychází váš index. Pravděpodobně budete schváleni zhruba do jednoho dne.
Zkoušky lituju
Moje největší lítost je asi to, že jsem vše, co se týká behaviorální analýzy sítě a malwaru založeného na skriptech, odložil na poslední chvíli. Na tuto část jsem nebyl připraven, a i když jsem zkoušku složil na 81,3 %, můj výsledek v těchto částech by byl mnohem vyšší, kdybych se více procvičoval a ne jen četl knihy související s tímto tématem. Kladl jsem příliš velký důraz na proveditelnou analýzu i poté, co jsem zjistil, že je to moje nejslabší oblast. Moje doporučení je zaměřit se na nejslabší oblasti, které vidíte v praktických testech, před čímkoli jiným.
Moje další kroky
Forenzní analýza paměti, analýza chování související se sítí a ladění v režimu jádra jsou tři věci, o kterých bych se rád dozvěděl více. Rozhodl jsem se, že je všechny postihnu najednou, a to analýzou rootkitů. Brzy zveřejním článek o tom, jak nastavit laboratoř pro analýzu rootkitů Win32, a další článek, ve kterém budu analyzovat vzorek rootkitu v režimu jádra (pravděpodobně Cutwail, může se změnit) pomocí nástrojů pro behaviorální analýzu, síťových nástrojů jako INetSim, debuggeru režimu jádra WinDBG a pluginů Volatility pro forenzní analýzu paměti rootkitů.
Měl bych také pravděpodobně analyzovat několik dalších vzorků javascriptových a VB maker založených na dokumentech, abych se ujistil, že mé znalosti technik používaných k analýze těchto typů malwaru jsou solidní.