Seth GoodwinDaniel Stepanic

BITS e Bytes: Analisando BITSLOTH, um backdoor recentemente identificado

O Elastic Security Labs identificou um novo backdoor do Windows aproveitando o Background Intelligent Transfer Service (BITS) para C2. Esse malware foi encontrado durante um grupo de atividades recente rastreado como REF8747.

19 min de leituraAnálise de malware
BITS e Bytes: Analisando BITSLOTH, um backdoor identificado recentemente

BITSLOTH em resumo

BITSLOTH é um backdoor do Windows recém-descoberto que utiliza o Background Intelligent Transfer Service (BITS) como seu mecanismo de comando e controle. O BITSLOTH foi descoberto durante uma intrusão na região da América Latina no início deste verão. Até onde sabemos, esse malware não foi documentado publicamente e, embora não esteja claro quem está por trás dele, ele está em desenvolvimento há vários anos com base no rastreamento de versões distintas enviadas ao VirusTotal.

A iteração mais atual do backdoor no momento desta publicação tem 35 funções de manipulador, incluindo recursos de keylogging e captura de tela. Além disso, o BITSLOTH contém muitos recursos diferentes para descoberta, enumeração e execução de linha de comando. Com base nessas capacidades, avaliamos que esta ferramenta foi projetada para coletar dados de vítimas.

Principais conclusões

  • BITSLOTH é um backdoor do Windows recentemente descoberto
  • O BITSLOTH usa um recurso integrado da Microsoft, o Background Intelligent Transfer Service (BITS) para comunicação de comando e controle
  • O BITSLOTH possui vários manipuladores de comando usados para fins de descoberta/enumeração, execução e coleta
  • O backdoor contém funções de registro e strings consistentes com os autores sendo falantes nativos de chinês

Descoberta

Nossa equipe observou o BITSLOTH instalado em um ambiente de servidor em 25 de junho durante o REF8747, uma intrusão no Ministério das Relações Exteriores de um governo sul-americano. A intrusão foi rastreada até a execução do PSEXEC em um dos endpoints infectados. Os invasores usaram uma série de ferramentas disponíveis publicamente para a maioria de suas operações, com exceção do BITSLOTH.

Um dos principais mecanismos de execução era por meio de um projeto de carregamento de shellcode chamado RINGQ. De forma semelhante ao DONUTLOADER, o RINGQ converterá qualquer executável do Windows e gerará um shellcode personalizado, colocando-o em um arquivo (main.txt). Este shellcode é descriptografado e executado na memória. Essa técnica é usada para contornar defesas que dependem de listas de bloqueio de hash ou assinaturas estáticas em alguns produtos antimalware.

Observamos que o RINGQ está sendo usado para carregar o encaminhador de porta IOX. Nota: A chave na imagem abaixo é a conversão hexadecimal de “whoami”.

Além disso, os invasores usaram o utilitário STOWAWAY para enviar tráfego criptografado por HTTP para seus servidores C2. Ferramentas de proxy, tuneladores e redirecionadores são comumente usados durante intrusões para ocultar o adversário responsável por uma intrusão. Essas ferramentas oferecem aos adversários vários recursos, incluindo a capacidade de ignorar controles de rede internos, fornecer interfaces de terminal, recursos de criptografia e opções de transferência de arquivos.

Após o acesso inicial, o ator moveu-se lateralmente e colocou o BITSLOTH na forma de uma DLL (flengine.dll) dentro do diretório ProgramData. O ator então executou o programa de criação musical FL Studio (fl.exe). Com base na pilha de chamadas observada associada ao alerta de autoinjeção, confirmamos que o agente da ameaça usou uma técnica de carregamento lateral tradicional usando uma versão assinada do FL Studio.

  c:\windows\syswow64\ntdll.dll!0x770841AC
  c:\windows\syswow64\ntdll.dll!0x7709D287
  c:\windows\syswow64\kernelbase.dll!0x76ED435F
  c:\windows\syswow64\kernelbase.dll!0x76ED42EF
  Unbacked!0x14EAB23
  Unbacked!0x14EA8B6
  c:\programdata\pl studio\flengine.dll!0x74AD2F2E
  c:\programdata\pl studio\fl.exe!0xDB3985
  c:\programdata\pl studio\fl.exe!0xDB3E5E
  c:\programdata\pl studio\fl.exe!0xDB4D3F
  c:\windows\syswow64\kernel32.dll!0x76B267F9
  c:\windows\syswow64\ntdll.dll!0x77077F4D
  c:\windows\syswow64\ntdll.dll!0x77077F1B

