查看: 5830|回复: 22
收起左侧

[分享] 火绒开放式行为启发框架

  [复制链接]
142868652
发表于 2012-12-1 12:15:12 | 显示全部楼层 |阅读模式
Table of Contents
1 整体架构
1.1 行为分析引擎
1.1.1 感知
1.1.2 抽象
1.2 行为分析单元
1.2.1 评估
2 核心概念详解
2.1 任务
2.2 任务组
2.3 分析单元
2.4 资源
3 行为启发框架工作流程
3.1 整体流程
3.2 关于评估流程
3.2.1 分析单元独立评估
3.2.2 引擎综合评估
3.3 关于评估模型
4 分析单元详解
4.1 结构总览
4.2 属性节点
4.3 关系节点
4.4 观察点
4.5 评估函数
5 典型案例
5.1 观察程序行为
5.2 总结程序行为
5.3 建立评估模型
5.4 编写行为分析单元
6 开发者手册(火绒Lua扩展说明)
6.1 评估函数
6.1.1 原型
6.1.2 参数
6.1.3 返回值
6.2 常量
6.2.1 评估结果
6.2.1.1 HR.AR_analyzing
6.2.1.2 HR.AR_clean
6.2.1.3 HR.AR_malware
6.2.2 特殊路径(Special Path)
6.2.2.1 HR.SP_normal
6.2.2.2 HR.SP_system
6.2.2.3 HR.SP_progfiles
6.2.2.4 HR.SP_commfiles
6.2.2.5 HR.SP_programs
6.2.2.6 HR.SP_startup
6.2.2.7 HR.SP_temp
6.2.2.8 HR.SP_home
6.2.2.9 HR.SP_desktop
6.2.2.10 HR.SP_appdata
6.2.2.11 HR.SP_quick_launch
6.2.2.12 HR.SP_favorites
6.2.2.13 HR.SP_removable_media
6.3 辅助函数
6.3.1 观察点相关函数
6.3.1.1 HR.hitcnt
6.3.1.2 HR.hitall
6.3.2 文件相关函数
6.3.2.1 HR.dirname
6.3.2.2 HR.basename
6.3.2.3 HR.filetype
6.3.3 进程相关
6.3.3.1 HR.procinfo
6.3.4 安装软件相关
6.3.4.1 HR.specpath
6.3.4.2 HR.expected_specpath
6.3.4.3 HR.living_in
6.3.4.4 HR.lookup_progname
6.3.5 资源访问列表相关函数
6.3.5.1 HR.file_modified
6.3.5.2 HR.file_extracted
6.3.5.3 HR.regkey_created
6.3.5.4 HR.regval_modified
6.3.6 其他函数
6.3.6.1 HR.split_cmdline
6.3.6.2 HR.sfc_protected
6.3.6.3 HR.digital_signed
6.4 观察点参数
6.4.1 MT_execmon (执行监控)
6.4.2 MT_filemon (文件监控)
6.4.3 MT_regmon (注册表监控)
6.4.4 MT_procmon (进程监控)
6.4.5 MT_netmon (网络监控)
6.4.6 MT_behavior (行为监控)
1 整体架构
整体架构如下图所示,火绒行为启发框架由两大部分组成:

行为分析引擎;
行为分析单元;


1.1 行为分析引擎
行为分析引擎职责:感知和抽象;

1.1.1 感知
行为分析引擎通过动态监控和静态分析来感知被分析实体(任务、任务组)的动作及属性;

1.1.2 抽象
行为分析引擎收集感知到的程序动作及属性,模拟病毒分析师的分析过程,对收集到的动作及属性进行抽象,产生程序行为;

1.2 行为分析单元
行为分析单元职责:恶意行为评估(后面简称评估);

1.2.1 评估
行为分析单元通过行为分析引擎感知并抽象出的程序动作、属性及行为,根据一定的算法评估待分析程序(任务组)的恶意程度;

2 核心概念详解
下图展示了本文全部核心概念之间的关系,本节会对这些概念依次进行说明,理解这些概念是编写行为分析单元的基础;



