SEandroid攻击方式研究笔记

SEAndroid-for-share SEAndroid,成为Android高手进阶路上的必备 立即下载

小问题

setenforce 0
这个命令有个效果就是强制突破seandroid机制,等于关闭了seandroid。
理论上讲,即使是root 设备,这个命令应该一般情况下也不能随意执行。不然被病毒攻击后,执行了这个指令后seandroid完全没啥乱用了就。不过我在miui9的一个修改的刷机版本了(拥有root)里实验了下这个命令,是可以在root下执行的。
也就是说,在这个版本里,seandroid形同虚设。
难道是我理解错了,先记录下来吧。

后来我想了下,seandroid这个访问机制的核心是策略和安全上下文,
这里写图片描述
我这里设置enforce属性用的是adbd进程,但是病毒的话,即使是得到了root权限,它的context属性肯定就是普通的应用。
(当然如果病毒修改了seandroid就另当别论了,我们不考虑这种情况,当然这也需要更高的技术了)。那么他的上下文就会受到SEandroid策略的限制,使得病毒的能力大大削减。这样seandroid就能发挥作用了。困扰了我多时的问题解决了,感觉神清气爽。

其实这里还有一种方式,如果攻击上下文属性高的进程,那病毒功能就会直接继承强大的能力了吧。

安全上下文 security_context

SEAndroid安全机制框架分析
在开启了SEAndroid安全机制的设备上执行带-Z选项的ps命令,就可以看到一个进程的安全上下文:

 $ ps -Z  
LABEL                          USER     PID   PPID  NAME  
u:r:init:s0                    root      1     0     /init  
......  

上面的命令列出进程init的安全上下文为“u:r:init:s0”,这表明进程init的SELinux用户、SELinux角色、类型和安全级别分别为u、r、init和s0。
类型是比较重要的,其他一般忽略,影响较小。也就是第三个属性。

上下文的相关属性一般会跟文件所在的目录有关,定义在文件external/sepolicy/file_contexts中。

安全策略

int main(int argc, char **argv)
{
    ......

    union selinux_callback cb;
    cb.func_log = klog_write;
    selinux_set_callback(SELINUX_CB_LOG, cb);

    cb.func_audit = audit_callback;
    selinux_set_callback(SELINUX_CB_AUDIT, cb);

    INFO("loading selinux policy\n");
    if (selinux_enabled) {
        if (selinux_android_load_policy() < 0) {
            selinux_enabled = 0;
            INFO("SELinux: Disabled due to failed policy load\n");
        } else {
            selinux_init_all_handles();
        }
    } else {
        INFO("SELinux:  Disabled by command line option\n");
    }

    ......
}

上述代码定义在文件system/core/init/init.c中。
这里调用到了三个与SEAndroid相关的函数:selinux_set_callback、selinux_android_load_policy和selinux_init_all_handles,其中,selinux_set_callback和selinux_android_load_policy来自于libselinux,而selinux_init_all_handles也是定义在文件system/core/init/init.c中,并且它最终也是通过调用libselinux的函数来打开前面分析file_contexts和property_contexts文件,以便可以用来查询系统文件和系统属性的安全上下文。

这里就比较清晰了。如果我们需要绕过seandroid的相关限制,就可以直接hook这些函数。把加载的file_contexts和property_context文件修改,那么,我们就实现了真正的最高权限。或者直接修改rom中对应的文件。

源码中实现方式

SEAndroid安全机制中的文件安全上下文关联分析
SEAndroid安全机制中的进程安全上下文关联分析
这两篇分别写了seandroid在源码中的文件上下文属性和进程上下文属性的设置过程。

static int setSELinuxContext(uid_t uid, bool isSystemServer,  
                             const char *seInfo, const char *niceName)  
{  
#ifdef HAVE_ANDROID_OS  
    return selinux_android_setcontext(uid, isSystemServer, seInfo, niceName);  
#else  
    return 0;  
#endif  
}  

这个函数定义在文件dalvik/vm/native/dalvik_system_Zygote.cpp中。
函数setSELinuxContext的实现很简单,它通过调用libselinux提供的函数selinux_android_setcontext来设置刚刚创建出来的应用程序进程的安全上下文。

