Focado principalmente na Ásia, este novo grupo de ciberespionagem usa ferramentas não documentadas, incluindo a extração esteganográfica de cargas do PowerShell de arquivos PNG
Os investigadores da ESET encontraram recentemente ataques direcionados que utilizaram ferramentas não documentadas contra várias empresas de alto perfil e governos locais, principalmente na Ásia. Esses ataques foram conduzidos por um grupo de espionagem até então desconhecido que chamamos de Worok e que está ativo desde pelo menos 2020. O conjunto de ferramentas do Worok inclui um carregador C++ CLRLoad, um backdoor PowerShell PowHeartBeat e um carregador C# PNGLoad que usa esteganografia para extrair arquivos maliciosos ocultos. cargas úteis de arquivos PNG.
Quem é Workok?
Durante o ProxyShell (CVE-2021-34523) divulgação de vulnerabilidade no início de 2021, observamos atividade de vários grupos APT. Um exibiu características comuns com Monte incluído:
- Tempos de atividade
- Verticais segmentados
- Uso do ShadowPad
O resto do conjunto de ferramentas é muito diferente: por exemplo, o TA428 participou do Compromisso de desktop capaz em 2020. Consideramos que as ligações não são suficientemente fortes para considerar o Workok como o mesmo grupo que o TA428, mas os dois grupos podem partilhar ferramentas e ter interesses comuns. Decidimos criar um cluster e chamamos-lhe Workok. O nome foi escolhido após um mutex em um carregador utilizado pelo grupo. Outras atividades com variantes das mesmas ferramentas foram então vinculadas a este grupo. De acordo com a telemetria da ESET, o Worok está ativo desde o final de 2020 e continua ativo até o momento desta redação.
No final de 2020, a Workok tinha como alvo governos e empresas em vários países, especificamente:
- Uma empresa de telecomunicações no Leste Asiático
- Um banco na Ásia Central
- Uma empresa da indústria marítima no Sudeste Asiático
- Uma entidade governamental no Oriente Médio
- Uma empresa privada na África Austral
Houve uma quebra significativa nas operações observadas de 2021-05 a 2022-01, mas a atividade Workok regressou em 2022-02, visando:
- Uma empresa de energia na Ásia Central
- Uma entidade do setor público no Sudeste Asiático
A Figura 1 apresenta um mapa térmico visual das regiões e verticais alvo.
Considerando os perfis dos alvos e as ferramentas que vimos implantadas contra estas vítimas, pensamos que o principal objetivo do Workok é roubar informações.
Análise técnica
Embora a maioria dos acessos iniciais sejam desconhecidos, em alguns casos, durante 2021 e 2022, vimos explorações usadas contra as vulnerabilidades do ProxyShell. Nesses casos, normalmente os webshells são carregados após a exploração dessas vulnerabilidades, a fim de fornecer persistência na rede da vítima. Em seguida, os operadores usaram vários implantes para obter mais capacidades.
Uma vez adquirido o acesso, os operadores implementaram múltiplas ferramentas de reconhecimento publicamente disponíveis, incluindo Mimikatz, Minhoca, ReGeorg e NBTscane, em seguida, implantaram seus implantes personalizados: um carregador de primeiro estágio, seguido por um carregador .NET de segundo estágio (PNGLoad). Infelizmente, não conseguimos recuperar nenhuma das cargas finais. Em 2021, o carregador de primeiro estágio era um assembly CLR (CLRLoad), enquanto em 2022 foi substituído, na maioria dos casos, por um backdoor PowerShell completo (PowHeartBeat) – ambas as cadeias de execução são representadas na Figura 2. Essas três ferramentas são descritas em detalhes nas subseções a seguir.
CLRLoad: carregador de montagem CLR
CLRLoad é um Windows PE genérico que vimos nas versões de 32 e 64 bits. É um carregador escrito em C++ que carrega o próximo estágio (PNGLoad), que deve ser um Montagem do Common Language Runtime (CLR) Arquivo DLL. Esse código é carregado a partir de um arquivo localizado no disco em um diretório legítimo, presumivelmente para enganar as vítimas ou os responsáveis pelo incidente, fazendo-os pensar que se trata de um software legítimo.
Alguns exemplos de CLRLoad começam decodificando o caminho completo do arquivo cujo conteúdo serão carregados no próximo estágio. Esses caminhos de arquivo são codificados com um XOR de byte único, com uma chave diferente em cada amostra. Decodificados ou em texto não criptografado, esses caminhos de arquivo são absolutos, sendo os seguintes os que encontramos:
- C:Arquivos de programasVMwareFerramentas VMwareVMware VGAuthxsec_1_5.dll
- C: Arquivos de programasUltraViewermsvbvm80.dll
- C:Arquivos de ProgramasInternet ExplorerJsprofile.dll
- C: Arquivos de programasWinRarRarExtMgt.dll
- C:Arquivos de programas (x86)Foxit SoftwareFoxit Readerlucenelib.dll
A seguir, um mutex é criado e vimos um nome diferente em cada amostra. O carregador verifica esse mutex; se encontrado, ele sai, porque o carregador já está em execução. Em uma das amostras, o mutex Wo0r0KGWhYGO foi encontrado, o que deu ao grupo o nome de Workok.
CRLLoad então carrega um assembly CLR do caminho do arquivo possivelmente decodificado. Como código não gerenciado, CRLLoad consegue isso via CorBindToRuntimeEx Chamadas de API do Windows em variantes de 32 bits ou CLRCreateInstance chamadas em variantes de 64 bits.
PowHeartBeat: backdoor do PowerShell
PowHeartBeat é um backdoor completo escrito em PowerShell, ofuscado usando várias técnicas, como compactação, codificação e criptografia. Com base na telemetria da ESET, acreditamos que o PowHeartBeat substituiu o CLRLoad nas campanhas mais recentes do Worok como a ferramenta usada para lançar o PNGLoad.
A primeira camada do código backdoor consiste em vários pedaços de código PowerShell codificado em base64. Uma vez que a carga útil é reconstruída, ela é executada via IEX. Uma vez decodificado, outra camada de código ofuscado é executada, que podemos ver na Figura 3.
A segunda camada do backdoor, primeira base64, decodifica a próxima camada de seu código, que é então descriptografado com DES triplo (modo CBC). Após a descriptografia, esse código é descompactado usando o gzip algoritmo, fornecendo assim a terceira camada de código do PowerShell, que é o backdoor real. Ele é dividido em duas partes principais: configuração e tratamento de comandos backdoor.
A camada principal do código backdoor também é escrita em PowerShell e usa HTTP ou ICMP para se comunicar com o servidor C&C. Funciona conforme ilustrado na Figura 4.
Configuração
A configuração contém vários campos, incluindo número de versão, configuração de proxy opcional e endereço C&C. A Tabela 1 descreve os significados dos campos de configuração nas diferentes versões que observamos.
Tabela 1. Significados dos campos de configuração
nome do campo | Descrição |
---|---|
nouse /ikuyrtydyfg (outras amostras) |
Não utilizado. |
ID do Cliente | Identificador do cliente, utilizado para os seguintes fins: · Como valor na construção do Cabeçalho do cookie para comunicações C&C. · Como artefato criptográfico para criptografia de dados enviados. |
Versão | Número da versão do PowHeartBeat. |
ExecTimes | Número de tentativas de execução permitidas ao emitir um RunCmdName (comando em execução) comando. |
Useragent | Agente de usuário usado para comunicações C&C. |
referer | referer cabeçalho usado para comunicações C&C. |
AceitarEncoding | Não utilizado. |
CookieClientId CookieTaskId CookieTerminalId |
Valores usados para construir o Cookie cabeçalho para comunicações C&C. |
URLHttps | Protocolo a ser usado para comunicações C&C. |
URLDomínio Endereço de IP domínios |
URL, domínio(s) ou endereço IP usado como servidor C&C. Se domínios não está vazio, é escolhido em vez de Endereço de IP. Em outros casos, Endereço de IP é tomado. |
UrlSendHeartBeat | Caminho da URL usado quando o backdoor solicita comandos ao servidor C&C. |
UrlSendResult | Caminho da URL usado quando o backdoor envia os resultados do comando de volta ao servidor C&C. |
ObterUrl | URL completa, usada pelo PowHeartBeat para solicitar comandos do servidor C&C. É a concatenação dos elementos da URL acima. |
ColocarUrl | Igual a ObterUrl mas usado para enviar os resultados do comando de volta ao servidor C&C. |
caminho atual | Não utilizado. |
ProxyEnableFlag | Sinalizador que indica se o backdoor deve usar um proxy ou não para se comunicar com o servidor C&C. |
Proxymsg | Endereço do proxy a ser usado se ProxyEnableFlag está definido para $ true. |
Intervalo | Tempo em segundos que o script fica suspenso entre solicitações GET. |
CaminhoConfiguraçãoBásico | Caminho para um arquivo de configuração opcional contendo Tempo de atividade, Tempo de inatividade, Intervalo padrão e domínios. Esses valores serão substituídos se o arquivo estiver presente. |
Tempo de atividade | Hora do dia a partir da qual o backdoor começa a operar, o que significa que ele começa a fazer solicitações GET ao servidor C&C. |
Tempo de inatividade | Hora do dia até a qual o backdoor pode operar, ou seja, o horário em que ele para de fazer solicitações ao servidor C&C. |
Índice de Domínio | Índice do nome de domínio atual a ser usado para comunicações com o servidor C&C. Caso uma solicitação retorne uma mensagem de erro diferente de 304 ("Não modificado"), Índice de Domínio Está melhorado. |
Chave secreta | Chave usada para descriptografar/criptografar a configuração. A configuração é criptografada com XOR de múltiplos bytes. |
IfLog | Não utilizado. |
IfLogFilePath | Sinalizador que indica se o registro em log está habilitado. |
caminho de registro | Caminho do arquivo de log. |
Arquivo proxy | Caminho do arquivo da configuração de proxy opcional. Se estiver vazio ou não for encontrado no sistema de arquivos, o backdoor recupera as configurações de proxy do usuário a partir do valor do registro HKCUSoftwareMicrosoftWindowsCurrentVersionConfigurações da InternetProxyServer . |
IfConfig | Sinalizador que indica se um arquivo de configuração deve ser usado. |
A Figura 5 mostra um exemplo da configuração extraída de uma amostra PowHeartBeat (SHA-1: 757ABA12D04FD1167528FDD107A441D11CD8C427).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$Script:nouse = 100; if(Test-Path $MyInvocation.MyCommand.Path){Remove-item $MyInvocation.MyCommand.Path -Force;} $Script:ClientId = “83”; $Script:Version = “2.1.3.0003”; $Script:ExecTimes = 10; $Script:UserAgent = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3487.100 Safari/537.36”; $Script:Referer = “www.adobe.com”; $Script:AcceptEncoding = “text/html,app1ication/xhtml+xml,app1ication/xml;q=0.9,*/*;q=0.8”; $Script:CookieClientId = “s_ecid”; $Script:CookieTaskId = “aam_uuid”; $Script:CookieTerminalId = “AAMC_adobe_0”; $Script:UrlHttps = “http://”; $Script:UrlDomain= ” 118.193.78[.]22:443″; $Script:UrlSendHeartBeat = “/latest/AdobeMessagingClient.js”; $Script:UrlSendResult = “/content/dam/offers-homepage/homepage.jpg”; $Script:GetUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendHeartBeat; $Script:PutUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendResult; $Script:currentPath = Split-Path -Parent $MyInvocation.MyCommand.Definition; $Script:ProxyEnableFlag = $false; $Script:Proxymsg; $Script:Interval = 10 ; $Script:BasicConfigPath = “C:ProgramDataunins.dat”; $Script:UpTime = 0; $Script:DownTime = 24; $Script:Domains; $Script:DomainIndex; $Script:SecretKey = “###ConfigKey###”; #$Script:IfLog = $true; $Script:IfLogFilePath = “C:ProgramDatatpncp.dat”; $Script:logpath = “C:ProgramDataunins000.dat”; $Script:ProxyFile = “C:ProgramDatahwrenalm.dat”; $Script:IfConfig = $false; |
Figura 5. Exemplo de configuração
Encriptação de dados
PowHeartBeat criptografa logs e conteúdo adicional de arquivo de configuração.
O conteúdo do arquivo de log é criptografado por meio de XOR de múltiplos bytes com uma chave especificada em texto não criptografado na amostra. Interessantemente, ID do Cliente é usado como sal para o índice na matriz de chaves. A chave é uma matriz de 256 bytes, idêntica em todas as amostras que encontramos. O conteúdo adicional do arquivo de configuração é criptografado por meio de XOR de múltiplos bytes com o valor de Chave secreta como sua chave.
Comunicações C&C
PowHeartBeat usou HTTP para comunicações C&C até a versão 2.4 e depois mudou para ICMP. Em ambos os casos a comunicação não é criptografada.
HTTP
Em um loop infinito, o backdoor envia uma solicitação GET ao servidor C&C, solicitando a emissão de um comando. A resposta criptografada é descriptografada pelo backdoor, que processa o comando e grava a saída do comando em um arquivo cujo conteúdo é então enviado ao servidor C&C por meio de uma solicitação POST.
O formato das solicitações GET é o seguinte:
GET <UrlSendHeartBeat> HTTP/1.1 User-Agent: <UserAgent> Referer: <Referer> Host: <Domain> Cookie: <CookieClientId>=<ClientId> Connection: close |
Observe que a solicitação é construída usando os campos de configuração de mesmo nome.
Na resposta do servidor C&C, o terceiro byte do conteúdo é o identificador do comando que indica o comando a ser processado pelo backdoor. Nós vamos chamá-lo id_comando. O conteúdo restante da resposta será passado como argumento para o comando que é processado. Este conteúdo é criptografado com o algoritmo mostrado na Figura 6, ID da tarefa sendo o valor do cookie com o nome CookieTaskIdvalor da configuração.
1 2 3 4 5 6 7 8 9 10 |
o[int] $pos = $taskId % 256; for ($i = 0; $i -lt $tmpBytes.Value.Length; $i++) { $pos = $pos + $clientId; if ($pos -ge 256) { $pos = $pos % 256; } $tmpBytes.Value[$i] = [byte]($tmpBytes.Value[$i] -bxor $hexEnc[$pos]); } |
Figura 6. Algoritmo de criptografia de dados de conteúdo de solicitações
A resposta do servidor C&C também contém outro cookie, cujo nome é especificado pelo backdoor CookieTerminalId variável de configuração. O valor deste cookie é repetido na solicitação POST do backdoor e não deve estar vazio. Após executar o comando backdoor, PowHeartBeat envia o resultado como uma solicitação POST para o servidor C&C. O resultado é enviado como um arquivo cujo nome é .png.
ICMP
A partir da versão 2.4 do PowHeartBeat, o HTTP foi substituído pelo ICMP, enviando pacotes com timeout de seis segundos e sendo não fragmentado. A comunicação através do ICMP é provavelmente uma forma de evitar a detecção.
Não há grandes mudanças nas versões 2.4 e posteriores, mas notamos algumas modificações no código:
- PowHeartBeat envia um pacote de pulsação em cada loop que contém a string a B C D e F G H I J K L M N o p q R S T U V W x y Z, antes de solicitar um comando. Isso informa ao servidor C&C que o backdoor está pronto para receber comandos.
- Solicitações para obter comandos executados pelo backdoor contêm a string abcdefghijklmnop.
Os pacotes de pulsação têm o formato descrito na Figura 7.
A diferença entre ID do Cliente e bandeira do cliente é a de que ID do Cliente difere em cada amostra, enquanto bandeira do cliente é o mesmo em todas as amostras que usam ICMP. bandeira de batimento cardíaco indica que o backdoor está enviando uma pulsação. A resposta do servidor C&C tem o formato descrito na Figura 8.
bandeira aqui indica se há um comando a ser emitido para o backdoor. As solicitações para obter comandos têm o formato descrito na Figura 9.
Observe que o modo ICMP do backdoor permite receber uma quantidade ilimitada de dados, divididos em pedaços, e as variáveis comprimento dos dados, posição atual e comprimento total são usados para acompanhar os dados transmitidos. As respostas a essas solicitações têm o formato descrito na Figura 10.
Como nas respostas HTTP, o identificador do comando é o terceiro byte do dados,.
Após sete respostas ICMP consecutivas com conteúdo vazio ou formatado de forma inconsistente, as transferências entre o backdoor e o servidor C&C são consideradas concluídas.
Em relação às solicitações de envio do resultado do comando emitido para o servidor C&C, o modo servidor é alterado para modo post, e a string final (abcdefghijklmnop) é alterado para os dados do resultado.
Comandos de backdoor
PowHeartBeat possui vários recursos, incluindo execução de comandos/processos e manipulação de arquivos. A Tabela 2 lista todos os comandos suportados pelas diversas amostras analisadas.
Tabela 2. Descrições dos comandos PowHeartBeat
Nome | Identificador de Comando | Descrição |
---|---|---|
cmd | 0x02 | Execute um comando do PowerShell. |
Exe | 0x04 | Execute um comando como um processo. |
Carregar arquivo | 0x06 | Carregue um arquivo na máquina da vítima. O conteúdo do arquivo é compactado com gzip. |
Download do arquivo | 0x08 | Baixe um arquivo da máquina vítima e retorne o caminho do arquivo, comprimento do arquivo, hora de criação, tempos de acesso e conteúdo do arquivo para o servidor C&C. |
Visualização de arquivo | 0x0A | Obtenha informações de arquivo de um diretório específico, em particular: · Nomes de arquivos · Atributos de arquivo · Últimos horários de gravação · Conteúdo do arquivo |
ArquivoExcluir | 0x0C | Exclua um arquivo. |
ArquivoRenomear | 0x0E | Renomeie ou mova um arquivo. |
AlterarDir | 0x10 | Altere o local de trabalho atual do backdoor. |
Info | 0x12 | Obtenha uma categoria de informações de acordo com o argumento especificado: · "Informação básica": ID do Cliente, Versão, nome do host, endereços IP, explorer.exe informações de versão e tamanho, SO (arquitetura e flag indicando se a máquina é um servidor), Intervalo, diretório atual, informações da unidade (nome, tipo, espaço livre e tamanho total), hora atual · “Informações de intervalo de tempo”: Intervalo e hora atual · “Informações de domínio”: conteúdo descriptografado do arquivo de configuração |
Configuração | 0x14 | Atualize o conteúdo do arquivo de configuração e recarregue a configuração. |
N/D | 0x63 | Saída pela porta dos fundos. |
Em caso de erros do lado do backdoor, o backdoor utiliza um identificador de comando específico 0x00 na solicitação POST ao servidor C&C, indicando assim que ocorreu um erro.
Observe que antes de enviar as informações de volta ao servidor C&C, os dados são compactados com gzip.
PNGLoad: carregador esteganográfico
PNGLoad é a carga útil de segundo estágio implantada pela Worok em sistemas comprometidos e, de acordo com a telemetria da ESET, carregada por CLRLoad ou PowHeartBeat. Embora não vejamos nenhum código no PowHeartBeat que carregue diretamente o PNGLoad, o backdoor tem a capacidade de baixar e executar cargas adicionais do servidor C&C, que é provavelmente como os invasores implantaram o PNGLoad em sistemas comprometidos com o PowHeartBeat. PNGLoad é um carregador que usa bytes de arquivos PNG para criar uma carga útil para execução. É um executável .NET de 64 bits – ofuscado com Reator .NET – que se disfarça de software legítimo. Por exemplo, a Figura 11 mostra os cabeçalhos CLR de uma amostra mascarada como uma DLL WinRAR.
Uma vez desofuscado, apenas uma classe estará presente. Nesta aula há um Caminho Principal atributo contendo o caminho do diretório que o backdoor pesquisa, incluindo seus subdiretórios, por arquivos com um . Png extensão, conforme mostrado na Figura 12.
Cada . Png arquivo localizado por esta pesquisa de Caminho Principal é então verificado quanto a conteúdo incorporado esteganograficamente. Primeiro, o bit menos significativo dos valores R (vermelho), G (verde), B (azul) e A (alfa) de cada pixel é obtido e montado em um buffer. Se os primeiros oito bytes desse buffer corresponderem ao número mágico visto na Figura 13 e o próximo valor de oito bytes, controle, for não nulo, o arquivo passará na verificação de conteúdo esteganográfico do PNGLoad. Para esses arquivos, o processamento continua com o restante do buffer descriptografado com um XOR de múltiplos bytes, usando a chave armazenada no arquivo PNGLoad. SecretKeyBytes atributo e, em seguida, o buffer descriptografado é descompactado com gzip. Espera-se que o resultado seja um script do PowerShell, que é executado imediatamente.
Curiosamente, as operações realizadas pelo PNGLoad são registradas em um arquivo cujo caminho está armazenado na variável LogFilePath. As operações só são registradas se estiver presente um arquivo cujo caminho é especificado pela variável interna IfLogFilePath.
Não conseguimos obter uma amostra . Png arquivo usado junto com PNGLoad, mas a forma como o PNGLoad funciona sugere que ele deve funcionar com arquivos PNG válidos. Para ocultar a carga maliciosa, o Worok usa objetos Bitmap em C#, que obtêm apenas informações de pixel dos arquivos, não os metadados do arquivo. Isso significa que o Workok pode ocultar suas cargas maliciosas em imagens PNG válidas e de aparência inócua e, assim, ocultar-se à vista de todos.
Conclusão
Worok é um grupo de ciberespionagem que desenvolve as suas próprias ferramentas, bem como aproveita as ferramentas existentes, para comprometer os seus alvos. Roubar informações das suas vítimas é o que acreditamos que os operadores procuram porque se concentram em entidades de alto perfil na Ásia e em África, visando vários sectores, tanto privados como públicos, mas com uma ênfase específica em entidades governamentais. Os tempos de atividade e o conjunto de ferramentas indicam possíveis ligações com o TA428, mas fazemos esta avaliação com baixa confiança. Seu conjunto de ferramentas personalizado inclui dois carregadores – um em C++ e outro em C# .NET – e um backdoor do PowerShell. Embora a nossa visibilidade seja limitada, esperamos que o esclarecimento deste grupo encoraje outros investigadores a partilhar informações sobre este grupo.
A ESET Research agora também oferece relatórios de inteligência APT privados e feeds de dados. Para qualquer dúvida sobre este serviço, visite o Inteligência de ameaças ESET Disputas de Comerciais.
IOCs
Arquivos
SHA-1 | Nome do arquivo | Nome de detecção ESET | Comentário |
---|---|---|---|
3A47185D0735CDECF4C7C2299EB18401BFB328D5 | escrita | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
27ABB54A858AD1C1FF2863913BDA698D184E180D | escrita | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
678A131A9E932B9436241402D9727AA7D06A87E3 | escrita | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
757ABA12D04FD1167528FDD107A441D11CD8C427 | escrita | PowerShell/PowHeartBeat.B | PowHeartBeat 2.1.3.0003. |
54700A48D934676FC698675B4CA5F712C0373188 | escrita | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F53C138CB1B87D8FC9253A7088DB30B25389AF | escrita | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F1954DE11F72A46A4E823DE767210A3743B205 | tmp.ps1 | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0004. |
CE430A27DF87A6952D732B4562A7C23BEF4602D1 | tmp.ps1 | PowerShell/PowHeartBeat.A | PowHeartBeat 2.1.3.0004. |
EDE5AB2B94BA85F28D5EE22656958E4ECD77B6FF | escrita | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
4721EEBA13535D1EE98654EFCE6B43B778F13126 | vix64.dll | MSIL/PNG Loader.A | PNGLoader. |
728A6CB7A150141B4250659CF853F39BFDB7A46C | RarExtMgt.dll | MSIL/PNG Loader.A | PNGLoader. |
864E55749D28036704B6EA66555A86527E02AF4A | Jsprofile.dll | MSIL/PNG Loader.A | PNGLoader. |
8DA6387F30C584B5FD3694A99EC066784209CA4C | vssxml.dll | MSIL/PNG Loader.A | PNGLoader. |
AA60FB4293530FBFF00D200C0D44EEB1A17B1C76 | xsec_1_5.dll | MSIL/PNG Loader.A | PNGLoader. |
B2EAEC695DD8BB518C7E24C4F37A08344D6975BE | msvbvm80.dll | MSIL/PNG Loader.A | PNGLoader. |
CDB6B1CAFEE098615508F107814179DEAED1EBCF | lucenelib.dll | MSIL/PNG Loader.A | PNGLoader. |
4F9A43E6CF37FF20AE96E564C93898FDA6787F7D | vsstrace.dll | Win64/CRLLoad.C | CRLLoad. |
F181E87B0CD6AA4575FD51B9F868CA7B27240610 | ncrypt.dll | Win32/CLRLoad.A | CRLLoad. |
4CCF0386BDE80C339EFE0CC734CB497E0B08049C | ncrypt.dll | Win32/CLRLoad.A | CRLLoad. |
5CFC0D776AF023DCFE8EDED5CADA03C6D7F9C244 | wlbsctrl.dll | Win64/CLRLoad.E | CRLLoad. |
05F19EBF6D46576144276090CC113C6AB8CCEC08 | wlbsctrl.dll | Win32/CLRLoad.A | CRLLoad. |
A5D548543D3C3037DA67DC0DA47214B2C2B15864 | secur32.dll | Win64/CLRLoad.H | CRLLoad. |
CBF42DCAF579AF7E6055237E524C0F30507090F3 | dbghelp.dll | Win64/CRLLoad.C | CRLLoad. |
Caminhos de arquivo
Alguns dos Caminho Principal, LogFilePath e IfLogFilePath valores que encontramos nas amostras PNGLoad:
Caminho Principal | LogFilePath | IfLogFilePath |
---|---|---|
C:Arquivos de ProgramasVMwareFerramentas VMware | C:Arquivos de programasVMwareFerramentas VMwareVMware VGAuthreadme.txt | C:Arquivos de programasVMwareFerramentas VMwareVMware VGAuthVMWSU_V1_1.dll |
C:Arquivos de ProgramasWinRar | C: Arquivos de programasWinRarrarinstall.log | C:Arquivos de programasWinRardes.dat |
C:Arquivos de programasUltraViewer | C:Arquivos de ProgramasUltraViewerCopyRights.dat | C: Arquivos de programasUltraVieweruvcr.dll |
Network
Domínio | IP |
---|---|
nenhum | 118.193.78[.]22 |
nenhum | 118.193.78[.]57 |
avião.travel-comercials[.]agência | 5.183.101[.]9 |
central.suhypercloud[.]org | 45.77.36[.]243 |
Mutexes
Nas amostras CLRLoad, os nomes mutex que encontramos são:
aB82UduGX0EX
ad8TbUIZl5Ga
Mr2PJVxbIBD4
oERiQtKLgPgK
U37uxsCsA4Xm
Wo0r0KGWhYGO
xBUjQR2vxYTz
zYCLBWekRX3t
3c3401ad-e77d-4142-8db5-8eb5483d7e41
9xvzMsaWqxMeu
Uma lista abrangente de Indicadores de Compromisso (IoCs) e amostras pode ser encontrada em nosso repositório GitHub.
Técnicas MITER ATT e CK
Esta tabela foi construída usando versão 11 da estrutura MITER ATT & CK.
Tática | ID | Nome | Descrição |
---|---|---|---|
Reconhecimento | T1592.002 | Reunir informações do anfitrião da vítima: software | PowHeartBeat reúne explorer.exe informações. |
T1592.001 | Reunir informações do host da vítima: Hardware | PowHeartBeat reúne informações sobre unidades. | |
T1590.005 | Reunir informações da rede da vítima: endereços IP | PowHeartBeat reúne endereços IP do computador comprometido. | |
Desenvolvimento de Recursos | T1583.004 | Adquirir Infraestrutura: Servidor | Workok usa seus próprios servidores C&C. |
T1588.002 | Obter recursos: ferramenta | A Workok implantou diversas ferramentas disponíveis publicamente nas máquinas comprometidas. | |
T1583.001 | Adquirir infraestrutura: domínios | Workok registrou domínios para facilitar a comunicação e preparação do C&C. | |
T1588.005 | Obter capacidades: Exploits | Workok usou a vulnerabilidade ProxyShell. | |
T1587.001 | Desenvolver recursos: malware | Worok desenvolveu seu próprio malware: CLRLoad, PNGLoad, PowHeartBeat. | |
T1587.003 | Desenvolver capacidades: certificados digitais | Worok criou certificados Let's Encrypt SSL para permitir a autenticação TLS mútua para malware. | |
Execução | T1059.001 | Interpretador de comandos e scripts: PowerShell | PowHeartBeat é escrito em PowerShell. |
Persistência | T1505.003 | Componente de software do servidor: Web Shell | Workok usa o webshell ReGeorg. |
Evasão de Defesa | T1140 | Desofuscar / decodificar arquivos ou informações | Worok usa vários esquemas personalizados baseados em XOR para criptografar strings e logs em PowHeartBeat, PNGLoad e CLRLoad. |
T1036.005 | Mascaramento: corresponder ao nome ou local legítimo | As amostras PNGLoad são implantadas em diretórios VMWare de aparência legítima. | |
Acesso de credencial | T1003.001 | Despejo de credenciais do sistema operacional: memória LSASS | Worok usa Mimikatz para despejar credenciais da memória LSASS. |
Discovery | T1082 | Descoberta de informações do sistema | PowHeartBeat coleta informações do sistema operacional. |
T1083 | Descoberta de arquivos e diretórios | PowHeartBeat pode listar arquivos e diretórios. | |
T1046 | Descoberta de serviço de rede | Trabalho usa NbtScan para obter informações de rede sobre máquinas comprometidas. | |
T1124 | Descoberta de hora do sistema | PowHeartBeat reúne informações de horário da vítima. | |
Coleção | T1005 | Dados do sistema local | PowHeartBeat coleta dados do sistema local. |
T1560.002 | Arquivar dados coletados: arquivar via biblioteca | PowHeartBeat compacta os dados com gzip antes de enviá-los ao servidor C&C. | |
Comando e controle | T1071.001 | Protocolo de camada de aplicativo: protocolos da Web | Algumas variantes do PowHeartBeat usam HTTP como protocolo de comunicação com o servidor C&C. |
T1090.001 | Proxy: Proxy Interno | PowHeartBeat lida com a configuração de proxy na máquina da vítima. | |
T1001.002 | Ofuscação de dados: esteganografia | PNGLoad extrai valores de pixel de . Png arquivos para reconstruir cargas úteis. | |
T1573.002 | Canal criptografado: criptografia assimétrica | PowHeartBeat lida com comunicações HTTPS com o servidor C&C. | |
T1095 | Protocolo de camada de não aplicação | Algumas variantes do PowHeartBeat usam ICMP como protocolo de comunicação com o servidor C&C. | |
T1132.001 | Codificação de Dados: Codificação Padrão | Worok usa codificação XOR em PowHeartBeat e PNGLoad. | |
T1132.002 | Codificação de dados: codificação não padrão | Workok usa algoritmos de codificação XOR que fazem uso de um sal adicional. | |
exfiltration | T1041 | Exfiltração no canal C2 | PowHeartBeat usa seu canal de comunicação C&C para exfiltrar informações. |
- blockchain
- Coingenius
- carteiras de criptomoeda
- cryptoexchange
- cíber segurança
- cibercriminosos
- Cíber segurança
- Departamento de Segurança Interna
- carteiras digitais
- Pesquisa ESET
- firewall
- Kaspersky
- malwares
- Mcafee
- NexBLOC
- platão
- platão ai
- Inteligência de Dados Platão
- Jogo de Platão
- PlatãoData
- jogo de platô
- VPN
- Nós Vivemos Segurança
- a segurança do website
- zefirnet