2.1 任务
由行为分析引擎抽象并管理的执行体,通常一个任务对应一个进程;
2.2 任务组
由行为分析引擎按照一定逻辑(例如:进程父子关系)抽象并组织、由一个或多个任务组成的集合,称为任务组;
任务组是行为分析的基本单位;
2.3 分析单元
由行为分析引擎组织并调度,由一系列观察点以及相应的评估函数组成、用来识别某个或某类恶意程序行为的逻辑单元;
行为分析引擎把行为分析单元映射到每个任务组上,使每个不同的任务组都可以得到相同的行为分析单元视图;
2.4 资源
行为分析引擎把文件、注册表、网络统称为资源;
引擎为每个任务组独立维护与上述资源相对应的资源访问列表:即文件修改列表、注册表修改列表、网络访问列表;
上述列表作为任务组的属性,可以被行为分析单元查询;
3 行为启发框架工作流程
3.1 整体流程
下图展示了行为启发框架的整个工作流程:



3.2 关于评估流程
如上图所示,评估过程由两个阶段组成:

分析单元独立评估阶段
引擎综合评估阶段
3.2.1 分析单元独立评估
行为分析单元根据一定的评估算法,对任务组的恶意程度进行评估,并返回以下三种评估结果:

分析中;
发现恶意行为;
不存在恶意行为;
3.2.2 引擎综合评估
行为分析引擎根据全部行为分析单元的分析结果以及内置综合评估算法对任务组的恶意性进行最终评估,并返回以下两种最终评估结果:

发现恶意行为;
不存在恶意行为;
3.3 关于评估模型
分析单元建立分析逻辑的理论模型(评估算法);
评估模型完全由行为分析单元独立实现,行为分析引擎不负责评估模型的实现;
不同分析单元可以实现完全不同的评估模型;
4 分析单元详解
4.1 结构总览
下面的代码展示了一个行为分析单元的框架结构:
<?xml version="1.0"?>

<!-- 行为分析单元 -->
<analyzer>

        <!-- 属性节点 -->
        <name>分析单元名称(例如:Suspicious/Xxx)</name>
        <guid>GUID(例如:12345678-1234-1234-1234-123456781234)</guid>
        <author>作者名称</author>
        <description>分析单元说明</description>

        <!-- 观察点 -->
        <checkpoints>

                <!-- 关系节点 -->
                <item action="观察点(例如:NET_http)" filter="过滤条件(例如:update/*)" handler="评估函数(例如:NET_http_handler)"/>

                <!-- 评估函数 -->
                <script>
                <![CDATA[

                -- 评估函数用Lua语言描述
                -- -------------------

                -- 对应 action="观察点(例如:NET_http)" filter="过滤条件(例如:update/*)" 的评估函数
                function NET_http_handler(event, index)
                        -- 评估逻辑实现
                        -- ...
                end

                ]]>
                </script>

        </checkpoints>
</analyzer>
行为分析单元整体使用XML格式描述,组成要素包括:
属性节点
关系节点
观察点
评估函数
4.2 属性节点
属性节点包括以下四类信息:

