求教SSDT HOOK实现文件监控~

VirtualRookit 2012-03-21 03:19:14
为了描述详细,内容较长~_~
小弟想要实现一个监控文件内容的程序,本来是想用文件过滤驱动实现,但考虑到以前没接触文件过滤驱动,而文件过滤系统对小弟来说又相当复杂,急切间实现不了。所以打算用SSDT HOOK ZwWriteFile来实现文件内容监控。
程序流程:利用HookZwWriteFile来检测ZwWriteFile里的缓冲区有没有敏感字符。经测试发现文本文件(*.txt)监控正常(应用层保存*.txt时,有敏感字符全部会被内核的HookZwWriteFile捕捉),而Office2003的WORD文件*.doc与EXCEL文件*.xls也可被正常捕捉,只是office文件操作被HookZwWriteFile捕捉时都是短文件名(*.txt被捕捉是长文件名)。但是、但是PPT(*.ppt)有敏感字符一律不会被HookZwWriteFile捕捉,小弟及为不解,现在问题总结如下:(只HOOK了 ZwWriteFile一个函数)

1.*.txt,*.doc,*.xls的内容均会被HookZwWriteFile过滤到,但*.ppt的内容却不会被HookZwWriteFile过滤到,为什么?(俺用十六进制工具打开*.ppt发现*.ppt里的确有本该被过滤到的字符。是否*.ppt保存时不调用内核的NtWriteFile函数而是调用了其它函数,小弟只知内核层写文件用NtWriteFile函数,是否还有其它的?)


2.*.txt被HookZwWriteFile过滤到时,路径与文件名正常,而像*.doc,*.xls则路径正常,但文件名却好像是短名eg:(\Documents and Settings\Administrator\桌面\~WRD0001.tmp)其实路径应为(\Documents and Settings\Administrator\桌面\新建 Microsoft Word 文档.doc),在内核中怎么把短名转为长名,有高手能给下代码不~

3.有没有大牛有能实现类似功能的代码,能分享下吗,谢谢~
...全文
182 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2012-03-21
  • 打赏
  • 举报
回复
有一本书叫windows内核安全编程,里面讲了这些
fly4free 2012-03-21
  • 打赏
  • 举报
回复
我目前的FsFD,仅仅是控制移动磁盘的使用情况。
Lactoferrin 2012-03-21
  • 打赏
  • 举报
回复
过滤驱动要接管fastio
Lactoferrin 2012-03-21
  • 打赏
  • 举报
回复
长文件名就是ZwQueryInformationFile
VirtualRookit 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly4free 的回复:]

针对你的6楼。
你还是耐心看看吧,别折腾N久,最后还是决定看,浪费时间。

我对文件系统感觉最闹心的就是 缓存了。
IRP_MJ_READ, IRP_MJ_WRITE 也没有什么例子可参考(没有找到例子啊~),我也头大,可该看的话还是得看。
有代码了还得理解消化,也不是容易的事情。
[/Quote]呵呵,正在百度filemapping的内核API呢,你用文件过滤系统有没有遇到文件短名转长名的?
fly4free 2012-03-21
  • 打赏
  • 举报
回复
针对你的6楼。
你还是耐心看看吧,别折腾N久,最后还是决定看,浪费时间。

我对文件系统感觉最闹心的就是 缓存了。
IRP_MJ_READ, IRP_MJ_WRITE 也没有什么例子可参考(没有找到例子啊~),我也头大,可该看的话还是得看。
有代码了还得理解消化,也不是容易的事情。
fly4free 2012-03-21
  • 打赏
  • 举报
回复
不知道 MJ_IRP_WRITE 是否能捕获到 所有文件系统层的写事件。
filemapping的内部会不会直接对磁盘操作?

VirtualRookit 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lactoferrin 的回复:]

仅ssdt hook不容易抓到对file mapping的读写
[/Quote]谢谢你,既然HOOK SSDT API的话容易遗漏,那请问有能满足类似功能的文件过滤驱动源代码,sfilter和filemon代码太多了,有没有简化版且带注释的文件过滤驱动可以参考、学习~
Lactoferrin 2012-03-21
  • 打赏
  • 举报
回复
仅ssdt hook不容易抓到对file mapping的读写
VirtualRookit 2012-03-21
  • 打赏
  • 举报
回复
你好,请问能详细点说说吗~[Quote=引用 3 楼 lactoferrin 的回复:]

当然有,file mapping
这里只有 writefile会到ntwritefile
[/Quote]
Lactoferrin 2012-03-21
  • 打赏
  • 举报
回复
当然有,file mapping
这里只有 writefile会到ntwritefile
VirtualRookit 2012-03-21
  • 打赏
  • 举报
回复
除了WriteFile、FlushViewOfFile、FlushFileBuffers这三个windowsAPI能写磁盘外,还有其它的吗。另,这三个API是否会最终调用内核的NtWriteFile函数
Lactoferrin 2012-03-21
  • 打赏
  • 举报
回复
ZwQueryInformationFile查询信息

9,513

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 安全技术/病毒
社区管理员
  • 安全技术/病毒社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