Pesquisadores descobrem a família de malware Shelby que abusa do GitHub para comando e controle

A família SHELBY mostra um exemplo preocupante de malware moderno com design modular, sofisticado e com um erro crítico de segurança (exposição do PAT), que pode ser explorado por terceiros ao acessar amostras enviadas a repositórios públicos.

Principais conclusões

  • A família de malware SHELBY abusa do GitHub para comando e controle, roubando dados e recuperando comandos
  • O design C2 do invasor tem uma falha crítica: qualquer pessoa com o token PAT pode controlar máquinas infectadas, expondo uma vulnerabilidade de segurança significativa
  • Código não utilizado e carregamento dinâmico de carga útil sugerem que o malware está em desenvolvimento ativo, indicando que atualizações futuras podem resolver quaisquer problemas com versões contemporâneas

Resumo

Como parte de nossa pesquisa contínua sobre ameaças emergentes, analisamos um possível e-mail de phishing enviado de um endereço de e-mail pertencente a uma empresa de telecomunicações iraquiana e enviado a outros funcionários da mesma empresa.

O e-mail de phishing depende da vítima abrir o Details.ziparquivo anexado e executar o binário contido, JPerf-3.0.0.exe. Este binário utiliza o sistema de instalação orientado a script, Inno setup , que contém o aplicativo malicioso:

  • %AppData%\Local\Microsoft\HTTPApi:
    • HTTPApi.dll(SHELBYC2)
    • HTTPService.dll(CARREGADOR SHELBY)
    • Microsoft.Http.Api.exe
    • Microsoft.Http.Api.exe.config

O instalado Microsoft.Http.Api.exeé um executável .NET benigno. Seu propósito principal é carregar lateralmente o malicioso HTTPService.dll. Uma vez carregado, HTTPService.dllatua como o carregador, iniciando a comunicação com o GitHub para seu comando e controle (C2).

O carregador recupera um valor específico do C2, que é usado para descriptografar o payload do backdoor, HTTPApi.dll. Após a descriptografia, o backdoor é carregado na memória como um assembly gerenciado usando reflexão, permitindo que ele seja executado sem gravar no disco e evitando mecanismos de detecção tradicionais.

Cadeia de execução SHELBYLOADER e SHELBYC2
Cadeia de execução SHELBYLOADER e SHELBYC2

No momento em que este artigo foi escrito, tanto o backdoor quanto o loader tinham uma baixa taxa de detecção no VirusTotal.

VirusTotal de acessos para SHELBYC2
VirusTotal de acessos para SHELBYC2
VirusTotal de acessos para SHELBYLOADER
VirusTotal de acessos para SHELBYLOADER

Análise de código SHELBYLOADER

Ofuscação

Tanto o carregador quanto o backdoor são ofuscados com a ferramenta de código aberto Obfuscar , que emprega criptografia de strings como um de seus recursos. Para contornar essa ofuscação, podemos aproveitar o de4dot com parâmetros personalizados. O Obfuscar substitui strings por chamadas para uma função de descriptografia de strings, mas ao fornecer o token dessa função para o de4dot, podemos efetivamente desofuscar o código. Usando os parâmetros --strtyp( o tipo de descriptografia de strings, no nosso caso delegate) e --strtok( o token do método de descriptografia de strings), podemos substituir essas chamadas de função por seus valores de texto simples correspondentes, revelando as strings originais no código.

Desofuscação usando de4dot
Desofuscação usando de4dot

Detecção de sandbox

O SHELBYLOADER utiliza técnicas de detecção de sandbox para identificar ambientes virtualizados ou monitorados. Uma vez executado, ele envia os resultados de volta para C2. Esses resultados são empacotados como arquivos de log, detalhando se cada método de detecção identificou com sucesso um ambiente de sandbox, por exemplo:

Exemplo de detecção de sandbox
Exemplo de detecção de sandbox

Técnica 1: Consulta WMI para informações do sistema

O malware executa uma consulta WMI ( Select * from Win32_ComputerSystem) para recuperar detalhes do sistema. Ele então verifica os campos Fabricante e Modelo para indicadores de uma máquina virtual, como “VMware” ou “VirtualBox”.

Detecção de sandbox com base em informações do sistema
Detecção de sandbox com base em informações do sistema

