文件监控
本篇教程主要介绍iMonitorSDK的文件监控相关功能。
文件监控全部消息
带Post的表示动作已经完成
消息类型 | 说明 |
---|---|
emMSGFileCreate | 打开、创建文件事件,返回拦截可以阻止文件的打开、创建 |
emMSGFilePostCreate | |
emMSGFileQueryOpen | 打开文件事件 |
emMSGFilePostQueryOpen | |
emMSGFileCleanup | |
emMSGFileCreateSection | 映射文件事件 |
emMSGFilePostCreateSection | |
emMSGFileRead | 读取文件事件 |
emMSGFilePostRead | |
emMSGFileWrite | 写文件事件 |
emMSGFilePostWrite | |
emMSGFileCreateHardLink | 创建文件硬链接事件 |
emMSGFilePostCreateHardLink | |
emMSGFileRename | 文件重命名事件 |
emMSGFilePostRename | |
emMSGFileDelete | 删除文件事件 |
emMSGFilePostDelete | |
emMSGFileSetSize | 设置文件大小事件 |
emMSGFilePostSetSize | |
emMSGFileSetBasicInfo | 设置文件基本信息事件 |
emMSGFilePostSetBasicInfo | |
emMSGFileFindFile | 查找文件、遍历文件事件 |
emMSGFilePostFindFile |
emMSGFileCreate
字段
具体字段的含义可以参考NtCreateFile
struct FileCreate {
Path : Path;
Attributes : FileAttributes;
Access : FileAccess;
ShareAccess : FileShareAccess;
CreateDisposition : FileDisposition;
CreateOptions : FileOptions;
}
使用场景
文件创建事件是非常重要的一个事件,所有的文件打开操作都会触发这个事件。一般可以用来实现文件审计、文件管控、文档保护,也可以用来实现文件重定向。
默认的情况下,所有的文件创建、打开都会触发这个消息,而文件打开是非常频繁的,数据量特别大,如果是同步等待可能会影响系统性能。为了解决这个问题,SDK也支持配置只监控写权限打开的消息。
cxUserSessionConfig session_config;
session_config.FilterFileCreateOnlyModifiable = true;
emMSGFilePostCreate
字段
比emMSGFileCreate多了一个Information字段,表示文件创建是创建新的文件、还是打开已经存在的文件,对于审计场景来说非常有用。
struct FilePostCreate {
Path : Path;
Attributes : FileAttributes;
Access : FileAccess;
ShareAccess : FileShareAccess;
CreateDisposition : FileDisposition;
CreateOptions : FileOptions;
Information : ULONG;
}
emMSGFileCleanup
字段
struct FileCleanup {
Path : Path;
Information : ULONG; // 用来表示文件是否被修改过
}
使用场景
对于杀毒场景,需要监控文件落地(创建写入完成)事件,在新的文件落地的时候,进行病毒查杀,这时候就可以使用Cleanup事件了。Information表示这个文件是否被修改。
emMSGFileCreateSection
字段
struct FileCreateSection {
Path : Path;
PageProtection : FilePageProtection;
}
使用场景
这个消息对应于NtCreateSection(CreateFileMapping),表示创建文件映射,一般加载模块、加载进程都会触发,可以用来拦截模块的加载。(拦截模块加载也可以通过进程监控拦截。)
emMSGFileFindFile
字段
truct FileFindFile {
Path : Path;
FindName : Path;
RestartScan : Bool;
}
使用场景
遍历文件的时候触发,拦截了可以阻止进程查看目录,达到隐藏文件的效果。也可以用来开发智能识别勒索病毒(几乎所有的勒索病毒都会遍历文件)
其他消息
其他消息可以参考文件操作的API