[讨论]Android audit 监控syscall
发表于:
2022-11-3 15:43
9172
[讨论]Android audit 监控syscall
首先说一下什么是audit audit工具是Linux系统中负责审计的进程,可以用来记录Linux系统的一些操作,比如系统调用 ,文件修改 ,cmd命令 ,监控网络访问 ,系统登入登出和记录所有系统中所有的事件,我们可以通过配置aidutd规则来对Linux服务器中发生的一些用户行为和用户操作进行监控。
这个东西最大的好处是不像strace 会ptrace目标进程
再看一下效果图文件修改 cmd命令 系统调用监控
使用方式1 添加文件监视: 该规则能监视文件被读、写、执行、修改文件属性的操作,并记录 auditctl -w /etc/passwd -p rwax 上述命令记录/etc/passwd 被读、写、执行修改属性的操作
2 系统调用入口监视(entry链表) 该规则在进入系统调用的时候触发,记录此时的执行上下文 auditctl -a entry,always -F UID=root -S mkdir 上述命令记录uid为root的用户调用mkdir系统调用的情况
3 系统调用出口(exit链表) 同系统调用入口规则,不同的是在退出系统调用的时候被触发
4 任务规则(task表) 该规则在调用fork() 或者clone()产生新进程的时候触发,因此,该规则适用的“域”仅仅是此时可见的,例如uid gid pid 等等。(参见man auditctl和这里 auditctl -a task,always -F uid=root
5 可信应用程序规则(user表) 按照各种资料上的说法,这里的user表是用来过滤消息的,内核传递给审计后台进程之前先查询这个表。 但是,不管怎么设置规则都达不到这个效果。如下: auditctl -a user,always -F uid=root 添加上述规则,发现root的行为被记录。这样添加规则还是被记录: auditctl -a user,never -F uid=root 后来发现我的CentOS里面system-config-audit上面,该链表被命名为“可信应用程序”。受此启发写了个小程序,向审计内核里写消息,发现这样的消息被过滤了。 这点需要进一步验证。
6 过滤规则(exclude表) 这个表是用来过滤消息的,也就是不想看到的消息可以在这里写规则进行过滤。 例如:不想看到用户登陆类型的消息,可以如下添加规则: auditctl -a exclude,always -F msgtype=USER_LOGIN
源码位置 https://github.com/skyun1314/auditd_for_android
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-11-3 17:06
被skyun编辑
,原因: