Android10(Q)作为引入分区储存、强化SELinuxenforcing模式的关键版本,其系统安全审计能力直接决定了设备对非授权访问、权限滥用、恶意行为的可溯源性。Audit子系统作为Linux内核原生安全组件,可深度监控文件访问、系统调用、权限变更等核心风波,是Android设备安全加固、异常行为排查的核心工具。本文从内核配置、用户态工具移植、规则订制、日志剖析、实战场景等维度,全面拆解Android10.xAudit的落地流程,结合底层原理与实操案例,为开发者提供一套可直接复用的全链路审计解决方案,推动建立高安全性的Android设备生态。

关键词

Android10.x;Audit子系统;内核配置;非授权访问监测;安全审计;SELinux兼容

一、引言

随着Android设备在金融、政务、工业控制等领域的广泛应用,系统层面的安全审计需求愈发急切。非授权访问、恶意程序挂马、敏感数据泄漏等风险,须要通过底层审计机制实现行为溯源与风险预警。Android10.x基于Linux4.14内核(不同厂商适配版本略有差别),相比初期版本,其对安全子系统的管控更严格,SELinux强制模式、分区储存等特点对Audit的适配提出了更高要求。

图片

Audit子系统通过内核态规则匹配与用户态日志搜集,可精准捕获系统调用、文件操作、进程执行、权限变更等风波,为安全剖析提供可溯源的原始数据。本文基于Android10.x的系统特点,从内核编译配置到实战检查全流程展开,解决Audit在Android生态中的适配困局,实现对非授权访问行为的有效监控。

二、Android10.xAudit核心原理与环境打算2.1核心原理

Audit子系统由内核态模块与用户态工具两部份组成:

Android10.x中,Audit需适配三大核心特点:

①SELinux强制模式,需为Audit工具配置正确的安全上下文;

②分区储存(ScopedStorage)linux系统移植,需调整审计规则适配储存权限变更;

③内核版本升级(Linux4.14+),支持更多审计特点(如CONFIG_AUDIT_BPF)。

2.2环境打算

硬件环境:支持Android10.x的开发板(如骁龙MSM8998、MTKMT6799)或root后的真机;

软件环境:

三、Android10.x内核Audit配置与编译3.1内核配置步骤

内核配置 Audit 工具_Android 10.x Audit 子系统_linux系统移植

Android10.x内核默认未完全启用Audit功能,需通过menuconfig自动配置,确保核心审计特点开启。

1、进入内核源码目录,加载设备默认配置:

进入内核源码根目录(以高通MSM8998为例)cd android/kernel/msm-4.14
# 加载设备defconfig(替换为目标设备配置文件)make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- msm8998_defconfig
# 启动图形化配置界面make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- menuconfig

2、关键配置项开启(路径与说明):

在menuconfig界面中,按以下路径找到对应选项,按Y编译进内核(*标示),防止编译为模块(Mlinux 命令,Android不支持动态加载内核模块):

提高特点配置(推荐):

3、配置保存与验证:

grep "CONFIG_AUDIT" .config
正确输出示例(需包含以下项):# CONFIG_AUDIT=y# CONFIG_AUDITSYSCALL=y# CONFIG_AUDIT_WATCH=y# CONFIG_AUDIT_TREE=y# CONFIG_AUDIT_CAPSET=y# CONFIG_AUDIT_BPF=y

3.2内核编译与刷入

1、编译内核镜像与设备树:

编译内核镜像(zImage,arm64架构为Image.gz-dtb)make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- -j16 Image.gz-dtb
# 编译模块(可选,若需补充驱动)make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- modules
# 编译设备树(根据设备型号调整,如msm8998-mtp.dtb)make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- dtbs

2、刷入内核至设备:

方法一:通过fastboot刷入(需设备解锁):

重启设备至fastboot模式adb reboot bootloader
# 刷入内核镜像(路径替换为实际编译产物路径)fastboot flash boot arch/arm64/boot/Image.gz-dtb
# 重启设备fastboot reboot

方法二:集成至Android镜像(适用量产场景):将编译后的内核镜像替换AOSP源码device/{厂商}/{设备名}/boot.img中的内核部份,重新编译全量镜像后刷入。

3、验证内核Audit功能:

设备启动后,通过ADB联接,执行以下命令检测内核模块是否加载:

查看Audit相关内核节点ls /proc/audit
# 输出audit_status、audit_rules等文件,说明内核Audit已启用

linux系统移植_内核配置 Audit 工具_Android 10.x Audit 子系统

Android 10.x Audit 子系统_linux系统移植_内核配置 Audit 工具

四、Audit用户态工具移植与适配

Android10.x原生未集成Audit用户态工具(auditd、auditctl、ausearch),需从开源库房移植并交叉编译,同时适配Android系统环境与SELinux规则。

