Grey Box Testing:

Ezt a cikket azzal szeretném bevezetni, hogy ha olyan vagy, mint én, új vagy a rosszindulatú programok elemzésében és a költségvetésben, a tananyaghoz való hozzáférés nélküli tanulás nem biztos, hogy a legjobb megoldás számodra. A SANS GREM tanúsítvány megszerzésének legjobb módja a tanfolyam finanszírozásának forrása nélkül az, ha jelentkezel a SANS Work Study programjára a FOR610 tanfolyamra. A tanfolyam oktatójának segítéséért cserébe Ön értékelheti a tanfolyamot, és megkísérelheti a tanúsítási vizsgát. A könyvek és a tanfolyami anyagok másolatát is megkapja, amelyeket a SANS tanfolyami anyagok megosztására vonatkozó irányelvei miatt más módon nem szerezhet be. A program teljes költsége valójában alacsonyabb, mint amit én zsebből fizettem csak a vizsgáért.

A Work Study programban való részvételhez azonban el kell fogadni a jelentkezésedet, és 6 napig részt kell tudnod venni egy SANS konferencián. Én nem éltem ezzel a lehetőséggel, mert a körzetemben tartott SANS-konferenciák ütköztek más fontos programpontokkal a naptáramban. Azt sem tartottam helyénvalónak, hogy a munkáltatómtól kérjem a tanfolyam költségeinek fedezését, mivel az nem kapcsolódott közvetlenül a projektfeladatomhoz. Ezen okok miatt a SANS képzés szóba sem jöhetett.

Most, hogy megállapítottam, miért tettem, amit tettem, térjünk rá a “hogyan”-ra.

Mit kellett megtanulnom

Rögtön a SANS weboldaláról, a GREM-hez, amire szükségem volt:

  • Windows assembly fogalmak a reverse engineeringhez – Mit csinálsz az IDA Pro-ban, miért van szükség assembly és C ismeretekre
  • A Windows Malware közös jellemzői – API funkciók, szálak, struktúrák
  • Kártékony és védett futtatható fájlok mélyreható elemzése – Mit csinál az IDA Pro-ban némi gyakorlás után
  • Kártékony dokumentumok elemzése – A támadók szkripteket helyeznek el a fájlokban
  • Kártékony webböngésző szkriptek elemzése – A támadók szkripteket helyeznek el az interneten, parancs- és vezérlési forgalom folyik a vezetéken keresztül
  • Memória törvényszéki vizsgálat – Volatilitás

Az assembly nyelv és a C fontossága

Mielőtt belemennék a különböző forrásokba, amelyeket a vizsgára való felkészüléshez használtam, szeretném megjegyezni, hogy létfontosságú, hogy legalább az x86-os assembly-t legalább rázósan értsd. Enélkül tényleg nem tudsz visszafejteni egy hordozható futtatható programot vagy shellcode-ot. Ez valójában nem olyan rossz, mint amilyennek látszik, az assembly alapvetően csak aritmetika, ami a számítógépeket dolgokra készteti. Mindössze az x86 regisztereket, a változótípusokat (word, dword, int, char, stb.), a verem alapjait és néhány programfolyamat utasítást kell ismernie ahhoz, hogy elkezdje a bináris visszafejtést. Itt van egy forrás, amelyet hasznosnak találtam az alapok elsajátításához:

A C nyelv ismerete fontos, de a legtöbbet akkor tudod, ha tudsz programozni egy C-hez hasonló nyelven, például Java-ban. Az egyetlen új fogalom, amire a malware reverse engineeringhez szükséged lesz, a mutatók, a memória kiosztása és a heap. Ezen a két forráson keresztül tanultam meg, amire szükségem volt:

Reverse Engineering “Reverse Engineering”

Úgy döntöttem, hogy ennek a cikknek a címe “Grey Box Testing” lesz, mert visszatekintve rájöttem, hogy alapvetően ezt tettem a vizsgára való tanuláshoz. Mint valaki, aki új volt a rosszindulatú programok elemzésében, keveset tudtam arról, hogy mire számíthatok. A vizsgára való felkészülésem során az alábbi információforrásokra hivatkoztam:

  • Könyvajánlások, amelyeket azok tettek közzé, akik három-öt évvel ezelőtt letették a vizsgát anélkül, hogy fizettek volna a tanfolyamért
  • A SANS FOR610 hivatalos tananyag
  • A Lenny Zeltser által készített rosszindulatú fájlelemzési puskák

