Jump to content

Search the Community

Showing results for tags 'análise de malware'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Supporter area
    • Tools of the Trade
    • Finance transparency
  • MBConf
    • MBConf v1
    • MBConf v2
    • MBConf v3
  • Mente Binária
    • General
    • Computer Architecture
    • Certifications
    • Quantum computing
    • Cryptography
    • Challenges and CTF
    • Hardware Hacking
    • Electronics
    • Conferences
    • Forensics
    • Games
    • Data privacy and laws
    • Code breaking
    • Networking
    • Pentest
    • Speak to us!
    • Software releases
  • Career
    • Study and profession
    • Jobs
  • Reverse Engineering
    • General
    • Malware Analysis
    • Firmware
    • Linux and UNIX-like
    • Windows
  • Programming
    • Assembly
    • C/C++
    • Python
    • Other languages
  • Operating Systems
    • GNU/Linux and UNIX-like
    • Windows
  • Segurança na Internet's Discussão

Calendars

  • Conferences
  • Call for papers (CFP)

Categories

  • Trainings

Categories

  • Portal Mente Binária
  • Specials

Categories

  • Articles

Categories

  • Contributing

Categories

  • Professions

Categories

  • Tech basics
    • Text comprehension
    • English
    • Mathematics
  • Computing Basics
    • Lógica de Programação
    • Computers Architecture
    • Cryptography
    • Data Structures
    • Network
    • Operating Systems
  • Specifics
    • SO Internals
    • Web
    • Python
    • Javascript
    • Infrastructure
    • Go
    • Reverse Engineering
    • DevOps
    • C/C++
    • Log Analysis

Categories

  • Crackmes
  • Documentation
  • Debuggers
  • PE tools
  • Books
  • Util
  • Packers
  • Unpackers
  • Virtual Machines

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


GitHub


Twitter


LinkedIn


Website