Técnica 2: Enumeração de Processos

O malware verifica os processos em execução em busca de serviços conhecidos relacionados à virtualização, incluindo:

  • vmsrvc
  • vmtools
  • xenservice
  • vboxservice
  • vboxtray

A presença desses processos informa ao malware que ele pode estar sendo executado em um ambiente virtualizado.

Técnica 3: Verificações do sistema de arquivos

O malware procura a existência de arquivos de driver específicos comumente associados ao software de virtualização, como:

  • C:\Windows\System32\drivers\VBoxMouse.sys
  • C:\Windows\System32\drivers\VBoxGuest.sys
  • C:\Windows\System32\drivers\vmhgfs.sys
  • C:\Windows\System32\drivers\vmci.sys

Técnica 4: Análise do tamanho do disco

O malware verifica o tamanho do C:volume. Se o tamanho for menor que 50 GB, ele pode inferir que o ambiente é parte de uma sandbox, pois muitas máquinas virtuais são configuradas com tamanhos de disco menores para fins de teste.

Detecção de sandbox com base no tamanho do disco
Detecção de sandbox com base no tamanho do disco

Técnica 5: Verificação do Processo Parental

O malware examina seu processo pai. Se o processo pai não for explorer.exe, pode indicar execução dentro de um ambiente de análise automatizado em vez de um cenário típico controlado pelo usuário.

Detecção de sandbox com base na árvore de processos
Detecção de sandbox com base na árvore de processos

Técnica 6: Detecção de desvio do tempo de sono

O malware emprega verificações de tempo para detectar se suas funções de sono ou atraso estão sendo aceleradas, uma técnica comum usada por sandboxes para acelerar a análise. Desvios significativos nos tempos de sono esperados podem revelar um ambiente de sandbox.

Detecção de sandbox com base no desvio do tempo de sono
Detecção de sandbox com base no desvio do tempo de sono

Técnica 7: Consulta WMI para controlador de vídeo

O malware executa uma consulta WMI (SELECT * FROM Win32_VideoController) para recuperar informações sobre o controlador de vídeo do sistema. Ele então compara o nome do controlador de vídeo com valores conhecidos associados a máquinas virtuais: virtualor vmwareor vbox.

Detecção de sandbox com base no nome do controlador de vídeo
Detecção de sandbox com base no nome do controlador de vídeo

Funcionalidade principal

O código do carregador do malware começa inicializando diversas variáveis ​​dentro de seu construtor de classe principal. Essas variáveis ​​incluem:

  • Um nome de conta GitHub
  • Um nome de repositório privado
  • Um Token de Acesso Pessoal (PAT) para autenticação e acesso ao repositório

Além disso, o malware configura dois temporizadores, que são usados ​​para acionar ações específicas em intervalos predefinidos.

Configuração do SHELBYLOADER
Configuração do SHELBYLOADER

Um dos timers é configurado para disparar um método específico 125 segundos após a execução. Quando invocado, esse método estabelece persistência no sistema infectado adicionando uma nova entrada à chave do Registro do Windows SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Uma vez que o método é disparado e o mecanismo de persistência é executado com sucesso, o timer é impedido de disparar mais.

Configurar persistência
Configurar persistência

Este método usa uma variável inteira para indicar o resultado de sua operação. A tabela a seguir descreve cada valor possível e seu significado:

EU IADescrição
1Persistência definida com sucesso
2Persistência já definida
8Não é possível adicionar uma entrada na chave
9Binário não encontrado no disco

Esse valor inteiro é reportado ao C2 durante seu primeiro registro no C2, permitindo que os invasores monitorem o sucesso ou a falha do mecanismo de persistência no sistema infectado.

O segundo temporizador é configurado para disparar um método responsável por carregar o backdoor, que é executado 65 segundos após o malware iniciar. Primeiro, o malware gera um hash MD5 com base em uma combinação de informações específicas do sistema. Os dados usados ​​para criar o hash são formatados da seguinte forma, com cada componente separado por uma barra( /):

  • O número de processadores disponíveis no sistema.
  • O nome da máquina (nome do host).
  • O nome de domínio associado à conta de usuário.
  • O nome de usuário do usuário conectado no momento.
  • O número total de unidades lógicas presentes no sistema.
Gerar identificador único
Gerar identificador único

Um subconjunto desse hash é então extraído e usado como um identificador único para a máquina infectada. Esse identificador serve como uma maneira para os invasores rastrearem e gerenciarem sistemas comprometidos dentro de sua infraestrutura.

Após gerar o identificador exclusivo, o malware envia um novo commit para o repositório myToken usando uma solicitação HTTPS. O commit inclui um diretório nomeado após o identificador exclusivo, que contém um arquivo chamado Info.txt. Este arquivo armazena as seguintes informações sobre o sistema infectado:

  • O nome de domínio associado à conta de usuário.
  • O nome de usuário do usuário conectado no momento.
  • O log dos resultados da detecção de sandbox detalhando quais técnicas foram bem-sucedidas ou falharam.
  • O sinalizador de persistência (conforme descrito na tabela acima) indica o resultado do mecanismo de persistência.
  • A data e hora atuais do evento de sinalização
Exemplo de conteúdo de Info.txt
Exemplo de conteúdo de Info.txt

O malware primeiro tenta enviar um commit para o repositório sem usar um proxy. Se essa tentativa inicial falhar, ele volta a usar o proxy configurado pelo sistema para sua comunicação.

Após o primeiro beacon e o registro bem-sucedido da vítima, o malware tenta acessar o mesmo diretório do repositório GitHub que ele criou anteriormente e baixar um arquivo chamado License.txt(não observamos nenhuma instabilidade no intervalo de verificação, mas o servidor conseguiu lidar com isso). Se presente, esse arquivo contém um valor de 48 bytes, que é usado para gerar uma chave de descriptografia AES. Esse arquivo é carregado pelo backend do invasor somente após a validação de que o malware não está sendo executado em um ambiente sandbox. Isso garante que apenas infecções validadas recebam a chave e escalem a cadeia de execução para o backdoor.

A função solicita o registro e a recuperação do conteúdo da licença
A função solicita o registro e a recuperação do conteúdo da licença

O malware gera uma chave AES e um vetor de inicialização (IV) a partir do conteúdo de License.txt. Ele primeiro faz o hash do valor de 48 bytes usando SHA256, então usa o hash resultante como a chave e os primeiros 16 bytes como o IV.

Gerando chave de descriptografia AES e IV
Gerando chave de descriptografia AES e IV

Ele prossegue para descriptografar o arquivo HTTPApi.dll, que contém o payload do backdoor. Após a descriptografia, o malware usa o Assembly.Loadmétodo para carregar reflexivamente o backdoor na memória. Essa técnica permite que o malware execute o backdoor descriptografado diretamente, sem gravá-lo no disco.

Descriptografa e carrega SHELBYC2
Descriptografa e carrega SHELBYC2

Mecanismo de chaveamento baseado em DNS

Outra variante do SHELBYLOADER usa uma abordagem diferente para registro e recuperação da sequência de bytes usada para gerar a chave AES e IV.

Primeiro, o malware executa os mesmos métodos anti-sandboxing, criando uma sequência de 1ou 0dependendo se um sandbox é detectado para cada técnica.

Para seu registro C2, o malware cria um subdomínio arthurshelby.clickcom três partes: o primeiro subdomínio é uma string estática ( s), o segundo subdomínio é o identificador exclusivo codificado em Base32 e o terceiro subdomínio é uma string concatenada no formato DomainName\HostName >> Anti-Sandboxing Results >> Persistence Flagcodificado em base32.

Por exemplo, um domínio completo pode parecers.grldiyrsmvsggojzmi4wmyi.inevyrcfknfvit2qfvcvinjriffe6ib6hyqdambqgaydambahy7cama.arthurshelby.click

Receita do CyberChef para decodificar subdomínios gerados
Receita do CyberChef para decodificar subdomínios gerados

Depois disso, o malware executa várias consultas DNS para subdomínios de arthurshelby.click. Os endereços IP retornados dessas consultas são concatenados em uma sequência de bytes, que é então usada para gerar a chave AES para descriptografar o backdoor, seguindo o mesmo processo descrito anteriormente.

Os subdomínios seguem este formato:

  • O primeiro subdomínio é l<index>, onde o índice corresponde à ordem das chamadas DNS (por exemplo, l1l2, etc.), garantindo que a sequência de bytes seja montada corretamente.
  • O segundo subdomínio é o identificador exclusivo codificado em Base32.