Essa pilha de chamadas foi gerada junto com um alerta de injeção de processo e permitiu que os pesquisadores extraíssem uma DLL na memória que foi configurada com proteções de página de Leitura/Gravação/Execução (RWX).

BITSLOTH overview

Durante nossa análise, encontramos várias amostras mais antigas do BITSLOTH demonstrando um histórico de desenvolvimento desde dezembro de 2021. Dentro deste projeto, o desenvolvedor de malware escolheu uma terminologia notável – referindo-se ao BITSLOTH como o componente Slaver e ao servidor de comando e controle como o componente Master . Abaixo está um exemplo de um dos caminhos de arquivo PDB vinculados ao BITSLOTH que descreve isso:

O BITSLOTH não emprega nenhuma ofuscação em torno do fluxo de controle ou qualquer tipo de criptografia de string.

Amostras mais antigas e recentes contêm strings usadas para fins de registro e depuração. Como exemplo, na inicialização, há uma string referenciada na seção somente leitura (.rdata).

Esta sequência de caracteres largos em chinês simplificado se traduz em: Note: There is already a program running, do not run it again…

Esses pequenos trechos contidos no BITSLOTH ajudam a esclarecer o desenvolvimento e a priorização de recursos, juntamente com o que parecem ser instruções do operador. Na versão mais recente, um novo componente de agendamento foi adicionado pelo desenvolvedor para controlar horários específicos em que o BITSLOTH deve operar no ambiente de uma vítima. Esse é um recurso que observamos em outras famílias de malware modernas, como o EAGERBEE.

Análise de código BITSLOTH

BITSLOTH é um backdoor com muitos recursos diferentes, incluindo:

  • Executando e executando comandos
  • Carregando e baixando arquivos
  • Executando enumeração e descoberta
  • Coleta de dados confidenciais por meio de keylogging e captura de tela

Mutex

O BITSLOTH usa um mutex codificado (Global\d5ffff77ff77adad657658) dentro de cada amostra para garantir que apenas uma instância esteja em execução por vez.

Comunicação

O BITSLOTH adota uma arquitetura cliente/servidor tradicional, o desenvolvedor se refere ao cliente como o componente Slaver e ao servidor de comando e controle (C2) como o componente Master . O desenvolvedor incorpora o IP/porta do servidor C2 em cada amostra com uma string carregada frontalmente (rrrr_url). Esta string atua como uma chave para identificar a configuração C2 em si enquanto é executada na memória. Ela é usada ao atualizar o servidor C2.

Abaixo estão as configurações em vários exemplos que nossa equipe observou: o agente da ameaça configura intervalos de IP internos e externos.

rrrr_url216.238.121[.]132:8443
rrrr_url192.168.1[.]125:8443 
rrrr_url192.168.1[.]124:8443
rrrr_url45.116.13[.]178:443

Uma das características definidoras do BITSLOTH é usar o Background Intelligent Transfer Service (BITS) para C2. Embora esse recurso tenha sido projetado para facilitar a transferência de arquivos pela rede entre duas máquinas, ele tem sido usado de forma abusiva por vários grupos patrocinados por estados e continua a passar despercebido contra organizações. Esse meio é atraente para adversários porque muitas organizações ainda têm dificuldades para monitorar o tráfego de rede BITS e detectar trabalhos BITS incomuns.