包括分析单元名称(<analyzer/name>);
全局唯一ID(<analyzer/guid>);
作者信息(<analyzer/author>);
行为描述(<analyzer/description>);
4.3 关系节点
关系节点由 <analyzer/checkpoints/item> 约束,用来指定观察点和评估函数的绑定关系;
一个评估函数可以与一个或多个观察点绑定;
4.4 观察点
观察点即实现分析逻辑所需要关心的程序动作或行为;
观察点由 <analyzer/checkpoints/item/action> 指定;
每个观察点可以设置路径过滤器(Filter),即当动作/行为以及路径同时命中时触发对应的评估函数;
程序动作与行为以及相应的参数,与火绒系统诊断工具监控日志一致,目前包括以下动作及行为:  监控类型 动作/行为 描述 路径
MT_execmon EXEC_create 进程启动 进程路径名
(执行监控) EXEC_destroy 进程退出 进程路径名
EXEC_module_load 模块加载 模块路径名
MT_filemon FILE_touch 创建文件 文件全路径
(文件监控) FILE_open 打开文件 文件全路径
FILE_read 读取文件 文件全路径
FILE_write 写入文件 文件全路径
FILE_modified 文件被修改 文件全路径
FILE_readdir 遍历目录 目录全路径
FILE_remove 删除文件 文件全路径
FILE_rename 重命名文件 文件全路径
FILE_truncate 截断文件 文件全路径
FILE_mklink 建立文件硬链接 文件全路径
FILE_chmod 设置文件属性 文件全路径
FILE_setsec 设置文件安全属性 文件全路径
MT_regmon REG_openkey 打开注册表键 注册表键路径
(注册表监控) REG_mkkey 创建注册表键 注册表键路径
REG_rmkey 删除注册表键 注册表键路径
REG_mvkey 重命名注册表键 注册表键路径
REG_rmval 删除注册表键 注册表键路径
REG_getval 获取注册表值 注册表值路径
REG_setval 设置注册表值 注册表值路径
REG_loadkey 挂载注册表Hive文件 注册表键路径
REG_replkey 替换注册表键 注册表键路径
REG_rstrkey 导入注册表Hive文件 注册表键路径
REG_setsec 设置注册表键安全属性 注册表键路径
MT_procmon PROC_exec 创建进程 目标进程路径名
(进程监控) PROC_open 打开进程 目标进程路径名
PROC_debug 调试进程 目标进程路径名
PROC_suspend 挂起进程 目标进程路径名
PROC_resume 恢复进程 目标进程路径名
PROC_kill 结束进程 目标进程路径名
PROC_job 将进程加入工作集 目标进程路径名
PROC_pgprot 跨进程修改内存属性 目标进程路径名
PROC_freevm 跨进程释放内存 目标进程路径名
PROC_writevm 跨进程写内存 目标进程路径名
PROC_readvm 跨进程读内存 目标进程路径名
THRD_remote 创建远程线程 目标进程路径名
THRD_setctxt 跨进程设置线程上下文 目标进程路径名
THRD_suspend 跨进程挂起线程 目标进程路径名
THRD_resume 跨进程恢复线程 目标进程路径名
THRD_kill 跨进程结束线程 目标进程路径名
THRD_queue_apc 跨进程排队APC 目标进程路径名
SYS_settime 设置系统时间 无
SYS_link_knowndll 建立KnownDlls链接 链接文件名
SYS_open_physmm 打开物理内存设备 无
SYS_read_physmm 读物理内存 无
SYS_write_physmm 写物理内存 无
SYS_load_kmod 加载内核模块 内核模块全路径
SYS_enumproc 枚举进程 无
SYS_regsrv 注册服务 服务进程全路径
SYS_opendev 打开设备 设备名
W32_postmsg 发送窗口消息(Post) 目标进程路径名
W32_sendmsg 发送窗口消息(Send) 目标进程路径名
W32_findwnd 查找窗口 无
W32_msghook 设置消息钩子 无
W32_lib_inject DLL注入 注入DLL路径名
MT_netmon NET_connect 网络连接 远程地址(格式:IP:端口号)
(网络监控) NET_listen 监听端口 本机地址(格式:IP:端口号)
NET_send 发送数据包 远程地址(格式:IP:端口号)
NET_http HTTP请求 HTTP请求路径(格式:域名/URL)
MT_behavior BA_extract_hidden 释放隐藏文件 释放文件路径名
(行为监控) BA_extract_pe 释放PE文件 释放文件路径名
BA_self_copy 自我复制 复制目标文件路径名
BA_self_delete 自我删除 删除文件路径名
BA_ulterior_exec 隐秘执行 被执行映像路径名
BA_invade_process 入侵进程 目标进程路径名
BA_infect_pe 感染PE文件 目标文件路径名
BA_overwrite_pe 覆写PE文件 目标文件路径名
BA_register_autorun 注册自启动项 自启动文件路径名

4.5 评估函数
由 <analyzer/checkpoints/item/handler> 指定;
评估函数负责分析单元的逻辑实现;
评估函数通过Lua语言描述;
5 典型案例
5.1 观察程序行为
在虚拟机中运行一个样本,在火绒系统诊断工具中看到该样本会产生以下行为:
自我复制到系统目录;
在多个目录释放Autorun.inf,并指向自我复制的程序;
在注册表多个位置注册自启动项,并指向自我复制的程序;
枚举网络共享,并试图自我复制到可写共享目录中,且复制的程序带有隐藏属性;
不断遍历目录并向多个位置自我复制;
……
部分行为截图如下:


通过监控可以看到该样本具有典型的蠕虫行为;
5.2 总结程序行为
通过上面的观察、分析,总结该样本具有下面两类行为:

注册自启动项;
蠕虫病毒的典型行为:
在多个目录下释放Autorun.inf文件;
向共享目录写入隐藏文件;
向共享目录释放PE文件;
5.3 建立评估模型
通过对程序行为的总结,可以建立一个简单的评估模型对该类样本进行识别(这个评估模型虽然不是十分严谨,产品级的分析单元需要加入功能判断条件来避免误报,但可以很好的说明实现一个分析单元需要的全部流程):


5.4 编写行为分析单元
可以通过下面的代码实现一个分析单元来识别这类样本:

