赞
踩
Android 系统的设计初衷为了保护用户设备的安全和稳定性,并控制对系统的访问权限。因此,Android 系统会对root这种非授权的操作进行限制,在渗透测试 Android 应用程序时候,大多数技术都需要 root 权限才能安装各种工具,从而危及应用程序的安全性,以下是笔者对几种Root检测方式的总结,抛砖引玉
su命令可用于切换至其他用户,安卓手机出于安全考虑,系统内部一般是没有su可执行文件,所以基于检查系统内部是否存在su文件的方式可以判断该系统有没有被Root
以下命令测试的是被Root过的手机,可以看到存在su
bullhead:/ $ which su
which su
/system/bin/su
而另一部华为手机没有被Root,没有检测到su
D:\Users\wyz\Desktop\Fastboot>adb shell
HWEVR:/ $ which su
which su
1|HWEVR:/ $
用java实现检测是否存在su命令
package com.example.checksu; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import java.io.BufferedReader; import java.io.InputStreamReader; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(checkSuExists()) { Toast.makeText(getApplicationContext(), "检测到su命令", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(),"没有检测到su命令", Toast.LENGTH_SHORT).show(); } } public boolean checkSuExists() { Process process = null; try { process = Runtime.getRuntime().exec(new String[] { "which", "su" }); BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); return in.readLine() != null; } catch (Throwable t) { return false; } finally { if (process != null) process.destroy(); } } }
没有root过的华为手机的检测结果
root过的N5x的检测结果
笔者root过的N5x在一些环境变量路径里存在su和magisk
bullhead:/system/bin $ which magick
which magick
1|bullhead:/system/bin $ which magisk
which magisk
/system/bin/magisk
bullhead:/system/bin $ which su
which su
/system/bin/su
1|bullhead:/system/bin $ echo $PATH | grep /system/bin
echo $PATH | grep /system/bin
/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin
由此可以用遍历系统PATH的手段检测一些非法二进制文件,java实现如下
package com.example.checkpath; import android.os.Bundle; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.io.File; import java.util.ArrayList; import java.util.Arrays; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); checkForBinary("magisk"); checkForBinary("su"); checkForBinary("busybox"); } private static final String[] suPaths = { "/data/local/", "/data/local/bin/", "/data/local/xbin/", "/sbin/", "/su/bin/", "/system/bin/", "/system/bin/.ext/", "
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。