Navegando pelo Windows Defender de maneira barata e alegre: ofuscando Mimikatz

imagem

Olá pessoal. Hoje, consideraremos a opção de executar o mimikatz no Windows 10. O Mimikatz é uma ferramenta que implementa a funcionalidade do Windows Credentials Editor e permite extrair os dados de autenticação do usuário conectado ao sistema de forma aberta.

Durante o teste, é útil ter algo que despeja senhas de usuários, mas agora até o Windows Defender padrão incorporado no Windows está se tornando um problema e pode interferir em nossos planos grandiosos.

Observo que esse método também é adequado para outros produtos antivírus (o Virustotal ANTES e DEPOIS também pensa assim), que realiza uma análise estática dos binários por assinatura.
Portanto, embora seja improvável que esse método o ajude nas soluções EDR, ele pode facilmente contornar o Windows Defender.

Anteriormente, era possível contornar isso alterando as palavras no arquivo de mimikatz para mimidogz, excluindo algumas linhas nos metadados e nos banners. Agora ficou mais difícil, mas ainda possível.

Pela ideia de toda essa ação, agradeço à pessoa com o apelido ippsec.

Neste artigo, usaremos:

  • Windows 10 com o Windows Defender ativado (com bancos de dados atualizados)
  • Mimikatz
  • Visual studio
  • HxD (editor hexadecimal)

Copiando mimikatz para o computador da vítima, espera-se que você veja esse alerta.

imagem


Em seguida, realizaremos uma série de manipulações para que o Defender deixe de ver a ameaça aqui.

Primeiro de tudo, vamos encontrar e substituir as palavras mimikatz. Substitua mimikatz, por exemplo, por thunt (você pode substituí-lo por qualquer coisa) e MIMIKATZ por THUNT. Parece algo assim.

imagem

Em seguida, editaremos o arquivo mimikatz \ mimikatz \ mimikatz.rc no Visual Studio (que após a substituição agora é thunt.rc), substituindo mimikatz e gentilkiwi por qualquer coisa, também não esqueceremos de substituir mimikatz.ico por qualquer outro ícone. Clique em "reconstruir solução" (ou reconstruir solução) e obtenha nossa versão atualizada do mimikatz. Copiamos as vítimas para o computador, ii ... alerta. Vamos descobrir para que o Defender funciona. A maneira mais fácil é copiar um binário com um tamanho diferente antes da primeira operação do antivírus.

Primeiro, copie metade e copie-o para uma máquina Windows 10.

head –c 600000 mimikatz.exe > hunt.exe 

Defender é silencioso, não é ruim já. Experimentando, encontramos a primeira operação. Parecia assim para mim:

 head -c 900000 mimikatz.exe > hunt.exe –   head -c 950000 mimikatz.exe > hunt.exe –  head -c 920000 mimikatz.exe > hunt.exe –   head -c 930000 mimikatz.exe > hunt.exe –   head -c 940000 mimikatz.exe > hunt.exe –  head -c 935000 mimikatz.exe > hunt.exe –   head -c 937000 mimikatz.exe > hunt.exe –  head -c 936000 mimikatz.exe > hunt.exe –   head -c 936500 mimikatz.exe > hunt.exe –  head -c 936400 mimikatz.exe > hunt.exe –  head -c 936300 mimikatz.exe > hunt.exe –  head -c 936200 mimikatz.exe > hunt.exe –   

Abra o hunt.exe no editor hexadecimal e veja para que o Defender pode funcionar. O olho pegou a corda KiwiAndRegistryTools.

imagem

Vamos jogar com limites aleatórios - tornou-se KiWIAnDReGiSTrYToOlS, salve e copie. Silêncio, o que significa que adivinhávamos certo. Agora vamos encontrar todas as ocorrências dessas linhas no código, substituir e reconstruir nosso projeto. Para verificar, execute head -c 936300 mimikatz.exe> ​​hunt.exe. A última vez que o Defender funcionou, agora não. Seguindo em frente.

imagem

De uma maneira tão complicada, adicionando mais e mais linhas ao nosso hunt.exe, foram descobertas palavras-chave - wdigest.dll, isBase64InterceptOutput, isBase64InterceptInput, multirdp, logonPasswords, credman. Trocando-os com letras maiúsculas aleatórias, tive certeza de que o Defender parasse de xingar.
Mas não foi tão fácil, pensou o Defender e trabalhou para funções importadas e que diferenciam maiúsculas de minúsculas. Essas são funções chamadas da biblioteca netapi32.dll.

  • I_NetServerAuthenticate2
  • I_NetServerReqChallenge
  • I_NetServerTrustPasswordsGet

Se dermos uma olhada no netapi32.dll (C: \ windows \ system32 \ netapi32.dll), veremos que a cada função é atribuído um número.

imagem

Alterar a chamada de função do formulário
windows.netapi32.I_NetServerTrustPasswordsGet (args)
em
windows.netapi32 [62] (args)
Para fazer isso, precisamos substituir mimikatz \ lib \ x64 \ netapi32.min.lib. Crie um arquivo netapi32.def e escreva as seguintes linhas:

 LIBRARY netapi32.dll EXPORTS I_NetServerAuthenticate2 @ 59 I_NetServerReqChallenge @ 65 I_NetServerTrustPasswordsGet @ 62 

Salvamos e executamos o comando (não esqueça de fazer backup do netapi32.min.lib original, apenas por precaução)

 lib /DEF:netapi32.def /OUT:netapi32.min.lib 

Mais uma vez, reconstruiremos o projeto e copiaremos o que conseguimos. O defensor está calado. Execute a mimikatz resultante com direitos de administrador.

imagem

Sucesso. Assim, o mimikatz é iniciado e o Windows Defender não funcionou, e é isso que estávamos buscando. Senhas, aparências e hashes são emitidos.

Armadilhas

Aguardando:

 * Username : thunt * Domain : DESKTOP-JJRBJJA * Password : Xp3#2!^&qrizc 

Realidade:

 * Username : thunt * Domain : DESKTOP-JJRBJJA * Password : (null) 

A situação na vida é um pouco diferente das condições do laboratório. Pode ser necessário trabalhar com o registro para visualizar a senha. Por exemplo, habilite ou crie uma chave UseLogonCredential (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest). Mas pode haver problemas com isso, pois Ao reiniciar, as chaves podem ser recuadas.

Pode ser ainda pior se, se você executar em uma das versões mais recentes do Windows 10, em vez da senha em texto sem formatação, verá o seguinte:

 * Password : _TBAL_{68EDDCF5-0AEB-4C28-A770-AF5302ECA3C9} 

É tudo sobre o TBAL, sucessor do ARSO (Reiniciar Automaticamente o Logon ). Agora, quando TBAL é solicitado, o lsasrv verifica se a conta é local ou MS e, com base nisso, usa msv1_0 ou cloudAP para salvar tudo o que é necessário para retomar uma sessão do usuário. Depois disso, o mecanismo de logon automático é definido como a senha codificada _TBAL_ {68EDDCF5-0AEB-4C28-A770-AF5302ECA3C9}.

No entanto, no laboratório, recebemos a senha do usuário e, em uma situação de combate, pelo menos podemos obter hashes.

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


All Articles