从设备上可以读取一个sepolicy文件,如下所示:

 ./adb pull /sepolicy  ./sepolicy  
2372 KB/s (558936 bytes in 0.230s)  

读取出来的sepolicy文件实际上描述的就是设备使用的SEAndroid安全策略,我们可以通过apol工具对它进行分析。
接着我们打开apol工具,并且从File菜单中点击Open项打开上述sepolicy文件。切换到Policy Components选项卡,在左则的Types列表中找到adbd项,双击查看它的属性,通过这种方式可以查看各种domain包含的权限。
这个工具还可以查看各种type在相应的进程上下文中的可操作权限。详细介绍查看本小节给出的链接2。

肖梓航:Android安全漏洞及其攻击方法 基于Android的安全漏洞越来越多,出现安全问题的企业名单越拉越长.为此,肖梓航归总出Android应用漏洞10种威胁,并进行举例分析。这十大威胁是:外部存储;内部存储;传输问题导致数据泄露和会话劫持;数据验证问题导致客户端注入;代码验证问题导致代码执行;登陆认证问题导致非法访问;(Android所独有的)组件暴露导致能力泄露;旁路数据泄露;密码学算法使用不当等。 立即下载

相关推荐

基于SELinux的SEAndroid

从Android的安全模型分析,SELinux如何解决Android的安全问题,SELinux和其他模型的对比,更适合应用于Android

谈谈Android 安全策略SElinux

不积跬步无以至千里,补全自己的短板,完善体系,虽然是站在巨人的肩膀上,写这篇文章也算是对这个知识点的总结。 一,背景 SElinux出现之前,Linux上的安全模型叫DAC(Discretionary Access Control 自主访问控制),它的核心思想就是:进程拥有的权限与执行它的用户权限相同,比如,以root用户启动camera, 那么camera就拥有root的用户权限,我们知道root的权限是很大的,可以说为所欲为。 所以DAC方式管理太过宽松,只要应用获得了root权限,可以在后台做很

fhaitao900310的博客 4981

SEAndroid问题快速分析

快速定位、分析和解决Android系统SELinux相关的权限问题。

android为APK新建SELINUX权限域seapp_contexts

当APP需要做一些系统或系统设备相关的访问读写,新加的权限会跟android内置的neverallow规则冲突,从而造成编译不过。解决方法是为应用新建一个域,添加自定义规则,绕开编译问题。

漂流瓶の海岸 4778

MTK MT6833平台屏幕与TP驱动移植实战:从FAE伪代码到内核模块集成

本文详细介绍了在MTK MT6833平台上进行屏幕与TP驱动移植的完整实战流程。文章从解析供应商提供的初始化伪代码入手,逐步拆解了在LK阶段点亮屏幕、在内核层集成Panel驱动以支持休眠唤醒,以及移植并调试sitronix_ts触摸驱动的核心步骤与关键技巧,为嵌入式开发人员提供了从零到一集成新硬件的清晰指南。

rnn9storyteller的博客 441

Win10系统VS2019+Cmake+qhull_8.0.0环境配置

1 qhull 1.1 简要介绍 qhull是一个强大的计算几何库,可以用于计算高维的convex hull, Delaunay triangulation, Voronoi diagram等。 1.2 依赖库 qhull不依赖其他库。 1.3 源码包下载 qhull源码地址:github:https://github.com/qhull/qhull.git 2 Cmake构建项目 2.1 路径 源代码路径:D:/ThirdParty/qhull/qhull_8.0.0构建项目路径:D:/Thi.

wangchenxue的博客 2492

Android自定义domain设置SeAndroid权限

