Releases
29/08/2017 18:26

Blog do Forcepoint Security Labs - Primeira parte ? Segurança, desempenho, ofuscação e compressão


São Paulo--(DINO - 29 ago, 2017) - Historicamente, a maioria das soluções tradicionais de AV dependia das assinaturas estáticas para identificar malwares conhecidos. Como resultado, os autores de malware naturalmente começaram a empregar uma variedade de ferramentas para ofuscar o código subjacente de seu software para evitar a detecção com base em assinatura e dificultar as análises estáticas (humanas).Essas ferramentas de ofuscação se proliferaram nos últimos anos, com numerosas ofertas comerciais disponíveis, já que até mesmo autores de softwares legítimos buscam dificultar a engenharia reversa de seus produtos. Embora métodos e resultados variem, a intenção final agora é elevar a dificuldade de leitura do código a ponto de desencorajá-la (em oposição à intenção do design original por trás dos packers tradicionais, que era diminuir o tamanho de um arquivo executável).Em série de três publicações em nosso blog, abordaremos várias técnicas comumente usadas para evitar a detecção por produtos de antivírus e a disponibilidade imediata dessas ferramentas. Esta é a primeira da série. Segurança por meio da ofuscaçãoA ofuscação tem uma longa história em linguagens interpretadas. À medida que as pessoas esperavam experiências mais ricas ao navegar em sites - geralmente entregues via JavaScript e outros idiomas do lado do cliente - os autores legítimos foram motivados a desenvolver métodos de proteção e compressão de seu código-fonte.Por outro lado, o ofuscamento malicioso geralmente vai além e criptografa o código-fonte do script para abrir no momento em que o script é executado. Essas técnicas ocasionalmente produzem resultados incomuns, como no exemplo abaixo.Como os aplicativos .NET são convertidos em um idioma intermediário e geralmente são compilados just-in-time no tempo de execução, seu código está exposto a muitos dos mesmos riscos (do ponto de vista do autor) como linguagens de script interpretadas: os arquivos executáveis do .NET podem ser descompilados em uma cópia bem próxima do código C#/VB original de forma relativamente fácil.Neste ponto, deve-se ressaltar que nem toda a ofuscação - mesmo a criptografia mais avançada, geralmente vista em amostras maliciosas - é ruim. O Forcepoint Security Labs está ciente de pelo menos um produto antifraude embutido em vários sites bancários importantes que se protegem usando uma combinação de ambos os métodos.PackersO principal tipo de ferramenta utilizado para ofuscar e "proteger" binários compilados são os packers. Os packers tradicionais são arquivos com extração automática eficaz ? ou, pelo menos, trabalham em termos bastante similares. Junto com os dados comprimidos/ofuscados (o binário original na forma ofuscada), eles contêm um "stub" desofuscador que, em execução, desofusca o binário e pula para seu ponto de entrada restaurado.Uma importante semelhança compartilhada por esta categoria é que o binário original é completamente recuperado após a desofuscação e disponível para engenharia reversa adicional. Assim, esse tipo de compactador é facilmente derrotado por um ponto de interrupção bem colocado em um depurador logo após a conclusão da desofuscação, quando o controle de execução é transferido ao binário original.Um dos packers mais básicos atualmente utilizados é o UPX de código aberto que foi desenvolvido na década de 1990, que usa um algoritmo de compressão extremamente simples, que não foi projetado para ofuscar.Outro exemplo normalmente usado é o ASPack, mais focado na ofuscação e na segurança do que na compressão. Algumas versões do ASPack utilizam o código de auto modificação, que dificulta o uso dos pontos de interrupção. Porém, no fim das contas, os mesmos princípios se aplicam ao descompactá-lo.Packers baseados na virtualizaçãoOutra categoria de packer ? ou melhor, ofuscador, já que este tipo aumenta o tamanho do arquivo em vez de reduzi-lo ? são os que se baseiam em virtualização. Eles operam destruindo o binário original e criam um novo binário funcionalmente equivalente usando o bytecode personalizado, que é executado em um interpretador ofuscado personalizado. A principal conclusão é que o binário original nunca é restaurado (diferente do tipo de ofuscador mencionado anteriormente) e permanece ofuscado em toda sua execução. As desvantagens significantes e óbvias são o tamanho de arquivo drasticamente aumentado e a velocidade de execução mais lenta.Um exemplo notável desta categoria é o VMProtect. A desofuscação manual de binários do VMProtect é geralmente muito difícil: é preciso decodificar cada bytecode para todos os binários protegidos conforme são gerados aleatoriamente quando um binário é ofuscado e, portanto, não permanecem constantes entre binários ofuscados.No entanto, com perseverança, é possível decodificar cada instrução do bytecode, uma vez que o stack baseado no tradutor é muito simples (apesar das instruções inúteis utilizadas para frustrar as tentativas de engenharia reversa).Curiosamente, o VMProtect parece não ser muito popular entre os autores de malware desde meados de 2017: o Forcepoint Security Labs desenvolveu um método genérico para detectar binários compactados do VMProtect e descobriu que as amostras identificadas não tipicamente malware, sendo que a maioria estava integrada por adware e software fraudulento para games.

Copyright © 2024 - Todos os direitos reservados para o Grupo Estado.

As notícias e cotações deste site possuem delay de 15 minutos.
Termos de uso