在互联网时代,APP之间如何安全传输文件?
随着App移动应用的广泛应用及移动开发技术的飞速发展,移动应用的安全也越来越被重视;在App服务端渗透中,我们在抓包时经常会发现App在数据传输过程中做了加密,以防止数据被查看或被篡改;而渗透过程中的很多时候我们都需要抓包修改,这就要求我们需要先对App数据包进行解密了。
一、目前常见的加密方式
对于App传输数据加密,一般会考虑三个方面
1) 可用性:客户端和服务端都可逆向破解
2) 较高的安全性:不容易被破解
3) 效率性:加密性能及资源占用方面不是很高
针对以上三个方面需求,目前用得最多有以下几种加密方式(当然,有时候会掺杂一些其他的小算法,具体情况自行识别和解码即可),其特点及优缺点分别阐述如下。
1)对称性加密。如DES、AES、3DES等。这些加密方式的算法基本已公开,因此其特点为密钥/生成密钥的方法固定,因此这种加密方式的优点为性能效率较好,而且也较大的提升了解密的成本;但由于密钥固定,因此缺点也很明显了,则是在客户端和服务端上都能找到密钥或密钥的生成方法。因此其突破口为通过逆向客户端来寻找密钥。另外,这种加密方式可同时用于请求包和返回包。
2)非对称性加密。如RSA、Rabin等。这些加密方式的算法基本也已经公开,因此其特点为有一对公钥和私钥:客户端上保存公钥,用于加密;服务端上保存私钥,用于解密。因此这种加密方式的优点为安全性较高,客户端上只有用于加密的公钥,而没有用于解密的私钥;而弱点则为加解密效率不高,性能资源占用较大,所以目前很多App还是选用对称性加密。由于客户端上没有解密数据包的私钥,因此需要使用其他方法获取数据包明文才能进行数据包篡改。(获取方法后续详述)另外,由于只有一对公钥和私钥,所以这种加密方式一般只会出现在请求包,而返回包则一般为明文返回。
3)自定义算法加密。有少数App开发的技术人员还会使用自定义算法来对数据包进行加密,算法五花八门,大多为各种常见的编码(如Base64)和字节位移运算等混杂。这种加密方式的优点为效率较高,但缺点为算法硬编码在客户端中,只要通过逆向即可解密出来。
以上三种加密方式各有优缺点,对于第一和第三种,虽说可通过逆向App获取密钥/算法来进行解密,但是开发者往往会通过其他手段来增强安全性,如App加固或把密钥/算法硬编码在so文件中等;这样就更进一步地提高了逆向与解密的难度和成本了。
二、常规的解密手段
1、判断加密方式
对于解密,首先我们需要先大概判断使用的是什么样的加密方式,不管是对称还是非对称加密,从这些加密算法的密文形式可知,一般只有以下三种:
1)原始格式。也就是字节数组bit了,这种展现在数据包中就是乱码了。
2)十六进制,亦即Hex编码。对称/非对称加密后,做了Hex编码处理
3)Base64编码样式,对称/非对称加密后,做了Base64编码处理
综上可知,如果发现数据包是这三种形式,并且尝试过Base64反编码后是乱码的情况,那么就大概率就是使用了对称/非对称性加密了;而对于自定义算法加密的,一来并不常见,二来很多时候密文形式会比较奇葩,所以最后考虑。
当判断出是对称/非对称加密时,我们可以进一步判断用的是对称还是非对称。判断方法比较多,最简单的一个方法是,对于同一个数据请求包,重复触发时,密文是一模一样的则为对称性加密,而密文不一样的则为非对称性加密了。
2、定位密钥/算法代码
接着,我们需要通过逆向App来寻找对称/非对称性加密的密钥(而关于如何破壳和逆向则非本文讨论范围了,此处略过)。逆向后,得到的是java代码及对应的Smali代码。一般地,前者用于分析,后者用于调试。
我们先在java代码中查找并定位到加密过程的代码。如何定位?一言以蔽之:全靠眼和经验。比如可以在整个class包中查找含有加密数据包的url接口所在的位置,然后一步步跟踪查看其加密数据是通过什么函数生成的,最终定位到加密函数,当然中间的函数跳转可能会很多;又如可以暴力地直接在整个class包中查找加密函数的一些关键字,如AES、DES之类的,当然这样返回的结果可能会很多,只要一个个验证过去就可以了。
3、获取密钥/算法
当定位到加密函数后,算法已经展示在面前了。而密钥的话,我们可以继续使用调试方法来获取密钥。如果使用日志输出法的话,有时候密钥不一定是字符串格式,直接日志输出时会报错,所以我们切记一定要在Smali代码中把密钥的对应参数类型转换为字符串格式;如果使用动态调试法的话,开发环境中走到密钥寄存器那一步时会则自动显示出来。
对于对称性加密和自定义算法加密的,当获取到加密密钥/算法时,我们已经可以直接解密数据包获取明文–篡改明文数据包(如加入注入/xss攻击字符串)–加密明文数据包为密文–发送了;而对于非对称性加密,由于客户端中只有公钥,因此只能做篡改数据包后的加密动作,而无法直接解密数据包;此时,我们可以使用其他方法来获取数据包明文,比如使用调试同理把加密前的数据包明文参数获取即可~
三、防御手段
当然这样的也是会被破解者获取的,没有绝对的安全,预防往往是建立在不断提高攻击成本和难度的基础上。针对上述常规的解密手段,有没有更好的加密的东西能增强App加密的安全性呢? 有
目前发现了一款安可家的安全加密存储设备——U盾。
它具有以下特点
1.防泄密,保隐私 U盾内置SSD,拷贝大容量文件不掉速方便操作:右击鼠标即可加解密
2.免安装:独立于U盾存储的密码登录界面
3.双重认证:实体U盾+ 密码
4.多重保障:FIPS 140-2
5.加密等级 ;AES256 位加密算法;硬件加软件密码10次错误,U盾被重置成初始状态符合FIPS 140-2 level 3 安全标准 (国际通用,U盾加密等级的分水岭)纯铝合金外壳 支持文件通过云端,QQ、微信、邮件加密传送
6.设计使用寿命:5年以上客制化服务:可预装内容、规范密码长度、 界面LOGO等等。
小巧炫酷,方便携带
安全性高加密芯片通过FIPS 140-2 Level 3级安全认证
简单易用,应用场景广阔 无论企业、个人或行业,均可对轻松对敏感数据进行一键加解密。
客户加解密过程图解
文件加密后传送,是防泄密的重要手段之一,对方收到后用密码+U盾才能打开,每次加密可用不同密码。文件被窃取没有U盾+密码均无法打开。读写速度快,安全等级高,适合行业客户远程办公、人员 出差、多办公地等场景下通过QQ、微信等APP或邮件传送加密过的文件。
U盾用"芯"守护好文件安全!
H1B签证Netflix薪资超过谷歌?哪些科技公司向H1B员工支付的平均工资最高?当大家热烈讨论着哪些科技巨头公司长期雇佣H1B,你可能会认为谷歌微软和Oracle等公司会位居榜首。然而,一项新的分析表明,Reddit
人工智能(AI)和数据类岗位的实际薪资是多少?人工智能(A。I。)和数据类工作现在很热门。但这些职位的实际报酬是多少?一份新的报告显示,如果你专攻尖端技术,会有相当高薪的工资。具体来说,OReilly数据科学薪资研究报告指出数
亚马逊计划扩招5。5万新员工据新任首席执行官安迪贾西(AndyJassy)称,亚马逊计划在未来几个月内再招55,000名企业和技术人员。在接受路透社采访时,Jassy将这家电子商务巨头定位为有创造力的技术人员
北美求职指北E周报9月非农就业人数涨幅创新低,不及预期北美求职指北E周报10月第2周9月非农就业人数大幅不及预期美国劳工部周五公布数据显示,美国9月非农就业人口增加19。4万人,大幅不及市场预期的50万人,创今年1月以来最小增幅。8月
北美求职指北E周报(9月第1周)8月全美失业率创17个月最低8月全美失业率创17个月最低Amazon计划全球招聘5。5万名员工CDC新规申请绿卡须打新冠疫苗8月非农就业数据就业人数为今年最小增幅,失业率为17个月最低。继6月与7月非农表现强
JavaScript会被替代吗?JavaScript是全球最流行的编程语言之一。它不仅在RedMonkStackOverflowTIOBE和其他公司生成的主流编程语言中数一数二,而且还拥有世界上最大的开发者社区,
技术管理职位需求不断上升如果你想在技术类工作方面获得更多就业机会,请考虑管理职位一项新的分析表明,招聘市场需求最大上是管理职位。EmsiBurningGlass收集并分析了来自全国各地的数百万个招聘信息,
桌面净饮3。0博乐宝智能净饮机B16R100使用评测零序大家好,我是RUARUARUA今年的618,本RUA到没有购买什么大件,毕竟家电智能更新换代十分快,说白了,是被房地产开发商把性子磨没了,本该16年交的房,如今20年了,还没交
虚拟机如何创建Linux系统1。第一步创建新的虚拟机选择的配置类型还是选择典型,也是虚拟机推荐的类型,点击下一步2。安装操作系统在这里我们选择稍后操作系统,然后点击下一步3。选择操作系统这里就要选择Linux
米酒充电好伴侣20W小米无线充电器套装版零序其实,这个无线充电器很早我就买了,大概在发布后一个月左右吧,虽然不是入的首发,不过前期缺货(耍猴)大家都是清楚的,随后狗东自营店终于上新这款20W无线充电器,话说你好意思叫小米
U盘启动盘制作随着笔记本电脑的日益普及,不管是工作中还是生活中经常会遇到系统崩溃的情况,去维修店没有时间还浪费钱,如果自己会用U盘装系统会省了我们很多事,接下来教大家傻瓜式制作U盘启动盘重装系统