Eu quero prefaciar este artigo dizendo que se você é como eu, novo na análise de malware e com um orçamento, estudar sem acesso aos materiais do curso pode não ser a melhor opção para você. A melhor maneira de obter a certificação SANS GREM sem uma fonte de financiamento para o curso é candidatar-se ao programa SANS Work Study para o curso FOR610. Em troca da assistência ao instrutor do curso, você poderá avaliar o curso e tentar o exame de certificação. Também lhe serão fornecidas cópias dos livros e materiais do curso, que não podem ser adquiridos de outra forma devido à política SANS de compartilhamento de materiais do curso. O custo total deste programa é realmente inferior ao que eu paguei do bolso apenas pelo exame.
Para participar do programa Work Study, no entanto, sua inscrição deve ser aceita, e você deve poder participar de uma conferência SANS por 6 dias. Eu não segui esta opção porque as conferências SANS na minha área conflitavam com outros itens importantes na minha agenda. Também não achei apropriado pedir ao meu empregador para cobrir o custo do curso, pois não estava diretamente relacionado ao meu papel no projeto. Por estas razões, o treinamento SANS estava fora de questão.
Agora eu estabeleci porque fiz o que fiz, vamos entrar no “como”.
O que eu precisava de aprender
Atraço do site SANS, para o GREM que eu precisava:
- Conceitos de montagem de janelas para engenharia reversa – O que você faz no IDA Pro, porque você precisa de montagem e conhecimento em C
- Características comuns do Windows Malware – Funções API, threads, structures
- Análise aprofundada de executáveis maliciosos e protegidos – O que você faz no IDA Pro após alguma prática
- Análise de documentos maliciosos -Atacantes colocam scripts em arquivos
- Análise de scripts maliciosos do navegador web -Atacantes colocam scripts na internet, fluxos de tráfego de comando e controle sobre o fio
- Memória forense – Volatilidade
A Importância da linguagem de montagem e C
Antes de entrar nos diferentes recursos que usei para me preparar para o exame, quero notar que é vital ter pelo menos uma compreensão instável da montagem do x86. Você realmente não pode fazer engenharia reversa em um executável portátil ou código de shell sem ele. Isto realmente não é tão ruim quanto parece, montagem em seu núcleo é apenas aritmética que faz computadores fazerem coisas. Tudo que você precisa saber para começar a aprender engenharia reversa binária são os registros x86, tipos de variáveis (word, dword, int, char, etc.), noções básicas de stack e algumas instruções de fluxo de programas. Aqui está um recurso que eu achei útil para aprender o básico:
Um conhecimento de trabalho em C é importante, mas você saberá a maioria do que você precisa se você souber como programar em uma linguagem em C como Java. Os únicos conceitos novos que você precisará para a engenharia reversa de malware são apontadores, alocação de memória e o heap. Aprendi o que precisava através destes dois recursos:
Engenharia Reversa “Reverse Engineering”
Decidi intitular este artigo “Grey Box Testing” porque, olhando para trás, percebi que era basicamente o que eu fazia para estudar para este exame. Como alguém que era novo na análise de malware, eu sabia pouco do que esperar. Ao longo da minha preparação para o exame, referi-me a estas fontes de informação:
- Recomendações de livros publicadas por aqueles que passaram no exame sem pagar pelo curso há três a cinco anos atrás
- O programa oficial do curso SANS FOR610
- Folhas de cheats de análise de ficheiros maliciosos criadas pelo Lenny Zeltser
Dividirei estes itens em secções para mostrar o que aprendi com cada fonte.
Recomendações de livros
Escolher livros úteis é muito importante para o sucesso do GREM, pois é permitido levar um braço cheio deles para os exames do GIAC como referências. A maioria dos portadores da certificação GREM compartilharão com prazer uma lista dos livros (não-SANS) que usaram para preparar com pessoas que se perguntam por onde começar a estudar para o exame. Meu primeiro passo foi olhar para as listas de leitura recomendadas do maior número possível de ex-alunos GREM que pude encontrar. Os livros que encontrei mais consistentemente recomendados foram:
- “Practical Malware Analysis”- Um guia fantástico para análise comportamental, engenharia reversa, e derrotar a anti-análise. Este livro não é negociável, você não vai encontrar uma fonte que não o recomende. Além das informações, ele vem com laboratórios muito úteis para reforçar seu conhecimento.
- “The Malware Analyst’s Cookbook” – Um guia para uma grande variedade de ferramentas de análise de malware. Os laboratórios e scripts estão muito desatualizados, mas as visões gerais das ferramentas foram muito úteis. Eu usei as seções sobre forenses de memória, scripts de malware do navegador e análise de documentos maliciosos para preparar o meu exame.
- “The Art of Memory Forensics” – É útil ter isso não necessariamente como um recurso primário, mas como um recurso suplementar para a seção “Malware Analyt’s Cookbook” sobre forenses de memória. Muitos dos plugins Volatility que você vai precisar não são cobertos com muitos detalhes, e as informações do MAC devem ser cruzadas com as informações deste livro. Este livro também cobre muitos internos de janelas que são úteis para o exame.
- “Windows Internals 6 ou 7” – eu pessoalmente acho que estes livros são exagerados. Se você está familiarizado com o Windows do ponto de vista da segurança, os livros anteriores são tudo o que você precisa para entender o Windows Internals. Eu nunca recomendaria levar esses livros com você para o exame ou mesmo para indexá-lo. Todas as informações relevantes já estão na “Art of Memory Forensics” ou no site MSDN.
- “The IDA Pro Book” – Acho que ninguém lhe dirá para levar este livro para o exame, mas se você o utiliza ou não é realmente uma questão de como você aprende ferramentas. Eu aprendi o IDA Pro usando PMA e algumas brincadeiras no meu tempo livre, então eu não acabei precisando dele. Se você aprender melhor as ferramentas lendo livros longos com poucas imagens ou ilustrações, este é o livro perfeito para você.
O SANS FOR610 Syllabus
Este é bem simples. O exame SANS GREM é o exame associado ao curso SANS FOR610, por isso é seguro assumir que o que você aprende no curso é o que você vai aplicar no exame. Embora não tenha tido acesso ao curso, tive acesso ao programa de estudos no site do SANS, uma visão geral dos tópicos e ferramentas que o curso cobriu. O programa FOR610 foi mais útil para ferramentas do que para tópicos, embora isso não seja verdade para todos os cursos do SANS DFIR. Alguns parecem listar poucas ferramentas, mas têm uma lista de todos os tópicos. Eu acho que depende de quão técnico vs. teoria baseado um curso é.
A lista de ferramentas no programa pode não ser abrangente, mas é a única lista que você terá. Familiarize-se com cada ferramenta da lista, como elas são, como funcionam, e o que fazem. Eu normalmente começo na página do github de uma ferramenta e vou a partir daí. “The Malware Analyst’s Cookbook” e o site do Lenny Zeltser têm ambos excelentes referências de ferramentas.
Queres reduzir o que precisas de saber para o exame? Se um tópico parece um pouco amplo ou uma ferramenta muito importante para que o programa não seja mencionado, provavelmente não está no curso ou no exame.
Lenny Zeltser’s Infosec Cheat Sheets
Lenny Zeltser, um dos instrutores do SANS FOR610 que ajudou a escrever tanto o curso quanto o exame, publica cheat sheets para tópicos como código malicioso de engenharia reversa e análise de documentos maliciosos. Estes são apenas alguns dos mesmos tópicos referenciados tanto no programa FOR610 como na página web do GREM. Pode ser uma boa idéia estudar e tomar notas sobre o conteúdo dessas folhas de fraude.
Uma folha de fraude que pode realmente ajudá-lo com os laboratórios “Practical Malware Analysis” e as convenções x86 de chamada de assemblagem:
Passos seguintes: Labs, Special Topics, and Proper Indexing
Eu recomendo seguir junto com os laboratórios em “Practical Malware Analysis” e a seção de memória forense do “The Malware Analyst’s Cookbook” enquanto você lê esses livros. Faça um laboratório uma noite, um laboratório a cada duas noites, o que funcionar melhor para você. O tempo de prática é flexível, mas a prática não é opcional. A prática é a melhor maneira de reforçar a compreensão do material, especialmente quando você está lidando com um monte de ferramentas. A melhor maneira de aprender as ferramentas é usá-las. Para documentos forenses maliciosos, pode ser útil levar alguns workshops on-line Didier Stevens, já que ele escreveu muitas das ferramentas mencionadas no programa FOR610 sob esta secção.
Entre fazer todos os laboratórios e indexação, eu precisava de fazer uma pausa no cérebro. Decidi seguir um tópico que me ajudasse no exame, mas que também me afastasse da exaustiva preparação do exame: exploração básica e escrita de código de shell. Voltei refrescado e mais motivado do que nunca, depois de três semanas nestas férias de preparação. Eu recomendo encontrar um tópico divertido que toque montagem e engenharia reversa para aprender se você está se sentindo exausto ou desmotivado.
Depois de ter revisado todos os livros que você vai usar, feito alguns laboratórios e feito uma pausa no cérebro, é hora de se preparar para o seu primeiro exame de prática. Muitas pessoas recomendam não usar um índice para seu exame de prática, mas eu acho que criar um índice antes de tentar um exame de prática é essencial. Em parte porque os exames de treino podem ser usados para lhe dizer onde se encontram os buracos no seu índice, em parte porque a indexação é a melhor forma de rever toda a informação que aprendeu ao longo dos meses de estudo.
O que é um índice?
Ainda aos seus livros de referência, é-lhe permitido tomar notas para o exame de treino. Tradicionalmente, a maior parte das pessoas faz um índice de todos os livros que leram no exame. Os índices são normalmente criados como folhas de cálculo com colunas filtradas. Eu recomendo a codificação por cores do seu índice. Um índice deve incluir todos os tópicos importantes, números de páginas para cada tópico, e notas para cada tópico. Meu índice também incluiu o domínio FOR610 ao qual eu assumi que todos os tópicos pertenciam. Nas minhas notas, destaquei coisas importantes como as funções da API do Windows, estruturas e plugins Volatility. Os números das páginas também devem ser tabulados nos livros que você vai trazer para o exame. Eu codifiquei minhas abas coloridas para combinar com o índice, o que foi uma grande ajuda quando precisei procurar algo rapidamente.
Com este exame haverá muitos tópicos cobertos em recursos online, mas nenhum de seus livros. Eu gosto de adicionar notas sobre esses tópicos ao índice com um número de página em branco. É mais arrumado do que criar uma folha de notas separada para cada tópico não localizado em um livro.
Note que o seu índice provavelmente será muito diferente do meu, pois você vai encontrar um estilo que lhe convém melhor. Nunca use o índice de outra pessoa, pois isso é uma violação das diretrizes do SANS e inútil como uma ajuda de estudo, pois não foi feito por você. Por esta mesma razão, geralmente é recomendado que aqueles que fizeram o curso e têm livros SANS que incluem índices pré-fabricados criem os seus próprios em vez de usar estes índices. Nunca copie nenhuma informação para o índice diretamente de um site ou palavra por palavra de um livro. Você pode fazer isso em uma folha de notas separada se quiser, mas não no seu índice. Isto não é uma violação das regras, apenas uma boa regra de ouro. Tudo no seu índice deve estar nas suas próprias palavras, pelas suas próprias mãos. O acto de criar o índice é vital para a preparação do exame.
Qualquer índice que cries antes do primeiro exame prático vai ter buracos, especialmente se não fizeste o percurso. Não tenha medo de ir para o seu primeiro exame de treino com um índice de 20 ou 30 páginas. Eu entrei com um índice de 25 páginas, mas meu índice na noite anterior ao verdadeiro exame tinha mais de 40 páginas.
Exames de Prática
Antes de eu começar: SOMENTE adquira as tentativas de exame prático OFFICIAL no site do GIAC, www.giac.org. NUNCA utilize qualquer outra fonte para a prática de exames. Isto é proibido sob as diretrizes do exame GIAC e considerado batota. Estes exames de prática não oficiais utilizam perguntas de exame roubadas e desactualizadas e não devem ser considerados como um recurso de estudo. Adquira aqui as tentativas de exames oficiais de prática:
Agora que isso esteja fora do caminho, eu recomendo que você faça um exame de prática antes de comprar o teste. O teste vem com dois exames práticos, mas quando você estiver lá você já gastou $2.000 e não tem idéia se você está pronto para o exame. Seu primeiro exame prático é uma ótima maneira de descobrir a que distância você está de poder comprar o exame. Se você passar no exame, eu recomendo a compra do exame o mais rápido possível. Se não, ele lhe dirá as áreas em que você está fraco para que você possa se concentrar nelas antes de comprar o exame.
O primeiro e subsequentes testes práticos também são uma ótima maneira de preencher os buracos no seu índice. Como mencionei anteriormente, o programa FOR610 não é abrangente e os exames práticos são a única maneira de encontrar ferramentas e tópicos que você precisa estudar mais. Evite apenas escrever no seu índice o que você se lembra sobre as respostas. Esta é uma ótima maneira de passar nos futuros testes de prática, pois todos eles compartilham um banco de perguntas. É também uma ótima maneira de reprovar no exame real. É também por isso que eu não recomendo fazer mais do que três exames práticos, diminuindo os retornos lhe dará uma falsa sensação de segurança. Em vez disso, use o que você errou como um ponto de salto para pesquisas adicionais. Testes práticos também são uma ótima maneira de descobrir quão bem você precisa conhecer cada tópico.
Exames práticos também o familiarizarão com como os exames do GIAC funcionam. Eu era novo no GIAC e familiarizado com a CompTIA, por isso não estava preparado para a ideia de que muitas perguntas teriam muitas respostas correctas e uma resposta “boa”. Eu também tive que aprender quando “pular” as perguntas. Você tem um número limitado de perguntas que pode pular e voltar mais tarde, e se você responder uma pergunta e submetê-la você não poderá retornar a ela. Ler as perguntas com muito cuidado parece um clichê, mas era uma habilidade legítima que eu tinha que desenvolver para me preparar para o exame. Eu realmente aprecio que com o GIAC, não há substituto em nenhuma fase para o estudo, prática e esforço aplicado.
Antes de agendar o exame real, saiba que o exame prático é mais fácil do que o exame real, então você deve estar obtendo uma pontuação de 5-10 pontos mais alta do que você precisa. Isto na verdade varia entre os diferentes exames do GIAC. Eu já vi muitos que fizeram outros exames SANS DFIR dizerem que seus exames de prática foram mais difíceis do que o exame.
O Exame GIAC “Aplicação”
Quando você estiver adquirindo seu exame GREM, você terá que preencher uma aplicação e aguardar dois dias para aprovação antes de poder agendar ou acessar seus exames de prática livre. Acho que ninguém se interessou muito pelo que colocar nisto, mas eu não me estressaria com isso. Duvido que eles coloquem muito peso no que são as suas qualificações, mas provavelmente eles se preocupam com a forma como você estudou e o que você está trazendo para o exame. Quando estiveres a preencher a candidatura, sê honesto. Não tenha medo de mencionar certificações não-SANS que você já tem, cursos que você fez com eles ou outros, sua posição atual, os livros que você usou para se preparar para o exame, e do que o seu índice é baseado. Você provavelmente será aprovado em cerca de um dia.
Exam Lamenta
Meu maior arrependimento é provavelmente colocar tudo relacionado à análise comportamental relacionada à rede e malware baseado em scripts até o último segundo. Eu não estava preparado para esta seção, e embora eu tenha passado no exame com 81,3%, minha pontuação nestas seções teria sido muito maior se eu tivesse feito mais prática ao invés de apenas ler relacionado a este tópico. Coloquei demasiada ênfase na análise executável, mesmo depois de ter percebido que esta era a minha área mais fraca. Minha recomendação é focar nas áreas mais fracas que você vê em seus testes de prática antes de qualquer outra coisa.
My Next Steps
Memory forensics, network-related behavioral analysis, and kernel mode de debugging são três coisas que eu gostaria de aprender mais sobre. Eu decidi acertar tudo isso de uma só vez analisando rootkits. Eu vou postar um artigo em breve sobre como configurar um laboratório para analisar rootkits Win32, e outro onde eu analiso uma amostra de rootkit em modo kernel (provavelmente Cutwail, sujeito a mudanças) usando ferramentas de análise comportamental, ferramentas de rede como INetSim, o depurador em modo kernel WinDBG, e plugins Volatility para forenses de memória rootkit.
Eu também provavelmente deveria analisar mais algumas amostras de macro javascript e VB baseadas em documentos para garantir que meu entendimento das técnicas usadas para analisar esses tipos de malware seja sólido.