编程技术分享平台

网站首页 > 技术教程 正文

iMonitorSDK 系列教程三 · 文件监控

xnh888 2024-10-25 18:10:07 技术教程 37 ℃ 0 评论

iMonitorSDK (https://imonitorsdk.com/) 一款为终端、主机提供系统行为监控的开发套件。旨在帮助终端安全、管控、审计、零信任、主机安全等行业应用可以快速实现必要功能,而不用关心底层驱动的开发、维护和兼容性问题,让其可以专注于业务开发。适用于下列场景:零信任、终端管控、行为审计、主机安全、主动防御(HIPS)、终端检测与响应(EDR)、数据防泄密(DLP)、上网行为管理。

本篇教程主要介绍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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表