APP渗透|0基础师傅也可以通杀测试金融APP了

admin 2024年7月21日09:20:52评论60 views字数 2884阅读9分36秒阅读模式

此文章只为学习而生,请勿干违法违禁之事,本公众号只在技术的学习上做以分享,做一个APP渗透测试小技巧的分享,所有行为与本公众号无关。

sdfd

01

前置小絮

平时阿呆做金融项目直接反编译一波加壳直接不看,问就是安全。直到某安信的一个红队大牛需要对某金融机构进行授权的渗透测试,阿呆小小跟着看了一下询问了几个点后,发现APP渗透可以速通。当然阿呆没有内网环境就找了个差不多应用的看看并未进行渗透测试,后发现可以通杀。只能说稳了,又稳了。(阿呆后续只放个脱敏脱的死死的demo,自己去研究自己需要测试的APP把)

02

痛点1:环境检测

过Root检测:阿呆刷的Apatch框架,还有狐狸面具KSU框架都可以过root检测(这些框架都是白名单放行root,不容易被检测,KSU和Apatch是内核Root)这个自己研究一下。

过Frida检测:阿呆用的hluda,葫芦娃大佬的去部分Frida特征的Server(https://github.com/CrackerCat/strongR-frida-android),有的呢检测Frida监听端口改端口就行,但是要是还是过不了,阿呆只能安全了。

过代理检测:阿呆有PlanA和PlanB,PlanA用SSLUnpinning脚本,PlanB用算法助手Pro,可以组合SSLUnpinning和自己的Hook脚本进行同步抓包和Hook,也可以用算法助手Pro过掉代理检测然后自己启Frida进行操作(不过多次测试应用容易崩溃)

抓包代理软件:阿呆用的Tun2Socks(谷歌商店直接下),比之前几个不更新的代理APP好用多了,当然直接Wifi代理也可以。

03

痛点2:快速定位加密方法

因为是金融项目,加密方法必然用到国密,就算其他许多加密也会用到一个很关键的方法:String.getBytes()

所以我们直接HOOK住String.getBytes()即可通杀。

function showStacks(){    var Exception = Java.use("java.lang.Exception");    var ins = Exception.$new("Exception");    var straces = ins.getStackTrace();    if(undefined== straces ||null== straces) {        return;    }    console.log("============================= Stack strat=======================");    console.log("");    for(var i =0; i < straces.length; i++) {        var str =" "+ straces[i].toString();        console.log(str);    }    console.log("");    console.log("============================= Stack end=======================rn");    Exception.$dispose();}function getBytes(){    Java.perform(function(){        var str = Java.use("java.lang.String");        str.getBytes.overload().implementation =function(){            var result =this.getBytes();            var newStr = str.$new(result);            console.log("str.getBytes result: ", newStr);            showStacks();            return result;        }        str.getBytes.overload('java.lang.String').implementation =function(a){            var result =this.getBytes(a);            var newStr = str.$new(result, a);            console.log("str.getBytes result: ", newStr);            showStacks();            return result;        }    })}

然后找到我们的原始数据,然后找到调用栈进行尝试性HOOK,多HOOK几个栈即可找到原始加密函数。

第一步:启动Frida Server:

APP渗透|0基础师傅也可以通杀测试金融APP了

第二步:组合HOOK脚本,将上面的脚本结合过代理检测的SSLUnpinning为一个js,如下:

APP渗透|0基础师傅也可以通杀测试金融APP了

第三步:开启VPN代理:

APP渗透|0基础师傅也可以通杀测试金融APP了

这里有个意识性问题不是非得直接代理用脚本过,我们可以正常启动APP之后然后用脚本启动Hook,然后开启代理,这样可以直接-F去HOOK当前启动的无需再从启动开始Hook。

第四步:抓包与Hook:

(这里show的是登录模块手机号收验证码)

APP渗透|0基础师傅也可以通杀测试金融APP了

APP渗透|0基础师傅也可以通杀测试金融APP了

然后进入我们记录结果的result.txt里面直接搜索我们输入的手机号13100000000

APP渗透|0基础师傅也可以通杀测试金融APP了

后续经过验证encryptData就是加密方法,然后RPC就完了。

03

痛点3:脱壳

并不是所有项目都需要脱壳,只需要HOOK到关键的加解密方法进行RPC调用即可,当然脱壳会让我们看起来更快。

这里只针对某梆企业版(城商行特别喜欢用),有一个项目可以直接脱,完全不要脑子:

https://github.com/hluwa/frida-dexdum

APP渗透|0基础师傅也可以通杀测试金融APP了

上MT管理器,看到这个就知道,欧了。

APP渗透|0基础师傅也可以通杀测试金融APP了

不过我不是很理解,为什么22年的项目可以脱24年的壳,但是跪拜葫芦娃大佬就完事了。

然后我们需要做什么?

# 先安装 pip install frida-dexdump# 再点开要脱壳的APP,多点几下功能,有的dex可能不是开启即加载的frida-dexdump -U -F -o PC本地文件夹路径

然后脱下来的所有dex文件会在你设置的文件夹目录下。

APP渗透|0基础师傅也可以通杀测试金融APP了

APP渗透|0基础师傅也可以通杀测试金融APP了

稳了!安服仔们又稳了!

然后把dex全选拖进jadx-gui里面可以直接读,也可以用脚本合并dex并反编译:

import osimport sys# 使用方法# python3.7 merge_dex.py ./file/ livedexif __name__ == "__main__":    if len(sys.argv) < 3:        print("start error")        sys.exit()    print(sys.argv[1], sys.argv[2])path = sys.argv[1]  # #文件夹目录files = os.listdir(path)  # 得到文件夹下的所有文件名称s = []for file in files:  # #遍历文件夹    if file.find("dex") > 0:  # #查找dex 文件        sh = 'jadx -j 1 -r -d ' + sys.argv[2] + " " + path + file        print(sh)        os.system(sh)

APP渗透|0基础师傅也可以通杀测试金融APP了

目录关系如上,然后进行调用即可:

python batch.py dex文件夹 反编译文件夹

APP渗透|0基础师傅也可以通杀测试金融APP了

然后进file文件夹里的source文件夹看就行了,这里我就不执行完了,电脑比较垃圾风扇呼呼。

原文始发于微信公众号(阿呆攻防):APP渗透|0基础师傅也可以通杀测试金融APP了

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月21日09:20:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   APP渗透|0基础师傅也可以通杀测试金融APP了https://cn-sec.com/archives/2980029.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息