首页
社区
课程
招聘
[讨论]Android audit 监控syscall
2022-11-3 15:43 8150

[讨论]Android audit 监控syscall

2022-11-3 15:43
8150

首先说一下什么是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编辑 ,原因:
收藏
点赞7
打赏
分享
最新回复 (9)
雪    币: 32
活跃值: (1020)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
twsxtd 2022-11-3 16:31
2
0
一键三连
雪    币: 723
活跃值: (1261)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
skyun 3 2022-11-3 16:37
3
0
twsxtd 一键三连
谢谢哥
雪    币: 52
活跃值: (3274)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
DirtyAngle 2022-11-3 18:51
4
0
那aidutd原理是啥 大佬
雪    币: 27
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
fly_lpc 2022-11-3 19:33
5
1
大佬,厉害了
雪    币: 723
活跃值: (1261)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
skyun 3 2022-11-3 21:29
6
0
DirtyAngle 那aidutd原理是啥 大佬

linux audit审计系统这是网上找的audit原理图

雪    币: 1773
活跃值: (8930)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
你瞒我瞒 2022-11-4 17:01
7
0
skyun 这是网上找的audit原理图
雪    币: 5153
活跃值: (3902)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_rjdrqvpa 2022-11-4 20:42
8
0
这个能修改系统调用的参数与返回值吗?
现在安卓这边基本得修改参数和返回了
雪    币: 200
活跃值: (87)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
DDragon 2023-7-7 17:30
9
0
 这个编译失败是为什么呢?楼主是怎么编译出来的
Android NDK: Trying to define local module 'ausearch' in ausearch/Android.mk.                                         Android NDK: But this module was already defined by ausearch/Android.mk.                                              /mnt/e/WSLfile/android-ndk-r21b-linux-x86_64/android-ndk-r21b/build/core/build-module.mk:34: *** Android NDK: Aborting.    .  Stop.  
雪    币: 35
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_uupqwiox 2023-7-10 15:32
10
1
开发安卓系统上运行的so库/静态链接库
能够ptrace本进程以及子进程所有系统调用,类似于strace那种。有兴趣的可以加QQ:2223603917 聊具体细节
游客
登录 | 注册 方可回帖
返回