Quebra de senha oculta com Smbexec





Escrevemos regularmente sobre como os hackers costumam confiar em técnicas de hacking não maliciosas para evitar a detecção. Eles literalmente “sobrevivem na grama” usando ferramentas padrão do Windows, evitando assim os antivírus e outros utilitários para detectar atividades maliciosas. Como defensores, agora temos que lidar com as terríveis consequências dessas técnicas inteligentes de hacking: um funcionário bem colocado pode usar a mesma abordagem para roubar dados furtivamente (propriedade intelectual da empresa, números de cartão de crédito). E se ele demorar e trabalhar devagar e despercebido, será extremamente difícil - mas ainda possível, com a abordagem certa e as ferramentas certas - detectar tal atividade.



Por outro lado, eu não gostaria de demonizar os funcionários, já que ninguém quer trabalhar em um ambiente de negócios direto desde 1984 de Orwell. Felizmente, há uma série de etapas práticas e hacks que podem tornar a vida muito mais difícil para usuários internos. Veremos os métodos de ataque furtivos usados ​​por hackers por funcionários com algum conhecimento técnico. E um pouco mais adiante discutiremos as opções para reduzir esses riscos - estudaremos as opções técnicas e organizacionais de ação.



O que há de errado com o PsExec?



Edward Snowden, com ou sem razão, tornou-se sinônimo de roubo de dados internos. A propósito, não esqueça de dar uma olhada neste post sobre outros insiders que também merecem algum status de fama. Um ponto importante a enfatizar sobre os métodos que Snowden usou é que, até onde sabemos, ele não instalou nenhum software malicioso externo!



Em vez disso, Snowden usou um pouco de engenharia social e usou seu trabalho como administrador de sistema para coletar senhas e criar credenciais. Nada extravagante - nenhum ataque mimikatz , man-in-the-middle ou metasploit .



As organizações nem sempre estão na posição única de Snowden, mas há uma série de lições a serem aprendidas a partir do conceito de “sobrevivência no pasto” - não realizar nenhuma ação prejudicial que possa ser detectada e ter um cuidado especial ao usar credenciais. Lembre-se deste pensamento.



Psexec e seu primo crackmapexec impressionaram incontáveis ​​pentesters, hackers e blogueiros de segurança da informação. E quando combinado com o mimikatz, o psexec permite que os invasores naveguem na rede sem precisar saber a senha em texto não criptografado.



O Mimikatz intercepta o hash NTLM do processo LSASS e, em seguida, passa o token ou credenciais - os chamados. Ataque "passe o hash"- em psexec, permitindo que um invasor faça logon em outro servidor em nome de outro usuário. E com cada mudança subsequente para um novo servidor, o invasor coleta credenciais adicionais, expandindo a gama de suas capacidades para encontrar o conteúdo disponível.



Quando comecei a trabalhar com o psexec, parecia mágico para mim - graças a Mark Russinovich , o gênio desenvolvedor do psexec - mas também sei sobre seus componentes barulhentos . Ele nunca é reservado!



O primeiro fato interessante sobre o psexec é que ele usa o protocolo de arquivo de rede SMB extremamente complexo da Microsoft. Psexec usa SMB para enviar pequenos bináriosarquivos no sistema de destino, colocando-os na pasta C: \ Windows.



Em seguida, o psexec cria um serviço do Windows usando o binário copiado e o executa com o nome extremamente "inesperado" PSEXECSVC. Ao mesmo tempo, você pode realmente ver tudo isso, como eu, observando a máquina remota (veja abaixo).





Cartão de visita Psexec: serviço "PSEXECSVC". Ele inicia um arquivo binário que foi colocado sobre SMB na pasta C: \ Windows.



Como etapa final, o binário copiado abre uma conexão RPC com o servidor de destino e aceita os comandos de controle (por padrão, por meio do shell cmd do Windows), executando-os e redirecionando a entrada e a saída para a máquina doméstica do invasor. Nesse caso, o invasor vê a linha de comando básica - a mesma como se ele estivesse conectado diretamente.



Muitos componentes e um processo muito barulhento!



O sofisticado processo interno de Psexec explica a mensagem que me intrigou durante meus primeiros testes há alguns anos: "Iniciando PSEXECSVC ..." seguido por uma pausa antes que a linha de comando apareça.





Psexec do Impacket realmente mostra o que está acontecendo por baixo do capô.



Não é de surpreender: o psexec trabalhou muito sob o capô. Se você estiver interessado em uma explicação mais detalhada, verifique esta ótima descrição aqui.



Obviamente, quando usado como uma ferramenta de administração do sistema, que era o propósito original do psexec, não há nada de errado com o zumbido de todos esses mecanismos do Windows. Para um atacante, entretanto, o psexec criaria complicações, e para um insider cauteloso e astuto como Snowden, o psexec ou um utilitário semelhante seria um risco muito grande.



E então vem o Smbexec



O SMB é uma maneira inteligente e furtiva de transferir arquivos entre servidores, e os hackers se infiltraram diretamente no SMB durante séculos. Suponho que todos já saibam que não se deve abrir as portas SMB 445 e 139 para a Internet, certo?



Na Defcon em 2013, Eric Milman ( brav0hax ) lançou o smbexec para que os testadores de penetração pudessem experimentar hacking furtivo de SMB. Não sei a história toda, mas Impacket refinou ainda mais o smbexec. Na verdade, para meus testes, baixei os scripts do Impacket em python do Github .



