Isenção de responsabilidade: Artigo fornecido para fins educacionais. Nós não somos responsáveis por suas ações!
Saudações, Anônimo!
Uma das principais ferramentas de qualquer grupo de hackers é o malware. Dependendo do nível de habilidade dos hackers e das especificidades da operação, eles podem usar ferramentas maciças, muitas vezes disponíveis publicamente(um exemplo típico é aCobalt Strike)e seus próprios desenvolvimentos.
A criação de um conjunto exclusivo de ferramentas para cada ataque requer muitos recursos, portanto, o malware é reutilizado de uma forma ou de outra, tanto em várias operações de um grupo quanto entre grupos amigos.O uso massivo da mesma ferramenta inevitavelmente leva a sua entrada no radar das empresas de antivírus e, como resultado, a uma diminuição de sua eficácia.
Para combater esse problema, nós e outros hackers usamos técnicas de empacotamento, criptografia e mutação de código. Tais técnicas geralmente implementam ferramentas separadas - " crypters " ( crypters ), às vezes simplesmente chamadas de " packers ". Neste artigo, usando o trojan bancário
RTM como exemplo , veremos quais criptografadores podem ser usados, como esses criptografadores complicam a detecção de malware específico e que tipo de malware eles empacotam em geral. Packer-as-a-service Até o final de 2020 RTM
foi distribuído regularmente por meio de correspondências de phishing em massa com anexos maliciosos. Esse processo, é claro, aconteceu automaticamente.
Cada um desses anexos continha arquivos significativamente diferentes, enquanto a carga final permaneceu praticamente inalterada
Esse recurso é uma consequência natural do uso de criptografadores.
Conseguimos detectar muitos outros malwares protegidos de maneira semelhante. Interseções com outros malwares, levando em consideração a automação do processo de empacotamento, indicam o uso do modelo packer-as-a-service por nossos colegas . Nesse modelo, o empacotamento de arquivos maliciosos é delegado a um serviço especial gerenciado por terceiros.
O acesso a esses serviços geralmente é vendido em fóruns de hackers.
A seguir, veremos exemplos específicos de criptografadores que foram aplicados ao RTM.
Rex3Packer
O primeiro uso deste cryptor data de novembro de 2019. Seu uso ativo cai no período de abril a maio de 2020. Também observamos casos isolados de uso para distribuição de versões antigas do Trojan RTM no final de janeiro de 2021.
Este é um criptografador privado, não sabemos o nome dele, então demos o nosso próprio devido a três características de sua estrutura: a presença de recursão ( recursion ), bit reverse ( reverse ) e carregamento reflexivo de arquivos PE ( reflexão ) - Re x 3 Packer .
Algoritmo de descompressão
O algoritmo geral de extração de carga útil se parece com isto:
VirtualAlloc aloca uma quantidade predeterminada de memória com permissões de leitura, gravação e execução .
O conteúdo da imagem de memória do processo atual (em particular, a seção .text ) é copiado para o buffer alocado.
O controle é passado para a função dentro do buffer.
A diferença entre a posição dos mesmos dados no buffer e na imagem do arquivo PE é calculada (a diferença entre os endereços no buffer e os endereços virtuais na imagem). Essa diferença é inserida no registrador ebx. Todas as chamadas para endereços virtuais no código são indexadas pelo conteúdo deste registrador. Por isso, sempre que necessário, adiciona-se uma emenda aos endereços da imagem do PE, o que permite obter o endereço correspondente no buffer.
Mais um buffer é alocado para dados compactados.
Ao chamar o VirtualProtect, os direitos RWX são definidos para toda a região da memória com a imagem do arquivo PE.
Os dados compactados são copiados para seu buffer.
Os dados compactados estão sendo decodificados.
A região de memória com a imagem PE é preenchida com bytes nulos.
Os dados decodificados são um arquivo executável - PE-load . Essa carga útil é carregada reflexivamente no lugar da imagem PE original e o controle é passado para seu ponto de entrada.
De particular interesse é um algoritmo específico para decodificar dados compactados. Nesse caso, é incorreto falar de compactação como compactação: o algoritmo é projetado de forma que o tamanho dos dados compactados seja sempre maior que o tamanho dos dados originais.
Ofuscação
Para complicar a análise, o criptografador usa várias técnicas para adicionar código "lixo" :
Entre a execução de comandos úteis, são feitas chamadas para várias funções WinAPI . Seus resultados são salvos, mas não utilizados, e as próprias funções são escolhidas para não afetar o funcionamento do programa.
Uma característica desse criptógrafo é a presença de ciclos (que não realizam operações úteis), que são implementados por meio de uma função recursiva.
Para ofuscação adicional, várias dezenas de funções geradas aleatoriamente são adicionadas ao arquivo executável. Eles podem se referir uns aos outros, mas no processo de operação nenhum deles recebe controle.
Uso
Além das instâncias RTM, o Rex3Packer é usado para criptografar outros malwares dos países da CEI
Fobos ransomware
ransomware Zeppelin
Ladrão Racecoon
KPOT Stealer
predador o ladrão
QakBotGenericName
E isso não é todos os casos de uso do Rex3Packer.
HellowinPacker
Em maio de 2020, um novo cryptor começou a ser usado, que continuou a ser usado ativamente até o início de 2021. Nós o chamamos de HellowinPacker por causa das strings de nome de arquivo hellowin.wav que aparecem em algumas instâncias .
A principal característica deste criptógrafo são dois níveis de mutação de código . O primeiro altera significativamente a estrutura do código de descompactação, tornando amostras diferentes umas das outras.
O segundo nível altera apenas detalhes individuais, enquanto a estrutura geral do código permanece inalterada. Ao mesmo tempo, as alterações afetam principalmente as instruções e constantes do montador que não afetam a operação do programa. Como resultado, o código descompilado parece quase idêntico.
Assim como no caso do Rex3Packer, estamos lidando com o uso massivo do HellowinPacker para empacotar vários malwares.
Todos esses recursos estão de acordo com a descrição de um dos serviços de criptografia, cujo acesso é vendido em fóruns de hackers:
[Singularidade] Um criptografador exclusivo é fornecido para o cliente, que não depende de outros clientes. Se seus arquivos forem queimados, apenas de seus próprios downloads. Não recrutamos mais de 10.000 clientes, apenas suporte Premium preciso, clientes individuais. Fazemos apenas stubs exclusivos para um cliente.
Aparentemente, cada criptador único tem sua própria estrutura do código gerado. Ao mesmo tempo, o próprio criptografador também pode alterar o código, mas em um nível inferior, sem alterar a estrutura do programa como um todo. Em ambos os casos, o conteúdo do código executável "útil" permanece o mesmo.
Ofuscação
Como no caso do Rex3Packer, as instâncias com HellowinPacker contêm chamadas para funções WinAPI que não estão relacionadas à lógica do programa principal. Porém, neste caso, são mais utilizados como forma de dificultar a análise e detecção comportamental em sandboxes. Na maioria dos casos, várias funções são chamadas sucessivamente no início do programa.
Um efeito adicional desse uso do WinAPI é a impossibilidade de detecção pela lista de funções importadas e imphash.
Ao trabalhar com vários valores numéricos, muitas vezes ocorre alguma ofuscação aritmética: as constantes necessárias são representadas como a soma ou diferença de outras constantes (em certos casos igual a zero). Ao mesmo tempo, para obter constantes, também podem ser usadas chamadas de função WinAPI, que fornecem um resultado previsível (por exemplo, 0 em caso de falha).
Um exemplo dessa ofuscação é mostrado na captura de tela abaixo: a única tarefa dessa função é atribuir a variável global apontada por target ao valor do argumento source . Nesse caso, o resultado da chamada GetStockObject(789644)sempre será igual a zero, pois um argumento deliberadamente incorreto foi passado para a função.
Ofuscação aritmética no código de HellowinPacker
Mutações de vários tipos também são encontradas no nível do montador: inserção de comandos "lixo", predicados opacos , passagem de argumentos não utilizados para funções e chamadas de funções repetidas, alteração de instruções para equivalentes.
Exemplo de ofuscação de linguagem de montagem O HellowinPacker
existe
desde pelo menos 2014. Durante esse tempo, ele foi usado em vários malwares em massa. Aqui estão alguns exemplos:
Cerber ransomware
ZLoaderGenericName
Dridex
Bunitu
QakBotGenericName
Conclusão
Como você pode ver, caro amigo, também existe uma separação de tarefas no ambiente hacker. O desenvolvimento de uma carga maliciosa, sua proteção contra antivírus (criptas) e entrega à vítima podem ser executados por hackers completamente independentes, enquanto cada elemento dessa cadeia pode ser fornecido como um serviço. Essa abordagem reduz o limite de entrada para cibercriminosos não treinados tecnicamente: para realizar um ataque em massa, basta ter apenas a quantia necessária para pagar por todos os serviços.
Os empacotadores descritos por nós, é claro, estão longe de ser os únicos do mercado. Ao mesmo tempo, eles demonstram bem as propriedades gerais de tais ferramentas: como resultado de seu trabalho, um arquivo executável é obtido com um código de descompactador polimórfico ofuscado e uma carga útil criptografada de uma forma ou de outra. As mutações no código e a reutilização dos mesmos criptografadores tornam a detecção de carga estática quase impossível.
Parece difícil? Não tenha medo , nem tudo é tão assustador, porque ao usar um cryptor, você só precisa apertar um botão e deslizar um arquivo com malware. E se você quiser - no futuro, você se aprofundará no lado técnico da questão.