Domain简介  在adbshell中输入命令ps-Z可查看到类似如下形式的信息,其中,第一栏第二个冒号后的内容(如system_app)即为domain,这些domain可用于通过定义.te文件中的权限控制属于该domain的应用的权限(如/external/sepolicy/system_app.te中的allowsystem_app system_data_file:dir crea

x2017x的博客 4829

【点云可视化】自制ply文件并使用open3d可视化点云

使用open3d可视化点云,需要将点云制作为ply文件传入函数中。 安装open3d 直接使用pip安装 pip install open3d ply文件 ply文件的结构为:文件头+数据内容,文件头从 ply 一行开始,到 end_header 为止,里面定义了此 ply文件中数据的组织形式,包括数据类型和个数。后面是点云的坐标信息及每个点的颜色属性的,参考自 如下为具有5个点的点云,end_header后每一行表示一个点的x,y,z,R,G,B信息 ply format ascii 1.0 comme

这个人很蓝 1万+

Android 6.0 关于Selinux如何打开和关闭

直接上方法: 1.临时的:设备必须是已经取得root权限(adb shell 显示#) adb shell setenforce 0(立刻见效) 2.永久的:在\alps\system\core\init\init.cpp修改 selinux_initialize方法中修改如下 is_enforcing = 0;//add mtk 重新赋值,selinux权限就会关闭了 static...

多学一点点 2328

积木报表导出数据量太大报错

‌性能问题‌:‌当数据量非常大时,‌积木报表在导出过程中可能会遇到性能瓶颈,‌导致导出过程缓慢甚至失败。‌解决这一问题的方法包括优化SQL查询、‌调整分页大小、‌使用更适合处理大量数据的库(‌如阿里巴巴的EasyExcel)‌进行导出,‌或者采用异步处理的方式来避免接口超时1。‌内存溢出‌:‌如果报表工具或其依赖的库不支持流式(‌分批)‌导出,‌大量数据的处理可能会导致内存溢出。‌数据处理方式‌:‌如果待导出的数据包含特殊字符,‌如英文双引号或等号,‌这可能导致JSON反序列化报错。

Activiti工作流 1906

小红书x-mini签名逆向实战:Frida动态Hook与算法还原

在移动App协议分析中,请求签名机制是保障接口安全的核心技术,其本质是客户端对请求参数、时间戳、设备指纹等要素进行加密认证的过程。理解签名原理需掌握Native层加密流程、JNI调用机制及密钥动态派生逻辑。Frida作为主流动态插桩工具,能绕过符号剥离、字符串加密和控制流混淆等反分析手段,在函数执行瞬间捕获寄存器状态、内存数据与调用上下文,实现签名算法的完整还原。该技术广泛应用于合规内容监测、API自动化调用与竞品协议研究等工程场景。本文聚焦小红书x-mini签名这一典型样本,详解从JNI_OnLoad定位

weixin_31264565的博客 457

Android漏洞攻击面

Activity漏洞1、越权绕过创建activity时,exported为true2、组件导出导致钓鱼欺诈3、隐式启动intent包含敏感数据4、拒绝服务Service 漏洞1、权限提升2、service劫持3、消息伪造4、拒绝服务Broadcast Receiver 漏洞1、敏感信息泄露2、权限绕过3、消息伪造4、拒绝服务Content Provider 漏洞1、信息泄露2、SQL注入3、目录遍...

qq_34304107的博客 705

保姆级教程:用Python+MM-Agent搭建自己的数学建模AI助手(支持GPT-4o/DeepSeek)

本文提供了一份详细的教程,教你如何使用Python和MM-Agent框架搭建数学建模AI助手,支持GPT-4o和DeepSeek-R1等LLM后端。从环境配置、HMML知识库集成到多LLM适配和建模流程实现,手把手教你构建智能建模系统,提升数学建模效率。

k6l7m8n9的博客 452

Android APP代码执行历史漏洞与攻击面分析

为了挖掘 Android 端侧任意代码执行类型的漏洞,四处搜寻了相关的历史公开 CVE 漏洞,学习到了一些思路与方法,在此做下简要分析与总结。

道阻且长,行则将至 3533

(二)OpenClaw-连接即时通讯平台-集成飞书完整配置指南

本文详细介绍了如何将OpenClaw与飞书机器人对接,实现通过飞书聊天窗口下达指令自动执行任务的高效协作模式。主要内容包括:1)OpenClaw服务部署验证和飞书账号准备;2)在飞书开放平台创建企业自建应用、添加机器人能力、获取凭证和开通必要权限;3)OpenClaw服务端的首次配置,包括设置飞书通道参数和启动长连接。文章提供了完整的操作步骤和截图指引,帮助用户快速完成对接配置,实现AI自动化助手功能。