Ao contrário do psexec, o smbexec evitatransferir um arquivo binário potencialmente detectável para a máquina de destino. Em vez disso, o utilitário vive inteiramente da grama, executando a linha de comando local do Windows.



Isso é o que ele faz: envia um comando da máquina atacante via SMB para um arquivo de entrada especial e, em seguida, cria e executa uma linha de comando complexa (como um serviço do Windows) que parecerá familiar aos usuários do Linux. Resumindo: ele inicia um shell cmd nativo do Windows, redireciona a saída para outro arquivo e a envia por SMB de volta para a máquina do invasor.



A melhor maneira de entender isso é estudar a linha de comando, que consegui obter do log de eventos (veja abaixo).





Não é a melhor maneira de redirecionar o I / O? A propósito, a criação de serviço tem o ID de evento 7045.



Como o psexec, ele também cria um serviço que faz todo o trabalho, mas o serviço é removido - ele é usado apenas uma vez para executar o comando e depois desaparece! Um oficial de segurança da informação monitorando a máquina da vítima não será capaz de detectar indicadores óbvios de um ataque: não há nenhum arquivo executável malicioso, nenhum serviço persistente está instalado e não há evidências de RPC sendo usado, já que SMB é o único meio de transferência de dados. Brilhante!



Ao mesmo tempo, um "pseudo-shell" está disponível do lado do invasor com atrasos entre o envio de um comando e o recebimento de uma resposta. Mas isso é o bastante para que um invasor - um hacker interno ou externo que já tenha um ponto de apoio - comece a procurar conteúdo interessante.







Para enviar dados de volta da máquina alvo para a máquina do invasor, smbclient é usado . Sim, este é o mesmo utilitário Samba , mas modificado para o script Python por Impacket. Na verdade, o smbclient permite que você organize secretamente o FTP em transferências SMB.



Vamos dar um passo atrás e pensar no que isso pode fazer pelo funcionário. Em meu cenário fictício, digamos que um blogueiro, analista financeiro ou consultor de segurança bem pago tenha permissão para usar um laptop pessoal para trabalhar. Como resultado de algum processo mágico, ela se ofende com a empresa e "faz de tudo". Dependendo do sistema operacional do laptop, ele usa a versão Python do Impact ou a versão Windows do smbexec ou smbclient como um arquivo .exe.



Como Snowden, ela aprende a senha de outro usuário espiando por cima do ombro ou tem sorte e se depara com um arquivo de texto com a senha. E com essas credenciais, ela começa a vasculhar o sistema em um novo nível de privilégios.



Hacking DCC: Nós não precisamos de nenhum Mimikatz estúpido



Em minhas postagens anteriores sobre testes de penetração, usei muito o mimikatz. Esta é uma ótima ferramenta para interceptar credenciais - hashes NTLM e até mesmo senhas em texto simples escondidas dentro de laptops e esperando para serem usadas.

Os tempos mudaram. As ferramentas de monitoramento tornaram-se melhores na detecção e bloqueio do mimikatz. Os administradores de segurança da informação também ganharam mais opções para mitigar os riscos associados aos ataques hash (doravante chamados de PtH).

Então, o que um funcionário inteligente deve fazer para coletar credenciais adicionais sem usar mimikatz?



Impacket inclui um utilitário chamado secretsdumpque busca credenciais do Cache de Credencial de Domínio, ou DCC, para abreviar. Tanto quanto eu entendo, se um usuário de domínio fizer logon em um servidor, mas o controlador de domínio não estiver disponível, o DCC permite que o servidor autentique o usuário. De qualquer forma, secretsdump permite que você despeje todos esses hashes, se disponíveis.



Os hashes DCC não são hashes NTML e não podem ser usados ​​para um ataque PtH .



Bem, você pode tentar quebrá-los para obter a senha original. No entanto, a Microsoft ficou mais inteligente com o DCC e tornou-se extremamente difícil quebrar os hashes DCC. Sim, existe o hashcat , "o seletor de senhas mais rápido do mundo", mas requer uma GPU para funcionar com eficiência.



Em vez disso, vamos tentar pensar como Snowden. O funcionário pode fazer engenharia social cara a cara e possivelmente descobrir algumas informações sobre a pessoa cuja senha ela deseja quebrar. Por exemplo, descubra se a conta online dessa pessoa já foi hackeada e examine a senha em texto não criptografado em busca de pistas.



E é esse o cenário que decidi percorrer. Vamos supor que um insider descubra que seu chefe, Cruella, foi hackeado várias vezes em diferentes recursos da web. Depois de analisar várias dessas senhas, ele percebe que Cruella prefere usar o formato de nome de time de beisebol "Yankees" seguido pelo ano atual, "Yankees2015".



Se você está tentando reproduzir isso em casa, você pode baixar um pequeno, "C"código que implementa o algoritmo de hash DCC e o compila. John the Ripper adicionou suporte DCC a propósito, então você pode usá-lo também. Vamos supor que um insider não queira se envolver em aprender sobre John, o Estripador, e goste de executar "gcc" em código C legado.



Enquanto retratava o papel de um insider, fiz várias combinações diferentes e no final consegui descobrir que a senha de Cruella era "Yankees2019" (veja abaixo). Missão completa!





Com um pouco de engenharia social, um pouco de adivinhação e uma pitada de Maltego, você está no caminho certo para quebrar o hash DCC.





Eu proponho acabar com isso. Voltaremos a essa questão em outros posts e veremos métodos de ataque ainda mais lentos e furtivos, enquanto continuamos a contar com o excelente conjunto de utilitários do Impacket.



All Articles