论坛首页 密码学讨论区 阅读主题

[原创]KernelSU检测之“时间侧信道攻击”

297 浏览 16 回复
#1 楼主 2026-06-01 21:09:10
​ 偶然间拿到一个海外Bank的样本,打开后出现崩溃的现象,但是我的手机只刷了KernelSU,并且还魔改过的,以前一直都是过五关斩六将,但是这个app为什么会崩溃呢,难道说是检测到我的环境装了KernelSU?带着这个疑问对这个样本进行了一系列惨无人道的摧残,发现确实检测了KernelSU,并且不是普通的检测方式,而是鲜少听闻的”侧信道攻击“检测。在开始之前说下什么是“侧信道攻击”。想象一下,你想知道一个保险箱的密码,但你并不去尝试破解它的机械结构或电子锁。通过分析这些间接信息,你很有可能推断出正确的密码。这种通过收集和分析系统在运行过程中产生的物理间接信息,而不是直接攻击算法或代码本身,来获取秘密信息的攻击方式,就叫做侧信道攻击。样本so用了AppGuard加固,且应用自身的so被加密了,节约时间就直接步入正题。检测方式用的是“时间侧信道攻击”这是ksu的检测代码,接下来对其进行拆解作用:获取核心数,评估性能并识别大核绑定到高性能核心以稳定测量作用:为时间数据分配并清零内存这里会收集两个函数的执行耗时分别收集__NR_faccessat和__NR_fchownat的执行时间作用:稳定比较,减小极值影响作用:并行比较并累加异常计数这段代码理解起来可能比较吃力,换个如下实现方式就非常清晰了就是单纯的比较NR_faccessat数组和NR_fchownat数组里的元素大小,当出现NR_faccessat>NR_fchownat的情况是就记录为一次异常,往后依次自增。用NEON的目的是为了提升代码执行性能。作用:超过阈值时判定存在 hook,并触发回调针对这块的检测我们可以简单看看KernelSU的hook 实现方式 选择 faccessat 因其在 KSU hook 列表中,且满足“简单、快速、失败无副作用”的要求其他 hook 调用要么更复杂,要么有副作用,不适合用作可靠的基线或被测调用一般来说faccessat的执行速度是要比fchownat快的,如果faccessat出现大量慢于fchownat的情况,那么说明环境有异常。Android 15 Android 10 // 正常路径syscall -> kernel -> 快速返回时间:50-100 纳秒// 有任何拦截后syscall -> kernel -> hook层 -> 返回时间:200-500 纳秒“侧信道攻击”防护确实非常有效,感觉针对这种防护的方式只有进一步去魔改对应的hook函数了,要么就针对处理检测函数。


攻击类型
攻击原理
典型例子
关键特点


计时攻击
测量操作执行时间,通过时间差异推断数据。例如,字符串比较时,早期返回错误会导致更短的执行时间。
1. 分析网站登录验证,猜测用户名和密码。 2. 通过测量RSA解密操作的时间来推测私钥。
纯软件攻击,无需物理接触。依赖代码逻辑不是“恒定时间”的。


功耗分析攻击
测量设备运行时芯片的功耗波动。处理不同数据(0或1)时功耗有微小差异,分析这些“功耗轨迹”可还原密钥。
1. 攻击智能卡、加密狗。 2. 攻击POS机,窃取信用卡PIN码。
需要物理接近和精密仪器(如示波器)。分为简单功耗分析(SPA)和差分功耗分析(DPA)。


电磁分析攻击
测量设备运行时散发的电磁辐射。与功耗分析类似,电磁辐射也携带着与当前操作和数据相关的信息。
1. 通过探测手机CPU的电磁辐射,还原其正在运行的加密算法和密钥。 2. 攻击接触式/非接触式智能卡。
是一种“非侵入式”攻击,可以在一定距离外进行。信息量可能比功耗更丰富。


声音攻击
录制设备运行时的声音,分析其机械部件的声学特征,来还原处理的信息。
1. 通过点阵打印机的声音还原打印内容。 2. 通过键盘敲击声识别输入的按键。 3. 通过硬盘寻道声推测读取的数据。
利用的是机械振动产生的声音,对麦克风灵敏度要求高。


缓存攻击
利用CPU缓存的访问时间差异(缓存命中快,未命中慢)。通过监控自身程序的访问速度,来探测受害者进程的缓存使用情况,从而泄露信息。
1. Spectre(幽灵) 和 Meltdown(熔断) 漏洞就是利用缓存侧信道跨进程窃取内核内存数据。 2. 在云环境中,攻击同一物理主机的其他虚拟机。
是现代CPU微架构中最重要的侧信道之一,威胁云安全。


光学攻击
使用高分辨率相机等设备,捕捉设备运行时泄露的光学信息。

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-288928.htm
#17 2026-06-01 21:09:10
learn
‹ 上一页 1 2 下一页 ›

请登录后参与讨论

立即登录 注册账号