Linux安全审计机制模块,Linux安全审计机制模块实现分析(7)

原标题:Linux安全审计机制模块实现分析(7)

2.分析audit_syscall_entry函数

(1)audit_syscall_entry接口功能说明

函数名:audit_syscall_entry

参数:arch为CPU的架构,major为系统调用号,a1~a4为系统调用的参数,

返回值:无

功能:系统调用信息先暂存在进程的审计上下文中。该函数是__audit_syscall_entry的封装函数。

(2)__audit_syscall_entry.函数分析

该函数首先获取进程的审计上下文结构,然后查询entry规则链表,判断该审计上文中需要审计的项目是否符合规则,如果符合规则,返回对此类符合规则的审计消息所能采取的动作(不生成记录或生成记录),该函数还将此次系统调用的信息(系统调用号、调用参数、调用的时间等)写入审计上下文。 __audit_syscall_entry的调用层次图如下:

b05a5eb994b3b29e4765d63b408e567d.png

图2-18 __audit_syscall_entry的调用层次图

3.分析audit_syscall_exit函数

audit_syscall_exit是__audit_syscall_exit的封装函数,所以这里主要分析__audit_syscall_exit。

(1).audit_syscall_exit接口功能说明

函数名:__audit_syscall_exit

参数:success为系统调用是否成功的标志,return_code为系统调用的返回值。

返回值:无

功能:将审计上下文中所有本次系统调用期间产生的有关进程的各类信息,符合exit规则链表上规则的信息全部写出(发送给用户)。

(2).函数分析

函数 audit_syscall_exit 将系统调用退出时的审计信息填充到审计上下文中。如果审计上下文被标识为可审计的(在规则过滤时状态设置为 AUDIT_RECORD_CONTEXT或AUDIT_BUILD_CONTEXT),那么就将审计上下文中的信息发送给审计后台。该函数处理流程如下:

0e3a54d8ccd4c46ec367281e601c7413.png

图2-19 audit_syscall_exit函数流程图

2.3.4.2其它内核函数的审计

进程在运行的过程中,许多操作会产生一些特征中间数据,如:执行二进制文件的文件名、参数、进程间通信的消息路径搜索时的目录项信息等,审计系统通过在内核的系统调用等函数中加入审计系统 hook函数来实现对特征数据的截获,截获的特征数据填充在进程的审计上下文结构的辅助数据链表aux上。

1.进程辅助审计数据

结构audit_aux_data 用来存储审计辅助数据,包括进程运行过程中的各种关键的数据。其列出如下:

struct audit_aux_data {

struct audit_aux_data *next;

Int type;

};

结构 audit_aux_data是个抽象的数据结构,必须由其他派生结构继承才能存放具体的信息,派生结构一般将基类结构作为第一个成员。通过基类结构指针,可将描述具体信息的派生结构形成链表放在审计上下文中。例如:记录执行应用程序环境信息的结构列出如下:

struct audit_aux_data_execve {

struct audit_aux_datad;

int argc;

int envc;

struct mm_struct *mm;

};

2.审计钩子函数

在任何需要写出审计信息的内核函数中都可以放置进程审计hook 函数,具体的审计信息存储在辅助数据结构audit_aux_data的派生结构中,hook函数完成的工作是:将内核函数的审计数据填充到派生结构并将派生结构挂接到进程审计上下文的辅助数据链表中。每个hook函数拦截的审计消息对应一个审计消息类型,工具auditctl可以过滤需要的审计消息。部分进程审计的hook函数如下表2-3:

表 2-3 进程审计的部分钩子函数

函数名

被放置的地点

作用

audit_alloc

fork调用

分配审计上下文结构

audit_getname

getname函数

获取名称信息

audit_inode

路径查询等函数

获取索引节点和设备信息

audit_inode_child

文件系统对象或删除的函数

获取父亲或孩子的索引节点信息

audit_ptrace

ptrace调用

获取进程的信用信息

audit_ipc_obj

msgctl调用

获取进程的ipc信息

audit_bprm

execve调用

获取执行该程序的信息

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值