这是 酒仙桥六号部队 的第 120 篇文章。

全文共计2289个字,预计阅读时长7分钟


前言

这是一个挖掘客户端逻辑漏洞的进阶技巧分享。对于客户端实现了OTP加密的情况下。如何进行漏洞挖掘以及利用。


背景

受某银行的委托,我们对其企业版手机银行进行了安全测试。其实APP渗透测试相对于WEB的渗透测试来说,APP更具有挑战性,尤其金融类APP挑战更大。首先要绕过证书校验,其次在有壳的情况下首先要进行砸壳,砸壳还不一定成功,最后要突破加密算法。然后才能正常进行测试。如果其中任何一个环节没有突破,测试过程将会带来巨大的挑战。

由于金融监管机构对金融APP的强监管,制定了一系列针对金融APP的安全规范。如:双向证书校验、XXX方式加壳,OTP方式加密,这些都是规范里必须要做的。目前行业里使用双向证书校验的APP还比较少。OTP加密虽然越来越规范,但还是存在一定的问题。


渗透目标

首先我们在测试手机上安装需要渗透的某行APP,使用抓包工具进行抓包,结果发现存在证书校验,但是这也难不倒我们,在网上现在又很多的证书校验绕过插件,这里尝试使用justTrustMe进行绕过,发现能够成功绕过。

说明他们的证书校验机制并不安全,至于绕过的具体的细节这里就不细说了。

我们继续往下看,当打算测试转账、查询余额等功能时,发现数据包为加密状态,没有办法进行功能测试。

到了这里可能会难住一批人,但是,再硬的骨头也要试着啃一口,看我逆向大法破解加密算法,完成渗透测试。

首先我们可以使用jadx、jeb、gda等逆向分析工具,对apk文件进行反编译,这里以jdax为例:

下面我们根据加密的数据包中的特殊字段,在代码中进行定位,很幸运的发现了如下14处,用到特殊字符串的位置,猜测是不同业务对应不同函数。

这其中肯定存在着我们所需要的函数,如果一个一个进行分析的话也能够发现最终调用的是哪个函数,但是为了方便,这里使用另一种方式进行定位,method profiling工具(位于AndroidSDK中,需要自行下载配置SDK环境),下面实际操作下,首先选中我们要操作的app的进程,然后选择start method profiling 后操作手机中的功能。

出现如下界面,选择OK。

然后开始在手机上操作要测试的功能,完成后点击stop method profiling 即可。

最终会在右侧展示出调用的所有函数,可以在其中对调用过的函数进行搜索,这里以上面从代码中定位到的函数进行搜索,结果如下:

在这里面可以看出来,函数内部还调用了一个CrpytSM类中的函数,对数据进行加密,然后才会调用okhttp对数据进行发送。下面我们回到反编译后的代码中,直接定位函数进行分析,根据调用栈发现,函数是走的如下代码。

我们跟进去继续分析,可以发现使用的是SM2算法对本次请求过程使用的密钥进行加密后,传输到服务端。

而在转账、查询等操作时都是使用的SM2加密传输的key和SM4进行加密传输,最终调用如下函数进行加密。

至此,我们梳理清楚了客户端加密的关键逻辑,其实对于加密,开发人员为了降低耦合度,每一个客户端都有统一的加密接口,也就是所有的入参都会经过这个加密接口,加密之后会再次输出,所以大家在梳理逻辑的时候一定要找准位置,单独分析用一个点(比如登录),摸透之后就会得到想要的结果。接下来,我们直接通过hook这个加密函数,就可以控制整个程序的所有入参及加密后的出参。


Frida Hook大法

Frida在之前的文章中有过详细的介绍,这儿就不详细讲他的用法了,如果不是很了解的可以看看之前发布的文章,或者在通过其他渠道学习学习。这里主要是基于前面的理论,在这里加入实战演练。下面开始使用frida hook并修改加密的内容。首先我们看下key是怎么生成的,经过分析后hook调用createKey函数就可以知道,app这一次运行阶段使用的key,具体hook代码如下:

返回值即这一次使用的key,下面看下加密。

这里可以将from进行替换,实现参数修改,后面的越权转账、越权查询等都是基于此函数进行操作的,从这里可以发现 打印的 sm4 key 和上面生成的key是相同的。

测试过程中,我们发现了该APP可以越权操作。水平越权查询,越权转账。越权在金融行业是一个非常严重的漏洞,直接影响着资金安全及客户信息安全。

下面我们用一个越权查询交易明细来验证我们的整个渗透思路的正确性。

启动Frida,点击APP需要测试的功能,我们直接hook上文中梳理出的程序统一入参接口xxx.xxx.SM4EcbUtil加密算法。如下图:

上图中,Param参数即加密前的参数,我们直接用strs替换该参数,将其中的账号修改为另外的一个账号,修改后为from data参数。其实经过分析,第一个加密过程得出的结果(encode result)也传到了后端,数据包响应200,个人觉得是一个签名校验的过程。第二个SM4加密的数据包才是真正业务逻辑处理的过程。此处的架构设计没有将解密和验签放在同一个数据包,也具有一定的风险。

