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 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 por meio do comando systeminfo |
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 do comando msinfo32 |
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 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
emsinfo32
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_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 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.
- Trabalhos de BITS
- Descoberta de informações do sistema
- Fluxo de execução do Hijack: carregamento lateral de DLL
- Captura de tela
- Captura de entrada: Keylogging
- Proxy
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
- Credential Access via Known Utilities (acesso a credenciais via utilitários conhecidos)
- Injeção de Shellcode
Assinaturas YARA
- Windows.Hacktool.Mimikatz
- Windows.Trojan.BITSloth
- Windows.Hacktool.Iox
- Windows.Hacktool.Rubeus
- Windows.Hacktool.Certify
- Windows.Hacktool.RingQ
- Windows.Hacktool.GodPotato
- Multi.Hacktool.Stowaway
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.
Observable | 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 | ||
updater.microsoft.com | Indicador de arquivo BITSLOTH |
Referências
Os seguintes itens foram referenciados ao longo da pesquisa acima:
- https://github.com/SafeBreach-Labs/SimpleBITSServer/tree/master
- https://github.com/T4y1oR/RingQ
- https://github.com/EddieIvan01/iox
- https://github.com/ph4ntonn/Stowaway/
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/.