Subdomínios contatados para recuperar os bytes usados ​​para gerar a chave AES
Subdomínios contatados para recuperar os bytes usados ​​para gerar a chave AES

Análise de código SHELBYC2

O backdoor começa regenerando o mesmo identificador exclusivo criado pelo carregador. Ele faz isso calculando um hash MD5 da string exata específica do sistema usada anteriormente. O backdoor então cria um Mutex para garantir que apenas uma instância do malware seja executada na máquina infectada. O Mutex é nomeado adicionando a string Global\GHSao identificador exclusivo.

Inicialização de mutex
Inicialização de mutex

Após 65 segundos, o backdoor executa um método que coleta as seguintes informações do sistema:

  • identidade do usuário atual
  • versão do sistema operacional
  • o ID do processo do malware
  • nome da máquina
  • diretório de trabalho atual

Curiosamente, essas informações coletadas não são usadas localmente nem exfiltradas para o servidor C2. Isso sugere que o código pode ser um código morto deixado para trás durante o desenvolvimento ou que o malware ainda está em desenvolvimento ativo, com planos potenciais para utilizar esses dados em versões futuras.

Código morto
Código morto

O malware então carrega o timestamp atual para um arquivo chamado Vivante.txt no repositório myGit dentro de seu diretório exclusivo (nomeado usando o identificador exclusivo do sistema). Esse timestamp serve como o último horário de beacon, permitindo que os invasores monitorem a atividade do malware e confirmem que o sistema infectado ainda está ativo. A palavra “Vivante” se traduz em “vivo” em francês, o que reflete o papel do arquivo como um indicador de pulsação para a máquina comprometida.

Em seguida, o malware tenta baixar o arquivo Command.txt, que contém uma lista de comandos emitidos pelo operador para execução no sistema infectado.

Se Command.txtnão contiver comandos, o malware verifica se há comandos em outro arquivo chamado Broadcast.txt. Ao contrário de Command.txt, esse arquivo está localizado fora do diretório do malware e é usado para transmitir comandos para todos os sistemas infectados simultaneamente. Essa abordagem permite que o invasor execute operações simultaneamente em várias máquinas comprometidas, agilizando o controle em larga escala.

Tabela de manipulação de comandos:

Os comandos no Command.txtarquivo podem ser comandos manipulados ou comandos do sistema executados com o Powershell. A seguir está uma descrição de cada comando manipulado.

/download

Este comando baixa um arquivo de um repositório GitHub para a máquina infectada. Ele requer dois parâmetros:

  • O nome do arquivo armazenado no repositório GitHub.
  • O caminho onde o arquivo será salvo na máquina infectada.
Comando de download
Comando de download

/carregar

Este comando carrega um arquivo da máquina infectada para o repositório GitHub. Ele pega um parâmetro: o caminho do arquivo a ser carregado.

Comando de upload
Comando de upload

/dlextrair

Este comando baixa um arquivo zip do repositório GitHub (semelhante ao /download), extrai seu conteúdo e o salva em um diretório especificado na máquina.

Comando de extração de zip
Comando de extração de zip

/evocar

Este comando é usado para carregar um binário .NET reflexivamente; ele usa dois parâmetros: o primeiro parâmetro é o caminho de um binário .NET criptografado com AES baixado anteriormente para a máquina infectada, o segundo parâmetro é um valor usado para derivar o AES e o IV, semelhante a como o carregador carrega o backdoor.

Este comando carrega reflexivamente um binário .NET similar a como o SHELBYLOADER carrega o backdoor. Ele requer dois parâmetros:

  • O caminho para um binário .NET criptografado em AES baixado anteriormente para a máquina infectada.
  • Um valor usado para derivar a chave AES e IV.
Comando de invocação .NET
Comando de invocação .NET

Comandos do sistema

Qualquer comando que não comece com um dos acima é tratado como um comando do PowerShell e executado adequadamente.

Comando de execução do Powershell
Comando de execução do Powershell

Comunicação

O malware não usa a ferramenta Git no backend para enviar commits. Em vez disso, ele cria solicitações HTTP para interagir com o GitHub. Ele envia um commit para o repositório usando um objeto JSON com a seguinte estrutura:

