0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

APP和小程序的安全测试

jf_hKIAo4na 来源:FreeBuf.COM 2023-02-06 16:06 次阅读
前言本文主要记录和分享平时抓不到包的解决手段。抓到包但是看不懂的通信加密情况暂不做讲解,这一部分需要逆向app或者对小程序进行解包来获取加密方式然后在解密。一、模拟器——夜神 市面上有很多模拟器,总是有这个app在这个模拟器上打不开,另外一个可以打开的情况。需要下载安装多个模拟器,导致测试时相当繁琐。这里仅使用夜神模拟器,其他的如网易UU、雷神等可自行研究对比。

7ce01f1a-a5b6-11ed-bfe3-dac502259ad0.jpg

模拟器优点: 随便搞,没顾虑 随便调整参数,如内核版本,屏幕大小,有无root等 虽然夜神只支持这三个版本,但也可以应对大多数检测了。模拟器缺点: 不能启动不支持模拟器启动的应用。以下是经常在模拟器上遇到的问题:a. 软件启动后闪退原因可能有多种,模拟器检测,版本检测等解决方案:1、换低版本的app。(可能会引出新的问题:无法正常使用,打开后强制升级等)2、换真机进行测试(换真机后也可能遇到其他问题,这一部分放到后面再说)b. 安装软件失败原因:各类原因都可能存在,需要从log观察其发生了什么错误。c. 安装成功后还是无法抓包,使用应用看不到数据流原因:1、走的websockket,这个用bp等代理工具就能抓到2、不走http或者https协议d. 抓包后报400错误、乱码等原因:1、使用了双向认证2、使用了流量加密抓包方法:代理软件抓包,这个就不在细讲了,基本操作二、模拟器或真机非root和ios未越狱抓包在进行测试时候优先进行真机测试,在非root的情况下,有以下方法。A. 在android下有两款软件 package capture和HttpCanaryApp走普通http代理(如burp、fiddler等),会自动取消请求,无法获取数据。使用package capture走VPN,可以在本机上抓到,但是抓到的包存在乱码问题.

7cf84568-a5b6-11ed-bfe3-dac502259ad0.jpg

7d1feb7c-a5b6-11ed-bfe3-dac502259ad0.jpg以看到,部分存在ssl认证的包抓取无内容,大部分抓到的包都是乱码。我们更换另外一种软件HttpCanary,效果还可以。但是这个软件是收费的,低版本不好用,高版本需要破解。7d33f64e-a5b6-11ed-bfe3-dac502259ad0.jpg打开还是部分乱码,有请求小程序的包,也可以看到具体传输数据的包。B. 在ios下可以使用Stream下载stream软件后打开,导入证书后,需要添加到根证书。然后开始抓包。7d4c92ee-a5b6-11ed-bfe3-dac502259ad0.jpg三、手机ROOT情况下的抓包解决方案真机暂未root,所以这里使用模拟器进行相关测试,由于模拟器的局限性和不确定性,可能会导致不同的问题,所以有条件还是真机最好。使用工具:Tcpdump+wiresharktcpdump是linux下的抓包工具,在android中没有,需要下载对应的工具。下载地址:https://www.androidtcpdump.com/android-tcpdump/downloads然后通过adb放到对应的目录:
adb push tcpdump /data/local/
可能会遇到无法push的情况,其实是没有权限,可以授权后重试:
adb shell
su
chmod 777 /data/local
修改权限:
chmod 777 /data/local/tcpdump
执行抓包命令:
tcpdump -i any -p -vv -s 0 -w capture.pcap
执行抓包的时候会提示
tcpdump You don't have permission to capture on that device
(socket: Operation not permitted)
是因为该命令只能在root用户下操作,先用su命令,再重试tcpdump命令。启动抓包后会在当前目录创建一个capture.pacp的文件最后使用wireshark打开过滤分析即可7d660d1e-a5b6-11ed-bfe3-dac502259ad0.jpg四、Android下修改app源码如果apk未做校检,或者可以绕过apk自校检,那么可以修改apk源码,然后重新打包,以达到让apk信任用户证书,抓取数据包的目的。在AndroidManifest.xml中



<manifest... >


    <applicationandroid:networkSecurityConfig="@xml/network_security_config"


    ... >


    ...


    application>


manifest>
配置文件:res/xml/network_security_config.xml
<network-security-config>


    <base-configcleartextTrafficPermitted="true">


        <trust-anchors>


            <certificatessrc="system" overridePins="true" /> 


            <certificatessrc="user" overridePins="true" /> 


        trust-anchors>


    base-config>


network-security-config>
五、Android下将用户证书导为系统证书系统证书的目录是:/system/etc/security/cacerts/每个证书的命名规则为:.Certificate_Hash表示证书文件的hash值,Number是为了防止证书文件的hash值一致而增加的后缀;证书的hash值可以由命令计算出来,在终端输入openssl x509 -subject_hash_old -in ,其中Certificate_File为证书路径,将证书重命名为hash.0放入系统证书目录,之后你就可以正常抓包了。六、双向认证解决方案当我们在抓包的过程中遇到这种情况,那么可能就是遇到双向认证了。7d7a2efc-a5b6-11ed-bfe3-dac502259ad0.jpg绕过双向认证的方法如下:解包,寻找客户端的key,导入bp或者手机端抓包工具,重新对数据包进行拦截发送。1.找到apk包中的证书文件。7d8a10b0-a5b6-11ed-bfe3-dac502259ad0.jpg2.反编译根据调用逻辑找key。