O Windows tem um recurso de administração do sistema chamado Background Intelligent Transfer Service (BITS), que permite o download e o upload de arquivos para servidores web HTTP ou compartilhamentos SMB. O serviço BITS emprega vários recursos durante o processo de transferência de arquivos, como a capacidade de pausar/retomar transferências, lidar com interrupções de rede, etc. O tráfego BITS geralmente é associado a atualizações de software, sendo, portanto, erroneamente considerado confiável. Muitas organizações não têm visibilidade do tráfego de rede BITS, o que torna esse um alvo atraente.

A API BITS é exposta por meio do Component Object Model (COM) do Windows usando a interface IBackgroundCopyManager . Esta interface fornece recursos para criar novos trabalhos, enumerar trabalhos existentes na fila de transferência e acessar um trabalho específico de uma fila de transferência.

Após a inicialização, o BITSLOTH cancela todos os trabalhos BITS existentes na máquina vítima que correspondem aos seguintes nomes de exibição:

  • WU Client Download
  • WU Client Upload
  • WU Client Upload R

Esses nomes são usados pelo desenvolvedor para mesclar e associar os diferentes trabalhos de transferência BITS com seus respectivos tipos de trabalho BITS. Ao cancelar quaisquer trabalhos existentes, isso permite que a execução do malware opere em um estado limpo.

Abaixo estão as definições da Microsoft que correspondem ao tipo de trabalho do BITS:

  • BG_JOB_TYPE_DOWNLOAD - Especifica que o trabalho baixa arquivos para o cliente.
  • BG_JOB_TYPE_UPLOAD - Especifica que o trabalho carrega um arquivo para o servidor.
  • BG_JOB_TYPE_UPLOAD_REPLY - Especifica que o trabalho carrega um arquivo no servidor e recebe um arquivo de resposta do aplicativo do servidor.

Após cancelar quaisquer trabalhos existentes, o endereço MAC e as informações do sistema operacional são recuperados e colocados em variáveis globais. Um novo thread é criado, configurando a funcionalidade de inicialização automática. Dentro deste tópico, um novo trabalho de download do BITS é criado com o nome (Microsoft Windows).

Este trabalho de download define o URL de destino como http://updater.microsoft[.]com/index.aspx. Embora esse domínio não seja roteável, o BITSLOTH mascara esse trabalho do BITS usando um domínio de aparência benigna como disfarce e, em seguida, usa SetNotifyCmdLine para executar o malware quando o estado de transferência é alterado.

Curiosamente, essa marca de ferramenta exclusiva nos permitiu analisar amostras adicionais que mostram que essa família está em circulação há vários anos.

Neste ponto, o malware foi configurado com persistência por meio de um trabalho BITS chamado Microsoft Windows. Abaixo está uma captura de tela da configuração deste trabalho mostrando a linha de comando de notificação definida para o local BITSLOTH (C:\ProgramData\Media\setup_wm.exe)

Quando o BITSLOTH estiver ativo, ele começará a solicitar instruções do servidor C2 usando o trabalho WU Client Download . Esta URL de solicitação é gerada pela combinação do endereço MAC com uma string codificada (wu.htm). Abaixo está um exemplo de URL:

https://192.168.182.130/00-0C-29-0E-29-87/wu.htm

Em resposta a essa solicitação, o malware receberá uma estrutura de 12 bytes do servidor C2 contendo um ID exclusivo para o trabalho, um ID de comando para o manipulador e um token de resposta. Durante essas trocas de transferências de arquivos, arquivos temporários da máquina da vítima são usados como espaços reservados para armazenar os dados que estão sendo transmitidos de um lado para o outro. O BITSLOTH usa um nome de arquivo que começa com caracteres (wm) acrescentados por caracteres aleatórios.

Funcionalidade de comando