直到世界的尽头 2246

AUTOSAR模式管理-EcuM多核处理及其他概念

因此,EcuM不请求状态。因此,BswM必须确保,例如,在调用EcuM_GoHalt或EcuM_GoPoll之前,必须将关机目标从其默认值更改为ECUM_STATE_SLEEP。对于ECU的关闭,BswM(位于主EcuM的同一个分区中)最终调用主核上的GoOff,该GoOff将请求分发给所有的从核。在ECU Manager模块的早期版本中,睡眠目标被特殊处理,因为在ECU中实现的睡眠模式取决于ECU的功能。在使用了外部的SBC控制相关的MCU的下电的时候,在OFF阶段最后调用SBC进入到Sleep的指令。

m0_49148264的博客 1340

使用kali测试攻击Android9,2024年最新吃一堑长一智

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!

2401_84253182的博客 994

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

selinux在 android 上的实现

1. 在init.c main函数里面初始化 int main(int argc, char **argv){ .......... union selinux_callback cb; cb.func_log = log_callback; selinux_set_callback(SELINUX_CB_LOG, cb); cb.func_audit = audit_callback; sel...

蓝精灵的专栏 1850

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android8 去掉selinux

安卓代码 android/system/core/init/init.cpp static void selinux_initialize(bool in_kernel_domain) { Timer t; selinux_callback cb; cb.func_log = selinux_klog_callback; selinux_set_callback(SELINUX_CB_LOG, cb); cb.func_audit = audit_callba

zjy764219923的专栏 595

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android永久关闭linux,Android临时和永久关闭selinux

当我们想要临时关闭selinux时,如果可以获得root权限,通过adb如下指令可以临时关闭selinux:setenforce 0如果需要长期关闭,则需要用其他方法,先看slinue启动的位置:Android启selinux从init开始。在init.cpp中有:static void selinux_initialize(bool in_kernel_domain) {Timer t;seli...

weixin_42635064的博客 851

深入理解SELinux SEAndroid(最后部分)

接第二部分的内容 深入理解SELinuxSEAndroid(结局) 二 SEAndroid源码分析 有了上文的SELinux的基础知识,本节再来看看Google是如何在Android平台定制SELinux的。如前文所示,Android平台中的SELinux叫SEAndroid。 先来看SEAndroid安全策略文件的编译。 1. 编译sepolicy Android平台中: external/sepolicy:提供了Android平台中的安全策略源文件。同时,该目录下的tools还...

Venus 的博客 2646

MSF模拟渗透测试之攻击Android

MSF渗透测试系列之攻击Android

lza20001103的博客 7678

linux中调节init进程的优先级,Init进程设置SELinux的Policy

Init进程的main()函数有一段代码用来初始化SELinux,如下所示:int main(......) {......//设置SELinux的回调函数union selinux_callback cb;cb.func_log = klog_write;selinux_set_callback(SELINUX_CB_LOG,cb);cb.func_audit = audit_callback;...

weixin_36446632的博客 527

androidR或 android11 修改代码关闭selinux或seandroid的方法 展锐平台验证OK

比如在展锐sc9863a平台(其它芯片平台应该也是这个地方的这个文件)修改文件为: system/core/init/selinux.cpp,增加//add this line 部分的内容 bool IsEnforcing() { return false; //add this line { int fd(open("/mboot/selinux", O_RDONLY | O_CLOEXEC | O_BINARY)); if (fd

kerrycat1986的博客 1480

Android攻击方式与安全分析

Android安全分析可以分为静态分析和动态分析。Android攻击包括Zimperlich恶意软件、提权攻击、中间人攻击 MITM、恶意软件变形技术

康雨城 4692
上一篇: android 内核漏洞相关
下一篇: DirtyCow Linux权限提升漏洞分析
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值