7dadc334-a5b6-11ed-bfe3-dac502259ad0.jpg

3.找到后导入burp中即可。7dc1f6e2-a5b6-11ed-bfe3-dac502259ad0.jpg7dd7e7ea-a5b6-11ed-bfe3-dac502259ad0.jpg七、SSL PinningSSL Pinning是一种防止中间人攻击(MITM)的技术,主要的机制是在客户端发起请求->收到服务器发来的证书这一步之后,对收到的证书进行校验,如果收到的证书不被客户端所信任,就直接断开连接不继续请求。1、使用Xposed或兼容Xposed的框架+JustTrustMe使用JustTrustMe这个Xposed模块,它所做的事情就是将各种已知的的HTTP请求库中用于校验证书的API都进行Hook,使无论是否是可信证书的情况,校验结果返回都为正常状态,从而实现绕过证书检查的效果。2、上面一些导入根证书的方法也可以绕过部分的sslpinning八、其他思路在APP内抓包,可以在APP里面找到处理网络请求和响应的函数,然后用Frida做HOOK,转发参数到接受抓包的地方,如果不需要修改的话,直接转发就行了;如果需要修改的话,可以在代码里面再加入一些交互逻辑应该也能实现。 审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8325

    浏览量

    83423
  • 模拟器
    +关注

    关注

    2

    文章

    839

    浏览量

    42833

原文标题:APP和小程序的安全测试

文章出处:【微信号:菜鸟学安全,微信公众号:菜鸟学安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用bootload启动,app程序采用ucosiii,接收发送数据n次后app程序就进入了HardFault_Handler的原因?

    使用bootload启动,只要在bootload或者app运行程序中设置SCB->AIRCR后,app程序采用ucosiii,接收发送数据n次后(接收发送采用中断),
    发表于 04-15 06:34

    移动APP测试的android性能测试

    :选取了测试场景之后,针对内存测试的特点设计用例,对APP内存变化作对比;将测试场景转化为脚本,长时间运行泛灵犀功能,比较操作前后内存的变化来评估
    发表于 06-09 16:17

    APP要做哪些测试

    、功能点测试)、兼容性测试、交叉测试、安装卸载测试(包括应用的升级)、压力测试(接口压力测试)、
    发表于 09-14 09:09

    Android 程序员必须掌握的三种自动化测试方法

    app开发 一般对软件质量有更高的要求,所以我们app的开发者一定要学会自己测试自己的代码,自己测试自己的app。那么如何
    的头像 发表于 02-06 16:05 5977次阅读
    Android <b class='flag-5'>程序</b>员必须掌握的三种自动化<b class='flag-5'>测试</b>方法

    解读App 与 小程序互通能力和限制

    微信官方公布了小程序的新能力,其中最引人关注的是: 「小程序上线 App 直接打开小程序功能」。 其实,「App 直接打开小
    的头像 发表于 05-24 14:50 4158次阅读
    解读<b class='flag-5'>App</b> 与 小<b class='flag-5'>程序</b>互通能力和限制

    Https使用不当,APP也会遭遇安全风险

    智能手机。你或许觉得这组数据难以置信,但事实的确如此,移动app已经深入到我们的生活和工作中。 然而,我们高度依赖的移动app,却并没有想象中的那么安全。根据Gartner的预测,75%的移动
    发表于 12-23 16:11 491次阅读

    程序App是不同的

    程序App的区别
    的头像 发表于 08-27 15:27 2106次阅读

    程序和公众号与APP有什么区别

    公众号和小程序都是基于微信平台来使用的,而微信自带的十几亿流量也是导流到小程序和公众号上的。那么小程序和公众号究竟有什么区别?和APP又有什么区别呢?
    的头像 发表于 01-04 11:59 3780次阅读

    该如何渗透检测APP存在的安全漏洞

    IOS端的APP渗透测试在整个互联网上相关的安全文章较少,前几天有位客户的APP数据被篡改,导致用户被随意提现,任意的提币,转币给平台的运营造成了很大的经济损失。
    发表于 03-31 11:42 1297次阅读

    基于Android的APP安全检测技术浅析

    基于Android的APP安全检测技术浅析
    发表于 06-28 16:03 16次下载
    基于Android的<b class='flag-5'>APP</b><b class='flag-5'>安全</b>检测技术浅析

    STM32 DFU升级APP程序移植笔记

    STM32 DFU升级APP程序移植笔记免费下载。
    发表于 06-15 16:13 22次下载

    app安全验证

    app安全验证
    发表于 09-26 11:47 0次下载

    STM32+IAP+uCOS-iii升级跳转至APP程序跑飞问题

    最近项目中MCU使用的是STM32F103,APP程序操作系统使用的是uCOS-iii,在进行IAP升级时发现,从Bootloader跳转至APP程序后,
    发表于 12-09 09:51 16次下载
    STM32+IAP+uCOS-iii升级跳转至<b class='flag-5'>APP</b><b class='flag-5'>程序</b>跑飞问题

    app安全测试方法小百科

    ,同时,APP的特点使其同时暴露在众多的网络安全风险和威胁之下,容易遭受到病毒、木马、蠕虫等恶意程序的攻击。      构建安全软件,而不只是代码和
    的头像 发表于 10-23 14:15 695次阅读
    <b class='flag-5'>app</b><b class='flag-5'>安全</b><b class='flag-5'>测试</b>方法小百科

    什么是网页应用程序测试

    网页app测试,或网页测试,是一种软件测试实践,有助于根据要求确保应用程序的质量和功能。网页测试
    的头像 发表于 05-11 14:09 597次阅读