terça-feira, 29 de maio de 2018

Já ouviram falar em Mimikatz?

Na correria de sempre, me é imperativo escrever ao menos um artigo por mês. Contribuir de alguma forma com a comunidade técnica tem se mostrado deveras gratificante.
Os feedbacks tem sido incríveis!!!
Nesse mês, trataremos sobre a obtenção de credenciais e escalação de privilégios em sistemas operacionais Microsoft. 
Sim, não só é possível, como relativamente fácil descobrir a senha de usuários com sessão ativa no Sistema Operacional.
O fato de eu explorar esse tema não deve sob nenhuma hipótese ser encarado como um incentivo à práticas delituosas, tipificada no código penal através da popularmente conhecida "Lei Carolina Dieckmann" (12.737/2012 - Art.154-A) e no Marco Civil da Internet (12.965/2014), que menciona a proteção da privacidade e a proteção dos dados pessoais.

"Lei 12.737/2012 no Art. 154-A - Invadir dispositivo informático alheio, conectado ou não à rede de computadores, mediante violação indevida de mecanismo de segurança e com o fim de obter, adulterar ou destruir dados ou informações sem autorização expressa ou tácita do titular do dispositivo ou instalar vulnerabilidades para obter vantagem ilícita:

Pena – detenção de 3 (três) meses a 1 (um) ano e multa."
O objetivo de todas as minhas publicações é unicamente a disseminação do conhecimento, ainda que eu seja um eterno aprendiz. Ocorre que ensinando, eu também aprendo.
Conhecendo os meandros e fragilidade dos sistemas, torna-se mais fácil inclusive protege-los.
Ferramentas para descoberta de senhas em sistemas operacionais Microsoft existem pelo menos desde 1999. Na época já tínhamos o "PasswordReminder" que através do processo WinLogon.exe permitia obter credenciais armazenadas em cache sob algumas circunstâncias.
Após isso, várias outras ferramentas surgiram, como por exemplo o WCE, NTpassDump, CredDump, entre alguns outros.
Mas nenhuma delas causou e causa o alvoroço e espanto causado pelo Mimikatz.
Ferramenta desconhecida por muitos administradores de redes, foi desenvolvida em linguagem C e permite obter em texto "limpo" as senhas de usuários com sessão ativa no sistema, inclusive usuários do Active Directory.
Embora exista há algum tempo, a apresentação feita no BlackHat de 2014 fez com que seu uso crescesse consideravelmente.
Felizmente a Microsoft encontrou uma solução plausível para bloquear a ação do mimikatz sem prejudicar a experiencia do usuário. Mas nem sempre foi assim ...
Para tornar seus sistemas cada vez mais práticos aos usuários finais, uma das praticas adotadas pela Microsoft foi fazer com que as credenciais de acesso ficassem armazenadas em uma área de memória, de modo que não fosse necessário digita-las toda vez que um recurso que exigisse credenciais fosse acessado.
Esse processo é tratado pelo LSASS (Local Security Authority Subsystem Service) que  entre outras coisas armazena hashes e senhas utilizadas durante sessões de autenticação.

O que o Mimikatz faz?
Suportado no Windows 2000, XP, Vista, 7, 8, Server 2003, Server 2008 / 2008 R2, 2012 / 2012 R2 / 2016 e Windows 10, ele "simplesmente" analisa a memória utilizada pelo processo LSASS, busca e extrai credenciais.
Mais do que isso, o Mimikatz permite a extração de hashs, dumps, códigos PIN, tickets da memória e a manipulação de quase tudo isso.
É possível realizar ataques do tipo "pass-the-hash" e "pass-the-ticket", além de gerar tickets conhecidos como “Golden Tickets”.
É de certa forma, assustador!
Para que tenham ideia, há relatos de que cibercriminosos que desenvolveram o ransomware BadRabbit utilizaram o Mimikatz para autorizar o acesso e criptografar compartilhamentos remotos além de espalhar o ransoware para outras máquinas (utilizando outras vulnerabilidades existentes).

Mas ... é possível evitar sua ação?
A resposta mais simples é: Depende.
Em sistemas operacionais mais recentes (Windows 8.1 e superiores) pode-se executar o LSASS em "modo protegido".

O Windows 10 e o Windows 2016 traz um recurso denominado "Credential Guard", que implementa um segurança considerável e dificulta bastante a ação do Mimikatz.
Em sistemas operacionais mais antigos essas opções não estão disponíveis.
Necessário mencionar que hoje em dia o Mimikatz é detectável por quase todos os antivírus existentes. Assim, é de extrema importância manter um bom antivírus instalado e atualizado.
Em tese, pode-se reduzir a taxa de detecção através da alteração dos nomes do máximo de variáveis e funções existente no programa. De qualquer forma, embora possível, não se trata de uma tarefa de fácil execução.
Espalhados pela internet, existem artigos que mencionam a compilação da última versão do Mimikatz em formato dll, e depois a conversão do binário em uma string base64, que será substituída dentro do script Invoke-Mimikatz.ps1. Sim, já existe um script powershell para executá-lo.

Mãos à obra!!!
Para comprovar o funcionamento do Mimikatz, montei um laboratório com um servidor Windows 2016 virtual executado no Hyper-V e domínio do Active Directory.
O download do Mimikatz pode ser efetuado aqui.

O objetivo primário dessa postagem é mostrar o funcionamento da ferramenta. Assim, para facilitar o funcionamento e a coleta de evidencias, propositalmente reduzi o nível de segurança do Windows 2016. Obvio que em ambiente produtivo isso jamais deverá ser feito.


Também inseri o diretório C:\Temp nas exceções do Windows Defender. Somente após isso o download pôde ser concluído com êxito e o programa posteriormente executado.


Concluído o download, descompacte o arquivo em local de vossa preferência, clique com o botão direito do mouse sob o arquivo denominado "mimikatz" e selecione a opção "Run as administrator", ou em português, "Executar como Administrador".



Mimikatz descompactado.

Uma vez aberto o prompt do mimikatz, digite: privilege::debug


Após isso, digite: sekurlsa::logonpasswords full



Execução de comandos no Mimikatz

Simples assim!!!


Agora, utilize a barra de rolagem para localizar o usuário e senha do usuário desejado.



Credencial localizada e senha exibida em texto "limpo"

Embora eu tenha propositalmente reduzido o nível de segurança do Windows 2016, até o Windows 2012 as credenciais são obtidas sem grandes esforços.


Uma outra possibilidade é efetuar o dump do processo lsass.exe para um arquivo de despejo, e utilizar o Mimikatz para buscar credenciais nesse arquivo. Funciona que é uma beleza!!!


Isso tudo nos leva a outro ponto: Um sistema operacional bem configurado é determinante para garantir a segurança da informação.


A importância do conhecimento teórico

Sempre bato na tela de que ao menos no mundo de TI, tão importante quanto simplesmente saber executar, é entender o funcionamento e teoria envolvida nessas execuções. 

Notem que, detentor de entre outros inúmeros conhecimentos, programação, protocolos, sistemas operacionais e nesse caso também o funcionamento do processo lsass.exe, Benjamin Delpy criou uma ferramenta sensacional, que expõe credenciais de uma forma nunca antes vista e da qual, embora existam inúmeros esforços para neutralizá-la, ainda é amplamente utilizada.


Para os que desejam se aprofundar no assunto, recomendo:





É isso aí ... novamente espero ter contribuído para o enriquecimento técnico da comunidade de TI e principalmente para o aprimoramento da Segurança da Informação no Brasil.


Abraço e até o próximo artigo.