O BITSLOTH usa um manipulador de comandos com funções 35 para processar ações específicas que devem ser tomadas na máquina da vítima. O malware tem a opção de ser configurado com HTTP ou HTTPS e usa um XOR de byte único codificado (0x2) para ofuscar as instruções recebidas do servidor C2. As solicitações de saída contendo os dados coletados da vítima não têm proteções adicionais do próprio malware e são enviadas em texto simples.

Para avançar rapidamente, nossa equipe aproveitou uma implementação útil do Python de um servidor BITS lançado pelo SafeBreach Labs. Ao definir o IP C2 para nosso endereço de loopback dentro de uma VM, isso nos permitiu obter introspecção no tráfego de rede.

Todos os manipuladores se comportam de maneira semelhante, executando uma função primária e, em seguida, gravando os dados retornados pelo manipulador em um arquivo temporário local. Esses arquivos temporários são mapeados para um trabalho de upload do BITS chamado WU Client Upload. Cada manipulador usa sua própria formatação de string para criar um URL de destino exclusivo. Cada nome de arquivo no final do URL usa uma única letra para representar o tipo de dados coletados do host, como P.bin para processos ou S.bin para serviços.

http://192.168.182.130/00-0C-29-0E-29-87/IF/P.bin

Abaixo está um exemplo de captura de tela mostrando o manipulador de enumeração de processos com a formatação de string e como esses dados são vinculados ao trabalho de upload do BITS.

Esse link para os dados exfiltrados também pode ser observado visualizando diretamente o trabalho de upload do BITS. Nas capturas de tela abaixo, podemos ver a URL de destino (servidor C2) para o upload e o arquivo temporário (wm9F0C.tmp) vinculado ao trabalho.

Se olharmos o arquivo temporário, podemos ver as informações do processo coletadas do host da vítima.

Logo após a criação do trabalho de upload, os dados são enviados pela rede por meio de uma solicitação BITS_POST contendo os dados capturados.

Tabela de manipulação de comando

