FamousSparrow: grupo cibercriminoso direciona ataques ao setor hoteleiro

O FamousSparrow é um grupo APT que também aproveitou a vulnerabilidade ProxyLogon em março deste ano e tem como alvo hotéis, governos e empresas privadas em vários países ao redor do mundo, incluindo o Brasil e a Guatemala.

O FamousSparrow é um grupo APT que também aproveitou a vulnerabilidade ProxyLogon em março deste ano e tem como alvo hotéis, governos e empresas privadas em vários países ao redor do mundo, incluindo o Brasil e a Guatemala.

Os pesquisadores da ESET descobriram um novo grupo de espionagem cibernética que tem como alvo hotéis, governos e empresas privadas em todo o mundo. Batizamos esse grupo de FamousSparrow e acreditamos que ele esteja ativo desde pelo menos 2019.

Durante nossa pesquisa, ao revisar os dados de telemetria, descobrimos que o FamousSparrow explorava vulnerabilidades do Microsoft Exchange, conhecidas como ProxyLogon, que descrevemos de forma detalhada em post publicado em março deste ano. É importante destacar que essa vulnerabilidade de execução remota de código também foi usada por mais de 10 grupos APT para assumir o controle dos servidores de e-mail do Exchange em todo o mundo. De acordo com a telemetria da ESET, o FamousSparrow começou a explorar as vulnerabilidades no último dia 3 de março, um dia após o patch ser lançado, portanto, é outro grupo APT que teve acesso ao código da vulnerabilidade ProxyLogon em março de 2021.

Neste post, abordamos a vinculação do FamousSparrow e a vitimologia do grupo. Em seguida, apresentamos uma análise técnica detalhada do principal backdoor do grupo, que chamamos de SparrowDoor.

Explicação sobre a vinculação do grupo

Acreditamos que o grupo FamousSparrow seja atualmente o único usuário do backdoor SparrowDoor (que abordaremos com mais detalhes neste post). O grupo também usa duas versões personalizadas do Mimikatz (veja a seção Indicadores de Comprometimento desta publicação) que podem ser utilizadas para vincular incidentes a esse grupo.

Embora consideremos que o FamousSparrow seja um grupo que funciona de forma independente, encontramos conexões com outros grupos APT bem conhecidos. Em um dos casos analisados, os atacantes implantaram uma variante do Motnug, um loader usado pelo SparklingGoblin. Em outro caso, encontramos um Metasploit que rodava em uma máquina comprometida pelo FamousSparrow usando cdn.kkxx888666[.]com como servidor C&C. Este domínio está relacionado a um grupo conhecido como DRBControl.

Vitimologia

O grupo está ativo desde pelo menos agosto de 2019 e tem direcionado seus ataques principalmente a hotéis em vários países. Além disso, observamos algumas vítimas de outros setores, como órgãos governamentais, organizações internacionais, empresas de engenharia e escritórios de advocacia. Observamos vítimas do FamousSparrow nos seguintes países:

  • Brasil
  • Burkina faso
  • África do Sul
  • Canadá
  • Israel
  • França
  • Guatemala
  • Lituânia
  • Arábia Saudita
  • Taiwan
  • Tailândia
  • Reino Unido
Figure 1. Geographic distribution of FamousSparrow targets

Imagem 1. Distribuição geográfica das vítimas do FamousSparrow.

Vetor de comprometimento

Em alguns casos, foi possível observar que o vetor de comprometimento inicial usado pelo FamousSparrow foram aplicativos da web vulneráveis e ​​expostos à internet. Acreditamos que o FamousSparrow explorou vulnerabilidades conhecidas de execução remota de código no Microsoft Exchange (incluindo o ProxyLogon em março de 2021), Microsoft SharePoint e Oracle Opera (um software corporativo para gerenciamento de hotéis). Todas essas vulnerabilidades foram utilizadas para propagar várias amostras maliciosas entre os sistemas comprometidos.

Depois que o servidor é comprometido, os atacantes usam diferentes ferramentas personalizadas:

  • Uma variante do Mimikatz
  • Um pequeno utilitário que entrega o ProcDump ao disco e o utiliza para despejar o processo lsass, provavelmente para coletar informações confidenciais na memória, como credenciais de login.
  • Nbtscan, um scanner da NetBIOS
  • Um loader para o backdoor SparrowDoor

Por meio de nossa telemetria, conseguimos recuperar apenas o componente do loader (SHA-1: E2B0851E2E281CC7BCA3D6D9B2FA0C4B7AC5A02B). Também encontramos um loader muito semelhante no VirusTotal (SHA-1: BB2F5B573AC7A761015DAAD0B7FF03B294DC60F) que nos permitiu encontrar os componentes ausentes, incluindo o SparrowDoor.

O backdoor SparrowDoor

Loader

O SparrowDoor é inicialmente carregado por meio de uma DLL através de uma técnica chamada DLL search order hijacking, que permite manipular solicitações de pesquisa para o carregamento da DLL. Para isso, a ameaça usa três elementos: um executável K7 Computing Indexer.exe legítimo) usado como host para o sequestro da DLL, uma DLL maliciosa (K7UI.dll) e um shellcode criptografado (MpSvc.dll). Todos esses elementos são alojados no %PROGRAMDATA%\Software\. É possível supor que o argumento usado na linha de comando junto com a execução inicial do SparrowDoor, para configurar a persistência, nada mais é do que -i, -k ou -d (as funcionalidades desses três argumentos são explicadas a seguir). Depois que a persistência é configurada, o SparrowDoor é executado com o argumento de linha de comando -i. Veja a Imagem 2 e confira uma breve descrição do processo de carregamento inicial. Caso queira entender o processo de carregamento de forma mais detalhada, continue lendo!

Figure 2. SparrowDoor staging

Imagem 2. O SparrowDoor em ação.

O executável legítimo, Indexer.exe, precisa da biblioteca K7UI.dll para funcionar. Portanto, o sistema operacional procura o arquivo DLL nos diretórios prescritos na ordem de carregamento. Como o diretório onde o arquivo Indexer.exe está armazenado tem a prioridade mais alta na ordem de carregamento, ele é exposto à DLL search order hijacking. E é exatamente assim que o malware é carregado. O Indexer.exe carrega o K7UI.dll malicioso, aplica patch ao código no Indexer.exe (de call WinMain para jmp K7UI.0x100010D0) e retorna para o Indexer.exe. Como resultado disso, o Indexer.exe acaba executando uma sub-rotina em K7UI.dll (localizada na seção K7UI.dll) em vez de chamar o WinMain. Nos referimos a essa sub-rotina como launcher. A função do launcher é carregar o MpSvc.dll (o shellcode criptografado) na memória a partir do diretório que também armazena o Indexer.exe, descriptografa o conteúdo e, em seguida, executa o shellcode.

O shellcode (MpSvc.dll) é criptografado usando uma chave XOR de quatro bytes criada a partir dos primeiros quatro bytes do arquivo.

O shellcode MpSvc.dll carrega várias bibliotecas responsáveis ​​por construir uma estrutura PE e localiza os endereços das funções que serão usadas. Depois disso, ele aloca memória RWX e copia vários locais no shellcode (para construir a estrutura PE). Ele também resolve a importação de várias funções de diferentes bibliotecas. Para finalizar, ele executa o PE do backdoor recém-construído a partir do ponto de entrada. Curiosamente, essa imagem reconstruída do executável não tem cabeçalhos PE, como mostrado na Imagem 2, então o loader executa um backdoor saltando para o ponto de entrada para um valor de deslocamento hardcodeado dentro da memória alocada.

Figure 3. The PE header is missing in the newly built backdoor from the MpSvc.dll shellcode

Imagem 3. Falta o cabeçalho PE no backdoor recém-criado do shellcode MpSvc.dll.

Backdoor

Os argumentos ao backdoor são herdados dos argumentos passados ​​para o Indexer.exe ou qualquer outro binário que obtenha o shellcode/backdoor injetado. As tarefas realizadas pelo backdoor após a especificação de um argumento podem ser vistas na Tabela 1.

Tabela 1. Ações realizadas segundo os argumentos de linha de comando fornecidos para o SparrowDoor.

ArgumentAction
No argument or not matching the followingPersistence is set through the registry Run key and a service, which is created and started using the configuration data (described in the next section) hardcoded in the binary. Finally, the backdoor is restarted with the -i switch.
-iThe backdoor is restarted with the -k switch.
-kThe backdoor interpreter (described later) is called with a kill switch.
-dThe backdoor interpreter is called without a kill switch.

Nota:

  1. O kill switch dá ao backdoor o privilégio de desinstalar ou reiniciar o SparrowDoor.
  2. O interpretador do backdoor é chamado independentemente do argumento usado porque sempre terminará com um argumento -k ou -d.

Dados de configuração

A configuração se encontra no binário e é descriptografada usando a chave XOR multibyte ^&32yUgf. A configuração tem o seguinte formato:

Os valores descriptografados são apresentados na Tabela 2.

Tabela 2. Os pares key-value de configuração junto com uma descrição de sua finalidade.

KeyValuePurpose
domaincredits.offices-analytics[.]comC&C server domain
useruserProxy settings used to connect to C&C server
passpass
ip127.1.1.1
port8080
serviceNameWSearchIndexInformation used for creating a service to set up persistence. Also, note that the serviceName is used as the value name under the Run key in the registry
serviceDisplayNameWindows Search Index
serviceDescriptionProvides content indexing, property caching, and search results for files, e-mail, and other content.

As conexões podem ocorrer por meio de um proxy ou não, e se conectar ao servidor C&C pela porta 443 (HTTPS). Portanto, a comunicação deve ser criptografada usando TLS. Durante a primeira tentativa de contato com o servidor C&C, o SparrowDoor verifica se é possível estabelecer uma conexão sem usar um proxy e, se caso não seja possível, os dados são enviados por meio de um proxy. Todos os dados de saída são criptografados com a chave XOR hH7@83#mi e todos os dados de entrada são descriptografados com a chave XOR h*^4hFa. Os dados têm uma estrutura que começa com uma ID de comando, seguida pelo comprimento dos dados criptografados subsequentes, seguida pelos dados criptografados.

A imagem 4 apresenta um exemplo de como os dados são enviados ao servidor C&C (neste caso, as informações do sistema são enviadas), enquanto a imagem 5 apresenta a forma de texto simples dos dados do mesmo payload.

Figure 4. A Wireshark dump showing the data POSTed by the backdoor

Imagem 4. Um despejo do Wireshark mostrando os dados publicados pelo backdoor.

Figure 5. The decrypted data containing system information

Imagem 5. Dados descriptografados que contém informações do sistema.

Nesse caso, o endereço IP local das vítimas pode ser convertido em decimal, fornecendo 192.168.42.1.

O ID de login é o ID de sessão para os serviços de área de trabalho remota associados ao processo do backdoor e é encontrado chamando o Windows API ProcessIdToSessionId.

O systemInfoHash é calculado por meio do algoritmo de hashing sdbm, usando o nome de usuário, nome do computador, endereços de host e ID de login.

Função intérprete do backdoor

O escalonamento de privilégios é feito por meio dessa função, ajustando o token de acesso do processo SparrowDoor para habilitar o SeDebugPrivilege. Depois disso, a função shutdown (Ws2_32.dll) é corrigida para evitar a desabilitação de envio e recebimento em um socket e a função closesocket (Ws2_32.dll) é corrigida para habilitar a opção DONT_LINGER para primeiro fechar o socket sem esperar que os dados pendentes sejam enviados ou recebidos. Por fim, as informações do sistema são enviadas para o servidor C&C (como pode ser visto nas Imagens 4 e 5) para receber os dados novamente como retorno.

De acordo com o campo ID de comando nos dados recebidos do servidor C&C, o badkdoor pode realizar diferentes ações maliciosas que podem ser conferidas de forma detalhada na Tabela 3.

Tabela 3. Ações realizadas pelo SparrowDoor quando os IDs de comando correspondentes são recebidos.

Command IDAction
0x1C615632The current process is closed.
0x1DE15F35A child svchost.exe process is spawned with processToken information of the process (Process ID) specified by the C&C server, with argument -d and then the shellcode is injected into the process.
0x1A6B561AA directory is created using the name provided by the C&C server.
0x18695638A file is renamed. Both the file to be renamed and the new name are provided by the C&C server.
0x196A5629A file is deleted, as specified in the incoming data.
0x17685647If length of the data is 1, and the data matches $, then the length of systemInfoHash along with an array of drive types are sent.

If length of the data is greater than 2 and the first 2 bytes of data match $\, then information about the files in a specified directory is sent. The information included is the following: file attributes, file size and file write time.
0x15665665A new thread is created to exfiltrate the content of a specified file.
0x16675656If the kill switch is activated, the current persistence settings (registry and service) are removed and the Indexer.exe file is executed (to restart the dropper). If not, the backdoor loop is restarted.
0x14655674A new thread is created to write the data to a specified file.
0x12635692 If the kill switch is activated, the persistence settings are removed, and all the files used by SparrowDoor (Indexer.exe, K7UI.dll and MpSvc.dll) are removed. If not, the backdoor loop is restarted.
0x13645683If the data matches "switch ”, then the backdoor is restarted with the -d switch.

If not, it spawns a cmd.exe shell, and sets up named pipes for input and output (used by the C&C server) to establish an interactive reverse shell.

If the data matches Exit\r\n, then the spawned shell is terminated.
OtherRestarts the backdoor loop.

Conclusão

O FamousSparrow é outro grupo APT que, no início de março de 2021, teve acesso à vulnerabilidade de execução remota de código conhecida como ProxyLogon. O grupo tem um histórico de exploração de vulnerabilidades conhecidas em aplicativos de servidor, como o SharePoint e o Oracle Opera. Este é outro lembrete de como é essencial corrigir rapidamente os aplicativos que podem ser acessados ​​pela Internet e que, caso não seja possível fazer isso rapidamente, tente não os expor à Internet.

As vítimas, que incluem governos de todo o mundo, sugerem que a intenção do FamousSparrow é a espionagem. Destacamos alguns vínculos com o SparklingGoblin e o DRBControl, mas não consideramos esses grupos tenham a mesma atuação.

Uma lista completa de Indicadores de Compromisso (IoC) e alguns exemplos podem ser encontrados em nosso repositório GitHub.

Em caso de dúvidas ou para enviar novas amostras relacionadas ao assunto, envie um e-mail para threatintel@eset.com.

Indicadores de Comprometimento

SHA-1FilenameESET detection nameDescription
B9601E60F87545441BF8579B2F62668C56507F4Ap64.exe
debug.log
Win64/Riskware.Mimikatz.HMimikatz
4DF896624695EA2780552E9EA3C40661DC84EFC8p64.exe
debug.log
Win64/Riskware.Mimikatz.HMimikatz
76C430B55F180A85F4E1A1E40E4A2EA37DB97599dump.exeWin64/Kryptik.BSQLsass dumper
873F98CAF234C3A8A9DB18343DAD7B42117E85D4nbtscan.exeWin32/NetTool.Nbtscan.ANbtscan
FDC44057E87D7C350E6DF84BB72541236A770BA21.cabWin32/FamousSparrow.ADropper
C36ECD2E0F38294E1290F4B9B36F602167E33614Indexer.exe-Legitimate K7 Computing binary
BB2F5B573AC7A761015DAAD0B7FF03B294DC60F6K7UI.dllWin32/FamousSparrow.ALoader
23E228D5603B4802398B2E7419187AEF71FF9DD5MpSvc.dllEncrypted shellcode
2560B7E28B322BB7A56D0B1DA1B2652E1EFE76EA--Decrypted shellcode
E2B0851E2E281CC7BCA3D6D9B2FA0C4B7AC5A02BK7UI.dllWin32/FamousSparrow.BLoader
DomainIP addressComment
credits.offices-analytics[.]com-SparrowDoor C&C server
-27.102.113[.]240Delivery domain

