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. Este malware foi encontrado durante um grupo de atividade recente rastreado como REF8747.
BITSLOTH em resumo
O 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. Esse malware não foi documentado publicamente até onde sabemos e, embora não esteja claro quem está por trás do malware, ele está em desenvolvimento há vários anos com base no rastreamento de versões distintas carregadas no VirusTotal.
A iteração mais atual do backdoor no momento desta publicação tem 35 funções de manipulador, incluindo keylogging e recursos de 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 nesses recursos, 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, esta foi 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 mecanismos primários 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á shellcode personalizado, colocando-o em um arquivo (main.txt). Esse 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 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 fazer proxy de 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, bem como opções de transferência de arquivos.
Após o acesso inicial, o ator se moveu lateralmente e soltou 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 ator da ameaça usou uma técnica tradicional de side-loading 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 definida com proteções de página de Leitura/Gravação/Execução (RWX).
Visão geral do BITSLOTH
Durante nossa análise, encontramos várias amostras BITSLOTH mais antigas demonstrando um registro de desenvolvimento desde dezembro de 2021. Dentro deste projeto, o desenvolvedor de malware escolheu uma terminologia notável – referindo-se ao BITSLOTH como o Slaver
componente e ao servidor de comando e controle como o Master
componente. 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 propósitos 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 lançar luz sobre 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 em um ambiente de 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 Slaver
componente e ao servidor de comando e controle (C2) como o Master
componente. O desenvolvedor incorpora o IP/porta do servidor C2 em cada amostra com uma string de carregamento frontal ( rrrr_url
). Essa string atua como uma chave para identificar a configuração C2 em si mesma enquanto é executada na memória, isso é usado 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
Um dos recursos definidores 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 foi abusado por vários grupos patrocinados pelo estado e continua a passar despercebido contra organizações. Esse meio é atraente para adversários porque muitas organizações ainda lutam 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 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, portanto, erroneamente implícito como confiável. Muitas organizações não têm visibilidade do tráfego de rede BITS, o que o torna um alvo atraente.
A API BITS é exposta por meio do Component Object Model (COM) do Windows usando a interface IBackgroundCopyManager . Essa 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 misturar 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 a partir de 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 thread, um novo trabalho de download do BITS é criado com o nome ( Microsoft Windows
).
Este trabalho de download define a URL de destino para http://updater.microsoft[.]com/index.aspx
. Embora este domínio não seja roteável, o BITSLOTH mascara este trabalho do BITS usando um domínio de aparência benigna como uma capa 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
)
Uma vez que o BITSLOTH se torna ativo, ele começará a solicitar instruções do servidor C2 usando o WU Client Download
job. Esta URL de solicitação é gerada pela combinação do endereço MAC com uma string codificada ( wu.htm
). Abaixo está um URL de exemplo:
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, ID de comando para o manipulador e um token de resposta. Ao longo dessas trocas de transferências de arquivos, arquivos temporários da máquina da vítima são usados como marcadores de posição 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
) anexados por caracteres aleatórios.
Funcionalidade de comando
O BITSLOTH usa um manipulador de comando com 35 funções 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 de entrada do servidor C2. As solicitações de saída contendo os dados coletados da vítima não têm proteções adicionais pelo próprio malware e são enviadas em texto simples.
Para se mover rápido, 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 forma semelhante, executando uma função primária e, em seguida, gravando os dados retornados do 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 uma URL de destino exclusiva. Cada nome de arquivo no final da URL usa uma única letra para representar o tipo de dados coletados do host, como P.bin
para processos ou S.bin
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.
Este link para os dados exfiltrados também pode ser observado visualizando o trabalho de upload do BITS diretamente. 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 comando | Descrição |
---|---|
0 | Coletar processos em execução via WTSEnumerateProcessesW |
1 | Obter serviços do Windows via EnumServicesStatusW |
2 | Obter informações do sistema via systeminfo comando |
3 | Recuperar todas as janelas de nível superior via EnumWindows |
5 | Coletar listagens de arquivos |
6 | Baixar arquivo do servidor C2 |
7 | Carregar arquivo para o servidor C2 |
10 | Terminar a si mesmo |
11 | Defina o modo de comunicação como HTTPS |
12 | Defina o modo de comunicação como HTTP |
13 | Remover persistência |
14 | Reconfigurar persistência |
15 | Cancelar trabalho de download do BITS ( WU Client Download ) |
16 | Remover persistência e excluir a si mesmo |
17 | Configuração de thread |
18 | Duplicado do manipulador #2 |
19 | Excluir arquivo com base no caminho do arquivo |
20 | Excluir pasta com base no caminho do arquivo |
21 | Inicia o shell do terminal usando o redirecionamento stdin/stdout |
22 | Reinicia o manipulador do terminal (#21) |
23 | Executa comando de árvore do Windows |
24 | Atualiza BITSLOTH, exclua a versão antiga |
25 | Desligue a máquina via ExitWindowsEx |
26 | Reinicie a máquina via ExitWindowsEx |
27 | Desconectar o usuário da máquina via ExitWindowsEx |
28 | Encerrar processo com base no identificador de processo (PID) |
29 | Recupera informações adicionais por meio de msinfo32 comando |
30 | Executar arquivo individual via ShellExecuteW |
34 | Crie um novo diretório via CreateDirectoryW |
41 | Carregar dados para o servidor C2 |
42 | Verifica o driver de captura via capGetDriverDescriptionW |
43 | Tire capturas de tela da área de trabalho da máquina da vítima |
44 | Registre as teclas digitadas na máquina da vítima |
45 | Parar de gravar imagens de captura de tela |
46 | Parar a funcionalidade do keylogger |
Funcionalidade de backdoor
O BITSLOTH inclui uma ampla gama de capacidades pós-comprometimento para um adversário operar dentro de um ambiente de vítima. Vamos nos concentrar nas capacidades mais significativas, agrupando-as em diferentes categorias.
Descoberta/enumeração
Uma parte dos manipuladores BITSLOTH é focada 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
emsinfo32
Em muitos dos manipuladores, a versão local é configurada para chs
(chinês – simplificado).
O BITSLOTH tem algumas funções de enumeração personalizadas vinculadas à recuperação de listagens de arquivos e à execução de pesquisas em árvores de diretórios. O manipulador de listagem de arquivos pega um parâmetro personalizado do operador para direcionar locais de pastas específicas de interesse:
- GET_DESKDOP → CSIDL_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 pelo 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 para o servidor C2 com uma extensão .ZIP. Abaixo está um exemplo dos dados coletados. Esses dados podem ajudar a localizar arquivos sensíveis ou fornecer mais contexto sobre o ambiente de destino.
Coleção
Em termos de coleta, há alguns manipuladores usados para reunir informações ativamente. Eles são centrados em capturar capturas de tela do desktop e executar a funcionalidade de keylogging.
O BITSLOTH implementa uma função leve usada para identificar dispositivos de captura e gravação. Esta parece ser uma técnica para verificar uma câmera usando a API do Windows ( capGetDriverDescriptionW ).
O BITSLOTH tem a capacidade de tirar 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 .ZIP
arquivo. 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 .ZIP
arquivo 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
Pivôs BITSLOTH
O BITSLOTH parece estar sendo implantado ativamente. Identificamos outro servidor BITSLOTH C2 ( 15.235.132[.]67
) usando a mesma porta ( 8443
) com o mesmo certificado SSL usado em nossa intrusão.
Embora não esteja exatamente claro quem está por trás do BITSLOTH, houve uma grande quantidade de atividade de uploads do VirusTotal ocorrendo em 12 de dezembro de 2021. Com cerca de 67 uploads em 24 horas de um remetente ( 1fcc35ea
), suspeitamos que alguém vinculado a este projeto estava validando detecções, fazendo modificações e enviando diferentes versões do BITSLOTH para o VirusTotal. Uma amostra foi compactada com VMProtect, outras foram despojadas de funcionalidade, alguns uploads eram compilações de depuração, 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 sob o radar por tantos anos.
REF 8747 através do 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.
- Empregos BITS
- Descoberta de informações do sistema
- Fluxo de execução do Hijack: carregamento lateral de DLL
- Captura de tela
- Captura de entrada: Keylogging
- Procuraçã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:
- Persistência via BITS Job Notify Cmdline
- Tentativa de acesso LSASS via desvio de PPL
- Tentativa de acesso LSASS de um executável não assinado
- Relação suspeita entre pais e filhos
- Acesso de credencial por meio de utilitários conhecidos
- Injeção de Shellcode
Assinaturas YARA
- Windows.Hacktool.Mimikatz
- Windows.Trojan.BITSloth
- Windows.Hacktool.Iox
- Windows.Hacktool.Rubeus
- Windows.Hacktool.Certificar
- Windows.Hacktool.RingQ
- Windows.Hacktool.DeusPotato
- Multi.Hacktool.Canoa
YARA
A 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.
Observável | Tipo | Nome | Referência |
---|---|---|---|
4a4356faad620bf12ff53bcfac62e12eb67783bd22e66bf00a19a4c404bf45df | SHA-256 | s.dll | BITSLOTH |
dfb76bcf5a3e29225559ebbdae8bdd24f69262492eca2f99f7a9525628006d88 | SHA-256 | 125.exe | BITSLOTH |
4fb6dd11e723209d12b2d503a9fcf94d8fed6084aceca390ac0b7e7da1874f50 | SHA-256 | setup_wm.exe | BITSLOTH |
0944b17a4330e1c97600f62717d6bae7e4a4260604043f2390a14c8d76ef1507 | SHA-256 | 1242.exe | BITSLOTH |
0f9c0d9b77678d7360e492e00a7fa00af9b78331dc926b0747b07299b4e64afd | SHA-256 | setup_wm.exe | BITSLOTH (VMProtect) |
216.238.121[.]132 | endereço-ipv4 | Servidor BITSLOTH C2 | |
45.116.13[.]178 | endereço-ipv4 | Servidor BITSLOTH C2 | |
15.235.132[.]67 | endereço-ipv4 | Servidor BITSLOTH C2 | |
http://updater.microsoft.com/index.aspx | Indicador de arquivo BITSLOTH | ||
atualizador.microsoft.com | Indicador de arquivo BITSLOTH |
Referências
Os seguintes itens foram referenciados ao longo da pesquisa acima: