Malware PHOREAL tem como alvo o setor financeiro do sudeste asiático

O Elastic Security descobriu o malware PHOREAL, que tem como alvo organizações financeiras do Sudeste Asiático, particularmente aquelas do setor financeiro vietnamita.

17 min de leituraCampanhas
Malware PHOREAL tem como alvo o setor financeiro do sudeste asiático

Preâmbulo

A Elastic Security identificou uma campanha em andamento visando uma instituição de serviços financeiros vietnamita com o backdoor PHOREAL/RIZZO. Embora esse malware esteja em uso há algum tempo, esta é a primeira vez que o observamos carregando na memória como uma técnica de evasão de defesa e proteção de campanha. Após a análise de nossas próprias observações e informações relatadas anteriormente, estamos rastreando esse grupo de atividades (malware + técnica + vitimologia) como REF4322.

O que é a ameaça?

PHOREAL/RIZZO é um backdoor que permite a caracterização inicial da vítima e operações posteriores à exploração para comprometer a confidencialidade dos dados das organizações. Foi relatado em outras pesquisas como sendo usado exclusivamente pelo APT32 (também conhecido como SeaLotus, OceanLotus, APT-C-00, Grupo G0050).

Qual é o impacto?

O APT32 tem como alvo principal vítimas com interesses políticos ou econômicos no Sudeste Asiático, especificamente no Vietnã.

O que a Elastic está fazendo a respeito?

A Elastic Security detalhou como selecionar um desses alertas de ameaça, extraiu observáveis para filtragem de endpoint e rede e produziu uma nova assinatura de malware para identificação e mitigação da ameaça em toda a frota de Elastic Agents implantados.

Detalhes da investigação

Ao conduzir operações de descoberta e monitoramento de ameaças, os pesquisadores da Elastic Security identificaram um cluster de alertas de proteção de memória do Windows shellcode_thread gerados por um sensor de endpoint do Elastic Agent. Esses alertas específicos eram interessantes porque todos ocorriam no mesmo cluster e, incomumente, tinham como alvo o processo control.exe. O processo control.exe do Windows controla a execução de itens do Painel de Controle, que são utilitários que permitem aos usuários visualizar e ajustar as configurações do computador.

Geralmente, quando observamos falsos positivos para a proteção shellcode_thread, isso é identificado em uma ampla base de usuários e, em muitos casos, é atribuído a vários mecanismos anti-cheat ou DRM (Digital Rights Management) de jogos. Nesse caso, um único cluster e um processo de destino assinado pela Microsoft eram atípicos e mereciam investigação mais aprofundada.

Você pode ler mais sobre as proteções de memória do Elastic Security AQUI e sobre ataques na memória AQUI.

Com nosso interesse despertado pelas características atípicas dos alertas, investigamos mais a fundo para validar e caracterizar a ameaça:

O processo alvo é um binário assinado do Windows