4.1工具源码获取与交叉编译

1、下载适配版本的Audit源码(推荐2.8.5,兼容Linux4.14内核):

git clone https://github.com/linux-audit/audit-userspace.gitcd audit-userspacegit checkout v2.8.5  切换至稳定版本

2、交叉编译配置:新建编译脚本build_audit_android.sh,配置交叉编译参数,适配Android10.x:

#!/bin/bashexport CC=aarch64-linux-android-gccexport CXX=aarch64-linux-android-g++export AR=aarch64-linux-android-arexport LD=aarch64-linux-android-ldexport RANLIB=aarch64-linux-android-ranlib
配置编译路径与依赖,禁用不必要特性./configure   --host=aarch64-linux-android --prefix=/android/audit_install   # 安装路径  --disable-shared   # 编译静态库,避免依赖问题  --enable-static --without-python   # 禁用Python依赖(Android无原生Python)  --disable-zosmf --disable-gssapi
# 编译并安装make -j16make install

3、提取编译产物:

编译完成后,在/android/audit_install/bin目录下生成auditd、auditctl、ausearch、aureport工具,将其复制至Android设备的/system/bin目录(需root权限):

adb push /android/audit_install/bin/* /system/bin/adb shell chmod 755 /system/bin/auditdadb shell chmod 755 /system/bin/auditctl

内核配置 Audit 工具_Android 10.x Audit 子系统_linux系统移植

4.2Android系统适配4.2.1配置SELinux安全上下文

Android10.x默认启用SELinux强制模式,若auditd无正确安全上下文,会被SELinux拦截运行。需执行以下操作配置:

1、为auditd添加SELinux标签:

临时生效(重启后失效)adb shell chcon u:r:auditd:s0 /system/bin/auditd
# 永久生效(需修改SELinux策略)# 1. 编辑设备SELinux策略文件(device/{厂商}/{设备名}/sepolicy/auditd.te)# 2. 添加以下内容:type auditd, domain;type auditd_exec, exec_type, file_type;init_daemon_domain(auditd)
# 3. 重新编译SELinux策略,集成至Android镜像

4.2.2配置init启动服务

Android通过init.rc脚本启动系统服务,需将auditd配置为开机自启,确保审计功能随系统启动:

Android 10.x Audit 子系统_linux系统移植_内核配置 Audit 工具

1、编辑设备的init.rc文件(路径:device/{厂商}/{设备名}/init.rc),添加以下内容:

配置auditd服务service auditd /system/bin/auditd -n  # -n表示前台运行,便于调试        class core        user root        group root        seclabel u:r:auditd:s0  # 关联SELinux上下文        oneshot  # 后台持续运行,不阻塞init进程        writepid /dev/cpuset/system-background/tasks
# 系统启动后加载默认审计规则on post-fs-data    
# 创建审计日志目录(Android无默认目录)    mkdir /var/log/audit 0755 root root      # 加载规则(后续章节详细说明)      exec /system/bin/auditctl -w /data -p rwxa -k unauthorized_data_access      exec /system/bin/auditctl -w /system/bin/su -p x -k unauthorized_su_exec

2、重新编译Android镜像linux系统移植,刷入设备,验证auditd是否开机自启:

adb shell ps | grep auditd
输出auditd进程信息,说明启动成功

4.2.3日志储存适配

Android10.x的/var目录为临时储存,重启后日志遗失,需适配持久化储存:

方案一:将日志储存至/data/audit/log(需授予权限):

adb shell mkdir -p /data/audit/logadb shell chmod 755 /data/audit/log
修改auditd配置文件,指定日志路径echo "log_file = /data/audit/log/audit.log" > /system/etc/audit/auditd.conf

方案二:配置日志轮转,防止日志占满储存空间:

# 添加日志轮转脚本(/system/bin/audit_log_rotate.sh)# 内容:保留最近7天日志,超过大小自动轮转# 配置crontab定时执行(需移植crontab工具)

五、审计规则订制:精准测量非授权访问

Audit规则是实现非授权访问测量的核心,需结合Android10.x的系统构架与敏感路径,针对性配置规则。规则通过auditctl命令添加,支持临时规则(重启失效)与永久规则(写入配置文件)。

5.1规则核心句型

基本格式1:监控文件/目录操作auditctl -w  -p  -k 
# 基本格式2:审计系统调用auditctl -a  -S  -F  -k 

关键参数说明:

5.2非授权访问测量核心规则

结合Android10.x的安全风险点,配置以下核心规则,覆盖敏感路径访问、特权程序执行、权限变更等场景:

1、敏感目录监控(非授权读写/执行):

监控/data目录(用户敏感数据存储区)auditctl -w /data -p rwxa -k unauthorized_data_access
# 监控/system目录(系统核心文件区)auditctl -w /system -p rwxa -k unauthorized_system_access
# 监控/vendor目录(厂商定制文件区)auditctl -w /vendor -p rwxa -k unauthorized_vendor_access
# 监控分区存储根目录(适配Android 10.x Scoped Storage)auditctl -w /storage/emulated/0 -p rwxa -k unauthorized_storage_access

Android 10.x Audit 子系统_内核配置 Audit 工具_linux系统移植

2、特权程序与命令监控(非授权执行):

监控su命令(提权工具)auditctl -w /system/bin/su -p x -k unauthorized_su_exec
# 监控adb工具(调试接口)auditctl -w /system/bin/adb -p x -k unauthorized_adb_access
# 监控chmod/chown命令(权限变更工具)auditctl -w /system/bin/chmod -p x -k unauthorized_chmod_execauditctl -w /system/bin/chown -p x -k unauthorized_chown_exec

3、系统调用审计(全面捕获访问行为):

审计所有用户的文件打开/访问系统调用(排除root)auditctl -a exit,always -S open -S openat -S access -F auid!=0 -k unauthorized_file_access
# 审计进程执行系统调用auditctl -a exit,always -S execve -F auid!=0 -k unauthorized_exec
# 审计权限变更系统调用auditctl -a exit,always -S chmod -S chown -S setuid -k unauthorized_perm_change

4、进程与权限监控:

审计进程创建/退出事件auditctl -a exit,always -S fork -S vfork -S clone -k process_create_exit
# 审计权限集变更(提权行为)auditctl -a exit,always -S capset -k cap_change

5.3规则管理与验证

1、查看已配置规则:

adb shell auditctl -l

2、清除所有规则(调试用):

adb shell auditctl -D

3、永久保存规则:

将规则写入/system/etc/audit/audit.rules文件,系统启动时手动加载:

adb shell echo "-w /data -p rwxa -k unauthorized_data_access" >> /system/etc/audit/audit.rules

linux系统移植_内核配置 Audit 工具_Android 10.x Audit 子系统

六、审计日志剖析与实战检查6.1日志查看与过滤

Audit日志包含丰富的风波信息(时间、进程ID、用户ID、操作类型、关键词等),可通过ausearch/aureport工具快速剖析,也可直接读取日志文件。

linux系统移植_内核配置 Audit 工具_Android 10.x Audit 子系统

1、按关键词过滤日志(最常用):

# 过滤非授权访问/data目录的事件adb shell ausearch -k unauthorized_data_access
# 过滤非授权执行su的事件adb shell ausearch -k unauthorized_su_exec

2、按时间范围过滤:

查看近1小时的审计日志adb shell ausearch -ts recent -te now
# 查看指定时间范围的日志(格式:YYYY-MM-DD HH:MM:SS)adb shell ausearch -ts 2024-05-01 08:00:00 -te 2024-05-01 18:00:00

3、生成结构化报告:

生成文件访问报告adb shell aureport -f
# 生成系统调用报告adb shell aureport -s
# 生成用户行为报告adb shell aureport -u

6.2日志数组解析

Audit日志每条记录包含多个数组,核心数组说明如下(以非授权访问/data为例):

type=SYSCALL msg=audit(1714567890.123:456): arch=c00000b7 syscall=257 success=no exit=-13 a0=ffffff9c a1=7f8a001234 a2=80000 a3=1b6 items=1 ppid=1234 pid=5678 auid=1000 uid=2000 gid=2000 euid=2000 suid=2000 fsuid=2000 egid=2000 sgid=2000 fsgid=2000 tty=pts0 ses=1 comm="cat" exe="/system/bin/cat" key="unauthorized_data_access"

6.3实战场景检查案例

场景1:非授权访问敏感数据目录

场景2:非授权执行su加壳

场景3:非授权更改系统文件

Android 10.x Audit 子系统_linux系统移植_内核配置 Audit 工具

七、常见问题与解决方案7.1auditd启动失败7.2审计日志无记录7.3系统性能增长7.4分区储存适配问题八、总结与展望

Android10.x的Audit子系统作为底层安全审计核心工具,通过内核配置、用户态适配、规则订制,可实现对非授权访问、提权、敏感操作的全链路溯源。本文从实战角度出发,完整覆盖从内核配置到日志剖析的全流程,解决了SELinux兼容、日志持久化、分区储存适配等关键困局,提供的规则与案例可直接应用于Android设备安全加固。

未来国内linux主机,随着Android系统的升级(如Android14+),Audit子系统将支持更多智能化特点(如结合AI剖析异常日志、实时风险预警)。开发者可基于本文方案,进一步扩充审计能力,实现日志远程上报、自动化风险拦截,建立更安全、可溯源的Android设备生态。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复