Técnicas do MITRE ATT&CK

Esta tabela foi criada por meio da versão 9 do framework do MITER ATT & CK.

TacticIDNameDescription
Resource DevelopmentT1588.005Obtain Capabilities: ExploitsFamousSparrow used RCE vulnerabilities against Microsoft Exchange, SharePoint and Oracle Opera.
T1583.001Acquire Infrastructure: DomainsFamousSparrow purchased a domain at Hosting Concepts.
T1583.004Acquire Infrastructure: ServerFamousSparrow rented servers at Shanghai Ruisu Network Technology and DAOU TECHNOLOGY.
Initial AccessT1190Exploit Public-Facing ApplicationFamousSparrow used RCE vulnerabilities against Microsoft Exchange, SharePoint and Oracle Opera.
ExecutionT1059.003Command and Scripting Interpreter: Windows Command ShellFamousSparrow used cmd.exe to run commands to download and install SparrowDoor.
T1203Exploitation for Client ExecutionFamousSparrow used RCE vulnerabilities in Microsoft Exchange, SharePoint and Oracle Opera to install SparrowDoor.
PersistenceT1547.001Boot or Logon Autostart Execution: Registry Run Keys / Startup FolderSparrowDoor achieves persistence through the HKCU Run registry value WSearchIndex = \Indexer.exe -i registry entry.
T1543.003Create or Modify System Process: Windows ServiceFamousSparrow installs SparrowDoor as a service named WSearchIndex.
T1574.001Hijack Execution Flow: DLL Search Order HijackingFamousSparrow loads the malicious K7UI.dll through DLL search order hijacking.
Defense EvasionT1055.001Process Injection: Dynamic-link Library InjectionMpSvc.dll (shellcode) is injected into processes by SparrowDoor.
T1134.002Access Token Manipulation: Create Process with TokenSparrowDoor creates processes with tokens of processes specified by the C&C server, using the CreateProcessAsUserA API.
T1134Access Token ManipulationSparrowDoor tries to adjust its token privileges to receive SeDebugPrivilege.
T1027Obfuscated Files or InformationThe shellcode, MpSvc.dll, is encrypted using XOR, along with the config embedded within SparrowDoor.
Credentials AccessT1003OS Credential DumpingFamousSparrow makes use of a custom Mimikatz version.
DiscoveryT1082System Information DiscoverySparrowDoor collects the username, computername, RDP session ID, and drive types in the system and sends this data to the C&C server.
T1083File and Directory DiscoverySparrowDoor can probe files in a specified directory obtaining their names, attributes, sizes and last modified times, and sends this data to the C&C server.
CollectionT1005Data from Local SystemSparrowDoor has the ability to read file contents and exfiltrate them to the C&C server.
Command and ControlT1071.001Application Layer Protocol: Web ProtocolsSparrowDoor communicates with the C&C server using the HTTPS protocol.
T1573.001Encrypted Channel: Symmetric CryptographySparrowDoor encrypts/decrypts communications with its C&C server using different multi-byte XOR keys.
ExfiltrationT1041Exfiltration Over C2 ChannelSparrowDoor exfiltrates data over its C&C channel.

Newsletter

Discussão