...
"process": {
     "args": [
       "control.exe",
       "Firewall.cpl",
       "{2D48D219-C306-4349-AE1F-09744DFFB5B9}"
     ],
     "Ext": {
       "code_signature": [
         {
           "trusted": true,
           "subject_name": "Microsoft Windows",
           "exists": true,
           "status": "trusted"
         }
       ],
       "dll": [
...

.dll carregado não assinado

...
   "Ext": {
     "mapped_address": 1945501696,
     "mapped_size": 21135360
   },
   "path": "C:\\Windows\\SysWOW64\\tscon32.dll",
   "code_signature": [
     {
       "exists": false
     }
   ],
   "name": "tscon32.dll",
   "hash": {
     "sha1": "007970b7a42852b55379ef4cffa4475865c69d48",
     "sha256": "ec5d5e18804e5d8118c459f5b6f3ca96047d629a50d1a0571dee0ac8d5a4ce33",
     "md5": "2b6da20e4fc1af2c5dd5c6f6191936d1"
   }
 },
...

Módulo inicial do thread de alerta

...
 "pe": {
   "original_file_name": "CONTROL.EXE"
 },
 "name": "control.exe",
 "pid": 5284,
 "thread": {
   "Ext": {
     "start_address_module": "C:\\Windows\\SysWOW64\\tscon32.dll",
...

Alertando metadados da região de memória

...
"memory_region": {`
   "region_size": 73728,
   "region_protection": "RWX",
   "allocation_base": 81395712,
   "bytes_allocation_offset": 0,
   "allocation_type": "PRIVATE",
   "memory_pe_detected": true,
   "region_state": "COMMIT",
   "strings": [
     "QSSSSSSh ",
     ...
     "bad cast",
     "Local\\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}",
     "Netapi32.dll",
     "NetWkstaGetInfo",
     "NetApiBufferFree",
     "\\\\.\\pipe\\{A06F176F-79F1-473E-AF44-9763E3CB34E5}",
     "list<T> too long",
     "{FD5F8447-657A-45C1-894B-D533926C9B66}.dll",
     "DllEntry",
     ...
     ".?AVbad_alloc@std@@",
     "C:\\Windows\\syswow64\\control.exe",
     ":z:zzzzzz7",
     ...
     "InternalName",
     "mobsync.exe",
     "LegalCopyright",
...

Dados de thread para pivotamento

...
"thread": {
 "Ext": {
   "start_address_bytes": "8bff558bece8e6430000e8db43000050e8bb43000085c0751fff7508e8c94300",
   ...
   "start_address_bytes_disasm": "mov edi, edi\npush ebp\nmov ebp, esp\ncall 0x000043f0\ncall 0x000043ea\npush eax\ncall 0x000043d0\ntest eax, eax\njnz 0x00000038\npush dword ptr [ebp+0x08]"
 },
...

No alerta de exemplo, primeiro identificamos o start_address_module, que é a dll/módulo onde o thread começou. C:\Windows\SysWOW64\tscon32.dll é o start_address_module do thread sobre o qual alertamos. Também é a única dll não assinada carregada, então é um ótimo lugar para concentrar nossos esforços. Ao verificar o valor de hash no VirusTotal, para identificar informações divulgadas anteriormente sobre a amostra, não vimos nenhum resultado.

Analisando mais a fundo, analisamos os start_address_bytes, que são os primeiros 32 bytes do nosso thread de alerta. Podemos usar o valor de start_address_bytes (8bff558bece8e6430000e8db43000050e8bb43000085c0751fff7508e8c94300) para procurar pivôs no VirusTotal consultando o conteúdo: {8bff558bec56e83f3e0000e8343e000050e8143e000085c0752a8b750856e821}. Identificamos relativamente poucos resultados, mas eles incluíam a entrada abaixo, enviada pela primeira vez em julho de 2021.

Ao pesquisar os resultados do VirusTotal, pudemos ver que o pesquisador de ameaças Felix Bilstein (@fxb_b) criou uma regra YARA de crowdsourcing identificando isso como o backdoor PHOREAL . Passando para a aba CONTEÚDO, podemos comparar algumas das sequências do nosso alerta com o que foi relatado anteriormente ao VirusTotal.

Usando as strings exclusivas que identificamos acima e os start_address_bytes, podemos criar uma assinatura YARA convertendo as strings exclusivas ($a) e os start_address_bytes ($b) em valores hexadecimais, conforme mostrado abaixo.

Strings YARA convertidas

strings:
          \\  "\\.\pipe\{A06F176F-79F1-473E-AF44-9763E3CB34E5}"  ascii wide
    $a1 = { 5C 00 5C 00 2E 00 5C 00 70 00 69 00 70 00 65 00 5C 00 7B 00 41 00
            30 00 36 00 46 00 31 00 37 00 36 00 46 00 2D 00 37 00 39 00 46 00
            31 00 2D 00 34 00 37 00 33 00 45 00 2D 00 41 00 46 00 34 00 34 00
            2D 00 39 00 37 00 36 00 33 00 45 00 33 00 43 00 42 00 33 00 34 00
            45 00 35 00 7D 00 }

          \\  "Local\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}"  ascii wide
    $a2 = { 4C 00 6F 00 63 00 61 00 6C 00 5C 00 7B 00 35 00 46 00 42 00 43 00
            33 00 46 00 35 00 33 00 2D 00 41 00 37 00 36 00 44 00 2D 00 34 00
            32 00 34 00 38 00 2D 00 39 00 36 00 39 00 41 00 2D 00 33 00 31 00
            37 00 34 00 30 00 43 00 42 00 43 00 38 00 41 00 44 00 36 00 7D 00 }

          \\  "{FD5F8447-657A-45C1-894B-D533926C9B66}.dll"  ascii
    $a3 = { 7B 46 44 35 46 38 34 34 37 2D 36 35 37 41 2D 34 35 43 31 2D 38 39
            34 42 2D 44 35 33 33 39 32 36 43 39 42 36 36 7D 2E 64 6C 6C }

          \\  PHOREAL start_address_bytes sequence
          \\  mov edi, edi; push ebp; mov ebp, esp; call 0x000043f0;
          \\  call 0x000043ea; push eax; call 0x000043d0; test eax, eax;
          \\  jnz 0x00000038; push dword ptr [ebp+0x08]
    $str_addr = { 8B FF 55 8B EC 56 E8 3F 3E 00 00 E8 34 3E 00 00 50 E8 14 3E
            00 00 85 C0 75 2A 8B 75 08 56 E8 21 }
condition:
    2 of them

Esta regra, quando implantada no Elastic Agent, identificará o PHOREAL para os clientes e a prevenção de backstop já fornecida pela proteção de memória shellcode_thread (em ambientes de clientes com proteção de memória ativada). No nosso caso, a implantação dessa regra também permitiu a coleta do thread malicioso usando o mesmo mecanismo detalhado em nosso artigo Coletando Cobalt Strike Beacons .

Logo após a implantação do novo artefato YARA, tínhamos um novo alerta malware_signature em mãos com o thread malicioso capturado da memória. A triagem binária manual da nossa equipe de Análise de Malware e Engenharia Reversa (MARE) confirmou rapidamente que a amostra era PHOREAL/RIZZO comparando a estrutura e as funções entre nossa amostra e relatórios anteriores. Além disso, eles conseguiram extrair um domínio criptografado RC4 de um recurso RCDATA, conforme descrito em um whitepaper da CYLANCE OceanLotus de 2018.

O domínio identificado pelo MARE (thelivemusicgroup[.]com) atualmente é resolvido para 103.75.117[.]250 que é propriedade da Oneprovider[.]com, uma empresa de hospedagem de servidores dedicados sediada no Canadá com data centers distribuídos globalmente.

https://ipinfo.io/ resultados da consulta para 103.75.117[.]250

{
  "ip": "103.75.117[.]250",
  "city": "Hong Kong",
  "region": "Central and Western",
  "country": "HK",
  "loc": "22.2783,114.1747",
  "org": "AS133752 Leaseweb Asia Pacific pte. ltd.",
  "timezone": "Asia/Hong_Kong",
  "asn": {
    "asn": "AS133752",
    "name": "Leaseweb Asia Pacific pte. ltd.",
    "domain": "leaseweb.com",
    "route": "103.75.117[.]0/24",
    "type": "hosting"
  },
  "company": {
    "name": "Oneprovider.com - Hong Kong Infrastructure",
    "domain": "oneprovider[.]com",
    "type": "hosting"
  },
  "privacy": {
    "vpn": false,
    "proxy": false,
    "tor": false,
    "relay": false,
    "hosting": true,
    "service": ""
  },
  "abuse": {
    "address": "1500 Ste-Rose LAVAL H7R 1S4 Laval Quebec, Canada",
    "country": "CA",
    "email": "[email protected]",
    "name": "ONE PROVIDER",
    "network": "103.75.117[.]0/24",
    "phone": "+1 514 286-0253"
  },
  "domains": {
    "ip": "103.75.117[.]250",
    "total": 2,
    "domains": [
      "thelivemusicgroup[.]com",
      "cdn-api-cn-1[.]com"
    ]
  }

A maioria das informações interessantes sobre o domínio são protegidas por privacidade, mas as datas “Atualizado” e “Criado” na figura abaixo podem ser úteis para limitar por quanto tempo esse domínio foi usado maliciosamente.

O Agente Elástico parece ter sido implantado após o comprometimento, o que limitou nossa capacidade de determinar o vetor de acesso inicial. Um relatório da Mandiant de 2017 indica que o PHOREAL pode ser implantado em uma capacidade de “estabelecer ponto de apoio” para permitir a triagem de vítimas e ferramentas de acompanhamento pós-exploração.

Análise

O Elastic Security utiliza o Modelo Diamond para descrever relacionamentos de alto nível entre adversários e vítimas de intrusões.

Justificativa da avaliação do adversário

Avaliamos com alta confiança, com base na atividade observada e em relatórios anteriores, que REF4322 é APT32/OceanLotus e o agente por trás deste incidente. O APT32 está ativo desde 2014 principalmente visando governos e empresas do Sudeste Asiático ou outras empresas internacionais com interesses no Vietnã. O APT32 é o único grupo atualmente identificado como operador do backdoor PHOREAL, e nossa vítima corresponde ao perfil geográfico e vertical do setor de vítimas típicas e específicas anteriores do APT32.

Conclusão

Regras YARA

Criamos uma regra YARA para identificar essa atividade PHOREAL.

Regra Yara para detectar backdoor na memória REF4322/APT32 PHOREAL/Rizzo

rule Windows_Trojan_PHOREAL {
    meta:
        Author = "Elastic Security"
        creation_date = "2022-02-16"
        last_modified = "2022-02-16"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "PHOREAL"
        threat_name = "Windows.Trojan.PHOREAL"
        description = "Detects REF4322/APT32 in-memory backdoor PHOREAL/Rizzo."
        reference_sample = "88f073552b30462a00d1d612b1638b0508e4ef02c15cf46203998091f0aef4de"


    strings:
              \\  "\\.\pipe\{A06F176F-79F1-473E-AF44-9763E3CB34E5}"  ascii wide
        $a1 = { 5C 00 5C 00 2E 00 5C 00 70 00 69 00 70 00 65 00 5C 00 7B 00 41 00
                30 00 36 00 46 00 31 00 37 00 36 00 46 00 2D 00 37 00 39 00 46 00
                31 00 2D 00 34 00 37 00 33 00 45 00 2D 00 41 00 46 00 34 00 34 00
                2D 00 39 00 37 00 36 00 33 00 45 00 33 00 43 00 42 00 33 00 34 00
                45 00 35 00 7D 00 }

              \\  "Local\{5FBC3F53-A76D-4248-969A-31740CBC8AD6}"  ascii wide
        $a2 = { 4C 00 6F 00 63 00 61 00 6C 00 5C 00 7B 00 35 00 46 00 42 00 43 00
                33 00 46 00 35 00 33 00 2D 00 41 00 37 00 36 00 44 00 2D 00 34 00
                32 00 34 00 38 00 2D 00 39 00 36 00 39 00 41 00 2D 00 33 00 31 00
                37 00 34 00 30 00 43 00 42 00 43 00 38 00 41 00 44 00 36 00 7D 00 }

              \\  "{FD5F8447-657A-45C1-894B-D533926C9B66}.dll"  ascii
        $a3 = { 7B 46 44 35 46 38 34 34 37 2D 36 35 37 41 2D 34 35 43 31 2D 38 39
                34 42 2D 44 35 33 33 39 32 36 43 39 42 36 36 7D 2E 64 6C 6C }

              \\  PHOREAL start_address_bytes sequence
        $str_addr = { 8B FF 55 8B EC 56 E8 3F 3E 00 00 E8 34 3E 00 00 50 E8 14 3E
                00 00 85 C0 75 2A 8B 75 08 56 E8 21 }
    condition:
        2 of them
}

Recomendações de defesa

As seguintes etapas podem ser aproveitadas para melhorar a postura de proteção de uma rede:

  1. Habilitar a proteção de memória do Elastic Security em endpoints do Windows
  2. Aproveite as assinaturas YARA incluídas acima para determinar se existe atividade PHOREAL em sua organização
  3. Monitore ou bloqueie o tráfego de rede de ou para IOCs de rede identificados e corrija os sistemas afetados adequadamente.

Referências

Ao longo do documento, fizemos referência aos seguintes trabalhos de pesquisa:

Observables

IndicadorTipoReferênciaNotas
thelivemusicgroup[.]comnome de domínioDomínio C2 criptografado em malware
103.75.117[.]250endereço-ipv4IP resolvido do thelivemusicgroup[.]com
ec5d5e18804e5d8118c459f5b6f3ca96047d629a50d1a0571dee0ac8d5a4ce33SHA256tscon32.dlldll PHOREAL

Artefatos

Os artefatos também estão disponíveis para download nos formatos ECS e STIX em um pacote zip combinado.

Compartilhe este artigo