Ezeket a tételeket szakaszokra bontom, hogy megmutassam, mit tanultam az egyes forrásokból.

Könyvajánlások

A hasznos könyvek kiválasztása nagyon fontos a GREM sikeréhez, mivel a GIAC vizsgákra egy karnyi könyvet vihetsz referenciaként. A legtöbb GREM-tanúsítvány birtokosa szívesen megosztja a felkészüléshez használt (nem SANS) könyvek listáját azokkal, akik azon gondolkodnak, hogy hol kezdjék el a vizsgára való tanulást. Az én első lépésem az volt, hogy megnéztem minél több GREM-végzett vizsgázó ajánlott olvasmánylistáját, amit találtam. Az általam legkövetkezetesebben ajánlott könyvek a következők voltak:

  • “Practical Malware Analysis”- Fantasztikus útmutató a viselkedéselemzéshez, a reverse engineeringhez és az anti-analízis legyőzéséhez. Ez a könyv nem megkerülhetetlen, nem fogsz olyan forrást találni, amely ne ajánlaná. Az információk mellett nagyon hasznos laboratóriumi feladatokkal is kiegészül, amelyekkel megerősítheti tudását.
  • “The Malware Analyst’s Cookbook” – Útmutató a legkülönfélébb malware-elemző eszközökhöz. A laborok és a szkriptek nagyon elavultak, de az eszközáttekintések nagyon hasznosak voltak. A memóriával kapcsolatos törvényszéki vizsgálatokról, a böngészőszkript-kártevőkről és a rosszindulatú dokumentumok elemzéséről szóló részeket használtam a vizsgámra való felkészüléshez.
  • “The Art of Memory Forensics” – Hasznos, hogy ez nem feltétlenül elsődleges forrásként, hanem a “Malware Analyt’s Cookbook” memóriával kapcsolatos törvényszéki vizsgálatokról szóló részének kiegészítő forrásaként. A Volatility bővítmények közül sok olyan, amire szükséged lesz, nincs részletesen tárgyalva, és a MAC-ből származó információkat kereszthivatkozással kell ellátni a könyvből származó információkkal. Ez a könyv sok, a vizsgán hasznos Windows internálissal is foglalkozik.
  • “Windows Internals 6 vagy 7” – Én személy szerint úgy gondolom, hogy ezek a könyvek túlzásnak számítanak. Ha biztonsági szempontból ismered a Windowst, akkor az előző könyvek elegendőek a Windows Internals megértéséhez. Semmiképpen nem javasolnám, hogy ezeket a könyveket magaddal vidd a vizsgára, vagy akár indexelj. Minden lényeges információ már megtalálható a “Art of Memory Forensics” című könyvben vagy az MSDN weboldalon.
  • “The IDA Pro Book” – Nem hiszem, hogy bárki is azt mondaná, hogy ezt a könyvet vidd magaddal a vizsgára, de hogy egyáltalán hasznosítod-e, az már tényleg az eszköztanulás kérdése. Én az IDA Pro-t a PMA segítségével és némi barkácsolással tanultam meg a szabadidőmben, így végül nem volt rá szükségem. Ha az eszközöket leginkább hosszú, kevés képet vagy illusztrációt tartalmazó könyvek olvasásával tanulod meg, akkor ez a könyv tökéletes számodra.

A SANS FOR610 Syllabus

Ez elég egyszerű. A SANS GREM vizsga a SANS FOR610 tanfolyamhoz kapcsolódó vizsga, így nyugodtan feltételezheted, hogy amit a tanfolyamon tanulsz, azt a vizsgán is alkalmazni fogod. Bár a tanfolyamhoz nem volt hozzáférésem, a SANS weboldalán hozzáférhettem a tananyaghoz, amely áttekintést nyújt mind a tanfolyam által lefedett témákról, mind az eszközökről. A FOR610 tanterv inkább az eszközök, mint a témák tekintetében volt hasznos, bár ez nem igaz az összes SANS DFIR-tanfolyamra. Néhányan úgy tűnik, hogy kevés eszközt sorolnak fel, de minden témáról van bontás. Azt hiszem, ez attól függ, hogy mennyire technikai vs. elméleti alapú egy kurzus.

A tantervben szereplő eszközök listája nem biztos, hogy teljes körű, de ez az egyetlen lista, amit kap. Ismerkedj meg a listán szereplő összes eszközzel, hogy néznek ki, hogyan működnek és mit csinálnak. Általában egy eszköz github-oldalán kezdem, és onnan indulok tovább. A “The Malware Analyst’s Cookbook” és Lenny Zeltser weboldala is remek eszközreferenciákat tartalmaz.

Szűkíteni szeretné, hogy mit kell tudnia a vizsgához? Ha egy téma túl szélesnek tűnik, vagy egy eszköz túl fontos ahhoz, hogy a tanterv ne említse, valószínűleg nem szerepel sem a tanfolyamon, sem a vizsgán.

Lenny Zeltser’s Infosec Cheat Sheets

Lenny Zeltser, a SANS FOR610 egyik oktatója, aki segített a tanfolyam és a vizsga megírásában is, puskákat tesz közzé olyan témákhoz, mint a kártékony kódok visszafejtése és a kártékony dokumentumok elemzése. Ezek történetesen ugyanazok a témák, amelyekre a FOR610 tananyagában és a GREM weboldalán is hivatkoznak. Jó ötlet lehet, ha tanulmányozza és jegyzeteli ezeknek a puskáknak a tartalmát.

Egy puskalap, amely valóban segíthet a “Gyakorlati rosszindulatú programok elemzése” című laborok és az x86 assembly hívási konvenciók kapcsán:

Következő lépések:

A “Gyakorlati rosszindulatú programok elemzése” és a “The Malware Analyst’s Cookbook” memóriával kapcsolatos törvényszéki vizsgálatok című könyvek olvasása közben ajánlom, hogy kövesse a “Practical Malware Analysis” (Gyakorlati rosszindulatú programok elemzése) és a “The Malware Analyst’s Cookbook” (A rosszindulatú programok elemzőjének szakácskönyve) című könyvek laborjait. Csinálj egy labort esténként, vagy kétévente egy labort, ahogy neked a legjobban megfelel. A gyakorlás ideje rugalmas, de a gyakorlás nem választható. A gyakorlás a legjobb módja annak, hogy megerősítse az anyag megértését, különösen akkor, ha sok eszközzel van dolga. A legjobb módja az eszközök megtanulásának, ha használod őket. A rosszindulatú dokumentumok kriminalisztikájához hasznos lehet néhány Didier Stevens online workshopot elvégezni, mivel a FOR610 tananyagban ebben a részben említett eszközök közül sokat ő írt.

Az összes labor és indexelés között szükségem volt egy kis agyszünetre. Úgy döntöttem, hogy egy olyan témával foglalkozom, amely segít a vizsgán, de egyben el is távolít a kimerítő vizsgafelkészüléstől: alapvető exploit- és shellcode-írás. Három hét felkészülési szabadság után felfrissülve és motiváltabban tértem vissza, mint valaha. Javaslom, hogy keress egy szórakoztató témát, amely érinti az assembly és a reverse engineering témakörét, és tanulj, ha kimerültnek vagy demotiváltnak érzed magad.

Miután átnézted az összes könyvet, amit használni fogsz, elvégeztél néhány labort, és tartottál egy kis agyszünetet, itt az ideje, hogy felkészülj az első gyakorlati vizsgádra. Sokan azt javasolják, hogy ne használj indexet a gyakorlati vizsgádhoz, de szerintem a gyakorlati vizsga megkísérlése előtt elengedhetetlen egy index létrehozása. Részben azért, mert a gyakorlati vizsga segítségével megtudhatod, hol vannak a lyukak az indexedben, részben pedig azért, mert az indexkészítés a legjobb módja annak, hogy átnézd az összes információt, amit az esetleg hónapokig tartó tanulás során tanultál.

Mi az az index?

A gyakorlati vizsgán a szakkönyvek mellett jegyzeteket is készíthetsz. Hagyományosan a legtöbben egy indexet visznek a vizsgára az összes elolvasott könyvből. Az indexeket általában táblázatként készítik, szűrt oszlopokkal. Javaslom, hogy színkódolja az indexét. Az indexnek tartalmaznia kell az összes fontos témát, az egyes témák oldalszámait és az egyes témákhoz tartozó jegyzeteket. Az indexem tartalmazta azt a FOR610-es tartományt is, amelyhez minden témát tartozónak feltételeztem. A jegyzeteimben kiemeltem az olyan fontos dolgokat, mint a Windows API függvények, struktúrák és Volatility bővítmények. Az oldalszámokat is be kell jelölni a könyvekben, amelyeket a vizsgára hozol. A lapjaimat az indexnek megfelelően színkódoltam, ami nagy segítség volt, amikor gyorsan utána kellett néznem valaminek.

Egy példa indexbejegyzésre. Vegye figyelembe, hogy ez a téma nem feltétlenül kapcsolódik a vizsgához, és véletlenszerűen választottuk ki a “Practical Malware Analysis” című könyvből szemléltetés céljából.

Ezzel a vizsgával kapcsolatban rengeteg téma lesz az online forrásokban, de a könyvei közül egyik sem. Szeretem az ilyen témákról szóló jegyzeteket az indexhez hozzáadni egy üres oldalszámmal. Ez rendezettebb, mintha minden egyes, könyvben nem található témához külön jegyzetlapot készítenék.”

Megjegyzem, hogy a te indexed valószínűleg nagyon eltérő lesz az enyémtől, mivel te találod meg a számodra legmegfelelőbb stílust. Soha ne használja más személy indexét, mivel ez egyrészt sérti a SANS irányelveit, másrészt tanulmányi segédletként használhatatlan, mivel nem ön készítette. Ugyanezen okból kifolyólag általában azt javasolják, hogy azok, akik elvégezték a tanfolyamot, és rendelkeznek olyan SANS könyvekkel, amelyek előre elkészített indexeket tartalmaznak, készítsenek saját indexeket ahelyett, hogy ezeket az indexeket használnák. Soha ne másoljon semmilyen információt az indexbe közvetlenül egy weboldalról vagy szóról szóra egy könyvből. Ha akarja, megteheti ezt egy külön jegyzetlapon, de nem az indexében. Ez nem szabályszegés, csak egy jó ökölszabály. Az indexedben mindennek a saját szavaiddal, a saját kezeddel kell lennie. Az index elkészítésének aktusa létfontosságú a vizsgára való felkészüléshez.

Minden olyan index, amelyet az első gyakorlati vizsga előtt készítesz, lyukas lesz, különösen, ha nem vetted fel a kurzust. Ne féljen attól, hogy az első gyakorlati vizsgára egy 20 vagy 30 oldalas indexszel megy. Én 25 oldalas indexszel indultam, de az indexem az igazi vizsga előtti este több mint 40 oldalas volt.

GYakorlati vizsgák

Előtte: CSAK a GIAC honlapján, a www.giac.org oldalon vásároljon OFFIZIÁLIS gyakorlati vizsgakísérleteket. SOHA ne használjon más forrást a gyakorlati vizsgákhoz. Ez a GIAC vizsgairányelvei szerint tilos és csalásnak minősül. Ezek a nem hivatalos gyakorlati vizsgák lopott, elavult vizsgakérdéseket használnak, és nem tekinthetők tanulási forrásnak. Vásároljon hivatalos gyakorlati vizsgakísérleteket itt:

Most, hogy ez megtörtént, javaslom, hogy a vizsga megvásárlása előtt tegyen gyakorlati vizsgát. A teszthez két gyakorlati vizsga is jár, de mire odaérsz, már elköltöttél 2000 dollárt, és fogalmad sincs, hogy készen állsz-e a vizsgára. Az első gyakorlati vizsga remek módja annak, hogy megtudd, milyen messze vagy attól, hogy meg tudd vásárolni a vizsgát. Ha átmész rajta, javaslom, hogy minél hamarabb vedd meg a vizsgát. Ha nem, akkor megtudhatja, hogy mely területeken gyenge, így ezekre összpontosíthat, mielőtt megvásárolná a vizsgát.

Az első és az azt követő gyakorlati tesztek arra is nagyszerűek, hogy kitöltse az indexében lévő lyukakat. Ahogy korábban említettem, a FOR610 tananyag nem átfogó, és a gyakorlati vizsgák az egyetlen módja annak, hogy megtalálja azokat az eszközöket és témaköröket, amelyeket tovább kell tanulnia. Kerülje el, hogy csak azt írja be az indexébe, amire a válaszokból emlékszik. Ez egy nagyszerű módja annak, hogy átmenjen a jövőbeli gyakorlati teszteken, mivel ezek mindegyike közös kérdésbankot használ. Ez egyúttal remek módja annak is, hogy megbukjon a valódi vizsgán. Ezért sem ajánlom, hogy háromnál több gyakorlati vizsgát tegyen, a csökkenő hozam hamis biztonságérzetet ad. Ehelyett használd azt, amit elrontottál, kiindulópontként a további kutatáshoz. A gyakorlati tesztek arra is nagyszerűek, hogy kitaláld, milyen jól kell ismerned az egyes témaköröket.

A gyakorlati vizsgák segítségével megismerkedhetsz a GIAC vizsgák működésével is. Én új voltam a GIAC-nél, és ismerős voltam a CompTIA-nál, így nem voltam felkészülve arra, hogy sok kérdésre sok helyes válasz és egy “jó” válasz lesz. Azt is meg kellett tanulnom, hogy mikor kell “kihagyni” a kérdéseket. Korlátozott számú kérdés van, amelyet kihagyhat, és később visszatérhet rá, és ha válaszol egy kérdésre, és elküldi, akkor nem tud visszatérni rá. A kérdések nagyon alapos elolvasása közhelyesnek tűnik, de ez egy jogos készség volt, amelyet a vizsgára való felkészüléshez kellett kifejlesztenem. Igazán nagyra értékelem, hogy a GIAC-nál a tanulás, a gyakorlás és az alkalmazott erőfeszítés semmilyen szakaszban nem helyettesíthető.

A valódi vizsga ütemezése előtt tudnia kell, hogy a gyakorlati vizsga könnyebb, mint a valódi vizsga, így 5-10 ponttal magasabb pontszámot kell kapnia, mint amennyit kell. Ez valójában a különböző GIAC vizsgák között változik. Sokan, akik más SANS DFIR vizsgát tettek, azt mondták, hogy a gyakorlati vizsgájuk nehezebb volt, mint a vizsgájuk.

A GIAC vizsga “Alkalmazás”

A GREM-vizsga megvásárlásakor ki kell töltenie egy kérelmet, és két napot kell várnia a jóváhagyásra, mielőtt ütemezhetné vagy hozzáférhetne az ingyenes gyakorlati vizsgákhoz. Szerintem még senki nem ment bele, hogy mit kell ráírni, de én nem stresszelnék emiatt. Kétlem, hogy túl nagy súlyt fektetnek arra, hogy milyen végzettséged van, de valószínűleg érdekli őket, hogy hogyan tanultál és mit hozol a vizsgára. Amikor kitöltöd a jelentkezési lapot, légy őszinte. Ne félj megemlíteni a már meglévő, nem SANS minősítéseket, a náluk vagy másoknál elvégzett tanfolyamokat, a jelenlegi pozíciódat, a vizsgára való felkészüléshez használt könyveket, és hogy mire épül az indexed. Valószínűleg körülbelül egy napon belül jóváhagyják a vizsgát.

Vizsga-bánat

A legnagyobb bánatom valószínűleg az, hogy mindent, ami a hálózattal kapcsolatos viselkedéselemzéssel és a szkriptalapú rosszindulatú szoftverekkel kapcsolatos, az utolsó pillanatra halasztottam. Felkészületlen voltam erre a részre, és bár 81,3%-kal mentem át a vizsgán, a pontszámom ezekben a részekben sokkal magasabb lett volna, ha több gyakorlatot végeztem volna ahelyett, hogy csak olvasgattam volna a témához kapcsolódóan. Túl nagy hangsúlyt fektettem a végrehajtható elemzésre, még azután is, hogy rájöttem, hogy ez a leggyengébb területem. Azt javaslom, hogy minden más előtt a leggyengébb területekre összpontosítson, amelyeket a gyakorlati teszteken lát.

A következő lépéseim

A memóriával kapcsolatos törvényszéki vizsgálatok, a hálózattal kapcsolatos viselkedéselemzés és a kernel üzemmódú hibakeresés három olyan dolog, amiről még többet szeretnék tanulni. Úgy döntöttem, hogy a rootkitek elemzésével egy csapásra lecsapok mindezekre. Hamarosan közzéteszek egy cikket arról, hogyan kell létrehozni egy laboratóriumot a Win32 rootkitek elemzésére, és egy másikat, amelyben egy kernel módú rootkit mintát elemzek (valószínűleg Cutwail, változás lehetséges) viselkedéselemző eszközök, hálózati eszközök, mint az INetSim, a WinDBG kernel módú hibakereső és a Volatility pluginok segítségével a rootkit memóriaelemzéshez.

Valószínűleg elemeznem kellene még néhány dokumentumalapú javascript és VB makró mintát, hogy biztosítsam, hogy az ilyen típusú malware-ek elemzéséhez használt technikákról való ismereteim szilárdak legyenek.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.