Preâmbulo
In August 2024, a novel macOS malware named "BANSHEE Stealer" emerged, catching the attention of the cybersecurity community. Reportedly developed by Russian threat actors, BANSHEE Stealer was introduced on an underground forum and is designed to function across both macOS x86_64 and ARM64 architectures.
Este malware representa um risco grave para usuários do macOS, tendo como alvo informações vitais do sistema, dados do navegador e carteiras de criptomoedas.
Com um alto preço de assinatura mensal de US$ 3.000, o BANSHEE Stealer se destaca no mercado, principalmente em comparação a ladrões conhecidos como o AgentTesla.
À medida que o macOS se torna cada vez mais um alvo principal para criminosos cibernéticos, o BANSHEE Stealer ressalta a crescente presença de malware específico para macOS. Esta análise explora os detalhes técnicos do BANSHEE Stealer, com o objetivo de ajudar a comunidade a entender seu impacto e se manter informada sobre ameaças emergentes.
Principais conclusões
- O BANSHEE Stealer destaca o número crescente de amostras de malware para macOS à medida que o sistema operacional se torna um alvo mais atraente para ameaças cibernéticas.
- O preço mensal de US$ 3.000 do BANSHEE Stealer é consideravelmente alto em comparação aos stealers baseados no Windows.
- O BANSHEE Stealer tem como alvo uma ampla gama de navegadores, carteiras de criptomoedas e cerca de 100 extensões de navegador, o que o torna uma ameaça altamente versátil e perigosa.
Análise de malware
O malware que analisamos nesta pesquisa continha todos os símbolos C++, o que é interessante, pois podemos adivinhar a estrutura do código do projeto conhecendo esses nomes de arquivos de código-fonte, como visto na imagem abaixo. Observando as funções de inicialização de variáveis globais geradas em C++, podemos encontrar valores definidos automaticamente/manualmente pelo usuário durante o processo de compilação, como IP remoto, chave de criptografia, ID de compilação, etc.
A tabela a seguir resume os nomes de arquivos .cpp
vazados por meio dos símbolos no binário.
Nome do arquivo | Descrição |
---|---|
Controller.cpp | Gerencia tarefas de execução principais, incluindo medidas antidepuração, verificações de linguagem, coleta de dados e exfiltração. |
Browsers.cpp | Lida com a coleta de dados de vários navegadores da web. |
System.cpp | Executa AppleScripts para coletar informações do sistema e realizar phishing de senha. |
Tools.cpp | Fornece funções utilitárias para criptografia, criação de diretórios, compactação etc. |
Wallets.cpp | Responsável por coletar dados de carteiras de criptomoedas. |
Depurador, detecção de VM e verificações de linguagem
BANSHEE Stealer usa técnicas básicas para evitar a detecção. Ele detecta depuração utilizando a API sysctl .
Para detecção de virtualização, ele executa o comando system_profiler SPHardwareDataType | grep 'Model Identifier'
para determinar se a string Virtual
aparece no identificador do modelo de hardware, o que sugere uma máquina virtual. Esses métodos são relativamente simples e podem ser facilmente contornados por sandboxes avançados e analistas de malware.
Além disso, ele analisa o idioma canônico preferido pelo usuário retornado da API CFLocaleCopyPreferredLanguages e procura a string ru
. Essa tática ajuda o malware a evitar infectar sistemas onde o russo é o idioma principal.
Coleta de informações do sistema
Senha do usuário
O malware cria um prompt de senha Osascript com uma caixa de diálogo informando que, para iniciar o aplicativo, você precisa atualizar as configurações do sistema. Por favor, digite sua senha.
Quando o usuário digitar a senha, ela será validada usando o comando dscl executando dscl Local/Default -authonly <username> <password>
Se válida, a senha será gravada no seguinte arquivo /Users/<username>/password-entered
.
Essas credenciais podem ser utilizadas para descriptografar os dados do chaveiro armazenados no sistema, concedendo acesso a todas as senhas salvas.
Coleta de informações de arquivo, software e hardware
A função System::collectSystemInfo
coleta informações do sistema e as serializa em um objeto JSON. Ele executa o comando system_profiler SPSoftware DataType SPHardwareDataType
, que fornece detalhes sobre o software e o hardware do sistema. Ele obtém o IP público da máquina solicitando-o de freeipapi.com
por meio do comando cURL
integrado do macOS.
O arquivo JSON será salvo em <temporary_path>/system_info.json
O BANSHEE stealer executa AppleScripts; curiosamente, ele grava os AppleScripts no mesmo arquivo /tmp/tempAppleScript
.
O primeiro script a ser executado primeiro silencia o som do sistema com o comando osascript -e 'set volume with output muted'
. Em seguida, ele coleta vários arquivos do sistema, listados abaixo:
- Biscoitos do Safari
- Banco de dados de notas
- Arquivos com as seguintes extensões
.txt
,.docx
,.rtf
,.doc
,.wallet
,.keys
ou.key
das pastas Desktop e Documentos.
Despejar senhas de chaveiro
Ele copia o chaveiro do sistema /Library/Keychains/login.keychain-db
para <temporary_path>/Passwords
Coleção de navegadores
O BANSHEE coleta dados de 9 navegadores diferentes atualmente, incluindo histórico do navegador, cookies, logins, etc.:
- Cromo
- Raposa de fogo
- Corajoso
- Edge
- Vivaldi
- Yandex
- Ópera
- OperaGX
Em relação ao Safari, apenas os cookies são coletados pelo script AppleScript para a versão atual.
Além disso, dados de aproximadamente 100 plugins de navegador são coletados da máquina. Uma lista desses IDs de extensão é fornecida no final da postagem do blog.
Os arquivos coletados são salvos em <temporary_path>/Browsers
.
Coleção de carteiras
- Exodus
- Eletro
- Coinomi
- Guarda
- Carteira Wasabi
- Atômico
- Livro-razão
As carteiras coletadas são armazenadas em <temporary_path>/Wallets
.
Exfiltração
Depois que o malware termina de coletar os dados, ele primeiro compacta a pasta temporária em ZIP usando o comando ditto
. O arquivo zip é então criptografado com XOR e codificado em base64 e enviado por meio de uma solicitação post para a URL: http://45.142.122[.]92/send/
com o comando cURL integrado.
Detecção de comportamento
- Acesso ao arquivo da carteira criptografada por binário não assinado ou não confiável
- Dados de credenciais do navegador da Web acessados por processo não assinado ou não confiável
- Osascript Payload Drop e Execução
- Possíveis credenciais de phishing via Osascript
Regra YARA
O Elastic Security criou regras YARA para identificar essa atividade. Abaixo estão as regras do YARA para identificar o malware BANSHEE:
rule Macos_Infostealer_Banshee {
meta:
author = "Elastic Security"
creation_date = "2024-08-13"
last_modified = "2024-08-13"
os = "MacOS"
arch = "x86, arm64"
category_type = "Infostealer"
family = "Banshee"
threat_name = "Macos.Infostealer.Banshee"
license = "Elastic License v2"
strings:
$str_0 = "No debugging, VM, or Russian language detected." ascii fullword
$str_1 = "Remote IP: " ascii fullword
$str_2 = "Russian language detected!" ascii fullword
$str_3 = " is empty or does not exist, skipping." ascii fullword
$str_4 = "Data posted successfully" ascii fullword
$binary_0 = { 8B 55 BC 0F BE 08 31 D1 88 08 48 8B 45 D8 48 83 C0 01 48 89 45 D8 E9 }
$binary_1 = { 48 83 EC 60 48 89 7D C8 48 89 F8 48 89 45 D0 48 89 7D F8 48 89 75 F0 48 89 55 E8 C6 45 E7 00 }
condition:
all of ($str_*) or all of ($binary_*)
}
Conclusão
BANSHEE Stealer é um malware baseado em macOS que pode coletar muitos dados do sistema, navegadores, carteiras de criptomoedas e diversas extensões de navegador. Apesar de suas capacidades potencialmente perigosas, a falta de ofuscação sofisticada do malware e a presença de informações de depuração facilitam a dissecação e a compreensão por parte dos analistas. Embora o BANSHEE Stealer não seja muito complexo em seu design, seu foco em sistemas macOS e a amplitude de dados que ele coleta o tornam uma ameaça significativa que exige atenção da comunidade de segurança cibernética.
Observables
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 |
---|---|---|---|
11aa6eeca2547fcf807129787bec0d576de1a29b56945c5a8fb16ed8bf68f782 | SHA-256 | Ladrão de BANSHEE | |
45.142.122[.]92 | endereço-ipv4 | Ladrão de BANSHEE C2 |