SELinux安全杂记

前言:

今天发现很诡异的问题,之前一直是可读的,忽然发现权限被拒绝。

LOG(ERROR) << "读取文件内容  "<0 读出的字节数  =0文件读完了
    while (syscall(__NR_read,fd, buffer, 1) != 0) {
        str.append(buffer);
    }
    syscall(__NR_close,fd);
    return str;
}

之前运行一直没问题,忽然发现读取系统内核文件读不了了,之前是可以的,用文件管理器查看文件是444

都是可读的,open函数一直返回 -1 失败。

细看日志发现一条异样:

type=1400 audit(0.0:127783): avc: denied { search } for name="net" dev="sysfs" ino=46905 scontext=u:r:untrusted_app:s0:c189,c258,c512,c768 tcontext=u:object_r:sysfs_net:s0 tclass=dir permissive=0

在讲之前需要详细介绍一下SELinux相关的知识,防止别人采坑。

之前也是知道一些SELinux的一些基础,但是也一直没深入研究和Liunx的区别。

今天有时间做个记录

什么是SELinux?

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是 Linux 的一个安全子系统。SELinux 主要作用是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。对资源的访问控制分为两类: DAC和MAC ,我们用的安卓底层的Linux就是这它。

linux传统设备文件访问控制方法

传统的 Linux设备文件访问控制机制通过设置用户权限来实现.

  • 超级用户(root),具有最高的系统权限,UID为0。
  • 系统伪用户,Linux操作系统出于系统管理的需要,但又不愿赋予超级用户的权限,需要将某些关键系统应用文件所有权赋予某些系统伪用户,其UID范围为1~ 499,系统的伪用户不能登录系统。
  • 普通用户,只具备有限的访问权限,UID 为 500 ~ 6000,可以登录系统获得shell。在Linux权限模型下,每个文件属于一个用户和一个组,由UID与GID标识其所有权。针对于文件的具体访问权限定义为可读(r)、可写(w)与可执行(x),并由三组读、写、执行组成的权限三元组来描述相关权限。
    第一组定义文件所有者(用户)的权限,第二组定义同组用户(GID相同但UID不同的用户)的权限,第三组定义其他用户的权限(GID与UID都不同的用户)。

Linux工作模式:

SELinux 有三种工作模式,分别为:
enforcing: 强制模式, 执行SELinux规则, 违反的行为会被阻止
permissive: 宽容模式, 执行SELinux规则, 违反的行不会被阻止
disabled: 关闭SELinux

SEAndroid app分类

SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型):

1)untrusted_app 第三方app,没有Android平台签名,没有system权限

2)platform_app 有Android平台签名,没有system权限

3)system_app 有android平台签名和system权限

从上面划分,权限等级,理论上:untrusted_app < platform_app < system_app

我们看一下我们的刚刚的日志

标志性 log: avc: denied { 操作权限 } for pid=7201 comm=“进程名” scontext=u:r:源类型:s0 tcontext=u:r:目标类型:s0 tclass=访问类型 permissive=0


源类型:授予访问的类型,通常是进程的域类型
目标类型:客体的类型,它被授权可以访问的类型
访问类型:客体的类可
操作权限:表示主体对客体访问时允许的操作类型(也叫做访问向量)。

我们刚刚的错误日志是,我们分解详细看看:

avc: denied { search } for 缺少search权限

name="net"

dev="sysfs"

ino=46905

scontext=u:r:untrusted_app:s0:c189,c258,c512,c768 未签名的App

tcontext=u:object_r:sysfs_net:s0 哪个te文件缺少权限

tclass=dir 什么类型的文件the object class of the target

permissive=0 permissive (1 宽容模式) or enforcing (0 强制模式)

没有签名的App 没有search 权限访问dir文件目录。

我们将 SELinux 安全关掉

setenforce 0

完美解决。

参考:

https://blog.csdn.net/su749520/article/details/80284543

https://www.zybuluo.com/guhuizaifeiyang/note/772144


安卓逆向百级教程+全网最新js逆向视频+永久小蜜圈+永久售后群=1299

视频下载网盘
�http://nas.alienhe.cn:5008/home.html�
下载视频账号密码:
账号guest 密码world

Js试看:
http://oss.alienhe.cn/JS%E9%80%86%E5%90%91%E5%85%A5%E9%97%A8-%E5%B8%A6%E6%B0%B4%E5%8D%B0.mp4

你可能感兴趣的:(SELinux安全杂记)