Voglio fare una premessa a questo articolo dicendo che se siete come me, nuovi nell’analisi del malware e con un budget, studiare senza accesso ai materiali del corso potrebbe non essere la migliore opzione per voi. Il modo migliore per perseguire la certificazione SANS GREM senza una fonte di finanziamento per il corso è quello di richiedere il programma SANS Work Study per il corso FOR610. In cambio dell’assistenza all’istruttore del corso, ti sarà permesso di valutare il corso e tentare l’esame di certificazione. Ti verranno inoltre fornite copie dei libri e dei materiali del corso, che non possono essere acquistati in altro modo a causa della politica SANS sulla condivisione dei materiali del corso. Il costo totale di questo programma è effettivamente inferiore a quello che ho pagato di tasca mia solo per l’esame.
Per partecipare al programma Work Study, tuttavia, la tua domanda deve essere accettata, e devi essere in grado di partecipare a una conferenza SANS per 6 giorni. Non ho perseguito questa opzione perché le conferenze SANS nella mia zona erano in conflitto con altri punti importanti della mia agenda. Inoltre non ho ritenuto opportuno chiedere al mio datore di lavoro di coprire il costo del corso, poiché non era direttamente collegato al mio ruolo nel progetto. Per questi motivi, la formazione SANS era fuori questione.
Ora che ho stabilito perché ho fatto quello che ho fatto, entriamo nel “come”.
Cosa dovevo imparare
Diretto dal sito della SANS, per il GREM di cui avevo bisogno:
- Concetti di assemblaggio Windows per il reverse engineering – Cosa si fa in IDA Pro, perché è necessaria la conoscenza dell’assemblaggio e del C
- Caratteristiche comuni del malware Windows – Funzioni API, thread, strutture
- Analisi approfondita di eseguibili malevoli e protetti – Cosa si fa in IDA Pro dopo un po’ di pratica
- Analisi di documenti malevoli – Gli attaccanti mettono script nei file
- Analisi di script per browser web malevoli – Gli attaccanti mettono script su internet, il traffico di comando e controllo scorre sul filo
- Forensi della memoria – Volatilità
L’importanza del linguaggio assembly e del C
Prima di entrare nelle diverse risorse che ho usato per preparare l’esame, voglio notare che è vitale avere almeno una vaga conoscenza dell’assembly x86. Non si può davvero fare il reverse engineering di un eseguibile portatile o di uno shellcode senza di esso. Questo in realtà non è così male come sembra, l’assembly in fondo è solo aritmetica che fa fare le cose ai computer. Tutto quello che dovete sapere per iniziare a imparare il reverse engineering binario sono i registri x86, i tipi di variabili (word, dword, int, char, ecc.), le basi dello stack e alcune istruzioni di flusso del programma. Ecco una risorsa che ho trovato utile per imparare le basi:
Una conoscenza pratica del C è importante, ma saprete la maggior parte di ciò che vi serve se sapete programmare in un linguaggio simile al C come Java. Gli unici nuovi concetti di cui avrete bisogno per il reverse engineering del malware sono i puntatori, l’allocazione della memoria e l’heap. Ho imparato ciò di cui avevo bisogno attraverso queste due risorse:
Reverse Engineering “Reverse Engineering”
Ho deciso di intitolare questo articolo “Grey Box Testing” perché guardando indietro, mi sono reso conto che questo è fondamentalmente ciò che ho fatto per studiare per questo esame. Come qualcuno che era nuovo nell’analisi del malware, sapevo poco di quello che mi aspettava. Durante la mia preparazione all’esame, ho fatto riferimento a queste fonti di informazione:
- Raccomandazioni di libri pubblicati da coloro che hanno superato l’esame senza pagare il corso da tre a cinque anni fa
- Il syllabus ufficiale del corso SANS FOR610
- Fogli di analisi di file maligni creati da Lenny Zeltser
Si suddivideranno questi articoli in sezioni per mostrare cosa ho imparato da ogni fonte.
Raccomandazioni sui libri
Scegliere libri utili è molto importante per il successo del GREM, dato che è permesso portarne una manciata agli esami GIAC come riferimento. La maggior parte dei possessori della certificazione GREM condividono volentieri una lista dei libri (non-SANS) che hanno usato per prepararsi con le persone che si chiedono dove iniziare a studiare per l’esame. Il mio primo passo è stato guardare le liste di lettura raccomandate di tutti gli alumni GREM che ho potuto trovare. I libri che ho trovato più raccomandati sono stati:
- “Practical Malware Analysis”- Una fantastica guida all’analisi comportamentale, al reverse engineering e alla sconfitta dell’anti-analisi. Questo libro non è negoziabile, non troverete una fonte che non lo raccomandi. Oltre alle informazioni, viene fornito con laboratori molto utili per rafforzare la vostra conoscenza.
- “The Malware Analyst’s Cookbook” – Una guida a una grande varietà di strumenti di analisi del malware. I laboratori e gli script sono molto datati, ma le panoramiche degli strumenti sono molto utili. Ho usato le sezioni su memory forensics, browser script malware, e analisi di documenti maligni per preparare il mio esame.
- “The Art of Memory Forensics” – È utile avere questo non necessariamente come risorsa primaria, ma come risorsa supplementare alla sezione “Malware Analyt’s Cookbook” sulla memory forensics. Molti dei plugin di Volatility di cui avrete bisogno non sono coperti in dettaglio, e le informazioni del MAC dovrebbero essere incrociate con quelle di questo libro. Questo libro copre anche molti elementi interni di Windows che sono utili per l’esame.
- “Windows Internals 6 o 7” – Personalmente penso che questi libri siano eccessivi. Se hai familiarità con Windows dal punto di vista della sicurezza, i libri precedenti sono tutto ciò di cui hai bisogno per capire Windows Internals. Non raccomanderei mai di portare questi libri con voi all’esame o addirittura di indicizzarli. Tutte le informazioni rilevanti sono già in “Art of Memory Forensics” o sul sito web MSDN.
- “The IDA Pro Book” – Non credo che nessuno vi dirà di portare questo libro all’esame, ma se lo utilizzate o meno è davvero una questione di come imparate gli strumenti. Ho imparato IDA Pro usando PMA e un po’ di smanettamento nel mio tempo libero, quindi alla fine non ne ho avuto bisogno. Se imparate meglio gli strumenti leggendo lunghi libri con poche immagini o illustrazioni, questo è il libro perfetto per voi.
Il SANS FOR610 Syllabus
Questo è abbastanza semplice. L’esame SANS GREM è l’esame associato al corso SANS FOR610, quindi è sicuro assumere che ciò che si impara nel corso è ciò che si applica all’esame. Anche se non ho avuto accesso al corso, ho avuto accesso al syllabus sul sito web della SANS, una panoramica sia degli argomenti che degli strumenti che il corso ha coperto. Il syllabus di FOR610 era più utile per gli strumenti che per gli argomenti, anche se questo non è vero per tutti i corsi SANS DFIR. Alcuni sembrano elencare pochi strumenti ma hanno una ripartizione di ogni argomento. Penso che dipenda da quanto un corso sia tecnico o basato sulla teoria.
L’elenco degli strumenti sul syllabus può non essere completo, ma è l’unico elenco che avrete. Familiarizzate con ogni strumento della lista, come sono fatti, come funzionano e cosa fanno. Di solito inizio dalla pagina github di uno strumento e vado da lì. “The Malware Analyst’s Cookbook” e il sito web di Lenny Zeltser hanno entrambi ottimi riferimenti agli strumenti.
Vuoi restringere ciò che devi sapere per l’esame? Se un argomento sembra un po’ ampio o uno strumento troppo importante per il programma da non menzionare, probabilmente non è nel corso o nell’esame.
Lenny Zeltser’s Infosec Cheat Sheets
Lenny Zeltser, uno degli istruttori SANS FOR610 che ha aiutato a scrivere sia il corso che l’esame, pubblica cheat sheets per argomenti come il reverse engineering del codice dannoso e l’analisi di documenti dannosi. Si dà il caso che questi siano alcuni degli stessi argomenti a cui si fa riferimento sia nel syllabus del FOR610 che nella pagina web del GREM. Può essere una buona idea studiare e prendere appunti sul contenuto di questi foglietti.
Un foglio cheat che può davvero aiutarvi con i laboratori “Practical Malware Analysis” e le convenzioni di chiamata dell’assembly x86:
Passi successivi: Labs, Special Topics, and Proper Indexing
Consiglio di seguire i laboratori di “Practical Malware Analysis” e la sezione di memory forensics di “The Malware Analyst’s Cookbook” mentre leggi questi libri. Fate un laboratorio a notte, un laboratorio ogni due notti, qualsiasi cosa funzioni meglio per voi. Il tempo di pratica è flessibile, ma la pratica non è opzionale. La pratica è il modo migliore per rafforzare la comprensione del materiale, specialmente quando si ha a che fare con molti strumenti. Il modo migliore per imparare gli strumenti è usarli. Per la forensics dei documenti malevoli, può essere utile seguire alcuni workshop online di Didier Stevens, dato che ha scritto molti degli strumenti menzionati nel programma FOR610 in questa sezione.
Tra il fare tutti i laboratori e l’indicizzazione, avevo bisogno di fare una pausa di riflessione. Ho deciso di seguire un argomento che mi avrebbe aiutato con l’esame, ma che mi avrebbe anche portato via dall’estenuante preparazione all’esame: la scrittura di exploit e shellcode di base. Sono tornato rinfrescato e più motivato che mai dopo tre settimane di vacanza di preparazione. Vi consiglio di trovare un argomento divertente che tocchi l’assemblaggio e il reverse engineering da imparare se vi sentite esausti o demotivati.
Dopo aver esaminato tutti i libri che userete, aver fatto alcuni laboratori e aver fatto una pausa di riflessione, è il momento di preparare il vostro primo esame pratico. Molte persone raccomandano di non usare un indice per l’esame pratico, ma io penso che creare un indice prima di tentare un esame pratico sia essenziale. In parte perché gli esami pratici possono essere usati per dirti dove si trovano i buchi nel tuo indice, in parte perché l’indicizzazione è il modo migliore per rivedere tutte le informazioni che hai imparato in quelli che possono essere stati mesi di studio.
Che cos’è un indice?
Oltre ai tuoi libri di riferimento, ti è permesso di prendere appunti durante l’esame pratico. Tradizionalmente, la maggior parte delle persone portano all’esame un indice di tutti i libri che hanno letto. Gli indici sono di solito creati come fogli di calcolo con colonne filtrate. Raccomando di codificare a colori il tuo indice. Un indice dovrebbe includere tutti gli argomenti importanti, i numeri di pagina per ogni argomento e le note per ogni argomento. Il mio indice includeva anche il dominio FOR610 a cui presumevo appartenesse ogni argomento. Nelle mie note, ho evidenziato cose importanti come le funzioni API di Windows, le strutture e i plugin di Volatility. Anche i numeri di pagina dovrebbero essere etichettati nei libri che porterai all’esame. Ho codificato le mie schede per colore in modo che corrispondano all’indice, il che è stato di grande aiuto quando ho dovuto cercare qualcosa velocemente.
Con questo esame ci saranno molti argomenti trattati nelle risorse online ma nessuno dei vostri libri. Mi piace aggiungere note su questi argomenti all’indice con un numero di pagina vuoto. È più ordinato che creare un foglio di note separato per ogni argomento che non si trova in un libro.
Nota che il tuo indice sarà probabilmente molto diverso dal mio, perché troverai uno stile che ti si addice meglio. Non usate mai l’indice di un’altra persona, perché questo è sia una violazione delle linee guida SANS sia inutile come aiuto allo studio perché non è stato fatto da voi. Per questo stesso motivo, di solito si raccomanda a coloro che hanno seguito il corso e hanno libri SANS che includono indici pre-fatti di crearne uno proprio invece di usare questi indici. Non copiare mai alcuna informazione nell’indice direttamente da un sito web o parola per parola da un libro. Puoi farlo in un foglio di note separato se vuoi, ma non nel tuo indice. Questa non è una violazione delle regole, solo una buona regola pratica. Tutto nel tuo indice dovrebbe essere scritto con parole tue, di tua mano. L’atto di creare l’indice è vitale per la preparazione all’esame.
Ogni indice che crei prima del primo esame pratico avrà dei buchi, specialmente se non hai seguito il corso. Non abbiate paura di andare al vostro primo esame pratico con un indice di 20 o 30 pagine. Io sono arrivato con un indice di 25 pagine, ma il mio indice la sera prima dell’esame reale era di oltre 40 pagine.
Esami di pratica
Prima di iniziare: Acquistate SOLO tentativi d’esame pratici UFFICIALI dal sito della GIAC, www.giac.org. Non usare MAI altre fonti per gli esami di pratica. Questo è proibito dalle linee guida degli esami GIAC ed è considerato un imbroglio. Questi esami pratici non ufficiali usano domande d’esame rubate e superate e non devono essere considerati una risorsa di studio. Acquista i tentativi ufficiali dell’esame pratico qui:
Ora che è fuori strada, ti consiglio di fare un esame pratico prima di acquistare il test. Il test viene fornito con due esami di pratica, ma quando sei lì hai speso 2.000 dollari e non hai idea se sei pronto per l’esame. Il primo esame di pratica è un ottimo modo per scoprire quanto sei lontano dal poter acquistare l’esame. Se lo passi, ti consiglio di acquistare l’esame il prima possibile. In caso contrario, ti indicherà le aree in cui sei debole in modo che tu possa concentrarti su queste prima di acquistare l’esame.
Il primo e i successivi test pratici sono anche un ottimo modo per riempire i buchi nel tuo indice. Come ho detto prima, il syllabus di FOR610 non è completo, e gli esami pratici sono l’unico modo per trovare strumenti e argomenti che hai bisogno di studiare di più. Evita di scrivere solo quello che ti ricordi delle risposte nel tuo indice. Questo è un ottimo modo per superare gli esami pratici futuri, dato che tutti condividono una banca di domande. È anche un ottimo modo per fallire il vero esame. Questo è anche il motivo per cui non consiglio di fare più di tre esami di pratica, i rendimenti decrescenti ti daranno un falso senso di sicurezza. Invece, usa ciò che hai sbagliato come punto di partenza per ulteriori ricerche. I test pratici sono anche un ottimo modo per capire quanto bene devi conoscere ogni argomento.
Gli esami pratici ti faranno anche familiarizzare con il funzionamento degli esami GIAC. Ero nuovo di GIAC e familiare con CompTIA, quindi non ero preparato all’idea che molte domande avrebbero avuto molte risposte corrette e una sola risposta “buona”. Ho anche dovuto imparare quando “saltare” le domande. Si ha un numero limitato di domande che si possono saltare e ritornare più tardi, e se si risponde a una domanda e la si invia non si può ritornare su di essa. Leggere le domande molto attentamente sembra un cliché, ma è stata un’abilità legittima che ho dovuto sviluppare per preparare l’esame. Apprezzo davvero che con GIAC, non c’è sostituto in nessuna fase per lo studio, la pratica e lo sforzo applicato.
Prima di programmare l’esame reale, sappiate che l’esame pratico è più facile dell’esame reale, quindi dovreste ottenere un punteggio di 5-10 punti più alto del necessario. Questo in realtà varia tra i diversi esami GIAC. Ho visto molti che hanno preso altri esami SANS DFIR dire che i loro esami di pratica erano più difficili del loro esame.
La “domanda” per l’esame GIAC
Quando acquisti il tuo esame GREM, dovrai compilare una domanda e aspettare due giorni per l’approvazione prima di poter programmare o accedere agli esami di pratica gratuiti. Non credo che qualcuno abbia davvero approfondito cosa mettere su questo, ma non mi stresserei su questo. Dubito che diano troppo peso alle tue qualifiche, ma probabilmente si preoccupano di come hai studiato e di cosa stai portando all’esame. Quando compilate la domanda, siate onesti. Non abbiate paura di menzionare le certificazioni non-SANS che avete già, i corsi che avete seguito con loro o con altri, la vostra posizione attuale, i libri che avete usato per preparare l’esame e su cosa si basa il vostro indice. Probabilmente sarai approvato entro un giorno o giù di lì.
Rimpianti dell’esame
Il mio più grande rimpianto è probabilmente quello di aver messo tutto ciò che riguarda l’analisi comportamentale della rete e il malware basato su script fino all’ultimo secondo. Ero impreparato per questa sezione, e anche se ho passato l’esame con un 81,3%, il mio punteggio in queste sezioni sarebbe stato molto più alto se avessi fatto più pratica invece di leggere solo cose relative a questo argomento. Ho messo troppa enfasi sull’analisi eseguibile anche dopo aver capito che questa era la mia area più debole. La mia raccomandazione è di concentrarsi sulle aree più deboli che vedete nei vostri test pratici prima di qualsiasi altra cosa.
I miei prossimi passi
Memory forensics, analisi comportamentale legata alla rete e debugging in modalità kernel sono tre cose che vorrei imparare di più. Ho deciso di colpirle tutte in un colpo solo analizzando i rootkit. Presto pubblicherò un articolo su come impostare un laboratorio per analizzare i rootkit Win32, e un altro in cui analizzerò un campione di rootkit in modalità kernel (probabilmente Cutwail, soggetto a modifiche) utilizzando strumenti di analisi comportamentale, strumenti di rete come INetSim, il debugger WinDBG in modalità kernel e i plugin Volatility per la forensica della memoria dei rootkit.
Dovrei anche probabilmente analizzare alcuni altri campioni di javascript e di macro VB basati su documenti per assicurarmi che la mia comprensione delle tecniche utilizzate per analizzare questi tipi di malware sia solida.