代码清单

代码解释
绑定观察点和评估函数
当产生“注册自启动项”行为时,触发 autorun_handler ;
当产生“释放隐藏文件”行为,并且释放目录为“\Device\LanmanRedirector”时(SMB共享),触发 extract_handler ;
当产生“释放PE文件”行为,并且释放目录为“\Device\LanmanRedirector”时(SMB共享),触发 extract_handler ;
当产生“文件被修改”动作,并且被修改文件为“任意目录下的autorun.inf”时,触发 extract_handler ;
评估函数
autorun_handler
忽略启动项类型(event.param.type)为“Critical/Autorun.inf”的情况(因为“文件被修改”观察点处理了这种情况);
设置 autorun 变量为 true,表示任务组已经注册过自启动项;
如果 extract 和 autorun 变量同时为 true,即任务组注册过自启动项并且向SMB共享释放过隐藏或PE文件,返回“发现恶意行为”(HR.AR_malware);
extract_handler
设置 extract 变量为 true,表示任务组已经向SMB共享释放过隐藏或PE文件;
如果 extract 和 autorun 变量同时为 true,即任务组注册过自启动项并且向SMB共享释放过隐藏或PE文件,返回“发现恶意行为”(HR.AR_malware);
6 开发者手册(火绒Lua扩展说明)
6.1 评估函数
6.1.1 原型
eval(event :table, index :integer)
6.1.2 参数
event: 描述动作/行为详细信息的表,具体信息在观察点参数中详细描述;
index: 观察点索引;
6.1.3 返回值
评估结果
6.2 常量
6.2.1 评估结果
6.2.1.1 HR.AR_analyzing
分析中;
如果分析单元返回此结果,分析引擎会继续向该分析单元投递该任务组产生的动作及行为;
6.2.1.2 HR.AR_clean
不存在恶意行为;
如果分析单元返回此结果,分析引擎会停止向该分析单元投递该任务组的后续动作及行为;
6.2.1.3 HR.AR_malware
发现恶意行为;
如果分析单元返回此结果,分析引擎会把该任务组转入综合评估阶段,并停止向该分析单元投递该任务组的后续动作及行为;
6.2.2 特殊路径(Special Path)
6.2.2.1 HR.SP_normal
普通路径;
6.2.2.2 HR.SP_system
%Windir%;
6.2.2.3 HR.SP_progfiles
%ProgramFiles%;
6.2.2.4 HR.SP_commfiles
%CommonProgramFiles%;
6.2.2.5 HR.SP_programs
安装软件目录;
6.2.2.6 HR.SP_startup
开始菜单启动目录;
6.2.2.7 HR.SP_temp
临时目录;
6.2.2.8 HR.SP_home
用户目录;
6.2.2.9 HR.SP_desktop
桌面路径;
6.2.2.10 HR.SP_appdata
程序数据目录;
6.2.2.11 HR.SP_quick_launch
快速启动栏目录;
6.2.2.12 HR.SP_favorites
收藏目录;
6.2.2.13 HR.SP_removable_media
可移动磁盘路径;
6.3 辅助函数
6.3.1 观察点相关函数
6.3.1.1 HR.hitcnt
说明: 检查指定观察点的命中次数;
原型: integer HR.hitcnt (wpid :integer);
参数:
wpid: 从0开始计算的观察点索引,与分析单元中观察点顺序对应;
返回值: 返回指定观察点 wpid 的命中次数;
实例:
function event_handler(event, index)
        -- 观察点命中超过5次,则评估为恶意行为
        if HR.hitcnt(index) > 5 then
                return HR.AR_malware
        end
end
6.3.1.2 HR.hitall
说明: 检查是否所有观察点全部命中;
原型: boolean HR.hitall (void);
参数: 无;
返回值: 返回true表示所有观察点全部命中;
实例:
function event_handler(event, index)
        -- 所有观察点都命中,则评估为恶意行为
        if HR.hitall() then
                return HR.AR_malware
        end
end
6.3.2 文件相关函数
6.3.2.1 HR.dirname
说明: 从文件全路径中分离目录名;
原型: string HR.dirname (pathname :string);
参数:
pathname: 文件全路径;
返回值: 返回文件全路径中的目录部分;
实例:
function event_handler(event, index)
        local dirname = HR.dirname(event.pathname)
        -- ...
end
6.3.2.2 HR.basename
说明: 从文件全路径中分离文件名;
原型: string HR.basename (pathname :string);
参数:
pathname: 文件全路径;
返回值: 返回文件全路径中的文件名部分;
实例:
function event_handler(event, index)
        local basename = HR.basename(event.pathname)
        -- ...
end
6.3.2.3 HR.filetype
说明: 文件类型识别;
原型: string HR.filetype (filename :string);
参数:
filename: 文件全路径;
返回值: 返回""(空串)表示无法识别文件类型,否则返回以下类型:
"MZ": DOS可执行程序;
"PE-EXE/32": 32位Windows可执行程序;
"PE-DLL/32": 32位Windows动态库程序;
"PE-SYS/32": 32位Windows驱动程序;
"PE-EXE/64": 64位Windows可执行程序;
"PE-DLL/64": 64位Windows动态库程序;
"PE-SYS/64": 64位Windows驱动程序;
实例:
function event_handler(event, index)
        -- 如果释放到%windir%\system32\drivers下面的文件不是驱动,则报恶意行为
        local dirname = string.lower(HR.dirname(extracted_filename))
        local drv_dirname = string.lower(os.getenv("windir")).."\\system32\\drivers"
        if dirname ~= drv_dirname then
                return HR.AR_analyzing
        end
        local ft = HR.filetype(extracted_fn)
        if ft ~= "PE-SYS/32" and ft ~= "PE-SYS/64" then
                return HR.AR_malware
        end
end
6.3.3 进程相关
6.3.3.1 HR.procinfo
说明: 获取进程信息;
原型: table HR.procinfo (pid :integer);
参数:
pid: 进程ID;
返回值: 返回进程信息表,目前支持的表字段包括:
pathname: 进程全路径;
cmdline: 进程命令行;
parent_pid: 父进程ID;
image_base: 主映像基址;
实例:
function event_handler(event, index)
        local pathname = HR.procinfo(event.param.pid).pathname
        -- ...
end
6.3.4 安装软件相关
6.3.4.1 HR.specpath
说明: 分析文件所在路径类型;
原型: integer HR.specpath (filename :string);
参数:
filename: 文件全路径;
返回值: 返回最先匹配到的特殊路径常量;
实例:
function event_handler(event, index)
        if HR.specpath(extracted_filename) == HR.SP_favorites then
                -- ...
        end
end
6.3.4.2 HR.expected_specpath
说明: 分析文件所在路径是否为指定特殊路径;
原型: boolean HR.expected_specpath (filename :string, specpath :integer, strict :boolean);
参数:
filename: 文件全路径;
specpath: 特殊路径值;
strict: true表示不扫描子路径, false反之;
例如检查一个文件是否在软件(例如:迅雷)安装目录的根目录下时strict参数要设置成true;
若果检查一个文件是否在软件安装目录下任意目录时strict参数要设置成false;
返回值: true表示 filename 位于 specpath 类型的路径;
实例:
function event_handler(event, index)
        if HR.expected_specpath(extracted_filename, HR.SP_favorites, true) then
                -- ...
        end
end
6.3.4.3 HR.living_in
说明: 判断任务组是不是全部位于指定特殊路径;
原型: boolean HR.living_in(specpath :integer);
参数:
specpath: 特殊路径值;
返回值: true表示任务组全部位于 specpath 类型的路径;
实例:
function event_handler(event, index)
        -- 如果任务组在程序目录下,则不报恶意行为
        if HR.living_in(HR.SP_programs) then
                return HR.AR_analyzing
        end
        -- ...
end
6.3.4.4 HR.lookup_progname
说明: 查询文件所属的软件名;
原型: string HR.lookup_progname (filename :string);
参数:
filename: 文件全路径;
返回值: 文件所属软件名;
实例:
function PROC_kill_handler(event, index)
        -- 如果结束QQ进程,则报可疑行为
        local fn = event.pathname
        if string.match(HR.lookup_progname(fn), ".*QQ.*") then
                return HR.AR_malware
        end
end
6.3.5 资源访问列表相关函数
6.3.5.1 HR.file_modified
说明: 查询指定文件是否被当前任务组修改过;
原型: boolean HR.file_modified (filename :string);
参数:
filename: 文件全路径;
返回值: true表示文件被当前任务组修改过;
实例:
function event_handler(event, index)
        if HR.file_modified(filname) then
                -- ...
        end
