如何审计哪个进程访问了文件?

如何审计哪个进程访问了文件?

我知道如何审计哪个用户访问了文件。如何知道哪个进程正在修改目录中的文件?

答案1

我猜你可能想要进行长期审计,而不是使用“进程监视器”或反复运行“handle.exe”。我们来看看我的超能力是否能在这里发挥作用。

“对象访问”审计可能正是您要找的。如果您要审计计算机上本地访问的文件的访问,那么您将能够看到访问文件的进程名称。但是,如果文件正在远程访问,您将只能看到访问文件的用户的姓名和登录 ID(而不是访问文件的进程的名称)。

如果您要监视的文件位于服务器上,则需要修改该服务器上的本地安全策略(除非它是域控制器计算机,在这种情况下,您将不得不添加或修改现有的 GPO,从而更改所有域控制器计算机的安全策略)。在组策略中,您要查找的设置是“审核对象访问”,位于组策略/本地策略中“计算机配置”的“Windows 设置”子节点的“安全设置”子节点的“本地策略”子节点的“审核策略”子节点中。更新组策略(GPUPDATE)以使更改生效。

启用该设置后(针对成功、失败或两者,取决于您要访问的内容),您需要在文件夹或文件上添加 SACL(系统访问控制列表)以允许审核。在 W2K3 中,您可以通过在文件或文件夹的“安全”属性表中的“高级”对话框访问的“审核”选项卡上添加条目来修改 SACL。如果您只想审核特定用户或用户组的访问,请将其添加到 SACL。如果您想审核所有访问,只需将具有“完全控制”权限的“所有人”(如果您想同时审核成功和失败)添加到 SACL。

在安全策略中打开审核、更新组策略并使用 SACL 标记要审核的项目后,您将开始看到在托管文件的计算机的“安全”事件日志中记录的审核事件,例如:

事件来源:安全
事件 ID:560
类型:成功审计
类别:对象访问
描述:
   对象打开:
      对象服务器:安全性
      对象类型:文件
      对象名称:C:\Secret Docs\World Domination Plan\Chinchilla.txt
      句柄 ID:1904
      操作 ID:{0,233543114}
      进程 ID:3356
      图像文件名:C:\WINDOWS\system32\notepad.exe
      主要用户名:EAnderson
      主域:LAPTOP01
      主登录 ID:(0x0,0x1C744)
      客户端用户名:-
      客户域:-
      客户端登录ID:-
      访问:READ_CONTROL
         同步
         ReadData(或 ListDirectory)
         WriteData(或 AddFile)
         AppendData(或 AddSubdirectory 或 CreatePipeInstance)
         阅读EA
         写EA
         读取属性
         写入属性
      特权:-
      限制 Sid 数量:0
      访问掩码:%18

“图像文件名”显示执行访问的进程的名称。但是,您不会在通过“文件和打印共享”访问文件而创建的审核条目中看到“图像文件名”。(我不确定是否有一个令人信服的“故事”来长期审核远程访问的文件。您至少必须在远程客户端上执行“进程跟踪”,即使这样,我也不认为您能够通过客户端和服务器计算机的安全日志之间的任何关联来区分在远程用户上下文中运行的各种程序执行的访问……)

答案2

一种方法是使用过滤器进程监控,Sysinternals 工具之一。帮助文件有一个类似示例。但这不是核心操作系统组件,因此您需要检查是否适合安装它。

答案3

您可以从以下位置下载 handle.exe:
http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx
对于查看打开的句柄非常有用。

相关内容