APP Https双向认证抓包


E security 2天前我要分享

01

声明

传播和使用本文档中提供的信息所产生的任何直接或间接后果和损失均由用户负责。雷神公司和文章的作者对此不负责任。

雷神公司有权修改和解释本文。要重新打印或传播本文,您必须确保本文的完整性,包括版权声明。未经Raytheon许可,不得以任何方式修改,添加或删除本文。它不得以任何方式用于商业目的。

02

文本

在一次测试中,我偶然遇到了一个https双向认证手机应用程序(fiddler数据包捕获提示需要提供客户端证书),通常一个穿梭机可以获得包裹手势没有效果,按照所有客户发送的数据被控制的想法,决定搞一场斗争,无非就是使用什么方法的问题。只要您获得客户端加密的私钥证书,双向身份验证就可以了。

不幸的是,移动应用程序正在打包,基本上告别了动态调试的方式。

image.php?url=0MroDIaWuR

用于相互身份验证的证书库文件位于assets目录中,如下所示:

要使用证书存储区,我们还需要找到证书存储区的密码,解压缩部分源代码,并按关键字找到以下代码:

image.php?url=0MroDIzQTz

关键代码在函数m8196a中,具体代码如下:(由于双向认证和密钥库没有相关代码,可以添加java api文件搜索功能描述,并添加注释)

String str='X509';

String str2='BKS';

应用程序b=MyApplication.m5574b;

SSLSocketFactory sSLSocketFactory=null;

试试{

KeyStore instance=KeyStore.getInstance(str2);

KeyStore instance2=KeyStore.getInstance(str2);

InputStream open=b.getAssets.open(f7624a); //获取客户端证书的密钥库

InputStream open2=b.getAssets.open(f7625b); //获取服务器相关证书的密钥库文件

Instance.load(open,f7626c.toCharArray); //使用密钥库密码

打开客户端密钥库

Instance2.load(open2,f7627d.toCharArray); //使用密钥库密码打开服务器密钥库

Open.close;

Open2.close;

SSLContext instance3=SSLContext.getInstance('TLS');

TrustManagerFactory instance4=TrustManagerFactory.getInstance(str);

KeyManagerFactory instance5=KeyManagerFactory.getInstance(str);

Instance4.init(INSTANCE2);

Instance5.init(instance,f7626c.toCharArray); //再次输入密钥库的密码

Instance3.init(instance5.getKeyManagers,C2639d.m8197a(instance4.getTrustManagers),null);

sSLSocketFactory=instance3.getSocketFactory; //完成sslsocketfactory

返回sSLSocketFactory;

} catch(KeyStoreException e){

..省略

路。我错误地认为我已经获得了双向认证并打开了Burpsuite导入证书:

image.php?url=0MroDIcN3p

Pkcs12格式,暴露了我的盲区证书相关格式,谷歌告诉我使用keytool转换证书格式,如下:

image.php?url=0MroDIzSpX

Emmmm?我还需要密钥密码,试图尝试相同的密码(代码访问相同的密码两次)(毕竟,代码没有看到其他密码) - 圆圈复制的开头,粘贴 - 去

image.php?url=0MroDIkZgd

Emm手动输入试试

image.php?url=0MroDIw97i

嗯,什么?

代码没有看到相关的密码,确定搜索相关的呼叫,在功能m5660a中的上级呼叫

image.php?url=0MroDItDlF

密钥没有代码。这感觉很不寻常,它可能已陷入一个奇怪的坑。

1.代码不完整,可能关键不出来

2.证书商店可能出现的问题

在线查找httpsURLConnection类演示的双向https实现 - 几乎完全相同。这必须是证书库中的一个形而上学问题,并找到了证书文件格式的介绍(

几种相关的文件格式如下:

image.php?url=0MroDIBuge

Emmmmm,开始了一段旅程,然后再次查看代码中涉及的功能描述

image.php?url=0MroDIjKoN

用于首次调用load的密码是密钥库解锁密码

image.php?url=0MroDIIL48

第二次调用init keystore使用的密码中使用的密码 - guess是私钥证书的密码。福尔摩斯:“当你排除所有不可能的东西时,无论剩下什么,即使不可能,也必须是真理。”密码肯定没问题,一定是keytool的问题,在线工具管理工具portecle,两次输入相同的密码两次并成功打开私钥证书:

image.php?url=0MroDIN6q1

生成了p12格式的客户端证书,我心里真的很抢眼。

仍然失败,推测可能是证书信任或缺少服务器证书,在另一个bks库中导出ca证书和服务器证书,将其导入Windows证书存储区,成功捕获包:

03

招聘通知

安全招聘

--------

公司:安恒信息

职位:红色和蓝色反对安全研究员

部门:战略支持部门

薪酬:13-35K

工作年限:2年+

工作地点:杭州(总部),广州,成都

工作环境:建筑,健身场所,医师,英俊,美丽,高级食堂.

工作职责:

1.定期面对部门和公司范围的技术共享;

2.边防攻防技术研究,跟踪国内外安全领域的安全动态,泄漏漏洞和着陆降水;

3.负责完成部门渗透测试,红蓝对抗业务;

4.负责跟踪,挖掘和写出安全漏洞;

负责登陆ATT& CK矩阵攻击和对抗技术;

工作要求:

1.至少2 - 3年的安全领域工作经验;

2.熟悉Linux/Windows操作系统的原理;

3.有大规模的目标渗透攻击和防御案例;

4.了解域环境,工作组知识概念,熟悉Windows身份验证原则;

5.熟悉TCP/IP协议,具有协议分析经验,熟练使用各种协议分析工具;

6.熟悉各种攻防技术和安全漏洞原则;

7.具有独立分析漏洞,熟悉各种调试技术,熟练使用调试工具的经验;

8.熟悉至少一种常用编程语言(C/C ++,C#,Python,php,java)

加上项目:

1.具有良好的英文阅读能力;

2.作为嘉宾参加了技术沙龙的技术分享;

3.具有安全相关资格,如CISSP,CISA,CSSLP,ISO,ITIL,PMP,COBIT,Security +,CISP,OSCP;

4.提交大型SRC漏洞,获得年度认可以及赢得大型CTF的经验;

5.开发与安全相关的开源项目;

6.有良好的人际沟通,协调,分析和解决问题的能力是首选;

7.个人技术博客;

8.高质量社区提交的文章;

恢复送货到

PS:请在电子邮件主题中注明城市意图

image.php?url=0MroDIPAVk

专注于渗透测试技术

最新的全球网络攻击技术

收集报告投诉