Como prometemos em um de nossos posts anteriores no blog sobre kits de exploração (Nuclear EK), vamos dar uma olhada mais profunda no Angler Exploit Kit. Angler EK é possivelmente o mais sofisticado kit de exploração atualmente usado por ciberciminosos. Ele foi pioneiro em soluções que outros kits de exploração começaram a usar mais tarde, tais como a detecção de antivírus e arquivos de conta-gotas criptografados. Além disso, Angler tende a ser o mais rápido a integrar os últimos zero dias, como o Adobe Flash zero dia (CVE-2015-0311) de algumas semanas atrás, e emprega uma ofuscação notavelmente única. Finalmente, Angler executa o malware descartado da memória, sem nunca ter de escrever no disco rígido; esta técnica única entre os kits de exploração torna extremamente difícil para as tecnologias antivírus tradicionais detectá-lo, uma vez que dependem do scan do sistema de ficheiros.
Embora Angler seja o mais avançado kit de exploração no cenário de ameaças atual, os clientes Websense estão protegidos contra esta ameaça com o ACE, nosso Mecanismo de Classificação Avançado, nos seguintes estágios:
- Etapa 2 (Lure) – o ACE tem detecção para os websites comprometidos.
- Etapa 3 (Redirecionamento) – ACE tem detecção para o código injetado que redireciona o usuário para a página de exploração.
- Etapa 4 (Exploit Kit) – ACE tem detecção para o código malicioso que tenta executar este ataque cibernético.
- Etapa 5 (Dropper Files) – O ACE tem detecção para os arquivos binários associados a este ataque
Obfuscao
A página de aterrissagem do Angel consiste em quatro partes básicas. Primeiro, há algum texto em inglês visível, que é usado para fazer com que a vítima do kit de exploração acredite ter navegado para uma página legítima. Em segundo lugar, tem várias rotinas de desobfuscao para deobfuscar os scripts maliciosos reais. Estes scripts estão localizados dentro das tags de classe p e são codificados como base64. A descodificação das strings base64 revela o código real do kit de exploração ofuscado. E finalmente, a página de destino contém várias strings criptografadas, que contêm várias URLs que levam aos vários exploits (Flash, Silverlight, Internet Explorer) incluídos no kit.
Amostras da página de aterragem de Angler
Deobfuscated Exploit Code
Após a página de aterragem ser deobfuscated, a verdadeira natureza do código é revelada. Angler, assim como Nuclear e vários outros kits de exploração, usa uma ofuscação de segunda camada muito básica para tornar a detecção por produtos de segurança ainda mais difícil.
Também usa a detecção de antivírus além de detectar várias soluções de virtualização (VMWare, VirtualBox, Parallels), bem como um proxy de depuração web chamado Fiddler, que é amplamente usado por pesquisadores de segurança. A implementação destas medidas torna muito difícil observar e investigar este kit de exploração na natureza, uma vez que a maioria dos investigadores de segurança muitas vezes confiam fortemente nestas ferramentas.
Detecção de vários ficheiros .sys e .dll que pertencem ao software AV e virtualização
VMWare, VirtualBox, detecção de Parallels assim como o Fiddler proxy de depuração web
A característica mais única do Angler é o uso destes caminhos de URL encriptados. Ele usa uma cifra simples de transposição (em termos leigos: codificando as letras) para criptografar e decodificar esses dados.
A rotina de decodificação está embutida dentro da parte ofuscada do kit de exploração.
Rotina de decifração como encontrada no kit
Rotina de decriptação formatada e comentada
Usaremos um exemplo muito simples para demonstrar como a decifração funciona. Suponha que o nosso texto cifrado (dados encriptados) é “TEER CSURH TO PLTAOEL IX TP” e a nossa chave de desencriptação é “OBFUSCATE”. O que Angler faz é pegar a ordem alfabética das letras na chave e rearranjar o texto cifrado com base nisso. Por exemplo:
OBFUSCATE → 6,2,5,9,7,3,1,8,4
Isto dá-nos a ordem das letras no texto cifrado. Usando isto podemos facilmente descriptografá-lo reorganizando as letras.
Exemplo de descriptografia
E finalmente os espaços em branco são removidos da cadeia descriptografada . Obviamente, esta é uma forma extremamente rudimentar de encriptação e seria muito fácil de decifrar mesmo sem a chave se (como no exemplo acima) o texto simples consistisse em palavras reais. No entanto, Angler usa URLs altamente aleatorizadas, então este tipo de encriptação é mais do que suficiente para esconder a verdadeira natureza dessas strings e os caminhos reais de URLs de vários produtos de segurança.
O resto do código deobfuscated segue os padrões usuais do exploit kit: há várias rotinas de detecção de plugins e verificação de versão, então o exploit kit ‘sabe’ quais os exploit(s) a serem disparados sobre o alvo. Existem também algumas rotinas de construção de código da shell, já que Angler usa um código da shell com vários estágios, onde vários estágios são codificados e decodificados pelos estágios anteriores. Também inclui uma chave de encriptação/descriptação hardcoded para o ficheiro dropper.
Chave de encriptação para a carga útil
Multi stage Shellcode
Dropper
Se a exploração for bem sucedida, a carga útil de Angler é descodificada no sistema da vítima. À medida que a carga viaja através da rede, ela ainda é criptografada e é descriptografada mais tarde pelo código da shell do estágio final. Esta técnica é usada para tornar a detecção do conta-gotas malicioso muito difícil para os sistemas tradicionais de detecção de intrusão (IDS). Como mencionamos anteriormente, Angler usa conta-gotas ‘fileless’, o que significa que elas são executadas diretamente da memória. O conta-gotas usado por Angler é chamado Bedep, que na verdade é apenas um downloader – ou seja, não é malicioso por si só, mas é usado para baixar e executar vários malwares diferentes.
O payload consiste de uma combinação de código da shell e da DLL do Bedep. Se os primeiros bytes da carga útil forem “909090” (NOPs ou No Operations in x86 assembly), a DLL será carregada da memória, caso contrário será gravada no disco como um arquivo droppper normal. O shellcode é responsável por executar a DLL da memória.
O shellcode resolve APIs como kernel32.dll e wininet.dll
Sumário
Angler Exploit Kit é sem dúvida um dos mais perigosos kits de exploração na natureza hoje em dia. Ele tem várias técnicas em seu arsenal para derrotar métodos tradicionais de detecção, tais como:
- Unique Obfuscation
- Detects antivirus/virtualization software
- Encrypted payload
- Fileless infections
Além disso, Angler é frequentemente o primeiro a adotar as últimas explorações, que incluem zero dias de vez em quando. A natureza em constante evolução de Angler também destaca a necessidade de soluções de segurança que forneçam proteção ao longo de toda a cadeia de morte, em vez de focar apenas em uma etapa da mesma.