====== Get-Acl ======
ファイルやレジストリキーなどのリソースのセキュリティ記述子を取得する。\\
===== ディレクトリのセキュリティ記述子を取得する =====
$ Get-Acl C:\Windows
Directory: C:\
Path Owner Access
---- ----- ------
Windows NT SERVICE\TrustedInstaller CREATOR OWNER Allow 268435456…
===== ディレクトリの PowerShell パスと SDDL を取得する =====
$ Get-Acl C:\Windows | Format-List -Property PSPath, Sddl
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows
Sddl : O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464G:
S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464D:PA
I(A;OICIIO;GA;;;CO)(A;OICIIO;GA;;;SY)(A;;0x1301bf;;;SY)(A;OICIIO;G
A;;;BA)(A;;0x1301bf;;;BA)(A;OICIIO;GXGR;;;BU)(A;;0x1200a9;;;BU)(A;
CIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271
478464)(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-185329263
1-2271478464)(A;;0x1200a9;;;AC)(A;OICIIO;GXGR;;;AC)(A;;0x1200a9;;;
S-1-15-2-2)(A;OICIIO;GXGR;;;S-1-15-2-2)
===== SDDL の内容は GetSecurityDescriptorSddlForm('All') と同様である =====
$ (Get-Acl C:\Windows).GetSecurityDescriptorSddlForm('All')
O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464G:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464D:PAI(A;OICIIO;GA;;;CO)(A;OICIIO;GA;;;SY)(A;;0x1301bf;;;SY)(A;OICIIO;GA;;;BA)(A;;0x1301bf;;;BA)(A;OICIIO;GXGR;;;BU)(A;;0x1200a9;;;BU)(A;CIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;0x1200a9;;;AC)(A;OICIIO;GXGR;;;AC)(A;;0x1200a9;;;S-1-15-2-2)(A;OICIIO;GXGR;;;S-1-15-2-2)
===== Get-Acl でディレクトリから取得できる情報は Format-List で確認できる =====
$ Get-Acl C:\Windows | Format-List
Path : Microsoft.PowerShell.Core\FileSystem::C:\Windows
Owner : NT SERVICE\TrustedInstaller
Group : NT SERVICE\TrustedInstaller
Access : CREATOR OWNER Allow 268435456
NT AUTHORITY\SYSTEM Allow 268435456
NT AUTHORITY\SYSTEM Allow Modify, Synchronize
BUILTIN\Administrators Allow 268435456
BUILTIN\Administrators Allow Modify, Synchronize
BUILTIN\Users Allow -1610612736
BUILTIN\Users Allow ReadAndExecute, Synchronize
NT SERVICE\TrustedInstaller Allow 268435456
NT SERVICE\TrustedInstaller Allow FullControl
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow Read
AndExecute, Synchronize
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow -161
0612736
APPLICATION PACKAGE AUTHORITY\制限されたすべてのアプリケーション
パッケージ Allow ReadAndExecute, Synchronize
APPLICATION PACKAGE AUTHORITY\制限されたすべてのアプリケーション
パッケージ Allow -1610612736
Audit :
Sddl : O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464G:
S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464D:PA
I(A;OICIIO;GA;;;CO)(A;OICIIO;GA;;;SY)(A;;0x1301bf;;;SY)(A;OICIIO;G
A;;;BA)(A;;0x1301bf;;;BA)(A;OICIIO;GXGR;;;BU)(A;;0x1200a9;;;BU)(A;
CIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271
478464)(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-185329263
1-2271478464)(A;;0x1200a9;;;AC)(A;OICIIO;GXGR;;;AC)(A;;0x1200a9;;;
S-1-15-2-2)(A;OICIIO;GXGR;;;S-1-15-2-2)
===== SID のユーザー名を調べる =====
PowerShell (pwsh) をシステムアカウント (psexec -s) で実行する。\\
**psexec** は [[windows:scoop|Scoop]] で [[windows:sysinternals|Windows Sysinternals]] をインストールする。\\
$ sudo psexec -s -i pwsh
**-s** システムアカウントでリモートプロセスを実行します。\\
**-i** リモートシステム上の指定されたセッションのデスクトップと対話するようにプログラムを実行します。セッションが指定されていない場合、プロセスはコンソールセッションで実行されます。\\
※システムアカウントでの操作は、システムに重大な影響を与える可能性があるので、十分に注意すること!!
PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
ここでは **C:\Program Files\WindowsApps** ディレクトリを **NT AUTHORITY\SYSTEM** アカウントで参照する。\\
$ Get-Acl "C:\Program Files\WindowsApps" | Format-List
Path : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\WindowsApps
Owner : NT SERVICE\TrustedInstaller
Group : NT SERVICE\TrustedInstaller
Access : NT AUTHORITY\RESTRICTED Allow ReadAndExecute, Synchronize
NT AUTHORITY\SYSTEM Allow FullControl
NT AUTHORITY\SYSTEM Allow 268435456
NT AUTHORITY\LOCAL SERVICE Allow ReadAndExecute, Synchronize
NT AUTHORITY\NETWORK SERVICE Allow ReadAndExecute, Synchronize
BUILTIN\Administrators Allow ReadAndExecute, Synchronize
BUILTIN\Users Allow ReadAndExecute, Synchronize
NT SERVICE\TrustedInstaller Allow 268435456
NT SERVICE\TrustedInstaller Allow FullControl
S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-33
13616867-983405619-2501854204 Allow -1610612736
S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-33
13616867-983405619-2501854204 Allow ReadAndExecute, Synchronize
Audit :
Sddl : O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464G:S-1-
5-80-956008885-3418522649-1831038044-1853292631-2271478464D:PAI(A;OICI
;0x1200a9;;;RC)(A;;FA;;;SY)(A;OICIIO;GA;;;SY)(A;OICI;0x1200a9;;;LS)(A;
OICI;0x1200a9;;;NS)(A;CI;0x1200a9;;;BA)(XA;;0x1200a9;;;BU;(Exists WIN:
//SYSAPPID))(A;OICIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-18
53292631-2271478464)(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-
1853292631-2271478464)(A;OICIIO;GXGR;;;S-1-15-3-1024-3635283841-253018
2609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)(
A;;0x1200a9;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898
-3848208603-3313616867-983405619-2501854204)
**SDDL の表記**\\
^ 表記 ^ 用途 ^
| O:ユーザーSID | オブジェクト所有者の SID の指定 |
| G:グループSID | オブジェクトのプライマリグループの SID の指定 |
| D:DACLフラグ(ACE文字列1)(ACE文字列2)……(ACE文字列n) | DACL の指定 |
| S:SACLフラグ(ACE文字列1)(ACE文字列2)……(ACE文字列n) | SACL の指定 |
**SDDL:**\\
O:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
G:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
D:PAI(A;OICI;0x1200a9;;;RC)(A;;FA;;;SY)(A;OICIIO;GA;;;SY)
(A;OICI;0x1200a9;;;LS)(A;OICI;0x1200a9;;;NS)(A;CI;0x1200a9;;;BA)(XA;;0x1200a9;;;BU;(Exists WIN://SYSAPPID))(A;OICIIO;GA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;;FA;;;S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464)(A;OICIIO;GXGR;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)
(A;;0x1200a9;;;S-1-15-3-1024-3635283841-2530182609-996808640-1887759898-3848208603-3313616867-983405619-2501854204)
[[https://www.atmarkit.co.jp/ait/articles/0603/25/news016.html|Windowsのセキュリティ設定を記述するSDDL文字列とは?:Tech TIPS - @IT]] より\\
**SID: S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464** のユーザー名を取得する。\\
$ (New-Object System.Security.Principal.SecurityIdentifier('S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464')).Translate([System.Security.Principal.NTAccount]).Value
NT SERVICE\TrustedInstaller
===== 参考文献 =====
[[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-acl|Get-Acl - Microsoft | Docs]]\\
[[https://superuser.com/questions/1288014/reset-default-acls-for-c-program-files-windowsapps|windows - Reset default ACLs for C:\Program Files\WindowsApps - Super User]]\\