吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3836|回复: 13
收起左侧

[Android 原创] 利用安卓系统PATH顺序劫持系统调用

  [复制链接]
Leland 发表于 2021-10-4 11:19

利用安卓系统PATH顺序劫持系统调用

起因是最近在分析安卓平台的一个小玩意儿,需要过它的网络验证。这个app要了root权限和xposed模块才能正常运行,验证则是使用了http://1.1.1.1的形式,很容易想到用iptables劫持。

iptables -t nat -A OUTPUT -d 119.188.245.15 -j DNAT --to-destination 192.168.31.106

没想到这次这个app也学聪明了,在关键功能的地方(so层)调用了清空iptables的指令

su -c iptables -F
su -c iptables -X

如何解决呢?
修改app不太现实,这个app签名效验之类的做得很死,而且混淆严重,不太能理清验证逻辑。
hook system调用呢?这个app发挥作用的本身就是一个magisk的riru模块。此外清空iptables在很多地方都做了,不一定能hook干净。

我尝试了用magisk模块直接替换掉/system/bin/iptables,可是替换后系统就无法正常联网了(原因未知)。最后,我终于找到了一种不修改原来iptables实现劫持调用的方法:利用系统PATH的优先级。
在我的安卓11设备上,在adb shell中输入$PATH获取的的PATH如下:

/product/bin
/apex/com.android.runtime/bin
/apex/com.android.art/bin
/system_ext/bin
/system/bin
/system/xbin
/odm/bin
/vendor/bin

需要指出的是,系统在查找可执行文件时是依照PATH顺序从前往后查找的。原本的iptables在/system/bin目录下,可见/product/bin,/system_ext/bin优先级都比它高,而恰恰magisk提供了挂载文件到这两个目录的能力。经过我的测试,确实可以将自己写的iptables挂载到/product/bin来实现劫持对iptables的调用。

自己写的iptables代码也很简单,在对传入的参数进行审查后再使用绝对路径调用/system/bin/iptables

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    char *cmd = (char *)malloc(1024);
    memset(cmd, 0, 1024);
    strcpy(cmd, "/system/bin/iptables");
    for (int i = 1; i < argc; i++)
    {
        strcat(cmd, " ");
        strcat(cmd, argv[i]);
    }
    if (strstr(cmd, "-F") ||strstr(cmd, "-X") || strstr(cmd, "-t nat -F") ||strstr(cmd, "-t nat -X"))
    {
        printf("Permission denied--From fake iptables\n");
        return 0;
    }
    // printf("%s", cmd);
    system(cmd);
    free(cmd);
    return 0;
}

将c程序使用ndk编译即可。另外提一点就是编译好的程序要放在magisk模块的\system\product\bin路径中,magisk会自动将其挂载到\product\bin

在安卓11以下,magisk的su存储在最高优先级的/sbin路径中,而安卓11之后取消了这个路径,所以利用这一点,我们甚至可以劫持magisk的su来实现更多元而相对修改magisk更简单的定制。

防范这种劫持的方法也很简单,在调用时使用绝对路径/system/bin/iptables即可,当然,这不免失去了一些兼容性。


劫持成功示例

劫持成功示例

iptables劫持.zip (8.15 KB, 下载次数: 44)

免费评分

参与人数 7威望 +1 吾爱币 +25 热心值 +6 收起 理由
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
shiina0831 + 1 + 1 谢谢@Thanks!
lingyun011 + 1 + 1 我很赞同!
shaki_kato + 1 + 1 我很赞同!
HOOK_XYS + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
毛新航 + 1 已经处理,感谢您对吾爱破解论坛的支持!

查看全部评分

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

ikooc 发表于 2021-10-4 15:34
支持!支持!支持!
ywlgdlxg 发表于 2021-10-4 21:20
rhol 发表于 2021-10-5 00:03
doocool 发表于 2021-10-5 13:31
感谢分享,大受启发
ZLJ13697750126 发表于 2021-10-5 16:00
感谢分享!
smith168668 发表于 2021-10-5 16:22
思路不错的
本拉登他爹 发表于 2021-10-5 17:34
大佬可以劫持手机摄像机吗?
shiina0831 发表于 2021-10-5 20:25
谢谢大佬的热心分享,支持
delta314 发表于 2021-10-6 13:45
说实在的,有点深奥,没理解怎么用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 16:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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