Android安全性开发设计之探讨密匙硬编号

摘要: 0x00 介绍在阿里巴巴聚安全性的系统漏洞扫描仪器中合人力APP安全性财务审计中,常常发觉有开发设计者将密匙硬编号在Java编码、文档中,那样做会造成非常大风险性。信息内容安全性...

 0x00 介绍

在阿里巴巴聚安全性的系统漏洞扫描仪器中合人力APP安全性财务审计中,常常发觉有开发设计者将密匙硬编号在Java编码、文档中,那样做会造成非常大风险性。信息内容安全性的基本取决于登陆密码学,而常见的登陆密码学优化算法全是公布的,数据加密內容的信息保密借助的是密匙的信息保密,密匙假如泄漏,针对对称性登陆密码优化算法,依据采用的密匙优化算法和数据加密后的保密,非常容易获得数据加密前的密文;针对非对称性登陆密码优化算法或是签字优化算法,依据密匙和得加密的密文,非常容易得到测算出签字值,进而仿冒签字。

0x01 风险性实例

密匙硬编号在编码中,而依据密匙的主要用途不一样,这造成了不一样的安全性风险性,有的造成数据加密数据信息被破译,数据信息已不信息保密,有的造成和网络服务器通讯的加签被破译,引起各种各样血案,下列使用黑云上已发布的好多个APP系统漏洞来说讲。

1.1 某互连网金融业APP数据加密优化算法被破译造成比较敏感信息内容泄漏

某P2P运用顾客端,用于数据加密数据信息的DES优化算法的密匙硬编号在Java编码中,而DES优化算法是对称性登陆密码优化算法,既数据加密密匙调解密密匙同样。

反编译程序APP,发觉DES优化算法:

发觉DES优化算法的密匙,硬编号为 yrdAppKe ,用于数据加密手式登陆密码:

将手式登陆密码用DES数据加密后储放在当地LocusPassWordView.xml文档中:

了解了保密和数据加密优化算法及其密匙,根据解密实际操作,能够文本文件中修复出初始的手式登陆密码。或是应用新的转化成新的手式登陆密码

而与网络服务器通讯时插口中的Jason字段名也用了DES优化算法和密匙硬编号为 yRdappKY :

和网络服务器通讯选用http传送,沒有应用https来数据加密通讯,假如选用正中间人进攻或是路由器器镜像系统,得到总流量数据信息,能够破译出客户的通讯內容。

1.2 某租车自驾APP数据加密优化算法被破译造成一些列风险性

某租车自驾APP与网络服务器通讯的插口选用http传送数据信息,而且有对传送的一部分主要参数开展了数据加密,数据加密优化算法选用AES,可是密匙硬编号在java编码中为 shenzhoucar123123 ,可被反向剖析出去,造成仿冒恳求,融合网络服务器端的系统漏洞,造成滥用权力浏览的风险性,如滥用权力查询其他客户的定单等。

和网络服务器通讯时的数据信息为:

q字段名是数据加密后的內容。反向APP,从登陆Activity下手:

剖析登陆步骤:v1是客户名,v2是登陆密码,v3是PushId,再用户名和登陆密码不以空而且长短很大于11状况下,实行LoginOperate有关实际操作,跟踪LoginOperate的完成,发觉承继自BaseOperate,再次跟踪BaseOperate的完成:

在BaseOperate的initUrl()方式中,寻找了APP是如何转化成恳求数据信息的:

再次跟踪图中中的initJsonUrl()方式,发觉其启用了AES数据加密:

再次跟踪aes.onEncrypt()涵数:

在onEncrypt()涵数中启用了encrypt()涵数用于数据加密数据信息,跟踪encrypt()涵数的完成,发觉其应用AES优化算法,而且密匙硬编号在java编码中为 shenzhoucar123123

到如今恳求中的数据信息数据加密怎样完成的就清楚了,此外因为网络服务器管理权限操纵关不紧,便可以结构定单id的恳求,做到滥用权力浏览到别的客户的定单。

结构{ id : }的恳求:

在其中uid设定给你自身的uid就可以,能够取得成功见到别的人的定单:

 