{  "message": "Commit message",  "content": "<base64 encoded content>",  "sha": "<hash>"}

O malware define cabeçalhos HTTP específicos para a solicitação, incluindo:

  • Aceitar: application/vnd.github.v3+json
  • Tipo de conteúdo: application/json
  • Autorização: token <PAT_token>
  • Agente do usuário: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Inicialização da solicitação HTTP
Inicialização da solicitação HTTP

A solicitação é enviada ao ponto de extremidade da API do GitHub, construído da seguinte maneira:

https://api.github.com/repos/<owner>/<repo>/contents/<unique identifier>/<file>

O Personal Access Token (PAT) necessário para acessar o repositório privado está embutido no binário. Isso permite que o malware autentique e execute ações no repositório sem usar a cadeia de ferramentas padrão do Git.

Captura do Wireshark de uma comunicação C2 por SHELBYC2
Captura do Wireshark de uma comunicação C2 por SHELBYC2

A maneira como o malware é configurado significa que qualquer um com o PAT (Personal Access Token) pode teoricamente buscar comandos enviados pelo invasor e acessar saídas de comando de qualquer máquina da vítima. Isso ocorre porque o token PAT é incorporado no binário e pode ser usado por qualquer um que o obtenha.

Conclusão da família SHELBY

Embora a infraestrutura C2 tenha sido projetada de forma exótica, o invasor ignorou os riscos e implicações significativos dessa abordagem.

Acreditamos que usar esse malware, seja por uma equipe vermelha autorizada ou um ator malicioso, constituiria negligência. Ele permite que qualquer vítima transforme o PAT incorporado em uma arma e assuma o controle de todas as infecções ativas. Além disso, se uma vítima fizer upload de amostras para plataformas como VirusTotal ou MalwareBazaar, qualquer terceiro poderá acessar dados relacionados à infecção ou assumir o controle das infecções inteiramente.

Análise de campanha REF8685

O Elastic Security Labs descobriu o REF8685 por meio de coleta e análise de rotina de fontes de dados de terceiros. Ao estudar a intrusão do REF8685, identificamos um carregador e um implante C2 que determinamos serem novos, o que nos levou a lançar esta análise detalhada de malware e intrusão.

As cargas maliciosas foram entregues a uma telecom sediada no Iraque por meio de um e-mail de phishing altamente direcionado enviado de dentro da organização visada. O texto do e-mail é uma discussão entre engenheiros sobre as especificações técnicas do gerenciamento da rede. Com base no conteúdo e no contexto do e-mail, não é provável que essa isca tenha sido criada externamente, indicando o comprometimento de endpoints de engenheiros, servidores de e-mail ou ambos.

Dears,
We would appreciate it if you would check the following alarms on Core Network many (ASSOCIATION) have been flapped.
Problem Text*** ALARM 620 A1/APT "ARHLRF2SPX1.9IP"U 250213 1406M3UA DESTINATION INACCESSIBLEDEST            SPID2-1936          ARSMSC1END
Problem Text*** ALARM 974 A1/APT "ARHLRF1SPX1.9IP"U 250213 1406M3UA DESTINATION INACCESSIBLEDEST            SPID2-1936          ARSMSC1END

Este e-mail contém uma chamada para ação para abordar alarmes de rede e um anexo compactado chamado details.zip. Dentro desse arquivo zip há um arquivo de texto contendo os logs endereçados no e-mail e um executável do Windows ( JPerf-3.0.0.exe), que inicia a cadeia de execução, resultando na entrega do implante SHELBYC2, fornecendo acesso remoto ao ambiente.

Embora não observado na intrusão REF8685, deve-se notar que o VirusTotal mostra que JPerf-3.0.0.exefeb5d225fa38efe2a627ddfbe9654bf59c171ac0742cd565b7a5f22b45a4cc3a ) foi incluído em um arquivo compactado separado ( JPerf-3.0.0.zip) e também enviado do Iraque. Não está claro se isso é da mesma vítima ou de outra nesta campanha. Uma pesquisa de similaridade de arquivo também identifica um segundo implante nomeado Setup.execom um arquivo compactado adicional ( 5c384109d3e578a0107e8518bcb91cd63f6926f0c0d0e01525d34a734445685c ).

