Android SELinux 的认知以及 init 的相关知识,Linux 环境利用这2个模块进行白名单测试 -- 架构分析

本文介绍了SELinux在Android系统中的使用方法,包括如何通过配置SELinux策略来控制应用程序的权限,实现进程间的白名单验证,并详细说明了配置流程及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELinux --

Android 5.0+ google 加入了新的安全模块即SELinux,SELinux是一种Android上面的安全机制,针对Linux的安全加强系统

我们可以通过配置SELinux的相关policy,来定制自己的手机的一些权限,比如,我们可以完全让root用户没有任何的权限和user一样

在android里面,有两个类型,一种是文件,一种是进程,在android上面,adb shell之后进入手机,ps -Z可以查看当前进程所拥有的selinux的权限

配置selinux,需要linux内核首先是支持selinux的,另外需要android的selinux的配置文件,在extern/sepolicy目录

SELinux的配置规则 -- a. App进程 -> mac_permissions.xml

b. App数据文件 -> seapp_contexts
    c. 系统文件 -> file_contexts
    d. 系统属性 -> property_contexts

te文件,一般的语法 --
rule_name source_type target_type:class perm_set
为source_type设置一个rule_name的规则,规则是对target_type的class 进行 perm_set的操作

init --

init 下有两个比较核心的文件分别是

system/core/rootdir/init.rc -- 配置了需要启动的Linux系统进程一些简单任务,是init.c启动/init需要执行的脚本和一般初始化操作

system/core/init/init.c -- Linux 启动系统文件第一个应用就是/init 然后对init.rc/init.xx.rc 执行任务解析


今天笔者会利用这两个模块进行一个进程联网白名单测试验证,我需要在SELinux下配置我的启动自定义的系统进程服务,在external/sepolicy下配置自己的.te 文件,然后给与我的 system/bin/xxx 这个自定义进程root 和 +x ,最后我写一个app移植到os里,或者install -r 对 system/bin/xxx 这个进程进行间接通信,让它去做我要屏蔽的某个进程,即根据pid/package-name 进行白名单验证。

external/sepolicy 下配置 .te 文件,自定义命名为 tianetd


external/sepolicy 下配置 .te 文件,自定义命名为 untrusted_app.te,用来做白名单校验


vi 之后将他们 mv 到external/sepolicy 目录下,随后开始进行测试,因为 test app 先前已经完成了,直接移植到os ,在out下将apk文件重新替换,之后 snod rom 烧录,然后在 test app 上进行测试,在测试过程中出现了一个 bug ,导致我的 test app pid 直接被系统 killer 掉了,通过

MTKLOGGER 进程获取到如下日志


The Linux kernrl does not support iptables ,Linux 内核不支持iptables这个操作原因是我是在 LV19 的设备上测试的,于是笔者换了 5.1 的设备开始新的一轮测试,但是我还是觉得少了点什么东西没有配置,想了一下忘记配置 init.rc 初始化任务了,于是笔者在init.rc 下加入自己的服务需要的初始化配置


最后在out目录下对tianetd进行了赋权,root/+x 


权限


snod rom ,install image file 测试,测试完美通过!顺带说一下,SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问,需要在external/sepolicy下配置权限需要的 .te 文件

谢谢观博,有不对的地方欢迎随时指正!再次感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Engineer-Jsp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值