

























1. icacls-syntax 2. icacls-parameters 3. icacls-remarks 4. Command-line syntax key 5. icacls-examples 6. 查看ACL 6.1 icacls 6.2 Get-Acl 6.3 获取注册表项的 ACL 6.4 查看文件夹属性 7. 访问控制列表 7.1 ACL 7.2 DACL 7.3 SACL 7.4 ACE 7.5 ACE类型 7.6 更多相关 8. ACL检测 8.1 文件和注册表检测工具(2015年的小工具) 8.2 域环境(2017年参考资料)
Windows-icacls
使用 ACL(访问控制列表)可以灵活地控制对文件和文件夹的访问权限。
显示或修改指定文件中的任意访问控制列表 (DACL), 并将存储的 DACL 应用于指定目录中的文件。
此命令将替换已弃用的 cacls 命令。
icacls directory [/substitute SidOld SidNew [...]] [/restore aclfile] [/C] [/L] [/Q]
将存储的 DACL 应用于目录中的文件。
icacls name [/save aclfile] [/setowner user] [/findsid Sid] [/verify] [/reset] [/T] [/C] [/L] [/Q]
ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
将匹配名称的文件和文件夹的 DACL 存储到 aclfile 中 以便将来与 /restore 一起使用。 请注意,未保存 SACL、所有者或完整性标签。
ICACLS name /setowner user [/T] [/C] [/L] [/Q]
更改所有匹配名称的所有者。 该选项不会强制更改所有身份;使用 takeown.exe 实用程序可实现该目的。
ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]
查找包含显式提及 SID 的 ACL 的所有匹配名称。
ICACLS name /verify [/T] [/C] [/L] [/Q]
查找其 ACL 不规范或长度与 ACE 计数不一致的所有文件。
ICACLS name /reset [/T] [/C] [/L] [/Q]
为所有匹配文件使用默认继承的 ACL 替换 ACL。
icacls name [/grant[:r] Sid:perm[...]] [/deny Sid:perm [...]] [/remove[:g|:d]] Sid[...]]] [/setintegritylevel Level:policy[...]] [/T] [/C] [/L] [/Q]
- Explicit denials (显式拒绝)
- Explicit grants (显式授予)
- Inherited denials (继承拒绝)
- Inherited grants (继承授予)
下表描述了用于指示命令行语法的表示法。
若要将 C:\Windows 目录中的所有文件的 DACL 及其子目录保存到 ACLFile 文件,请键入:
icacls c:\windows\* /save AclFile /T
若要为 C:\Windows 目录及其子目录中存在的 ACLFile 中的每个文件还原 DACL,请键入:
icacls c:\windows\ /restore AclFile
若要向用户授予对名为 Test1 的文件的 Delete 和 Write DAC 权限,请键入:
icacls test1 /grant User1:(d,wdac)
icacls test1 /grant Administrator:(D,WDAC)
若要向 SID S-1-1-0 定义的用户授予对名为 TestFile 的文件的删除和写入 DAC 权限,请键入:
icacls TestFile /grant *S-1-1-0:(d,wdac)
要将 (高) 完整性级别应用于目录并确保其文件和子目录都继承此级别,请键入:
icacls "myDirectory" /setintegritylevel (CI)(OI)H
> icacls /?
…
> icacls c:\windows\winsxs
c:\windows\winsxs NT SERVICE\TrustedInstaller:(OI)(CI)(F)
BUILTIN\Administrators:(RX)
BUILTIN\Administrators:(OI)(CI)(IO)(GR,GE)
NT AUTHORITY\SYSTEM:(RX)
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(GR,GE)
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)
APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包:(RX)
APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包:(OI)(CI)(IO)(GR,GE)
已成功处理 1 个文件; 处理 0 个文件时失败
如果问题是由 WinSxS 文件夹的权限不正确引起的, 您可以使用 icacls.exe 查看、修改、备份和还原 ACL(访问控制列表)。
“WinSxS”文件夹位于“c:\windows\winsxs”。 它包含多个文件,包括Windows更新服务包和安全补丁,以及来自过去更新的文件。
获取资源(如文件或注册表项)的安全描述符。
> Get-Acl c:\windows\winsxs | Format-List
Path : Microsoft.PowerShell.Core\FileSystem::C:\windows\winsxs
Owner : NT SERVICE\TrustedInstaller
Group : NT SERVICE\TrustedInstaller
Access : NT AUTHORITY\SYSTEM Allow -1610612736
NT AUTHORITY\SYSTEM Allow ReadAndExecute, Synchronize
BUILTIN\Administrators Allow -1610612736
BUILTIN\Administrators Allow ReadAndExecute, Synchronize
BUILTIN\Users Allow -1610612736
BUILTIN\Users Allow ReadAndExecute, Synchronize
NT SERVICE\TrustedInstaller Allow FullControl
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow ReadAndExecute, Synchronize
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow -1610612736
APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包 Allow ReadAndExecute, Synchronize
APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包 Allow -1610612736
Audit :
Sddl : …
> Get-Acl -Path c:\windows\winsxs | Format-Table -wrap
…
> $ac2 = Get-Acl -Path c:\windows\winsxs
> $ac2.Access
…
> $ac2.Access | Format-Table -wrap
…
此示例使用 Get-Acl cmdlet 获取注册表的控制子项(HKLM:\SYSTEM\CurrentControlSet\Control)的安全描述符。
> Get-Acl -Path HKLM:\System\CurrentControlSet\Control | Format-List
Path : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
Owner : BUILTIN\Administrators
Group : NT AUTHORITY\SYSTEM
Access : BUILTIN\Administrators Allow FullControl
BUILTIN\Users Allow ReadKey
BUILTIN\Administrators Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
CREATOR OWNER Allow FullControl
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow ReadKey
S-1-15-3-1024-… Allow Re
adKey
Audit :
Sddl : O:BAG:SYD:(A;;KA;;;BA)(A;CIID;KR;;;BU)(A;CIID;KA;;;BA)(A;CIID;KA;;;SY) (A;CIIOID;KA;;;CO)(A;CIID;KR;;;AC)(A;CIID;KR;;;S-1-15-3-1024-… )
> $acl = Get-Acl -Path 'HKLM:\SAM'
> $acl.Access
> $acl.Access | Format-Table -wrap
…
Set-Acl
更改指定项(如文件或注册表项)的安全描述符。
文件夹属性 → 安全 → 高级 …
Access control lists
自由访问控制列表(DACL)标识允许或拒绝访问安全对象的受托人。
当 进程 尝试访问安全对象时,系统将检查对象的 DACL 中的 ACE,以确定是否向其授予访问权限。
有关详细信息,请参阅 DACL 如何控制对对象的访问。
有关如何正确创建 DACL 的信息,请参阅 创建 DACL。
系统访问控制列表(SACL)允许管理员记录访问安全对象的尝试。
每个 ACE 指定指定的受托人尝试的访问尝试类型,这些尝试导致系统在安全事件日志中生成记录。
SACL 中的 ACE 可以在访问尝试失败、成功或两者兼有时生成审核记录。
有关 SCL 的详细信息,请参阅 审核生成 和 SACL 访问权限。
(ACE) 访问控制列表 (ACL) 中的条目。 ACE 包含一组访问权限和安全标识符 (SID),用于标识允许、拒绝或审核其权限的受托方。
访问控制项数量
ACE 的类型
有六种类型的 ACE,其中三种受所有安全对象支持。 其他三种类型 目录服务对象支持的特定于对象的 ACE。
目录服务 (DS) 对象支持特定于对象的 ACE。 特定于对象的 ACE 包含一对 GUID,这些 GUID 扩展了 ACE 可以保护对象的方式。
所有类型的 ACE 都包含以下访问控制信息:
使用 ACL
请勿尝试直接处理 ACL 的内容。
若要确保 ACL 在语义上正确,请使用相应的函数来创建和作 ACL。
有关详细信息,请参阅 从 ACL 获取信息,并 创建或修改 ACL。
DACL 和 ACE
AccessCheck 的工作原理
本文介绍了Windows系统中的ACL在文件、注册表和域环境下后门利用方面的技巧,并给出检测后门的建议。 详细信息请看如下原文链接:
可借助开源工具WindowsDACLEnumProject:
能够列出存在风险的ACL。(最新版本为10年前的2015年。但下载后仍然能用)
运行可能提示找不到 MSVCR100.dll 文件。
MSVCR100.dll 是Visual Studio 2010(Visual C++ 2010)的一个动态链接库。 可以单独下载这个dll文件放在同一目录下即可。
下载最新版即可。(10.0.40219.473). Zip文件大小: 0.4 MB
在命令行下运行,可以看到扫描过程。
需要开启高级安全审核策略,参考资料:
开启策略后,Event ID 5136会记录域环境中ACL的修改,参考资料:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。