end
6.3.5.2 HR.file_extracted
说明: 查询指定文件是否由当前任务组释放;
原型: boolean HR.file_extracted (filename :string)
参数:
filename: 文件全路径;
返回值: true表示文件由当前任务组释放;
实例:
function event_handler(event, index)
        if HR.file_extracted(filname) then
                -- ...
        end
end
6.3.5.3 HR.regkey_created
说明: 查询指定注册表键是否由当前任务组创建;
原型: boolean HR.regkey_created (pathname :string);
参数:
pathname: 注册表键全路径;
返回值: true表示文件由当前任务组创建;
实例:
function event_handler(event, index)
        if HR.regkey_created(keyname) then
                -- ...
        end
end
6.3.5.4 HR.regval_modified
说明: 检查指定注册表值是否被当前任务组修改过;
原型: boolean HR.regval_modified (pathname :string);
参数:
pathname: 注册表值全路径;
返回值: true表示文件被当前任务组修改过;
实例:
function event_handler(event, index)
        if HR.regval_modified(keyname) then
                -- ...
        end
end
6.3.6 其他函数
6.3.6.1 HR.split_cmdline
说明: 解析命令行;
原型: table HR.split_cmdline (cmdline :string);
参数:
cmdline: 完整命令行;
返回值: 返回解析后的命令、参数表;
实例:
function event_handler(event, index)
        local cmdtab = HR.split_cmdline(event.param.cmdline)
        -- cmdtab[0]: 命令
        -- cmdtab[1]: 第一个参数
        -- cmdtab[2]: 第二个参数
        -- ...
end
6.3.6.2 HR.sfc_protected
说明: 检查一个文件是否为系统保护文件;
原型: boolean HR.sfc_protected (filename :string);
参数:
filename: 文件全路径;
返回值: true表示是系统保护文件;
实例:
function event_handler(event, index)
        if HR.sfc_protected(event.pathname) then
                -- ...
        end
end
6.3.6.3 HR.digital_signed
说明: 检查一个文件是否有数字签名;
原型: boolean HR.digital_signed (filename :string);
参数:
filename: 文件全路径;
返回值: true表示有数字签名;
实例:
function event_handler(event, index)
        if not HR.digital_signed(event.pathname) then
                return HR.AR_malware
        end
end
6.4 观察点参数
6.4.1 MT_execmon (执行监控)
动作 路径过滤器 参数
EXEC_create pathname: 进程全路径 param.pid: 进程ID
  param.parent_pid: 父进程ID
  param.cmdline: 进程命令行
  param.image_base: 主映像基址
EXEC_destroy pathname: 进程全路径 param.pid: 进程ID
  param.parent_pid: 父进程ID
  param.cmdline: 进程命令行
EXEC_module_load pathname: 进程全路径 param.pid: 进程ID
  param.base: 模块基址
  param.size: 模块大小

6.4.2 MT_filemon (文件监控)
动作 路径过滤器 参数
FILE_touch pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.access: 文件访问权限
  param.alloc_size:文件初始长度
  param.attrib: 文件属性
  param.share: 文件共享属性
  param.disposition: 文件打开/创建选项
  param.options: 文件打开/创建选项
  param.result: 动作完成结果(NTSTATUS)
FILE_open pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.access: 文件访问权限
  param.alloc_size:文件初始长度
  param.attrib: 文件属性
  param.share: 文件共享属性
  param.disposition: 文件打开/创建选项
  param.options: 文件打开/创建选项
  param.result: 动作完成结果(NTSTATUS)
FILE_read pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.offset: 文件内偏移
  param.datalen: 数据长度
  param.result: 动作完成结果(NTSTATUS)
FILE_write pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.offset: 文件内偏移
  param.datalen: 数据长度
  param.result: 动作完成结果(NTSTATUS)
FILE_modified pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.result: 动作完成结果(NTSTATUS)
FILE_readdir pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.filter: 文件遍历过滤条件
  param.result: 动作完成结果(NTSTATUS)
FILE_remove pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.result: 动作完成结果(NTSTATUS)
FILE_rename pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.replace_existing: 是否覆盖已存在文件
  param.new_filename: 目标文件名
  param.result: 动作完成结果(NTSTATUS)
FILE_truncate pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.eof: 截断后的文件长度
  param.result: 动作完成结果(NTSTATUS)
FILE_mklink pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.replace_existing: 是否覆盖已存在文件
  param.link_filename: 链接文件全路径
  param.result: 动作完成结果(NTSTATUS)
FILE_chmod pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.attrib: 文件属性
  param.result: 动作完成结果(NTSTATUS)
