Certified

Recon

Nessa máquina começamos com o IP 10.10.11.41 e com as credenciais judith.mader:judith09 . Vamos começar mapeando a rede com nmap:

Sabemos agora que temos um servidor Windows com Active Directory operando, e podemos começar a testar a credencial que temos disponível.

SMB

Começo listando os compartilhamentos do SMB com o usuário judith.meder que temos disponível:

Temos acesso de leitura nas pastas comum do SMB, e não tem nenhuma informação valiosa para a gente nessas pastas.

O próximo passo que fiz foi usar da credencial válida para enumerar outros usuários com bruteforce de RID:

E com isso consigo uma boa lista de outros possíveis usuários do sistema:

Com o kerbrute, podemos testar se os usuários são válidos no sistema:

Com os usuários válidos, tento ver qual deles eu consigo acessar as pastas via SMB, tentando autenticar sem passar senha, mas nenhum funcionou.

AD ACL

Sem muitas possibilidades com o SMB, podemos tentar enumerar como o active directory está configurado e entender melhor o nosso contexto para pensar em mais possibilidades. Decido usar o bloodhound para esse fim: bloodhound-python -c All -u judith.mader -p judith09 -d certified.htb -ns 10.10.11.41 -v . A melhor query eu eu consegui achar para esse grafo foi a padrão "Find shortest paths do Domain Admin":

Com esse grafo e as credenciais de Judith Mader, podemos começar a estudar e pensar em formas de abusar das permissões que temos para conseguir uma escalação lateral dentro do AD e conseguir conta com mais permissões. No nosso contexto, o usuário management_svc possui CanPSRemote na máquina, o que nos indicar que com esse usuário podemos finalmente interagir com comandos no servidor. Estudando melhor a configuração representada pelo grafo do bloodhound, já se torna possível pensar em algumas possibilidades.

Judith.Mader possui permissão WriteOwner no grupo Management, que por sua vez possui permissão de GenericWrite em management_svc . Estudando melhor sobre essas permissões podemos entender que em uma visão geral, Judith.Mader consegue adicionar ela mesma e o management_svc no grupo management, ganhando permissão de GenericWrite sobre ele, o que permite ataques de Shadow Credentials em cima dele.

O primeiro passo do plano de ataque é inserir Judith.Mader no grupo Management, usando o comando net rpc group addmem "Management" "judith.mader" -U "certified.htb"/"judith.mader"%"judith09" -S "10.10.11.41", porém todas as tentativas me dão como resposta erro de acesso negado. Com a permissão de WriteOwner podemos editar as permissões no grupo com o comando impacket-dacledit -action "write" -rights "WriteMembers" -principal "judith.mader" -target-dn "CN=MANAGEMENT,CN=USERS,DC=CERTIFIED,DC=HTB" "certified.htb"/"judith.mader":"judith09" Agora consigo adicionar os usuários no grupo Management:

Agora, o usuário Judith.Mader possui GenericWrite em management_svc, podemos aplicar um ataque Shadow Credentials para conseguir a Hash NTLM desse usuário. Para isso, uso o pywhisker para performar esse ataque.

Agora temos a Hash a091c1832bcdd4677c28b5a6a1295584 do usuário management_svc e podemos nos autenticar como ele usando Pass the Hash e, como esse usuário tem CanPSRemote na máquina, podemos nos conectar usando evil-winrm e a hash do usuário: evil-winrm -i 10.10.11.41 -u management_svc -H a091c1832bcdd4677c28b5a6a1295584

Shell como CA Operator

Agora como management_svc, começo a olhar as conexões desse usuário no grafo do bloodhound, e encontro essa ligação:

Tendo permissão de GenericAll sobre ca_operator, permite com que management_svc aplique o ataque de Shadow Credentials e consiga a NTHASH de ca_operator

ROOT - ESC9

Nesse momento acabei ficando sem ideias, então minha intenção foi estudar o meu novo acesso como ca_operator e me aprofundar no novo contexto que eu estava inserido. Fazendo esse novo reconhecimento, ao analisar os templates de certificado de autoridade com certipy-ad, acabamos descobrindo que ca_operator está registrado em um template vulnerável a vulnerabilidade ESC9, a qual podemos abusar para conseguir acesso de administrador no sistema.

Essa vulnerabilidade é bem documentada, e podemos seguir essa documentação para conseguir explorar com sucesso. No nosso contexto atual temos essas informações para realizar o ataque:

Os passos realizados são os seguintes:

  • o userPrincipalName de ca_operator é modificado para qual usuário queremos a Hash (administrator no nosso caso)

  • O ceritifcado vulneravel é chamado pelo ca_operator

  • O UPN de ca_operator é modificado para qualquer outro valor

  • Agora, podemos nos autenticar com o certificado obtido e ler o NTHASH do usuário que estava no UPN no momento em que o certificado foi ixado (Administrator)

Agora, temos a hash do administrator do AD, e podemos nos autenticar utilizando Pass the Hash, e conseguir uma shell através do evil-winrm por exemplo:

Last updated