A análise desses arquivos ( JPerf-3.0.0.exeSetup.exe) revelou o uso do GitHub para C2e mecanismos de recuperação de chaves AES (mais sobre isso nas seções de análise de malware). As contas do Github ( arthurshellbyjohnshelllby) usadas para o malware REF8685 eram maliciosas e foram encerradas pelo Github.

Vale destacar que Arthur e John Shelby são personagens da série de televisão britânica de drama policial Peaky Blinders . O programa esteve em produção de 2013 a 2022.

O domínio arthurshelby[.]clickapontava para  2.56.126[.]151, um servidor hospedado pela Stark Industries (AS44477). Este provedor de hospedagem VPS foi usado para serviços de proxy em outros ataques cibernéticos de larga escala. Este servidor tem resoluções sobrepostas para:

  • arthurshelby[.]click
  • [REDACTED]telecom[.]digital
  • speed-test[.]click
  • [REDACTED]airport[.]cloud
  • [REDACTED]airport[.]pro
Cronograma de resolução de DNS para 2.56.126[.]151
Cronograma de resolução de DNS para 2.56.126[.]151

O arquivo compactado e os domínios C2 de uma das amostras SHELBYLOADER são nomeados em homenagem à [REDACTED] Telecom, uma empresa de telecomunicações sediada no Iraque. O mapa de cobertura da [REDACTED] se concentra na região do Curdistão iraquiano no norte e leste do país.

“Sharjaairport” indica uma provável terceira vítima visada. O Aeroporto Internacional [REDIGIDO] ([REDIGIDO]) é um aeroporto internacional especializado em frete aéreo nos Emirados Árabes Unidos. Fica a 14,5 milhas (23,3 km) do Aeroporto Internacional de Dubai (DXB).

Cronograma de resolução de DNS para [REDIGIDO]aeroporto[.]nuvem
Cronograma de resolução de DNS para [REDIGIDO]aeroporto[.]nuvem

[REDACTED]airport[.]cloudresolvido para um novo servidor, 2.56.126[.]157, por um dia em 21 de janeiro de 2025. Depois, ele apontou para o Google DNS, o servidor legítimo [REDIGIDO] do Aeroporto e, finalmente, um endereço de estacionamento Namecheap. O 2.56.126[.]157servidor, Stark Industries (AS44477) hospedado, também hospeda [REDACTED]-connect[.]online, [REDIGIDO] é o código do aeroporto para o Aeroporto Internacional [REDIGIDO].

O domínio  [REDACTED]airport[.]cloudtem um subdomínio portal.[REDACTED]airport[.]cloudque apontou brevemente para 2.56.126[.]188de 23 a 25 de janeiro de 2025. Ele então direcionou o tráfego para 172.86.68[.]55até o momento da redação deste artigo.

Os pivôs de hash de banner revelam uma combinação adicional de servidor-domínio: 195.16.74[.]138[REDACTED]-meeting[.]online.

172.86.68[.].55servidor também hospeda o mail.[REDACTED]tell[.]com, um aparente domínio de phishing que tem como alvo nossa vítima original.

Cronograma de resolução de DNS para 172.86.68[.].55
Cronograma de resolução de DNS para 172.86.68[.].55

Uma página de login da web foi hospedada em hxxps://portal.[REDACTED]airport[.]cloud/LoginVirusTotal ).

Avaliamos que os invasores transformaram esses dois subdomínios em armas para obter credenciais de login na nuvem. Depois que essas credenciais foram protegidas (no caso da [REDIGIDO] Telecom), os invasores acessaram o e-mail na nuvem da vítima e criaram um phishing altamente direcionado transformando em armas threads de e-mail internos em andamento.

Esse e-mail interno transformado em arma foi usado para re-phishing e chegar aos endpoints das vítimas.

Todos os domínios associados a esta campanha utilizaram certificações ZeroSSL e estavam na infraestrutura da Stark Industries.

O modelo Diamond de análise de intrusão

O Elastic Security Labs utiliza o Diamond Model para descrever relacionamentos de alto nível entre adversários, capacidades, infraestrutura e vítimas de intrusões. Enquanto o Diamond Model é mais comumente usado com intrusões únicas, e alavancando Activity Threading (seção 8) como uma maneira de criar relacionamentos entre incidentes, uma abordagem centrada no adversário (seção 7.1.4) permite um único diamante, embora desorganizado.