FILE_setsec pathname: 文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.result: 动作完成结果(NTSTATUS)

6.4.3 MT_regmon (注册表监控)
动作 路径过滤器 参数
REG_openkey pathname: 注册表键路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.access: 注册表打开/创建权限
  param.result: 动作完成结果(NTSTATUS)
REG_mkkey pathname: 注册表键路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.access: 注册表打开/创建权限
  param.result: 动作完成结果(NTSTATUS)
REG_rmkey pathname: 注册表键路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.result: 动作完成结果(NTSTATUS)
REG_mvkey pathname: 注册表键路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.new_keyname: 目标注册表键名
  param.result: 动作完成结果(NTSTATUS)
REG_rmval pathname: 注册表值路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.keyname: 注册表键路径名
  param.result: 动作完成结果(NTSTATUS)
REG_getval pathname: 注册表值路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.keyname: 注册表键路径名
  param.type: 注册表值类型
  param.datalen: 数据长度
  param.result: 动作完成结果(NTSTATUS)
REG_setval pathname: 注册表值路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.keyname: 注册表键路径名
  param.type: 注册表值类型
  param.datalen: 数据长度
  param.result: 动作完成结果(NTSTATUS)
REG_loadkey pathname: 注册表键路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.hive_filename: Hive文件路径
  param.result: 动作完成结果(NTSTATUS)
REG_replkey pathname: 注册表键路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.old_hive_filename: 原始Hive文件路径
  param.new_hive_filename: 新Hive文件路径
  param.result: 动作完成结果(NTSTATUS)
REG_rstrkey pathname: 注册表键路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.hive_filename: Hive文件路径
  param.result: 动作完成结果(NTSTATUS)
REG_setsec pathname: 注册表键路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.result: 动作完成结果(NTSTATUS)

6.4.4 MT_procmon (进程监控)
动作 路径过滤器 参数
PROC_exec pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.result: 动作完成结果(NTSTATUS)
PROC_open pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.access: 进程打开权限
  param.result: 动作完成结果(NTSTATUS)
PROC_debug pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.result: 动作完成结果(NTSTATUS)
PROC_suspend pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.result: 动作完成结果(NTSTATUS)
PROC_resume pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.result: 动作完成结果(NTSTATUS)
PROC_kill pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.exitcode: 进程推出码
  param.result: 动作完成结果(NTSTATUS)
PROC_job pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.result: 动作完成结果(NTSTATUS)
PROC_pgprot pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.base: 修改内存基址
  param.count: 修改内存长度
  param.attrib: 修改内存属性
  param.bytes_changed: 成功修改长度
  param.result: 动作完成结果(NTSTATUS)
PROC_freevm pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.base: 释放内存基址
  param.count: 释放内存长度
  param.type: 释放内存类型
  param.bytes_freed: 成功释放长度
  param.result: 动作完成结果(NTSTATUS)
PROC_writevm pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.base: 写入内存基址
  param.datalen: 试图写入长度
  param.bytes_written: 成功写入长度
  param.result: 动作完成结果(NTSTATUS)
PROC_readvm pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.base: 读取内存基址
  param.datalen: 试图读取长度
  param.bytes_read: 成功读取长度
  param.result: 动作完成结果(NTSTATUS)
THRD_remote pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.target_tid: 目标线程ID
  param.access: 线程创建权限
  param.suspended: 是否挂起方式创建
  param.start_vaddr: 线程起始地址
  param.thread_param: 线程参数
  param.result: 动作完成结果(NTSTATUS)
THRD_setctxt pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.target_tid: 目标线程ID
  param.result: 动作完成结果(NTSTATUS)
THRD_suspend pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.target_tid: 目标线程ID
  param.result: 动作完成结果(NTSTATUS)
THRD_resume pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.target_tid: 目标线程ID
  param.result: 动作完成结果(NTSTATUS)
THRD_kill pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.target_tid: 目标线程ID
  param.exitcode: 线程退出码
  param.result: 动作完成结果(NTSTATUS)
THRD_queue_apc pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.target_tid: 目标线程ID
  param.result: 动作完成结果(NTSTATUS)
SYS_settime 无 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.time_delta: 设置时间与动作发起时间差
  param.result: 动作完成结果(NTSTATUS)
SYS_link_knowndll pathname: KnownDll动态库全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.result: 动作完成结果(NTSTATUS)
SYS_open_physmm 无 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.access: 打开权限
  param.result: 动作完成结果(NTSTATUS)