进攻者彻底能够保证应用别的脚本制作再次完成同样的数据加密作用并拼凑出每个插口恳求,大批量的刷取订单详情和客户别的信息内容。

1.3 某酒店餐厅APP加签优化算法被破译造成一系列产品风险性

某酒店餐厅APP和网络服务器通讯时插口选用http通讯,数据信息开展了数据加密,而且对传送主要参数开展签字,在网络服务器端校检签字,以查验传送的数据信息是不是被伪造,可是加签优化算法和密匙被反向剖析,可造成加签体制无效,进攻者可随意仿冒恳求包,若融合网络服务器端的管理权限操纵有系统漏洞,则可引起滥用权力风险性等。

APP和网络服务器通讯的初始包以下图,能看到能加签名段sign:

<.htinns.biz.HttpUtils.class,实际上现逻辑性为:

初始数据信息是unSignData,应用RC4优化算法数据加密,密匙为KEY自变量所意味着的值,数据加密后的数据信息为signData,传送的数据信息时的data字段名为signData。

加签名段signd的转化成方式是用unsignData拼凑時间戳time和resultkey,随后做md5,再开展base64编号。時间戳确保了每一次恳求包也不一样。

sendSign()优化算法是用c或c++写的,放进了so库,别的关键优化算法全是用java写的。

可使用IDA反向剖析so库,寻找sendSign()方式

而黑云系统漏洞递交者选用的是剖析sign和getSign(sign)的数据信息,做一个优化算法破译字典。实际上也有种方式立即启用此so库,来转化成字典。

签字破译之后,便可以结构推送给网络服务器的数据信息包开展别的层面的安全性检测,例如滥用权力、重设登陆密码等。

0x02 阿里巴巴聚安全性开发设计提议

根据之上实例,并小结下自身平常发觉密匙硬编号的关键方式有:

1、密匙立即密文存有sharedprefs文档中,它是最躁动不安全的。

2、密匙立即硬编号在Java编码中,这很躁动不安全,dex文档非常容易被反向成java编码。

3、将密匙分为不一样的几个,有的储存在文档中、有的储存在编码中,最终将她们拼凑起來,能够将全部实际操作写的很繁杂,这由于還是在java层,反向者要是花点時间,也非常容易被反向。

4、用ndk开发设计,将密匙放到so文档,数据加密解密实际操作都会so文档里,这从一定水平上提升了的安全性性,遮挡了一些反向者,可是有工作经验的反向者還是会应用IDA破译的。

5、在so文档中不储存密匙,so文档中对密匙开展加解密实际操作,将密匙数据加密后的密匙取名为别的一般文档,储放在assets文件目录下或是别的文件目录下,然后在so文档里边加上不相干编码(花命令),尽管能够提升静态数据剖析难度系数,可是可使用动态性调式的方式,跟踪数据加密解密涵数,还可以搜索到密匙內容。

确保密匙的安全性确是件难题,涉及到到密匙派发,储存,无效收购,APP防反编译程序和防调节,也有风险性评定。能够说在机器设备上安全性储存密匙这一基本无解,只有挑选扩大进攻者的反向成本费,让进攻者知难而上。想要是一般开发设计者得话,做妥当维护密匙这种事儿这必须消耗非常大的心力。

商品设计方案者或是开发设计者要搞清楚自身的密匙是干什么用的,关键水平如何样,密匙被反向出去会导致甚么风险性,根据评定APP运用的关键水平来挑选相对的技术性计划方案。

参照

p2p怡人贷app几类安全性难题

九州租车自驾APP顾客端设计方案缺点造成的一系列产品安全性难题(优化算法破译/管理权限解析xml等)

解读一步歩反向破译华住酒店餐厅团体官方网站APP的http包数据加密优化算法及其一系列产品系统漏洞装包

safety?spm=a313e.783.1.zwCPfa

question//answer/

 



联系我们

全国服务热线:4000-399-000 公司邮箱:343111187@qq.com

  工作日 9:00-18:00

关注我们

官网公众号

官网公众号

Copyright?2020 广州凡科互联网科技股份有限公司 版权所有 粤ICP备10235580号 客服热线 18720358503

技术支持:模板小程序