REF8685 representado no Modelo Diamante
REF8685 representado no Modelo Diamante

REF8685 e MITRE ATT&CK

A Elastic usa a estrutura MITRE ATT&CK para documentar táticas, técnicas e procedimentos comuns que ameaças persistentes avançadas usam contra redes corporativas.

Táticas

Táticas representam o porquê de uma técnica ou subtécnica. É o objetivo tático do adversário: a razão para executar uma ação.

Técnicas

Técnicas representam como um adversário atinge um objetivo tático executando uma ação.

Regra YARA

A Elastic Security criou regras YARA para identificar essa atividade. Abaixo estão as regras YARA para identificar os malwares SHELBYC2 e SHELBYLOADER:

rule Windows_Trojan_ShelbyLoader {
    meta:
        author = "Elastic Security"
        creation_date = "2025-03-11"
        last_modified = "2025-03-25"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "ShelbyLoader"
        threat_name = "Windows.Trojan.ShelbyLoader"
        license = "Elastic License v2"

    strings:
        $a0 = "[WARN] Unusual parent process detected: "
        $a1 = "[ERROR] Exception in CheckParentProcess:" fullword
        $a2 = "[INFO] Sandbox Not Detected by CheckParentProcess" fullword
        $b0 = { 22 63 6F 6E 74 65 6E 74 22 3A 20 22 2E 2B 3F 22 }
        $b1 = { 22 73 68 61 22 3A 20 22 2E 2B 3F 22 }
        $b2 = "Persist ID: " fullword
        $b3 = "https://api.github.com/repos/" fullword
    condition:
        all of ($a*) or all of ($b*)
}

rule Windows_Trojan_ShelbyC2 {
    meta:
        author = "Elastic Security"
        creation_date = "2025-03-11"
        last_modified = "2025-03-25"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "ShelbyC2"
        threat_name = "Windows.Trojan.ShelbyC2"
        license = "Elastic License v2"

    strings:
        $a0 = "File Uploaded Successfully" fullword
        $a1 = "/dlextract" fullword
        $a2 = "/evoke" fullword
        $a4 = { 22 73 68 61 22 3A 20 22 2E 2B 3F 22 }
        $a5 = { 22 2C 22 73 68 61 22 3A 22 }
    condition:
        all of them
}

Observações

Todos os observáveis ​​também estão disponíveis para download nos formatos ECS e STIX em um pacote zip combinado.

Os seguintes observáveis ​​foram discutidos nesta pesquisa.

ObservávelTipoNomeReferência
0e25efeb4e3304815f9e51c1d9bd3a2e2a23ece3a32f0b47f829536f71ead17aSHA-256details.zipArquivo zip de isca
feb5d225fa38efe2a627ddfbe9654bf59c171ac0742cd565b7a5f22b45a4cc3aSHA-256JPerf-3.0.0.exe
0354862d83a61c8e69adc3e65f6e5c921523eff829ef1b169e4f0f143b04091fSHA-256HTTPService.dllCARREGADOR SHELBY
fb8d4c24bcfd853edb15c5c4096723b239f03255f17cec42f2d881f5f31b6025SHA-256HTTPApi.dllSHELBYC2
472e685e7994f51bbb259be9c61f01b8b8f35d20030f03215ce205993dbad7f5SHA-256JPerf-3.0.0.zipArquivo zip de isca
5c384109d3e578a0107e8518bcb91cd63f6926f0c0d0e01525d34a734445685cSHA-256Setup.exe
e51c6f0fbc5a7e0b03a0d6e1e1d26ab566d606b551c785bf882e9a02f04c862bSHA-256Arquivo zip de isca
github[.]com/johnshelllbyURLNome da conta GitHub – C2
github[.]com/arturshellbyURLNome da conta GitHub – C2
arthurshelby[.]clicknome de domínioDomínio DNS
speed-test[.]clicknome de domínio
2.56.126[.]151IPv4
2.56.126[.]157IPv4
2.56.126[.]188IPv4
172.86.68[.]55IPv4
195.16.74[.]138IPv4