朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把SecretTeam安全团队“设为星标”,否则可能就看不到了啦!
免责声明
"本文档所提供的信息旨在帮助网络安全专业人员更好地理解并维护他们负责的网站和服务器等系统。我们鼓励在获得适当授权的情况下使用这些信息。请注意,任何未经授权的使用或由此产生的直接或间接后果和损失,均由使用者自行承担。我们提供的资源和工具仅供学习和研究之用,我们不鼓励也不支持任何非法活动。"
"我们创建这个社区是为了促进技术交流和知识分享。我们希望每位成员都能在遵守法律法规的前提下参与讨论和学习。如果使用本文档中的信息导致任何直接或间接的后果和损失,我们提醒您,这将由您个人承担。我们不承担由此产生的任何责任。如果有任何内容侵犯了您的权益,请随时告知我们,我们将立即采取行动并表示诚挚的歉意。我们感谢您的理解和支持。"
1. 前言
最近在分析一款app时遇见了root检测,数据包加密,花了时间简单研究了一下,记录下学习的过程。
2. 抛出问题
打开app发现提示检测到设备为root设备,闪退。能看到提示,推测应该是java层的检测。
拖进jadx发现是加固的。
3. 通过frida绕过检测
java层常见root检测大多是通过检测系统文件:一些路径下的su文件,一些root的app相关文件。
"/data/local/bin/su","/data/local/su","/data/local/xbin/su","/dev/com.koushikdutta.superuser.daemon/","/sbin/su","/system/app/Superuser.apk","/system/bin/failsafe/su","/system/bin/su","/su/bin/su","/system/etc/init.d/99SuperSUDaemon","/system/sd/xbin/su","/system/xbin/busybox","/system/xbin/daemonsu","/system/xbin/su","/system/sbin/su","/vendor/bin/su","/cache/su","/data/su","/dev/su","/system/bin/.ext/su","/system/usr/we-need-root/su","/system/app/Kinguser.apk","/data/adb/magisk","/sbin/.magisk","/cache/.disable_magisk","/dev/.magisk.unblock","/cache/magisk.log","/data/adb/magisk.img","/data/adb/magisk.db","/data/adb/magisk_simple","/init.magisk.rc","/system/xbin/ku.sud"
检测一些root的app如magisk等。
"com.noshufou.android.su","com.noshufou.android.su.elite","eu.chainfire.supersu","com.koushikdutta.superuser","com.thirdparty.superuser","com.yellowes.su","com.koushikdutta.rommanager","com.koushikdutta.rommanager.license","com.dimonvideo.luckypatcher","com.chelpus.lackypatch","com.ramdroid.appquarantine","com.ramdroid.appquarantinepro","com.topjohnwu.magisk","com.kingroot.kinguser","com.kingo.root","com.smedialink.oneclickroot","com.zhiqupk.root.global","com.alephzain.framaroot","com.android.vending.billing.InAppBillingService.COIN","com.android.vending.billing.InAppBillingService.LUCK","com.chelpus.luckypatcher","com.blackmartalpha","org.blackmart.market","com.allinone.free","com.repodroid.app","org.creeplays.hack","com.baseappfull.fwd","com.zmapp","com.dv.marketmod.installer","org.mobilism.android","com.android.wp.net.log","com.android.camera.update","cc.madkite.freedom","com.solohsu.android.edxp.manager","org.meowcat.edxposed.manager","com.xmodgame","com.cih.game_cih","com.charles.lpoqasert","catch_.me_.if_.you_.can_"
这里通过一些公开的脚本去绕过,直接可以绕过。
frida -U -f com.xxxx.xxxx -l anti_root.js --no-pause
此时不再闪退。
4. 数据包测试
还是需要脱壳进行分析。 这里已经绕过了root检测,没有frida检测,直接上frida-dexdump
就行。
frida-dexdump -FU
分析后定位到类:com.xxxx.xxxx.utils.http.DESHelp 直接hook就行。
5. frida rpc
只是hook加解密还是用很多不方便的地方,有时候需要去主动调用对应的加解密函数。 这里可以用brida,或者是httpdecrypt等工具。 这里提供一个通过python frida交互,使用rpc来完成主动调用。 调用也很简单,只是代码写死在了js脚本中,所用使用rpc.exports开启RPC调用接口,后面使用python来调用。
function htddecrypt(param,key){ var result; Java.perform(function () { var hclass = Java.use("com.xxxx.xxxx.utils.http.DESHelp"); var hexarry = hclass.parseHexStr2Byte(param); param = byteToString(hexarry); console.log("[*] Hooking ..."); result = hclass.decrypt(param, key); //console.log(result); });return result; }function htdencrypt(param,key){ var result; var enc Java.perform(function () { var hclass = Java.use("com.xxxx.xxxx.utils.http.DESHelp"); console.log(param); enc = hclass.encrypt(param, key); //console.log(result); var hexarry = stringToByte(enc); result = hclass.parseByte2HexStr(hexarry); });return result; } rpc.exports = { rpcfunc: htdencrypt, rpcfunc1: htddecrypt }
通过python中代码:
session = frida.get_usb_device().attach("com.xxxx.xxxx") script = frida_rpc(session)param = str(sys.argv[2])ret = script.exports.rpcfunc(param,"CCCk+H%b6.MMMMkoKKK")print(ret)
推荐历史文章阅读
原文始发于微信公众号(SecretTeam安全团队):APP绕过root检测解密
原文始发于微信公众号(SecretTeam安全团队):APP绕过root检测解密
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论