返回结果如下:


总结

客户端安全其实是作用在客户端每一个环节,如加壳、加密、签名、证书认证等,每一个点也可能是形成木桶原理的那个点。渗透过程中,应该层层分析,不放过任何可能出现问题的点。一旦一个点沦陷,即可造成其他点的沦陷。各位师傅在测试过程中遇到无法抓包、数据包加密、程序加壳、签名校验等问题时,不要慌,可以先搜一波,相信大部分问题都会解决,关于客户端的渗透,逆向大法是必不可少的,只要细心都能够分析出来的。如果还不会逆向、frida的那就得抓紧学习了,要跟上时代得步伐。





发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 老实人很难当领导?这是我听过特别一针见血的答案
  • ”...... 我年前买的衣服、我妈说买大了[嘻嘻](在实体店买的、试穿的时候刚刚好)昨天甚至还有同事说我现在比以前看起来年轻了(啊![允悲])不过不管怎样,也
  • 妈妈总说我太少给她打电话,今天外婆生日,家里很热闹,舅舅打来视频,我正在吃泡面,下意识慌张的把碗藏一边,后来跟舅舅和妈妈又聊了很多,听说妈妈准备回王英去和小姨
  • 成都的姐妹想要做个鼻子修复,做了有两年多了,想要重新做的精致点,面过倪云志和贾德渊做的怎么样?长沙的姐妹想要割个双眼皮,想了解谭鹜远怎么样?
  • ”看这架势,将来长大了也是吃相声这碗饭的,天赋异禀啊[笑cry]一天,郭德纲准备出门时,小儿子郭汾阳问:“爸爸,你干嘛去?[允悲]有一天,郭德纲准备出门时,小儿
  • 做双眼皮有哪些好的医院?泉州双眼皮修复哪些医院医生做的好?
  • 经数年,其兄子诠在宅,朝起,忽于前院草中见一檀木浮图盖,下有一鍮石佛像,制作异于中国,面形似胡,其眼睛以银为之,中黑精光净如自然者。”因与瑀等别,仍起,长跪合掌
  • 夜间碎碎念1.看到一个眼影,突然想哭,像极了2018年的我会化的眼影。有时候,觉得自己拥有整个世界,一瞬间又觉得一无所有。
  • 就像屋里的人不知道屋外寒风冷,被爱的人不知道爱你的人有多辛苦…此情可待成追忆,只是当时已惘然…时光深处做一个深情的人…因为你在,我不招摇,因为我在,你不动摇;最
  • 正在这时,哥哥望见天上飞来了一只大雁,就准备拉弓把它射下来  他对弟弟说道:“射下来后,我们把它煮了吃”  他的弟弟却不同意,在一旁争辩道:“为什么要按你说的,
  • 人间忽晚,山河已秋,你要的爱和温柔我都会慢慢给你,我不太温柔也不太优秀,但对于你,我定尽我所能每个优秀的人都有一段沉默的时光。#成都婚纱照#不管我说什么话,对方
  • #nct# my pick~ 元宵节快乐 2022年12月15日成员ins粉丝数存档 ⬆️ 悠太 770w 16w 道英 946w35w 在玹 1059
  • 看书很幸福,喝茶很幸福,看到小考拉很幸福,薅到了羊毛很幸福,妈妈午饭做了胡辣汤很幸福,山楂条里有柠檬粒诶真的很幸福,买的便利贴贴在书上很好看非常幸福,新买的暖宝
  • 第二个是有“肿块”在体表的,比较容易发现,如骨折,或者体表哪个部位受伤以后,局部常有青紫色的包块;体内看不到这种青紫色的包块,但是可以用触诊,特别是腹部,如果有
  • NBA致敬75大巨星,仪式简朴,但是那些熟悉的篮球运动员出来或者出镜,足以让人眼眶一热。乔丹最后压轴出场,他的位置是中心圆圈,即使众望所归,他也很谦虚的和前辈,
  • 转晚年不想”疾病缠身“还请牢记7个中医养生常识,对健康有好处,不妨收藏起来跟着做1、最好的医生是自己,做好的心态是平和。不是你愁,就能解决的,不是你烦,就能得到
  • #钢琴# #ABBA# #音乐推荐#|一:需要什么钢琴谱和简谱,微博搜曲名,没有的可以加VX:LLL19211WYL,没有和某个视频里面一模一样的,每首曲子,演
  • 生活在四季中轮回,人生经历的总总都会给你答案,但不会马上把一切都告诉你。生活在四季中轮回,人生经历的总总都会给你答案,但不会马上把一切都告诉你。
  • #数智政府# 【数智政府系列文章(二):持续推进政府职能转变,助力数字化战略落地】近年来,随着大数据、区块链、人工智能等数字新技术的成熟,以数据驱动和数字化治理
  • 今天是节气之惊蛰,又是老年人般的遛弯儿生活,一切欣欣向荣,期待的海棠快要来了,柳树也抽出了嫩叶,油菜也开花了,湖里的鸭子恢复了精气神,枝头的鸟叫声也提高了几个分