Rhadamanthys, um malware sofisticado para roubo de informações ativo desde 2022, atraiu atenção renovada de pesquisadores de segurança que publicaram recentemente uma análise aprofundada de seu componente de carregamento nativo.
A importância do carregador não reside em suas capacidades, mas nas técnicas avançadas de ofuscação e evasão que ele emprega para evitar a detecção por ferramentas de segurança e ambientes de análise.
O Carregador Rhadamanthys implementa uma estratégia complexa de ofuscação combinando três técnicas distintas que funcionam em conjunto para derrotar a análise estática.
Os pesquisadores de segurança identificaram a ofuscação do alvo de salto, o achatamento do fluxo de controle e a ofuscação constante como os principais mecanismos de defesa.
A ofuscação do alvo de salto oculta os endereços de destino por meio de cargas de memória combinadas com adições de registros de chave, impossibilitando que os desmontadores determinem os caminhos de execução do código.
O nivelamento do fluxo de controle (CFF) remove relacionamentos diretos entre blocos de código implementando um mecanismo de despachante que usa uma variável de estado para determinar qual bloco será executado em seguida, criando essencialmente uma instrução switch massiva com casos numéricos de alta entropia.
A camada de ofuscação constante oculta todas as constantes do programa, armazenando-as em locais de memória e recuperando-as por meio de operações de carregamento combinadas com adições.
Isso evita que os descompiladores executem otimizações padrão que revelariam os valores reais, pois os operandos de memória resistem ao dobramento constante automático.
Detecção anti-sandbox sofisticada
Pesquisa de ponto de verificação documentado extensas verificações de ambiente realizadas pelo módulo “Estratégia” do carregador antes de estabelecer comunicação de comando e controle.
O malware examina múltiplas características do sistema para identificar ambientes em sandbox ou virtualizados.
A lógica de desofuscação de salto pode ser encontrada em indeob_jumps.py, com algum código utilitário para mudança e reescrita de instruções sendo indeob_util.py.
O carregador recupera o papel de parede da área de trabalho atual e calcula seu hash SHA1, comparando-o com o valor codificado 5b94362ac6a23c5aba706e8bfd11a5d8bab6097d que representa o papel de parede padrão da sandbox de triagem.
Ele procura arquivos de teste de sandbox padrão, incluindo “foobar.jpg”, “foobar.mp3”, “foobar.txt”, “foobar.wri” e “waller.dat”.
A enumeração de nome de usuário tem como alvo contas típicas de sandbox, como “JohnDeo”, “HAL9TH”, “JOHN”, “JOHN-PC”, “MUELLER-PC”, “george” e “DESKTOP-B0T”.
O malware também verifica arquivos de credenciais fictícios, como “keys.txt” e “passwords.txt”, comparando seus hashes de conteúdo para detectar artefatos de sandbox replicados.
Rhadamanthys emprega a geração UUID versão 1 por meio da API UuidCreateSequential para extrair furtivamente endereços MAC de interfaces de rede.
O identificador de nó de 48 bits em UUIDv1 contém o endereço MAC do hardware, que o malware compara com uma extensa lista de bloqueio de adaptadores de rede virtuais conhecidos.
Além disso, o carregador consulta IDs de hardware usando o Windows Management Instrumentation com a instrução WQL SELECT UUID FROM [Win32_ComputerSystemProduct] e valida os resultados em relação a uma lista abrangente de identificadores de sandbox conhecidos.
Essas listas de bloqueio de ID de hardware mostram sobreposição com identificadores usados por outros ladrões de informações, incluindo Skuld e Bandit Stealer.
O carregador implementa um sofisticado mecanismo de evasão de análise comportamental baseado em retornos de chamada de temporizador em vez de execução direta.
Após a criação da janela, o malware estabelece o Timer ID 2, que coleta a posição do cursor, informações da janela em primeiro plano e registros de data e hora a cada 30 milissegundos durante 1.500 iterações, criando um atraso obrigatório de 45 segundos antes da execução da carga útil.
A telemetria coletada passa por verificações de validação que exigem mudanças de posição do cursor pelo menos 30 vezes e a presença de pelo menos duas janelas de primeiro plano diferentes, sendo uma delas não pertencente ao processo da área de trabalho.
Se essas condições falharem, o carregador inicia outro período de observação de 45 segundos com verificações aprimoradas, incluindo cálculos de distância euclidiana entre as posições do cursor para detectar interação simulada, em vez de interação genuína do usuário.
Esta abordagem visa especificamente emuladores AV e sistemas de análise automatizados que podem simular o movimento do mouse em intervalos regulares sem os padrões fluidos e naturais característicos do comportamento humano.
No entanto, sandboxes avançados como CAPE e VMRay passam com êxito nessas verificações de validação.
Esquema de codificação binária personalizado
A codificação da carga útil emprega um algoritmo proprietário de binário para string que os desenvolvedores tentaram manter oculto, conhecido como “Flutter” em Carregador .NET variantes.
O esquema de codificação mapeia intervalos de caracteres para valores de saída numéricos, com mapeamento AZ maiúsculo para 0-25, az minúsculo para 26-51 e dígitos 0-9 para 52-61.
Caracteres especiais e combinações de vários caracteres ampliam o espaço de codificação, com caracteres de prefixo modificando os intervalos de saída.
O caractere de espaço combinado com AZ ou az produz valores 91-142, enquanto os prefixos de período combinados com caracteres alfanuméricos produzem 143-204.
Os prefixos de sublinhado geram os intervalos mais altos, com sublinhado mais letras maiúsculas produzindo 205-230 e sublinhado mais letras minúsculas gerando 231-255.
Além dessa codificação personalizada, a carga recebe criptografia adicional usando SM4, uma cifra de bloco chinesa.
Os componentes necessários do algoritmo, incluindo tabelas S-Box, FK e CK, são ofuscados no carregador e carregados na memória apenas temporariamente durante as operações de descriptografia.
Versões recentes do Rhadamanthys fizeram a transição da esteganografia sofisticada para uma abordagem mais direta de entrega de carga útil.
Versões anteriores ocultavam cargas criptografadas em arquivos de áudio WAV de aparência legítima ou Imagens JPEGenquanto a versão 0.9.2 mudou para o formato PNG com uma implementação significativamente simplificada.
A abordagem atual baseada em PNG abandona a fachada de arquivos de mídia legítimos, em vez disso armazena diretamente dados de carga útil como valores de pixel seguindo uma estrutura específica contendo chaves de criptografia, informações de tamanho, dados de verificação de hash e a carga útil real.
Isso produz imagens visivelmente ruidosas, mas mantém a eficácia funcional enquanto simplifica o processo de extração.
Atualizações de configuração e mutex
A versão 0.9 introduziu mudanças significativas na estrutura de configuração e na geração de mutex para derrotar as ferramentas existentes de detecção e prevenção.
O formato de configuração agora usa um marcador 0xBEEF DWORD em vez do identificador histórico 0x59485221 (!RHY), com a estrutura exigindo descompactação LZO após a descriptografia inicial.
A geração de mutex agora incorpora um valor inicial de 16 bytes da configuração, hash junto com o valor mágico XRHY.
O hash resultante gera nomes mutex seguindo cadeias de caracteres de formato semelhante a GUID, como GlobalMSCTF.Asm. {%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}, tornando as abordagens de vacinação universal ineficazes.
O sistema de identificação de bot vincula cada infecção a dois identificadores de sistema exclusivos: o MachineGuid de HKEY_LOCAL_MACHINESOFTWAREMicrosoftCryptography e o número de série do volume recuperado por meio de GetVolumeInformationW.
Esses valores são agrupados usando SHA1 e representados como strings hexadecimais, permitindo que os invasores coloquem sistemas específicos na lista negra de forma mais eficaz.
Siga-nos emGoogle Notícias,LinkedIneXpara obter atualizações instantâneas e definir GBH como fonte preferencial emGoogle.