ID do comandoDescrição
0Coletar processos em execução via WTSEnumerateProcessesW
1Obter serviços do Windows via EnumServicesStatusW
2Obter informações do sistema por meio do comando systeminfo
3Recuperar todas as janelas de nível superior via EnumWindows
5Coletar listagens de arquivos
6Baixar arquivo do servidor C2
7Carregar arquivo para o servidor C2
10Terminar a si mesmo
11Defina o modo de comunicação como HTTPS
12Defina o modo de comunicação como HTTP
13Remover persistência
14Reconfigurar persistência
15Cancelar trabalho de download do BITS (WU Client Download)
16Remover persistência e excluir a si mesmo
17Configuração de thread
18Duplicado do manipulador #2
19Excluir arquivo com base no caminho do arquivo
20Excluir pasta com base no caminho do arquivo
21Inicia o shell do terminal usando o redirecionamento stdin/stdout
22Reinicia o manipulador do terminal (#21)
23Executa comando de árvore do Windows
24Atualiza BITSLOTH, exclua a versão antiga
25Desligue a máquina via ExitWindowsEx
26Reinicie a máquina via ExitWindowsEx
27Desconectar o usuário da máquina via ExitWindowsEx
28Encerrar processo com base no identificador de processo (PID)
29Recupera informações adicionais por meio do comando msinfo32
30Executar arquivo individual via ShellExecuteW
34Crie um novo diretório via CreateDirectoryW
41Carregar dados para o servidor C2
42Verifica o driver de captura via capGetDriverDescriptionW
43Tire capturas de tela da área de trabalho da máquina da vítima
44Registre as teclas digitadas na máquina da vítima
45Parar de gravar imagens de captura de tela
46Parar a funcionalidade do keylogger

Funcionalidade de backdoor

O BITSLOTH inclui uma ampla gama de recursos pós-comprometimento para um adversário operar no ambiente de uma vítima. Vamos nos concentrar nas capacidades mais significativas, agrupando-as em diferentes categorias.

Discovery/enumeration

Uma parte dos manipuladores do BITSLOTH se concentra em recuperar e enumerar dados de máquinas vítimas. Isso inclui:

  • Recuperando informações do processo via WTSEnumerateProcessesW
  • Coletando serviços do Windows via EnumServicesStatusW
  • Enumerando todas as janelas de nível superior via EnumWindows com uma função de retorno de chamada
  • Recuperando informações do sistema por meio de utilitários do Windows, como systeminfo e msinfo32

Em muitos dos manipuladores, a versão local é configurada como chs (chinês - simplificado).

O BITSLOTH tem algumas funções de enumeração personalizadas vinculadas à recuperação de listagens de arquivos e à realização de pesquisas em árvores de diretórios. O manipulador de listagem de arquivos recebe um parâmetro personalizado do operador para direcionar locais de pasta específicos de interesse:

  • GET_DESKDOPCSIDL_DESKTOPDIRECTORY (Área de Trabalho)
  • GET_BITBUCKET -> CSIDL_BITBUCKET (Lixeira)
  • GET_PERSONAl -> CSIDL_MYDOCUMENTS (Meus Documentos)

O BITSLOTH também tem a capacidade de coletar listagens inteiras de diretórios/arquivos na máquina para cada arquivo usando o utilitário de árvore do Windows. Este manipulador faz um loop no alfabeto para cada letra de unidade, onde os dados são salvos localmente em um arquivo temporário chamado aghzyxklg.

Os dados da árvore são então compactados e enviados ao servidor C2 com uma extensão .ZIP. Abaixo está um exemplo dos dados coletados. Esses dados podem ajudar a identificar arquivos confidenciais ou fornecer mais contexto sobre o ambiente de destino.

Coleta

Em termos de coleta, existem alguns manipuladores usados para reunir informações ativamente. Eles se concentram na captura de telas da área de trabalho e na execução da funcionalidade de keylogging.

O BITSLOTH implementa uma função leve usada para identificar dispositivos de gravação de captura. Esta parece ser uma técnica para verificar uma câmera usando a API do Windows (capGetDriverDescriptionW).

O BITSLOTH tem a capacidade de fazer capturas de tela com base em parâmetros fornecidos pelo operador. A entrada para esta função usa um separador (||) onde o operador fornece o número de segundos do intervalo de captura e a contagem de captura. As imagens são armazenadas como arquivos BMP com um nome codificado ciakfjoab e compactadas com o algoritmo DEFLATE usando um arquivo .ZIP . Esses arquivos compactados com registro de data e hora são então enviados para o servidor C2.

O manipulador aproveita APIs comuns de captura de tela, como CreateCompatibleBitmap e BitBlt de Gdi32.dll.

Para registrar pressionamentos de tecla, o BITSLOTH usa técnicas tradicionais monitorando pressionamentos de tecla usando GetAsyncKeyState/GetKeyState. O manipulador tem um argumento para o número de segundos para executar o keylogging. Esses dados também são compactados em um arquivo .ZIP e enviados para o servidor C2.

Execução / Manutenção

O BITSLOTH tem vários recursos de manutenção e execução de arquivos, bem como funcionalidades de backdoor padrão, como:

  • Capacidade de executar arquivos de forma independente via ShellExecuteW
  • Capacidade do terminal do Windows de executar comandos e ler dados de volta por meio de pipes
  • Crie diretórios, execute reinicializações, desligue a máquina, encerre processos
  • Executar upload e download de arquivos entre o servidor C2
  • Modificar a configuração do BITSLOTH, como modos de comunicação, atualizar URL C2, desativar recursos de keylogging/screenshot

BITSLOTH pivots

O BITSLOTH parece estar ativamente implantado. Identificamos outro servidor BITSLOTH C2 (15.235.132[.]67) usando a mesma porta (8443) com o mesmo certificado SSL usado em nossa intrusão.

While it’s not exactly clear who’s behind BITSLOTH, there was a large amount of activity of VirusTotal uploads occurring on December 12, 2021. With around 67 uploads over 24 hours from one submitter (1fcc35ea), we suspect someone linked to this project was validating detections, making modifications, and uploading different versions of BITSLOTH to VirusTotal. One sample was packed with VMProtect, others stripped of functionality, some uploads were debug builds, etc.

Muito tempo se passou desde então, mas é interessante ver essa família aparecer em uma intrusão recente. Seja qual for o objetivo por trás desse malware, é surpreendente que essa família tenha permanecido escondida por tantos anos.

REF 8747 através de 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.

[h4] Táticas As 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.

Detectando REF8747

Detecção

As seguintes regras de detecção e eventos de prevenção de comportamento foram observados durante a análise deste conjunto de intrusão:

Assinaturas YARA

YARA

O Elastic Security criou regras YARA para identificar essa atividade. Abaixo estão as regras YARA para identificar BITSLOTH:

rule Windows_Trojan_BITSLOTH_05fc3a0a {
    meta:
        author = "Elastic Security"
        creation_date = "2024-07-16"
        last_modified = "2024-07-18"
        os = "Windows"
        arch = "x86"
        threat_name = "Windows.Trojan.BITSLOTH"
  	 license = "Elastic License v2"

    strings:
        $str_1 = "/%s/index.htm?RspID=%d" wide fullword
        $str_2 = "/%s/%08x.rpl" wide fullword
        $str_3 = "/%s/wu.htm" wide fullword
        $str_4 = "GET_DESKDOP" wide fullword
        $str_5 = "http://updater.microsoft.com/index.aspx" wide fullword
        $str_6 = "[U] update error..." wide fullword
        $str_7 = "RMC_KERNEL ..." wide fullword
        $seq_global_protocol_check = { 81 3D ?? ?? ?? ?? F9 03 00 00 B9 AC 0F 00 00 0F 46 C1 }
        $seq_exit_windows = { 59 85 C0 0F 84 ?? ?? ?? ?? E9 ?? ?? ?? ?? 6A 02 EB ?? 56 EB }
    condition:
        2 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.

ObservableTipoNomeReferência
4a4356faad620bf12ff53bcfac62e12eb67783bd22e66bf00a19a4c404bf45dfSHA-256s.dllBITSLOTH
dfb76bcf5a3e29225559ebbdae8bdd24f69262492eca2f99f7a9525628006d88SHA-256125.exeBITSLOTH
4fb6dd11e723209d12b2d503a9fcf94d8fed6084aceca390ac0b7e7da1874f50SHA-256setup_wm.exeBITSLOTH
0944b17a4330e1c97600f62717d6bae7e4a4260604043f2390a14c8d76ef1507SHA-2561242.exeBITSLOTH
0f9c0d9b77678d7360e492e00a7fa00af9b78331dc926b0747b07299b4e64afdSHA-256setup_wm.exeBITSLOTH (VMProtect)
216.238.121[.]132endereço-ipv4Servidor BITSLOTH C2
45.116.13[.]178endereço-ipv4Servidor BITSLOTH C2
15.235.132[.]67endereço-ipv4Servidor BITSLOTH C2
http ://updater.microsoft.com/index.aspxIndicador de arquivo BITSLOTH
updater.microsoft.comIndicador de arquivo BITSLOTH

Referências

Os seguintes itens foram referenciados ao longo da pesquisa acima:

Sobre o Elastic Security Labs

O Elastic Security Labs é o braço de inteligência de ameaças da Elastic Security dedicado a criar mudanças positivas no cenário de ameaças. O Elastic Security Labs fornece pesquisas publicamente disponíveis sobre ameaças emergentes com uma análise dos objetivos estratégicos, operacionais e táticos do adversário e, em seguida, integra essa pesquisa com os recursos integrados de detecção e resposta do Elastic Security.

Siga o Elastic Security Labs no Twitter @elasticseclabs e confira nossa pesquisa em www.elastic.co/security-labs/.

Compartilhe este artigo