Found 15 results

  1. Para que a proteção de sistemas de uma empresa funcione, é preciso fazer a avaliação sobre sua segurança, e para que isso seja bem feito, depende da atuação de dois profissionais: os que trabalham fazendo ataques simulados para medir a força dos recursos de segurança existentes em uma organização, e os que identificam como proteger as áreas que precisam de melhoria e estão mais expostas a esses riscos. São eles que compõem as equipes conhecidas como Red Team e Blue Team, respectivamente. Normalmente, o que vemos é que Red Team, a área de pesquisa ofensiva, é muito sedutora, sempre mostrada nos filmes ou na mídia, com hackers invadindo sistemas e conseguindo encontrar e explorar vulnerabilidades. O que sabemos é que esse trabalho é muito importante, sim, para ajudar as empresas a saberem onde estão suas possíveis falhas e, assim, protegê-las. É aí que a equipe de defesa, ou o Blue Team, entra. Mas nem sempre ouvimos falar tanto sobre a atuação desses profissionais. "Fazer um vírus que um antivírus não pega é muito fácil. Eu quero ver fazer um antivírus que pegue todos os vírus. Esse é o desafio real", diz Fernando Mercês, pesquisador na Trend Micro e fundador do Mente Binária. A segurança ofensiva fica ainda mais "glamourizada" com a quantidade de programas de bug bounty, ou caçadores de recompensa, que hoje existem oferecidos por empresas que querem estimular pesquisadores a encontrar possíveis vulnerabilidades em seus sistemas em troca de uma boa quantia em dinheiro. Mas nem sempre quem vai participar possui tantas habilidades técnicas a ponto de encontrar falhas que realmente impactem o negócio de uma empresa. "A importância desse trabalho [de pesquisa ofensiva] para as empresas depende muito do que o pesquisador quer fazer com o achado (vulnerabilidade)", diz Joaquim Espinhara, líder do time de Red Team & Adversarial Simulation na Tesserent. Para ele, a importância deste profissional para a segurança das empresas está sujeita à motivação do próprio pesquisador. Espinhara destaca que alguns profissionais que procuram por vulnerabilidades em softwares, depois de provar que é possível explorá-lo, acabam vendendo-a para alguma empresa ou governo que vai usar para fins de espionagem, ao mesmo tempo que pesquisadores normalmente encontram uma falha em um site/aplicação de uma empresa e decidem reportá-la, seja por recompensa ou não. Tem ainda o perfil do pesquisador que coleciona falhas, mostrando-as aos amigos para ganhar os chamados "street credits" – ou seja, pontos por ter feito algo considerado legal ou impressionante. Habilidades da pesquisa ofensiva – O conhecimento técnico que o pesquisador deve ter para buscar vulnerabilidades também depende do tipo de falha que ele está procurando, e onde está procurando, diz Espinhara. "Existem muitas classes diferentes de vulnerabilidades. Normalmente o que eu vejo no Brasil e na bolha do bug bounty são falhas relacionadas a aplicações web (SQL Injection, Cross-Site Scripting, File Include, etc)", destaca. Ele ressalta que existem outras vertentes de pesquisa de falhas em sistemas operacionais e software nativos, ou mais recentemente pessoas que estão focadas em blockchain e smart contract security. Na sua visão, os programas de bug bounty são válidos para que pesquisadores tenham opções de rentabilizar o esforço em achar determinada vulnerabilidade. "Empresas deveriam (e até acontece) recompensar de acordo com o impacto da vulnerabilidade ao negócio", avalia Espinhara. Mas ele pontua que este mercado, no Brasil, ainda não é tão atrativo, em especial por conta da desvalorização do real perante o dólar. "Normalmente as empresas pagam o bounty em dólar americano. Algumas já se adaptaram a isso no Brasil, mas ainda não é a maioria. Normalmente, quanto maior a recompensa em um programa de bug bounty maior será a quantidade de pesquisadores mais habilidosos/experientes reportando", diz. Espinhara começou a atuar na área ofensiva há bastante tempo e já tem mais de 10 anos de experiência. "Assim como muita gente na área, eu fiz o caminho padrão: entrei na universidade (que não concluí), comecei a fazer alguns estágios e em um deles fiquei alocado na área de segurança de redes. Foi um caminho sem volta", conta. Atacar só se for para defender – Espinhara pontua que existe uma má interpretação sobre o que é, de fato, o Red Team. "Conversando com alguns amigos que atuam nesta área de verdade no Brasil, eles me falam que o maior desafio é explicar que Red Team não é apenas um pentest com mais dias de execução", diz. Para explicar a melhor definição para Red Team, Espinhara utiliza uma citação de Joe Vest and James Tubberville no livro Red Team Development and Operations: A practical guide: "Red Teaming é o processo de usar táticas, técnicas e procedimentos (TTPs) para emular uma ameaça do mundo real, com o objetivo de medir a eficácia das pessoas, processos e tecnologias usadas para defender um ambiente". "O nosso trabalho é preparar o Blue Team para responder a ameaças reais. Ou seja, sem Blue Team não existe Red Team" – Joaquim Espinhara Assim, ele avalia que um dos objetivos do Red Team é mostrar para o Blue Team a perspectiva de um atacante. "O Blue Team faz uma 'leitura' dessa simulação e se prepara para responder a ameaças iguais ou semelhantes em termos de TTPs", diz. "Red Team e Blue Team têm que trabalhar juntos. Por exemplo, aqui na empresa nós só realizamos exercícios de Red Team se o cliente tiver um Blue Team. O nosso trabalho é preparar o Blue Team para responder a ameaças reais. Ou seja, sem Blue Team não existe Red Team". Essa também é a visão de Thiago Marques, Security Researcher na Microsoft. Segundo ele, as duas áreas trabalham juntas, apesar de alguns grupos manterem uma certa rixa. "O Red Tem dá muita informação de como proteger. Eu vejo como duas áreas que realmente se completam", avalia. Ele pontua, contudo, que é comum ver pessoas mais interessadas pela área ofensiva, por ter uma idealização sobre conseguir invadir um sistema e quebrar proteções. "Já na parte defensiva, poucas pessoas veem o trabalho do pesquisador, e quando veem é porque você não conseguiu proteger", destaca Thiago. Na sua visão, o lado negativo é que existem muitas pessoas que se intitulam profissionais ofensivos, mas somente executam scripts. Oportunidades na área defensiva – Thiago Marques diz que as oportunidades para quem quer atuar com pesquisa defensiva no Brasil são grandes. Isso porque muitas vezes empresas estrangeiras veem a necessidade de ter pessoas que entendam sobre o ecossistema brasileiro para monitorar e se defender de certos ataques. "Por anos o Brasil tem estado no topo de ameaças, principalmente financeiras, com malwares feitos aqui. E a dificuldade de empresas de fora é que tudo é feito em português. Isso gera uma barreira, porque um estranegito olha uma ameaça específica do Brasil e não consegue entender exatamente o que está acontecendo", conta. "Há profissionais bem habilitados no mercado para realizar pesquisas defensivas, mas nem sempre eles são vistos" – Thiago Marques Um exemplo é uma ameaça comum no Brasil que envolve boletos. "Um estrangeiro não sabe o que é um boleto. Essa necessidade tem feito com que muitas empresas queiram aumentar a visibilidade dentro da América Latina, buscando profissionais aqui para monitorar e entender esses ataques". Thiago destaca ainda que há profissionais bem habilitados no mercado para realizar pesquisas defensivas, mas nem sempre eles são vistos. "Tem bastante gente boa, que trabalha em qualquer empresa em qualquer lugar do mundo", pontua. Segundo ele, para quem quer atuar na parte de defesa, primeiramente é preciso saber analisar malware, ou seja, ter a capacidade de analisar um arquivo. "Isso seria o principal. E para fazer a análise de malware é preciso ter uma noção básica de programação", diz, contando que ele mesmo sempre gostou de programar e começou a fazer isso usando macros do Word. Desde 2007, Thiago é analista de malware, e no ano passado, ele começou a trabalhar na área de proteção da Microsoft, entendendo a forma com que os atacantes usam seus métodos de ataque, e identificando como alertar e bloquear esses ataques, até mesmo aprendendo e tentando prever movimentos que atacantes podem fazer no futuro. "Nunca trabalhei muito na parte ofensiva. Eu escolhi a defensiva porque eu gosto, mas já tive ofertas de trabalho para o Red Team", conta. Thiago ressalta que para aproveitar as oportunidades que a área oferece, as pessoas precisam querer entender como as coisas funcionam. "Os ataques usam sistemas que ninguém está olhando, e é preciso conhecer isso para identificá-los. Ter uma boa base de conhecimento sobre sistema operacional e programação, saber como é o processo entre o que você escreveu até o resultado chegar na sua tela, entender esse fluxo leva tempo, e por isso muita gente acaba pulando essa etapa", diz. Para ele, dedicar um tempo para entender as coisas básicas de funcionamento é essencial antes de focar no que você gosta. "A parte de defesa abrange análise de dados, engenharia reversa, depende muito. Mas ter uma base de como as coisas funcionam vai ajudar em qualquer área", complementa.
  2. Depois de muita espera a NSA anunciou oficialmente a inclusão de um debugger no Guidra na sua versão 10.0. Depois de muita discussão sobre esta possibilidade o time de desenvolvimento do framework lançou uma release beta da versão 10.0 ontem! Neste momento o debugger suporta analisar aplicações em userland e consegue debuggar tanto binários Windows quanto Linux (utilizando o gdb neste caso). Para quem quer começar logo de cara o Guidra disponibiliza um tutorial de início rápido em Help -> Guidra Functionality -> Debugger -> Getting Started: Existem várias formas de iniciar o debugger, desde clicando com o Botão direito -> Open With -> Debugger até direto da sua Project Window do Guidra clicando no ícone de "bug" debaixo de "Tool Chest", como mostrado abaixo: Uma vez que a ferramenta é inicializada você deve importar o arquivo a ser depurado para a ferramenta. Uma das formas de fazer isto é simplesmente o arrastando da Project Window. Uma fez carregado podemos ver a cara do mais novo debugger do Guidra: Algumas das funcionalidades são: debugging remoto utilizando GDB e windbg, rodar o debugger direto no programa do qual você está analizando estaticamente e tracing de memória. Além disso ele também conta com as funcionalidades básicas de um debugger como utilização de breakpoints, listagem de regiões de memória mapeadas, estados dos registradores e uma interface de linha de comando própria. Todas as funcionalidades listadas aqui possuem sua própria View, isto é, sua própria janela dentro da ferramenta: Vale lembrar que esta release está em sua versão beta e tem como objetivo principal coletar o feedback da comunidade. Caso queira dar uma testada e/ou dar um feedback pra galera do Guidra basta baixar a release clicando no botão abaixo 😉.
  3. 91% dos crimes virtuais tem como vetor de ataque inicial o e-mail. Os anos vão passando e os atacantes aprimoram suas técnicas, fazendo o máximo possível para que um e-mail com conteúdo malicioso chegue à caixa de entrada de sua vítima. No final do ano passado, recebi uma mensagem suspeita para análise e compartilho com vocês através deste artigo o desfecho dessa história. Introdução A análise foi iniciada após o recebimento de um e-mail que foi reportado por um grupo de usuários como suspeito. A mensagem, em português, tem conteúdo que faz referência a uma suposta nota fiscal que estaria acessível através de um anexo. No campo From, observo uma tentativa clara de simular uma troca interna de mensagens já que onde deveria ser exibida o nome do remetente está um endereço de e-mail, com o mesmo domínio do destinatário, e ao lado podemos visualizar o e-mail que de fato foi utilizado para o envio da mensagem. Neste momento, já existiam evidências suficientes para contestar a veracidade da mensagem. Segui com a análise pois notei algo que me chamou atenção. Submeti os hashes dos arquivos, tanto o compactado quanto o que foi extraído, para uma consulta no VirusTotal (VT) e fiquei surpreso ao perceber que não existiam registros de análises anteriores. Pois bem, isso foi o suficiente para estimular a minha curiosidade e tentar entender se neste caso tratava-se de um ataque direcionado ou se eram apenas arquivos circulando por aí. Análise Estática Segui então com a análise do e-mail e capturei para consulta o IP e domínio do servidor de e-mail que foi utilizado como relay para o envio da mensagem e também o suposto IP de origem da mensagem: Fiz uma breve pesquisa sobre estes indicadores e notei que o domínio inepaca[.]net é bem antigo e com ótima reputação, já o IP de origem é de um serviço de internet doméstica na Itália o que levanta a suspeita de que esta mensagem veio de uma máquina previamente comprometida e parte da botnet: Esses fatores contribuem para que a mensagem passe pelos filtros de segurança e chegue até a caixa de entrada do usuário, cenário que fortalece a importância de um processo de conscientização em segurança da informação. Após descompactar o arquivo anexo, tive acesso a outro arquivo com a extensão .docx que quando executado com o Microsoft Word automaticamente já era exibido em Modo Protegido. É comum a utilização de documentos do Microsoft Office como mecanismo para download da ameaça principal já que estes apoiam a estratégia de engenharia social utilizada pelos atacantes, simulando arquivos legítimos que normalmente circulam nas empresas, e possibilitam a execução de códigos VBA (Visual Basic for Applications). Analisando o documento observei a presença de macros AutoOpen. Esse tipo de macro visa a execução de diversas instruções em background quando o documento for aberto. Por padrão, as versões mais recentes do Microsoft Word já desabilita a execução de macros junto a inicialização dos documentos, solicitando ao usuário que habilite a execução deste tipo de conteúdo alertando sobre o risco em potencial. Para tentar contornar esta proteção, os atacantes geralmente incluem uma imagem no corpo documento solicitando a habilitação do conteúdo e neste caso não foi diferente: Ao abrir os recursos de desenvolvedor, que deve ser habilitado customizando a guia de opções dentro do Microsoft Word, tive acesso ao editor de Visual Basic e localizei dois módulos e um deles era bem extenso e com várias funções e nomes que mais pareciam palavras geradas aleatoriamente. Neste momento fiquei na dúvida se aquele código era válido ou se estava ali somente para gerar confusão, dificultando a análise. Passei alguns dias analisando o código e ainda não havia chegado a um entendimento completo sobre o resultado de sua execução. Neste momento o leitor pode se perguntar por que o binário não foi submetido para análise em uma sandbox. Naquele momento eu ainda não tinha indícios suficientes de que não se tratava de um ataque direcionado. Olhando as propriedades do arquivo notei que o arquivo estava protegido para edição, uma restrição simples, sem senha, que após um clique o arquivo estava liberado. O que poderia ter no conteúdo do arquivo ou na imagem que eu não pude notar? Luz! Pressionei CTRL + T para selecionar o conteúdo do arquivo e notei que a seleção destacou algumas linhas de texto logo abaixo da imagem: Como as letras estavam brancas, coloquei a cor preta e aumentei a fonte. Pronto! O “segredo” foi revelado: Naveguei até o final do conteúdo e desconfiei de que provavelmente o texto, na verdade, era uma string base64 ofuscada com conteúdo irrelevante inserido de forma intencional: As coisas começaram a fazer sentido. Nas imagens é possível perceber que os caracteres qq)(s2) se repetem por todo o texto. Apenas removendo os caracteres que se repetem já percebemos que se trata de um script em Powershell: Continuei o tratamento da string utilizando a ferramenta Cyberchef, extraindo algumas URLs do código. A string foi ofuscada em pelo menos três camadas e ao final codificada em base64: Fiz uma pesquisa em cima das URL’s e, com base nas informações obtidas, pude ter uma noção melhor da infraestrutura utilizada. Nesse momento percebi que poderia iniciar uma análise dinâmica, já que a probabilidade de um ataque direcionado foi bastante reduzida. Análise dinâmica O binário foi submetido à plataforma Any.Run e de cara já percebemos que a ferramenta detecta a presença da ameaça EMOTET: Com a execução do binário pude complementar a análise estática do arquivo, verificando que a macro executa o código em PowerShell de forma indireta, através do Windows Management Instrumentation (WMI). Utilizar recursos nativos do sistema para execução de código é uma técnica que tem sido bastante explorada pelos atacantes na tentativa de evadir mecanismos de detecção que estejam em execução no sistema da vítima. Continuando a análise, fechei o quebra-cabeça analisando o arquivo PCAP gerado e localizando a URL utilizada para a comunicação e download de um arquivo malicioso: O arquivo baixado é da extensão .DLL, submeti o hash deste binário à uma pesquisa e diferente dos arquivos anteriores, encontrei uma análise no VT com um índice de detecção considerável. O termo Emotet se refere a um trojan bancário que foi utilizado por uma quantidade significativa de mecanismos durante o processo de classificação. Conclusão Até o início deste ano podíamos considerar o Emotet como uma das ameaças mais complexas em atividade. No final de janeiro, toda a sua infraestrutura foi desmantelada em uma ação conjunta de empresas privadas e forças policiais de diversos países. Através de um processo automatizado, o Emotet se propagava em campanhas de phishing ( como a analisada neste artigo) que de várias maneiras tentam induzir as vítimas a executarem os anexos maliciosos. Após surgir como um banking trojan em meados de 2014 e expandir suas atividades ao longo dos anos, acabou se tornando uma das principais portas de entrada para outras ameaças e ataques de escala global. No ano passado, as campanhas ganharam atenção novamente já que além da própria botnet o malware passou a ser mecanismo de distribuição de outras ameaças. As técnicas utilizadas pelo atacante e apresentadas neste artigo são observadas em uma série de campanhas que ainda estão em curso. Sendo assim, considerar uma campanha de conscientização para complementar os controles tecnológicos continua sendo uma ótima estratégia, afinal, 91% dos crimes virtuais se iniciam com um e-mail. Você já conhece o curso de Análise de Malware Online (AMO)? Se não conhece, cola lá no canal do Mente Binária no Youtube e aproveite a oportunidade de aprender gratuitamente como fazer análises semelhantes às realizadas neste artigo. Outras referências https://threats.kaspersky.com/br/threat/Trojan-Banker.Win32.Emotet/ https://www.malwarebytes.com/emotet/
  4. E lá vai mais uma do horsicq! No dia de hoje horsicq, criador de inúmeras ferramentas de análise incluindo o incrível Detect It Easy (DIE), lançou a primeira release do seu novo projeto, um analisador de arquivos MachO chamado XMachOViewer. Para quem já utilizou o DIE vai notar uma grande semelhança no design e usabilidade. Já aquelas que não estão familiarizados com as ferramentas do horsicq (deveriam, sério!) fiquem tranquilos, todas são bem simples e intuitívas de se usar. Ao contrário do DIE o XMachOViewer tem foco exclusivo em binários MachO. Em relação à funcionalidades a ferramenta consegue fazer tudo que o Detect It Easy faz e ainda mais, tudo isso com uma console exclusiva e mais detalhada: Dentre as funcionalidades novas temos a busca por padrões de criptografia (Base64, RSA, etc), muito útil para análise de malware, por exemplo: Name demangling (precisamos dizer o quanto isso é útil? 😄) : E também uma funcionalidade de hashing (por que não, né?): Além disso, devido à natureza interativa da ferramenta ela permite você editar o arquivo diretamente, bastando apenas selecionar o campo que deseja e começar a digitar: A versão 0.01 está pronta para download e com certeza vale uma conferida:
  5. A Hex-Rays surpreendeu todo mundo agora. Liberou a versão mais recente do IDA, a 7.6, no modelo freeware. Só isso já seria muito bom, mas eles foram além: O IDA 7.6 freeware inclui um descompilador online (cloud-based) gratuito! Pois é, pessoas... Parece que a concorrência exercida pelo Ghidra realmente está sendo saudável para a comunidade. Ao disparar o plugin de descompilação (F5), o programa deixa claro que este recurso na versão gratuita suporta somente binários de 64-bits, dentre outros avisos: Ao continuar, a descompilação é concluída e códiogo em pseudo-C é exibido ao lado. Veja o exemplo descompilando o notead.exe nativo do Windows: Os recursos de interação como renomear variáveis e funções no descompilador estão habilitados, uma notícia muito boa para a comunidade! Além do descompilador, a versão 7.6 do IDA freeware inclui: Modo escuro Tá na moda né? E o IDA não ficou de fora. Se você for em Options -> Colors e mudar o Theme para dark, vai ter um visual assim: Organização de dados em pastas Sendo um disassembler interativo, a versão 7.6 oferece a opção de organizar os dados em pastas. Isso vale para vários locais. Um deles é a janela de funções. É possível agora criar pastas e organizar as funções dentro delas. Para isso, basta clicar com o botão direito do mouse na janela de funções e escolher Show folders. Depois é só selecionar as funções desejadas e escolher Create folder with items. E mais: Suporte a binários compilados em Go. Suporte ao novo Apple M1. Rebasing mais rápido. Sincronização entre o descompilador online e o disassembly. Lembando que o disassembler em si suporta binários de 32-bits também (PE, ELF e Mach-O). Só o descompilador que não.
  6. Se você é da área de Segurança da Informação ou simplesmente tem interesse pelo assunto já deve ter notado que todo dia temos notícias de novos malwares surgindo, sejam eles malwares completamente novos ou variantes de um malware já conhecido. Com isto em mente, faz algum tempo que as empresas de segurança, inteligência e até mesmo pesquisadores independentes passaram a buscar métodos de automatizar não só a análise destes malwares, mas também a administração e armazenamento do arquivo em si, suas características e relacionamentos com outros arquivos demais entidades (domínios, campanhas, endereços IP, etc). Obviamente a análise automatizada não substitui a análise humana, mas já é uma ajuda e tanto considerando o número de malwares surgindo diariamente. Para cada uma destas necessidades descritas anteriormente existe uma ou mais ferramentas/plataformas que podem ser utilizadas para cumprir estes objetivos. Dentre elas estão plataformas de sandboxing como Hybrid-Analysis e AnyRun, ferramentas de análise estática de arquivos como o DIE (Detect It Easy), pev, yara, capa, e também repositórios de malware como o VirusShare e o Malware Bazaar. Não podemos negar que todas estas ferramentas/plataformas ajudam e muito no nosso dia a dia, mas ainda assim não conseguiríamos organizar nossas informações e centralizá-las em um único lugar de forma automática, tendo em vista que as as soluções descritas acima são isoladas e não conectam umas com as outras de forma nativa. A plataforma que chegou mais próximo de atingir as quatro exigências (isto é: análise automatizada, administração, armazenamento, relacionamento com demais entidades) foi uma plataforma chamada Virus Total, também conhecido como VT, atualmente administrado pelo Google. Virus Total O Virus Total trouxe para a comunidade uma forma simples e rápida de análise de IoCs (Indicator of Compromise) e também uma API bem simples de se utilizar para fins de automação. Dentre as diversas funcionalidades da plataforma estão inclusas análise estática, checagem de assinatura utilizando uma lista gigantesca de Anti-Virus, descrição das características gerais do IoC e comentários da comunidade. Além disso, ele também possui uma versão paga (bem cara por sinal) onde você pode fazer hunting de malwares utilizando regras de Yara, download de arquivos, buscas baseadas em histórico, visualização gráfica e uma API bem mais robusta e permissiva. É importante deixar claro que o termo IoC não se refere apenas à arquivos e seus hash, mas também à URL, domínios e IP. Ou seja, o VT realmente acaba se tornando uma opção super viável para começar qualquer tipo de investigação. O cenário atual de Segurança da Informação Com o passar do tempo não só a comunidade, mas também o mercado de Segurança da Informação no geral passou a notar que a única forma de se posicionar contra os ataques atuais é através de contribuição. Pelo mesmo motivo que gerou a necessidade de se criar formas automatizadas de análise, a contribuição se mostra cada dia mais que necessária pois ela não impõe limites, muito pelo contrário, ela dá liberdade o suficiente para você contribuir da forma que quiser. Um ótimo exemplo que mostra o exercício da contribuição e o quão valioso isto pode ser é o próprio Linux, que desde sua primeira versão foi liberado para receber contribuições e hoje é um dos maiores projetos existentes na área de tecnologia, com milhares de contribuidores ao redor do mundo. Com isto em mente, podemos notar uma desvantagem no VT: o espaço para contribuição é limitado. Desafios Como já comentado anteriormente, as principais funcionalidades são suportadas apenas na versão paga e infelizmente não são todos que podem pagar pelo valor do serviço. Um dos principais motivos dessa limitação é fato do código não ser aberto, isto é, estamos presos às funcionalidades que o time do VT disponibiliza. Se o código fosse disponível para a comunidade, resolveríamos tanto o problema monetário quanto a limitação de funcionalidades disponíveis. Uma outra porta que seria aberta no cenário descrito acima é a seguinte: Imagine que você, sua empresa, seu time ou um grupo de amigos estão com um projeto em mãos que envolve análise, classificação, categorização ou qualquer tipo de manipulação de malware. Com o código em mãos você teria liberdade de fazer a instalação da plataforma localmente ou em um servidor do qual você controla, limitando o acesso à quem você quiser e como quiser. A comunidade Tendo estes desafios em mente, a comunidade começou a criar alternativas para resolver alguns problemas encontrados no cenário atual. A ideia do artigo não é de forma alguma dizer que uma plataforma é melhor que outra ou que o Virus Total está errado em trabalhar no modelo que trabalha, muito pelo contrário, o objetivo aqui é mostrar as várias formas que temos de se chegar no mesmo objetivo. Uns mais flexíveis, outros com mais conteúdo disponível, mas todos conseguem te ajudar a chegar no mesmo lugar: Saferwall: Este é o projeto mais maduro que temos atualmente quando o assunto é análise automatizada e contribuição da comunidade. Robusto e flexível para ser instalado em diversos ambientes, o Saferwall consegue entregar informações estáticas de arquivos, detecções baseadas em assinaturas de alguns antivírus, identificações de packers e download dos arquivos submetidos anteriormente. Além disso, o Saferwall possui uma plataforma aberta e que aceita colaboração, além de disponibilizar o código para você instalar onde e como bem entender. Dentre as formas de instalação estão inclusas o minikube (indicado para ambientes de testes), em nuvem utilizando AWS e On-Premise. Freki: O projeto Freki foi criado por uma única pessoa, mas não deixa a desejar quando o assunto é funcionalidade e fácil instalação. Com possibilidade de ser instalado utilizando Docker, este projeto possui não só análise estática dos arquivos PE submetidos, mas também disponibiliza sua própria API e puxa informações do VT para garantir que não falte nada. Aleph: focando bastante na parte de inteligência, o projeto Aleph entrega para você não só informações estáticas dos arquivos submetidos, mas também análise dinâmica utilizando sandbox, visualização gráfica dos resultados e uma saída em JSON formatada para ser utilizada em backends como Elasticsearch, por exemplo. Além disso, o Aleph também consegue mapear as técnicas utilizadas pelo malware utilizando o MITRE ATT&CK Framework. Eu realmente aconselho você dar uma olhada na palestra da MBConf v3 sobre o Aleph para saber mais sobre o projeto. A tabela à seguir foi criada para facilitar a visualização das funcionalidades descritas acima. É importante deixar claro que a versão do VT utilizada para a criação da tabela é a gratuita: VirusTotal Saferwall Freki Aleph Análise Estática ✔️ ✔️ ✔️ ✔️ Análise Dinâmica X ✔️ X ✔️ Suporte à múltiplos SO ✔️ ✔️ X ✔️ Análise de IoC de rede ✔️ X X X Código Aberto X ✔️ ✔️ ✔️ Download de arquivos X ✔️ ✔️ ✔️ Instalação local X ✔️ ✔️ ✔️ Controle total do backend X ✔️ ✔️ ✔️ API ✔️ ✔️ ✔️ X Como podemos ver, todos estes projetos são de código aberto, o que permite a seus usuários livre contribuição. Caso você tenha interesse em contribuir para alguns desses projetos, aqui vai uma dica: nenhum deles possui ainda análise de URL/IP/domínio de forma isolada, isto é, independente do arquivo. Tenho certeza que uma contribuição deste tipo seria bem vinda. ? Conclusão Ajudando estes projetos nós não só melhoramos a ferramenta/plataforma em si, mas ajudamos todos que a utilizam e também construímos um sistema livre e aberto de análise, inteligência e investigação. Se você é da área ou simplesmente curte contribuir, não deixe de dar uma olhada em cada um destes projetos e, se possível, contribuir com eles. Lembrando que quando falamos de contribuição, não há limites. Pode ser um commit, uma ideia, ajuda monetária ou um simples OBRIGADO aos desenvolvedores e contribuidores por disponibilizarem projetos tão úteis para a comunidade.
  7. Faz algum tempo que ando botando mais a mão na massa na parte prática da análise de malware e nos conceitos que a envolvem. Este fato somado com minha paixão por tomar notas nos meus estudos acaba resultando na criação de alguns relatórios. Com isto em mente, decidi colocar aqui a análise do último sample no qual trabalhei, de um ransomware chamado Nephilin. Overview O Nephilin é uma variante do Nefilim, um Ransomware que acabou ficando bem conhecido no mês de fevereiro/março devido ao fato de ser uma variante do conhecido Nemty, que costumava trabalhar com operações de RaaS (Ransomware as a Service - um modelo de negócio utilizado por criminosos que facilita muito a distribuição de Ransomwares. Basicamente o criador do malware recruta pessoas para usarem o Ransomware e recebe uma parte de seus lucros, facilitando assim a distribuição e a entrada de pessoas não experientes no crime). Por mais que as formas de operação sejam diferentes, há similaridades de código entre essas três famílias de malware. Análise Estática O sample analisado foi compilado para x86 e não possui nenhuma técnica que possa dificultar nossa análise como por exemplo packers/protectors e o uso de ASLR. No entanto, este binário é assinado com um certificado válido: Olhando os imports podemos notar que a Import Directory Table possui apenas uma entrada, a da kernel32.dll, levantando a suspeita da utilização de runtime linking, ou seja, o loader não resolve o endereço das funções em tempo de carregamento, pois eles são resolvidos em tempo de execução: Podemos suspeitar ainda mais pelo fato do nome algumas DLLs estarem na lista de strings do binário, assim como o nome de algumas funções que não são exportadas pela kernel32.dll: Não vou me preocupar muito com esta parte estática da análise, tendo em vista que a ideia deste artigo é cair de cabeça em cada funcionalidade do malware, isto é, executá-lo e ir analisando seu comportamento. Análise Dinâmica A primeira função que o malware chama é a que vai criar todo o contexto de criptografia para gerar uma chave que será a chave utilizada para descriptografar a Ransom Note: Dentro desta função existem várias funções que permitem trabalhar com criptografia no Windows. A primeira função criptográfica chamada é a CryptAcquireContext, responsável por criar um handle para um key container dentro de um Cryptographic Service Provider (CSP). Após pegar o handle, o tamanho de uma string é calculado para posteriormente se criar e retornar um Hash Object dentro do CSP criado anteriormente. Esta string tem 66 bytes de tamanho (0x42 em hexa) e é uma string lotada de "a". A função CryptCreateHash cria o Hash Object especificando o tipo como SHA1 e, logo depois, a função CryptHashData tira o hash do que está dentro de um buffer de tamanho 66 bytes sendo passado como parâmetro: Por fim, o SHA1 gerado é derivado, para a geração de uma chave RC4. Como podemos ver quase todas as funções estão sendo importadas dinamicamente. ? O que acontece após a função que gera esta chave RC4 é a criação de um Mutex com o nome "sofos delaet sosos": Em seguida, uma string em base64 aparece e é decodada com a função CryptStringToBinary, resultando em uma chave pública RSA: "BgIAAACkAABSU0ExAAgAAAEAAQDNFw18bUF1x32DZaZt4gnQtAnv5XH60d9B6UgIbVfRdHPeyEljZLKlGBKFPTsh+8xsDHe/9vynuOlnuPt91grReMAwcTDVkxBh/PDkf3Jq0bnFgZAWbgMvGX6lApXTDcTArf4US63VI3z8YPyDNJwEvBEWI13ywob8ECLsrD/C6BPkYG0mBU1ccixzOgkgad0iDvwS/C8iyW1Mi0PCoBa+3TCTVwt0Zpy/HceV5U7SevG7RRN5HrErv54Ihg6kTPPhdxkYdO+CUND19aLqh8MAVLRuP5hR6b6r7cjBNAW2+USaaMyT/llNXdPdySbatLlH6Mau4z1eqzYc7hMB2f+6" Há depois uma tentativa de pegar um handle para um CSP onde o key container tem o nome "rsa session" e, sem sucesso, o binário cria um novo chamado "skr skr skr": Agora a chave pública decodada anteriormente será importada para o contexto "skr skr skr": Ações padrão da maioria dos ransomwares incluem desabilitar a checagem de erros durante o boot, desabilitar o modo de recuperação, deletar backups, etc. O Nephlin faz isso através de uma chamada à função ShellExecuteA() passando uma linha com o cmd.exe como parâmetro: "C:\\asdfgsdgasd\\..\\Windows\\asdgagsahsfahfhasahfsd\\..\\System32\\cmd.exe" "/c bcdedit /set {default} bootstatuspolicy ignoreallfailures & bcdedit /set {default} recoveryenabled no & wbadmin delete catalog -quiet & wmic shadowcopy delete" Aqui foi utilizada uma abordagem um tanto curiosa, tendo em vista que o malware considera diretórios que provavelmente não existirão no sistema de arquivos da vítima ("asdgagsahsfahfhasahfsd", por exemplo) e sobe um nível no filesystem utilizando ".." para acessar de fato o que importa, ou seja, o caminho real seria simplesmente "C:\Windows\System32\cmd.exe" ? Neste momento acontece uma checagem em relação à como o malware foi executado na linha de comando. Se foi passado algum parâmetro, ele checa pra ver se é um arquivo ou diretório. Se for um arquivo, ele chama direto a função que encripta. Caso seja um diretório, ele chama a função que checa uma lista de exclusão dos tipos de arquivos que ele não quer encriptar e esta função chama então a função que encripta. É interessante notar que com essas checagens o ransomware pode ser usado em diversos cenários e não simplesmente para encriptar o sistema completamente. Ex: para manualmente testar se ele está funcionando (antes da possível invasão), ser executado manualmente após a invasão visando diretórios/arquivos específicos, etc: Se nenhum parâmetro for passado via linha de comando, o binário começa a mapear os drives que estão no sistema e pegar seus tipos, buscando especificamente por drives fixos, removíveis (pen drives, etc) e mapeamentos de rede: Após pegar o drive o seu nome é concatenado com a string "NEPHILIN-DECRYPT.txt", à fim de criar a Ransom Note na raiz do Drive em questão: Após a chamada à CreateFile, podemos ver a Ransom Note sendo criada, mas vazia por enquanto: Antes do conteúdo ser de fato escrito no arquivo, ele precisa ser decodado, tendo em vista que é uma string em base64 (sim, outra string em base64): Abaixo está o buffer que contém o conteúdo da Ransom Note em base64: Após decodar o base64 o buffer aparenta estar encriptado, e de fato está: A função CryptDecrypt utiliza a chave RC4 gerada anteriormente para decriptar o conteúdo do buffer em questão. Podemos ver o conteúdo em clear text após a execução da função: Por fim podemos ver a função WriteFile, que irá escrever o conteúdo no arquivo "NEPHILIN-DECRYPT.txt" criado anteriormente: Agora que a Ransom Note foi criada, o processo de criptografia começa. O meio utilizado é através da criação de outra thread, isto é, para cada drive encontrado, uma nova thread é criada. A função CreateThread recebe como parâmetro para indicar seu início o endereço de uma função, que por sua vez chama a função que checa a lista de exclusão e depois começa a criptografia. Além disso, o nome do drive escolhido no momento é passado como parâmetro para esta função. Esta lista de exclusão é basicamente um lista que contém nomes de arquivos, diretórios e extensões das quais o malware não irá encriptar. Para cada arquivo encontrado o malware irá comparar com as especificações desta lista e, caso não bata, a função de criptografia será chamada: Criptografia A criptografia pode começar de 3 formas diferentes, como mencionado anteriormente: passando um arquivo como parâmetro pela linha de comando, passando um diretório ou mapeando os drives e criando threads. Um trecho da função que faz as devidas checagens pode ser observada abaixo: Se o arquivo checado não estiver na lista de exclusão, a função de criptografia é chamada: O processo de criptografia se inicia com a abertura do arquivo em questão e a obtenção do seu tamanho. Depois disso, há duas chamadas para a função SystemFunction036 para gerar números aleatórios. Basicamente esta função é um alias para a função RtlGenRandom, que recebe como parâmetro um buffer e o tamanho do número aleatório que você quer gerar. O tamanho escolhido são 16 bytes (0x10): Tendo 2 buffers de 10 bytes de tamanho cada, com os devidos números aleatórios gerados anteriormente, há duas chamadas à CryptEncrypt, uma para cada buffer. Aqui a chave pública RSA é utilizada para encriptar o buffer em questão, resultando em outros dois buffers de 256 bytes cada. O conjunto de funções a seguir faz a mesma operação, mas apontando para lugares diferentes. A função SetFilePointerEx é utilizada para apontar para o fim do arquivo (baseando-se no tamanho obtido anteriormente) e depois a função WriteFile é utilizada para escrever os 256 bytes encriptados lá. A próxima chamada à SetFilePointerEx agora aponta para o fim do arquivo + 256 bytes e então escreve o segundo buffer encriptado onde o ponteiro está apontando. Neste momento as checagens de tamanho de arquivo começam, assim como as chamadas de função e loops que envolvem a criptografia. A primeira checagem feita é se o arquivo é maior que 64MB e, caso seja, as funções que criptografam o arquivo começam a ser chamadas de 125KB em 125KB. Caso o arquivo seja menor há uma outra checagem para ver se ele é menor que 1.2MB e caso ele não seja as funções de criptografia rodam em cima de 600KB apenas e finalizam. Caso o arquivo seja menor que 1.2MB ele é encriptado "de uma vez" e depois finaliza. Para cada arquivo é gerada uma chave randômica com a função SystemFunction036 e depois esta é encriptada com a chave RSA pública. Esta abordagem dificulta bastante a criação de um decryptor, tendo em vista que a chave será sempre aleatória. Por outro lado, se tivemos a chave RSA privada em mãos a aleatoriedade não teria efeito nenhum pois para cada arquivo teríamos a chave responsável pela sua criptografia. Por fim a extensão ".NEPHILIN" é adicionada ao arquivo aberto: Uma coisa importante a se notar é que se a criptografia foi executada para um arquivo ou diretório específico tanto a Ransom Note quanto o wallpaper do Ransomware não são criados. Podemos observar que as funções de mapeamento de drives (que contém a criação da Ransom Note) e criação do papel de parede são ignoradas devido ao salto incondicional JMP: E por fim... Considerando ainda que não foram especificados arquivos e diretórios, a função responsável por criar a imagem do papel de parede é chamada. Há várias funções aqui e estas utilizam funções gráficas do Windows para editar a imagem em questão: Uma das funções chamadas nesta função responsável por criar a imagem é justamente a função de decoda o base64 da Ransom Note, pois o que é escrito no papel de parede é a mesma coisa da Ransom Note. Após várias funções gráficas para preparar a imagem o arquivo é finalmente criado em %TEMP%, com nome god.jpg e seu conteúdo é escrito no arquivo: Após configurar a imagem como papel de parede, o malware chama sua última função, que é responsável por fechar todos os handles e contextos de criptografia ainda pendentes: Depois disso, o processo simplesmente sai retornando 0. Lista de exclusão: NEPHILIN-DECRYPT.txt $RECYCLE.BIN NTDETECT.COM MSDOS.SYS IO.SYS boot.ini AUTOEXEC.BAT ntuser.dat desktop.ini CONFIG.SYS BOOTSECT.BAK program files program files (x86) windows ntldr RECYCLER bootmgr programdata appdata .dll .NEPHILIM .exe .log .cab .cmd .com .cpl .ini .url .ttf .mp3 .pif .mp4 .msi .lnk Espero que o estudo desta análise seja proveitoso assim como foi para mim e qualquer dúvida/feedback estou à disposição! Abraços!
  8. Boa tarde pessoal, tudo certo? Como vocês podem ver tínhamos dado uma pausa nos desafios, isto para dar mais tempo à aqueles que não tentaram ainda ou não resolveram os desafios anteriores. Isto não significa que os desafios pararam, certo??? Então aqui está o nosso sétimo desafio, espero que curtam bastante o fds revertendo !!! AnalyseMe-06.exe
  9. Boa noite galera, tudo certo?? Adivinhem o que temos pra esse começo de ano?? Isso mesmo, fim de semana debuggando ?. Queremos também saber o que vocês estão achando, se está muito difícil, muito fácil, se está na medida certa, etc. Lembrando que qualquer feedback é válido. Um ótimo fim de semana e bom debugging. Abs AnalyseMe-05.exe
  10. Fala galera, tudo certo? Segue o nosso segundo desafio da série AnalyseMe. Outra coisa, lembram daquele modelo de relatório do AnalyseMe - Nível 00? Aquele é um padrão para vocês manterem o foco, para saberem que aquilo é importante dar uma olhada. Caso não consigam encontrar todos os campos fiquem a vontade para postar o que acharam, a idea aqui é aprendermos juntos e ajudar quem precisa. Se você ainda não postou sua análise porque alguém já postou antes, posta lá!! Não esqueça que cada um tem seu ponto de vista e isso é muito importante! ? Queria também agradecer à todos que fizeram o primeiro tópico movimentar. Para aqueles que ainda não fizeram/postaram o desafio, tá esperando o que?!?!?! ? AnalyseMe-01.exe
  11. Salve, pessoal! Perdoem o atraso, mas aqui está o AnalyseMe-03, o quarto da série (começou com o nível 00). Lembra de postar a reposta com a tag spoiler, pra não dar a resposta de cara pra quem quer tentar. ? Esse tem umas surpresinhas. hehe Em tempo, podem dar feedback do que estão achando da série? Tá legal? Muito fácil? Muito difícil? Queremos saber. Olha o binário aí e manda seus comentários por favor! Grande abraço e boa sorte! AnalyseMe-03.exe
  12. Faaala galera, planos pro fds? Espero que não pois aqui está o nosso terceiro desafio da série AnalyseMe. Para aqueles que ainda não fizeram os desafios anteriores eu indico fortemente fazer e postar para a galera se ajudar e aprender junto. Qualquer dúvida fique a vontade para perguntar também. Lembrando que é pra postar a solução usando o modelo e entre tags spoiler (): Abraços! AnalyseMe-02.exe
  13. Version 0.22

    370 downloads

    Mais uma ferramenta do hacker horsicq (http://ntinfo.biz), o XVolkolak é um unpacker para vários packers livres e comerciais. Vale a pena ver o vídeo que a gente fez explicando seu funcionamento:
  14. No últmo artigo falei sobre como montar uma máquina virtual básica para ER em Windows. Agora chegou a vez do Linux, já que o mundo não é feito só de PE. 🙂 A ideia aqui é montar um ambiente legal para reverter binários ELF. Dá uma olhada neste vídeo (em tela cheia de preferência) pra ter uma ideia do poder dessas ferramentas: Legal né? Então mãos à obra! Máquina virtual 1 GB de memória Placa de rede em modo NAT Sistema operacional Utilizo a ISO netinstall do Debian 64-bits, mas como sempre você é livre para utilizar a distribuição que quiser, só que este artigo é escrito com base nesta. 😉 Algumas dicas de instalação: Não utilizar seu nome verdadeiro na criação da conta de usuário. Não instalar as extensões do software virtualizador como VMware Tools ou VirtualBox Guest Additions. Não configurar nenhuma regra de firewall ou qualquer software de proteção. /etc/apt/sources.list Eu deixo do seguinte jeito: deb http://deb.debian.org/debian/ testing main contrib non-free deb-src http://deb.debian.org/debian/ testing main contrib deb http://security.debian.org/debian-security testing-security main contrib non-free deb-src http://security.debian.org/debian-security testing-security main contrib O importante aqui é ter o contrib non-free após o main, já que alguns programas como o rar não são livres. Depois de configurado este arquivo, é bom atualizar os pacotes existentes: # apt update # apt upgrade -y Instalação de software Agora é hora de instalar os pacotes necessários: # apt install man gdb binutils vim strace ltrace ht build-essential tcpdump unhide foremost sudo p7zip-full rar unrar fasm gcc-multilib git file zip unzip python3-pip GEF Este é um plugin para o GDB que adiciona muitos recursos: # pip3 install capstone keystone-engine unicorn ropper # git clone https://github.com/hugsy/gef.git # echo "source $PWD/gef/gef.py" >> ~/.gdbinit Observações finais Após instalar todos os softwares, é de extrema utilidade criar um snapshot da máquina virtual, pra você voltar facilmente a este estado limpo após analisar um arquivo suspeito, por exemplo. Não precisa instalar um ambiente gráfico. Existe uma distribuição Linux chamada REMnux com foco em engenharia reversa, se você preferir.
×
×
  • Create New...