我的目标是确定哪个用户在本地文件共享中的文件上设置了隐藏属性。
我已按照此启用文件共享访问审核文章。简而言之:添加了一个组策略条目,以便将某些访问写入事件日志 + 启用文件夹级别的所有访问类型的审核。
结果,我在事件日志中得到了这样的条目:
Subject:
Security ID: Domain\Username
Account Name: Username
Account Domain: Domain
Logon ID: 0x329558
Object:
Object Server: Security
Object Type: File
Object Name: E:\share\filename.xml
Handle ID: 0xfc4
Resource Attributes: S:AI
Process Information:
Process ID: 0x4
Process Name:
Access Request Information:
Accesses: WriteAttributes
Access Mask: 0x100
用户到底设置了什么属性?是资源属性中列出的吗?它们看起来不像是“隐藏”的意思,而且我没有在事件日志中得到任何其他 WriteAttributes 类型的条目(我通过 PowerShell 进行了彻底搜索)。而且肯定有某个进程正在设置这个隐藏标志。
问题:
- 此事件日志条目是否包含有关应用程序实际设置的属性的信息?
- 我还能如何跟踪此活动?进程监视器没有捕获单个 SetBasicinformationFile 事件,但文件仍然处于隐藏状态!
答案1
您应该能够使用一个简单的批处理脚本来实现这一点,在该脚本中,您可以重复执行dir /b /a:h
并评估错误级别。/b
开关是可选的,但会以最低限度的格式显示目录输出。
当您运行此命令时,如果未找到隐藏文件,它将返回 ERRORLEVEL 1,这正是您想要的。如果文件被隐藏,它将返回 ERRORLEVEL 0,这是您不想要的,这时您就可以触发某些操作。
现在,这不会告诉您谁隐藏了该文件,但如果您经常调用它(例如每 30 秒一次),那么您至少会知道它发生的时间,然后您应该能够将其与当时发生的 4663 个事件相关联。我假设您已经在此文件夹中启用了审核?
你可以用任何调度程序调用此脚本,尽管这实际上是一个很好的场景活动哨兵灯实用程序具有内置调度程序,可以根据您运行的任何脚本的错误级别触发电子邮件警报。它甚至包括脚本的输出。该功能称为“应用程序调度程序”。当然,您也可以编写自己的脚本并使用 PowerShell、VBScript 或类似 blat.exe 的脚本触发电子邮件。
如果 Windows 审计不够细致,无法发现某些人,那么审计部分可能是最棘手的只是隐藏文件。但即便如此,对父文件夹的审核也应该显示一些活动,例如目录列表。
答案2
文件/共享审核不提供更改内容的完整详细信息。资源属性用于动态访问控制功能,提供有关导致审核事件的 DAC 分类标准的详细信息。
服务器上的 ProcMon 可能可以工作,但您需要小心配置它。它应该配置为删除已过滤事件、仅收集文件事件、保存到备份文件(而不是虚拟内存)以及特定操作(SetBasicInformationFile)以及可能的路径。然后,您可以将配置导出到 PMC 文件并在启动时使用它。指定以秒为单位的 /Runtime,然后在文件结束时移动/重命名文件并重新启动也是一个好主意,因为 ProcMon 偶尔会失效并可能对系统产生不利影响。