SYS_read_physmm 无 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.offset: 读取偏移
  param.count: 读取长度
  param.result: 动作完成结果(NTSTATUS)
SYS_write_physmm 无 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.offset: 写入偏移
  param.count: 写入长度
  param.result: 动作完成结果(NTSTATUS)
SYS_load_kmod pathname: 驱动文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.result: 动作完成结果(NTSTATUS)
SYS_enumproc 无 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.result: 动作完成结果(NTSTATUS)
SYS_regsrv pathname: 驱动/服务文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.access: 服务创建/打开权限
  param.type: 服务类型
  param.starttype: 服务启动类型
  param.srvname: 服务名
  param.result: 动作完成结果(NTSTATUS)
SYS_opendev pathname: 设备路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.devtype: 设备类型
  param.access: 设备打开权限
  param.share: 设备共享权限
  param.result: 动作完成结果(NTSTATUS)
W32_postmsg pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.hwnd: 目标窗口句柄
  param.msg: 窗口消息
  param.wparam: 消息参数1
  param.lparam: 消息参数2
  param.result: 动作完成结果(BOOL)
W32_sendmsg pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.hwnd: 目标窗口句柄
  param.msg: 窗口消息
  param.wparam: 消息参数1
  param.lparam: 消息参数2
  param.result: 动作完成结果(LRESULT)
W32_findwnd 无 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.parent_hwnd: 父窗口句柄
  param.child_hwnd: 子窗口句柄
  param.clsname: 窗口类名
  param.wndname: 窗口名
  param.result: 动作完成结果(HWND)
W32_msghook 无 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.modbase: 钩子模块基址
  param.hookfunc: 钩子函数地址
  param.hooktype: 钩子类型
  param.libpath: 钩子模块路径
  param.result: 动作完成结果(HHOOK)
W32_lib_inject pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
  param.libpath: 注入动态库路径
  param.result: 动作完成结果(NTSTATUS)

6.4.5 MT_netmon (网络监控)
动作 路径过滤器 参数
NET_connect pathname: 远程IP:端口 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.protocal: 协议
  param.result: 动作完成结果(NTSTATUS)
NET_listen pathname: 本机IP:端口 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.protocal: 协议
  param.result: 动作完成结果(NTSTATUS)
NET_send pathname: 远程IP:端口 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.protocal: 协议
  pararm.datalen: 发送数据长度
  param.result: 动作完成结果(NTSTATUS)
NET_http pathname: URL param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.protocal: 协议
  param.cmd: HTTP命令
  param.datalen: 发送数据长度
  param.result: 动作完成结果(NTSTATUS)

6.4.6 MT_behavior (行为监控)
行为 路径过滤器 参数
BA_extract_hidden pathname: 释放文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
BA_extract_pe pathname: 释放文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
BA_self_copy pathname: 目标文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
BA_self_delete pathname: 自删除进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
BA_ulterior_exec pathname: 执行映像全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
BA_invade_process pathname: 目标进程全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.target_pid: 目标进程ID
BA_infect_pe pathname: 感染文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
BA_overwrite_pe pathname: 覆盖文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
BA_register_autorun pathname: 自启动文件全路径 param.pid: 动作发起者进程ID
  param.tid: 动作发起者线程ID
  param.type: 自启动类型
真小读者
发表于 2012-12-1 12:16:46 | 显示全部楼层
完全看不懂,纯顶了
宇中之神
发表于 2012-12-1 12:30:34 | 显示全部楼层
学习一下
hwl573452046
发表于 2012-12-1 13:36:22 | 显示全部楼层
虽不明,但觉厉!
ydgaga
发表于 2012-12-1 13:37:53 | 显示全部楼层
青蛙跳水 不懂
实际好用就行了
hx1997
发表于 2012-12-1 13:38:43 | 显示全部楼层
Dust-;羅錠
发表于 2012-12-1 14:57:01 | 显示全部楼层
hx1997 发表于 2012-12-1 13:38
我来帮你贴出处

http://www.huorong.cn/qfwd/behav_anlyz.html

要不是你,我还以为是他写的呢。
潘中医
发表于 2012-12-1 14:59:00 | 显示全部楼层
看不懂
import
发表于 2012-12-1 16:55:33 | 显示全部楼层
完全看不懂,纯帮顶了~
到处闲逛
发表于 2012-12-1 17:45:52 | 显示全部楼层
技术贴

学习中
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-15 17:51 , Processed in 0.136109 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表