吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6802|回复: 33
收起左侧

[Android 原创] 当 Xiaomi 12 遇到 eBPF

  [复制链接]
huaerxiela 发表于 2022-6-23 10:35
本帖最后由 huaerxiela 于 2022-6-23 14:49 编辑

当 Xiaomi 12 遇到 eBPF

最近有大佬在 android 上实践 ebpf 成功 <br>
前有 evilpan 大佬:https://bbs.pediy.com/thread-271043.htm <br>
后有 weishu 大佬:https://mp.weixin.qq.com/s/mul4n5D3nXThjxuHV7GpMA <br>
当然还有其他隐藏的大佬啦,就不一一列举啦 <br>
遂 android-ebpf 大火 <br>
两位大佬的方案也很有代表性,一个是 androdeb + 自编内核 + 内核移植 + 内核4.19(文章中看的),一个是 androdeb + 内核5.10(pixel 6)<br>
目前来看,androdeb + 高版本内核 方案可以更快上手,花钱投资个新设备就好了,而且 weishu 大佬也已经手把手把工具都准备好了 <br>
故本次就是对 weishu 大佬视频号直播的 "搭建 Android eBPF 环境" 的文字实践 + 反调试样本测试 <br>

eBPF 是啥

来自官方的说法:https://ebpf.io/what-is-ebpf
来自大佬的总结:https://mp.weixin.qq.com/s/eI61wqcWh-_x5FYkeN3BOw

失败尝试

魅族18 内核版本5.4 <br>
虽说环境编译成功了,但体验脑壳疼  <br>
opensnoop 没有 path  <br>
execsnoop pwd 命令监控不到,长命令被截断  <br>

环境准备

PC环境:macOS  <br>
小米12 内核版本5.10.43 <br>
magisk 提供 root  <br>
androdeb 连接方式选取的也是 ssh 方式,故安装 SSH for Magisk 模块提供 ssh 功能  <br>
手机最好也科学上网一下吧,要 git 拉一些东西  <br>

环境准备 over,开干

确保手机 ssh 已开启,先去 adb shell 中 ps 一下

ps -ef|grep sshd

没问题的话,就查看下 PC 上的 ssh key

cat ~/.ssh/id_rsa.pub

然后把 key 粘贴到手机 authorized_keys 文件中,再改下权限

su <br>
cd /data/ssh/root/.ssh/ <br>
/data/adb/magisk/busybox vi authorized_keys <br>
chmod 600 authorized_keys <br>

再看下手机 ip(因为是 ssh 连接,故手机和 PC 在同一局域网下)

ifconfig |grep addr

在 PC 上测试下 ssh 是否可以成功连接

ssh root@手机ip

没问题的话,直接开搞准备好的 androdeb 环境了(weishu大佬用rust重写了叫eadb)

sudo chmod 777 ./eadb-darwin <br>
./eadb-darwin --ssh root@手机ip  prepare -a androdeb-fs.tgz

等待完成后,进 androdeb shell, 开始编译 bcc

./eadb-darwin --ssh root@手机ip  shell <br>
git clone https://github.com/tiann/bcc.git --depth=1 <br>
cd bcc && mkdir build && cd build <br>
cmake ..
make -j8 && make install

等待成功后,就有各种工具可以用了
root@localhost:/usr/share/bcc/tools# ls
argdist       btrfsdist     dbslower        exitsnoop     gethostlatency  klockstat       nfsdist           perlflow        pythonstat   runqslower   syncsnoop   tcpdrop           tplist      zfsslower
bashreadline  btrfsslower   dbstat        ext4dist      hardirqs              kvmexit              nfsslower    perlstat        readahead    shmsnoop          syscount    tcplife           trace
bindsnoop     cachestat     dcsnoop        ext4slower    inject              lib              nodegc           phpcalls        reset-trace  slabratetop  tclcalls    tcpretrans   ttysnoop
biolatency    cachetop            dcstat        filelife      javacalls       llcstat              nodestat           phpflow        rubycalls    sofdsnoop          tclflow     tcprtt           vfscount
biolatpcts    capable            deadlock        fileslower    javaflow              mdflush              offcputime   phpstat        rubyflow     softirqs          tclobjnew   tcpstates    vfsstat
biopattern    cobjnew            deadlock.c        filetop       javagc              memleak              offwaketime  pidpersec        rubygc             solisten          tclstat     tcpsubnet    virtiostat
biosnoop      compactsnoop  dirtop        funccount     javaobjnew      mountsnoop      old           profile        rubyobjnew   sslsniff          tcpaccept   tcpsynbl           wakeuptime
biotop              cpudist            doc                funcinterval  javastat              mysqld_qslower  oomkill           pythoncalls        rubystat     stackcount   tcpcong     tcptop           xfsdist
bitesize      cpuunclaimed  drsnoop        funclatency   javathreads     netqtop              opensnoop    pythonflow        runqlat      statsnoop          tcpconnect  tcptracer    xfsslower
bpflist       criticalstat  execsnoop        funcslower    killsnoop       netqtop.c       perlcalls    pythongc        runqlen      swapin          tcpconnlat  threadsnoop  zfsdist
👆👆👆得益于 weishu 大佬的手把手环境工具包,androdeb + 内核5.10 的 eBPF 环境搭建起来就是这么简单

反调试样本实操

DetectFrida.apk 核心逻辑: https://github.com/kumar-rahul/detectfridalib/blob/HEAD/app/src/main/c/native-lib.c

哎😆,这里我直接就拿山佬的实践来说,至于为啥后面再说

image
image

还少了一个关键的

image

手写 trace 干它

trace 'do_readlinkat "%s", arg2@user' --uid 10229 <br>

再来一次

image

👆👆👆可以了,差不多了,这样分析已经为后续对抗 bypass 提供了很大的帮助
当然了,上述只是最基础的操作,后续还得继续深入探索学习,解锁更多顶级玩法
还有就是,其实我的 Xiaomi 12 还没搞好,在等解 BL 锁,至于秒解,我不想花钱,所以就拿山佬的实践来借花献佛,真是个好主意啊,哈哈😄

总结

基于内核级别的监控,让应用中所有的加固/隐藏/内联汇编等防御措施形同虚设,而且可以在应用启动的初期进行观察,让应用的一切行为在我们眼中无所遁形 <br>
这是真真正正的降维打击,内核级的探测能力提供了无限可能,堪称:屠龙技 <br>

最后

文中用的工具和软件,我已经打包整理好了 <br>
聊天界面不用回复 "ebpf" 即可 <br>

我通过百度网盘分享的文件:ebpf
链接:https://pan.baidu.com/s/17HsadIwAFhjrYMTrd33rng?fm=lk0 提取码:7t85
复制这段内容打开「百度网盘APP 即可获取」

再次感谢先行者大佬们的无私奉献,和为技术发展所做的贡献🎉🎉🎉 <br>

免费评分

参与人数 13威望 +1 吾爱币 +32 热心值 +12 收起 理由
Linyy + 1 + 1 我很赞同!
ufldh + 1 + 1 看不懂但star了
笙若 + 1 + 1 谢谢@Thanks!
Shocker + 2 + 1 我很赞同!
shiqiangge + 1 我很赞同!
loo1221ool + 1 + 1 热心回复!
Event + 1 用心讨论,共获提升!
杨辣子 + 1 + 1 别学了,卷不动了
小小莱 + 1 + 1 谢谢@Thanks!
QS+HUD + 1 + 1 谢谢@Thanks!
AItechnology + 1 + 1 谢谢@Thanks!
kerwincsc + 1 + 1 谢谢@Thanks!
正己 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

安辰- 发表于 2023-4-4 21:45
@huaerxiela 时隔8个多月,挖下,抱歉突然打扰大大了;

近期才开始了解eBPF,来52找相关资料,才翻到这篇帖子,在浏览器打开大大你在文末贴的eBPF相关工具链接,显示:禁止分享。。。所以麻烦大大日后有时间看到我这条评论,重新发个度盘或阿里盘链接呗,极其想康康大大你去年收集的eBPF相关工具都有哪些,跪求大大回复惹
cczop 发表于 2022-6-26 17:10
虽然看不懂,但总感觉很厉害的样子!
感谢大佬的分享!相信能促进咱们技术的发展,期待更多更实用的东西出来。
aonima 发表于 2022-6-23 15:23
yinpeiqi 发表于 2022-6-23 16:35
知识又增加了
小蓝人 发表于 2022-6-23 17:01
知识又增加了
Piz.liu 发表于 2022-6-23 17:29
今天百度了解了一个新技术 eBPF
maguoli123 发表于 2022-6-23 17:46
小白的我就爱看这种文章
x179 发表于 2022-6-23 18:50
   虽然看不懂但感觉很厉害
kkh123 发表于 2022-6-23 20:25
身为小白的我不知道有什么用
林淮想当小白 发表于 2022-6-23 20:47

身为小白的我不知道有什么用
大大泡泡糖121 发表于 2022-6-23 21:02
中国字都认识,但连起来就看不懂了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-18 21:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表