首页
社区
课程
招聘
[原创]双向认证之内存解密证书探秘
发表于: 2021-10-27 15:00 11311

[原创]双向认证之内存解密证书探秘

2021-10-27 15:00
11311

起因

近日分析一个双向认证的样本APP,因为这次APP有点奇妙,使用了内存解密p12证书,所以记录一下.

开工

如果抓包提示这个东东,就是APP用了双向认证哦!
图片描述

上工具

图片描述

 

这里看到把attachBaseContext 跟 onCreate native化,典型壳操作.看到包名知道是某安全的壳,用上脱壳工具脱一下,这里不讲解脱壳了.

定位

对于这种双向认证的APP 定位一般就是 KeyStore.getInstance X509TrustManager PKCS12. 那么就拿我们脱完壳的dex搜索一下.

 

图片描述

 

根据我们三个关键词搜索的结果来看 这个类com.hundsun.net.a.e 有很大的嫌疑! 因为所有关键词的搜索结果都指向了这个类!!!

 

然后进到类中查看,果然发现了关键函数
图片描述

分析

这里出现了一个client.p12的证书文件,根据代码指引,这个文件就存在于APK assets目录下那我们拿下来看下

 

图片描述

 

这东西典型不符合p12证书的格式,明显是个base64的压缩流,那我们再看下代码. 果然在得到证书文件后它把得到的证书流进行了DES解密操作

 

其实这时候我们只需要HOOK KeyStore的 load函数 就能拿到证书的流跟密码.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function hook_KeyStore_load() {
  Java.perform(function () {
      var StringClass = Java.use("java.lang.String");
      var KeyStore = Java.use("java.security.KeyStore");
      KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) {
          console.log("KeyStore.load1:", arg0);
          this.load(arg0);
      };
      KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
          console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
          if (arg0!= null){
              var byteArray = Java.array('byte', new Array(10240).fill(0));
              arg0.read(byteArray)
              console.log(buf2hex(byteArray,10240));
 
          }
 
          this.load(arg0, arg1);
      };
 
      console.log("hook_KeyStore_load...");
  });
}
 
setImmediate(hook_KeyStore_load);

图片描述

 

Bingo 我们拿到了想要的密码 但是打印出来的证书总是不全,我们还是直接帮他解密吧!

 

因为都是Java层操作 我们用Objection直接拿他密匙就ok啦!!!

 

图片描述

 

这里一共出现了两个密匙,经过分析得到第一个秘钥是P12证书的秘钥 第二个就是我们要的DES解密的秘钥啦!

 

图片描述
其实他的base64后的p12文件还会进入到Native层解密下才能变成可被DES解密的流,但是你毕竟最终还是得回来不是,我们就在你回来的地方打印下就好了,这就是如今APP防护的可笑之处.
图片描述

 

拿到秘钥然后写个代码解密下流文件然后保存成P12文件导入到Charles里试试!!

 

图片描述
输入我们HOOK到的秘钥,嘻嘻嘻,见证奇迹的时候就要到了!!!

 

图片描述

 

CODE=200 成功搞定!

总结

这次app的防护不高,所以正好分析下双向认证的东西,其实可以直接用肉丝的 r0capture dump证书 因为前段时间脑子一直浑浑噩噩的就没想起来,做完了才想起来,也是蛋疼!!!


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 6
支持
分享
最新回复 (6)
雪    币: 864
活跃值: (5124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主微信群还在吗
2021-10-27 16:20
0
雪    币: 3064
活跃值: (7808)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
suuuuu 楼主微信群还在吗

最后于 2023-6-16 10:06 被至尊小仙侠编辑 ,原因:
2021-10-27 17:29
0
雪    币: 51
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
膜拜宇哥
2022-6-16 22:41
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
1
2023-9-3 18:58
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
楼主可以加个微信嘛
2023-9-3 18:58
0
雪    币: 3004
活跃值: (30866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢分享
2023-9-3 23:09
1
游客
登录 | 注册 方可回帖
返回
//