O CONTO DO GOLPE OFUSCADO DO JAVASCRIPT DUPLO

Views: 838
0 0
Read Time:5 Minute, 13 Second

Visão geral

O cenário de phishing está em constante evolução. Ao longo dos anos, evoluiu para uma ameaça mais escalável, com uma quantidade esmagadora de campanhas sendo lançadas diariamente. O phishing também mudou quando os criminosos começaram a adicionar mais recursos e recursos aos seus kits de ferramentas, o que torna os sites de phishing muito vividos e difíceis de detectar.

Nossas publicações anteriores mostram uma variedade de técnicas sendo usadas por criminosos para tentar evitar a detecção. Essas técnicas incluem lista negra de visitantes indesejados, como mecanismos de busca e scanners de segurança e geração aleatória de conteúdo de páginas da Web de phishing e URLs. O ponto por trás de todo esse desenvolvimento de evasão é manter o ataque de phishing escondido. Quanto mais tempo o golpe vive, mais eficaz é.

Neste blog, vamos mergulhar fundo em um tipo diferente de técnica evasiva chamada ofuscação JavaScript, que está sendo usada em muitos tipos de golpes, como ataques de phishing e Magecart, e seguir um exemplo único de ofuscação dupla e criptografia recentemente observada em um golpe ativo de phishing.

7 Peças de Código Ofuscado

Para entender melhor o código JavaScript ofuscado, nós o dividimos em sete seções, conforme apresentado na Figura 1. Estas seções serão referenciadas a partir deste ponto.

Fig. 1: A página completa de phishing antes de ser renderizada  

Carga

O código da página contém dois arrays de carga útil, sinalizados como seções um (1) e quatro (4) na imagem. Esses arrays contêm o conteúdo criptografado da página final a ser renderizada, a função JavaScript decodificada que é responsável pela descriptografia da primeira carga útil e as palavras-chave javaScript, como “push” e “shift” que serão usadas por outras funções na página original.

A segunda carga contém ambos os pedaços codificados do conteúdo da página e faz referência a um dos valores da primeira carga útil. Essa referência torna o processo de compreensão da funcionalidade do código e depuração dele, mais difícil de fazer.

Funções de Javascript Anônimo

A página também contém duas funções JavaScript anônimas. Uma função anônima é uma função JavaScript que será executada à medida que a página for renderizada, sem a necessidade de chamá-la e executá-la explicitamente.

A primeira função JavaScript, vista na seção número dois (2) na Figura 1, reembaralhará a ordem da primeira carga útil. A segunda função JavaScript, seção número quatro (4) na Figura 1, será loop 229 vezes sem fazer nenhuma alteração na segunda carga útil.

O código anônimo que está sendo executado, e mais especificamente o código que não é essencial para a renderização ou funcionalidade da página, é considerado como código morto. Foi adicionado para tornar mais difícil para o código-fonte de phishing ser entendido e depurado.

Recuperar dados de carga útil

As funções JavaScript, sinalizadas como seções três (3) e seis (6), na Figura 1 são responsáveis por recuperar os itens de carga, fazendo referência à localização da matriz de carga. Essas funções adicionam mais complexidade ao código executado; enquanto ambos são idênticos em funcionalidade e estrutura, eles usam padrões hexadecimais ofuscados diferentes para nomes variáveis.

Execução de Código

Seção sete (7) A Figura 1 contém duas linhas de código responsáveis pela execução da funcionalidade JavaScript. Cada linha é embrulhada por funções de decodificação (unescape()) e execução (eval()), que pegará a carga pós-processada, decodificará-a e executará-a.

Fig. 2: Linhas de execução de código JavaScript

A primeira linha de código resultará em uma função JavaScript chamada “j9b53a9832”, que é renderizada após ser recuperada de um dos valores de carga codificados, como visto na Figura 3. Esta função, uma vez executada, será responsável por obter carga criptografada e dividi-la com base no número dado de 8 dígitos para o conteúdo da página criptografada. O conteúdo da página criptografada será acolchoado com um número de 6 dígitos e, posteriormente, cada caractere do conteúdo da página criptografada será XORed usando a tecla extraída.

Esta função JavaScript descript descript descript foi detectada em ataques ativos muitas vezes no passado, usando diferentes nomes de função, preenchimento e valores separadores. Como ele está sendo decodificado e ofuscado dentro do conteúdo original da página, ele não pode ser detectado facilmente sem renderizar e depurar a própria página.

Fig. 3: Função de descriptografia JavaScript após ser decodificado

A segunda linha de execução, uma vez executada, executa o código como aparece na Figura 4. Torna-se uma função JavaScript document.write, que renderizará o conteúdo descriptografado da página após descriptografar “j9b53a9832” que estava sendo executado na carga de página criptografada.

Fig. 4: Redação de documentos JavaScript e execução de descriptografia

Finalmente, a página que está sendo renderizada é uma página padrão de phishing de senha esquecida padrão usando a familiaridade de uma marca conhecida. O único propósito desta página é roubar credenciais de vítimas.

Resumo

O uso do JavaScript para ofuscar golpes não é uma surpresa, pois o Javascript permite que os criminosos criem páginas HTML finas que criam o conteúdo visto pelas vítimas apenas uma vez sendo renderizado por seu navegador. Além disso, JavaScript, como uma língua, também pode ser usado de uma maneira polimórfica para criar diferentes versões do mesmo código fonte que executam exatamente o mesmo, mas parecem diferentes. A necessidade de tornar o código ofuscado e polimórfico cria um desafio do ponto de vista defensivo, pois requer mais recursos computacionais e recursos avançados de detecção.

Os exemplos neste blog são apenas a ponta do iceberg, já que técnicas mais complexas, incluindo enormes pedaços de código morto incorporado e anti-depuração, estão constantemente sendo usadas na natureza.

A capacidade de analisar, criptografar e remover a ofuscação em tais páginas não é impossível, mas requer tempo e recursos. A tarefa é agravada, no entanto, pela quantidade esmagadora de phishing e campanhas magecart sendo introduzidas diariamente, resultando em muitos desses golpes escorregando sob o radar.

O uso do JavaScript para criar conteúdo criptografado e ofuscado em phishing e outros sites maliciosos não é novo. No entanto, o exemplo mostrado neste blog apresenta um nível de sofisticação que dificulta a detecção de tal código malicioso. À medida que os criminosos se movem para adotar técnicas avançadas de ofuscação, os defensores precisam adotar abordagens defensivas em camadas que possam detectar, isolar e bloquear tais ameaças no futuro.

FONTE: AKAMAI

POSTS RELACIONADOS