0016Android App漏洞之战(16)——通信漏洞的案例实操
0016Android App漏洞之战(16)——通信漏洞的案例实操
一、漏洞介绍
APP升级劫持漏洞是最常见的通用型逻辑缺陷漏洞,攻击者一般通过劫持APP升级的响应,通过伪造和篡改的方式来实现中间人攻击,从而向应用中注入恶意程序
CNVD-2021-40179和CNVD-2021-45684便是采用中间人劫持攻击,来实现APP的恶意劫持替换
现在市面上常用的APP,基本采用http明文传输——>https加密传输——>http/https+hash校验三种方式,我们依次对酷我音乐、酷狗音乐、学而思网校等主流APP做漏洞测试,来描述中间人攻击的具体实现
二、原理解析
中间人攻击(MITM)是指攻击者与通讯的两端分别独立的联系,并交换其所收到的数据,使得通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都会被攻击者完全控制
在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容
客户端不验证服务器是否可信,即checkServerTrusted()方法为空
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType){
}
不检查站点域名与站点证书的域名是否匹配
HostnameVerifier hv = new HostnameVerifier(){
@Override
public boolean verify(String hostname,SSLSession session){
return true;
}
}
接收任意域名
SSLSocketFactory sf;
......
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
二、实验准备
Fiddler
夜神模拟器(有条件的最好用真机)
HFS文件服务器
Stunnel
恶意锁机样本——Wifikillpro.apk
三、实验步骤
1. http明文传输升级劫持——以酷我音乐为例(CNVD-2021-45684)
(1)Fiddler环境配置
参考链接:Fiddler环境配置
(2)安装酷我音乐,并抓取响应请求
然后,我们可以发现程序下载完成后,显示正常的升级界面
我们进一步分析报文的详细信息:
我们可以知道这条请求就是程序的下载请求,对应的就是下载的apk,我们尝试劫持这条请求,将apk替换成我们的恶意锁机程序
(3)劫持攻击
1)下劫持响应请求断点,可以让我们在劫持特定的请求响应
这里我总结集中常见的指令:
bpu+URL: 中断特定URL的全部session请求报文
bpafter+URL:中断特定URL的全部session响应报文
bps+URL: 中断 HTTP 响应状态的指定URL的全部session响应
bpv+URL: 中断指定请求方式的全部 session 响应
bpm+URL: 中断指定请求方式的全部 session 响应。等同于bpv
bpu/bpafter/bps/bpv/bpm 停止断点
2)通过HFS文件管理服务器,来模拟请求的服务器
注意路径应与apk下载请求url保持一致,域名设置为我们本机的ip地址
3)重新安装,开始升级
此时,我们将下载请求给劫持下来了,我们只需要更改域名为我们ip地址,再响应就可以下载我们的锁机程序了
此时我们发现我们的锁机样本被用户成功的下载,用户在未知情况下打开,便被锁机了
2. http+hash验证升级劫持——以酷狗音乐为例(CVND-2021-46587)
(1) 安装酷狗音乐,抓取响应请求
我们可以发现响应的结果中包含hash值,下载的链接,我们只需要将此响应的hash值替换成我们恶意应用的hash值,然后将下载的url劫持为我们本地的即可
(2)劫持升级
我们用文件服务器模拟该url:
我们将主机的域名解析更改为我们本地的ip:
我们查取我们恶意程序的hash值:
我们劫持更新响应的url:
开始升级替换:
我们成功替换hash值,并点击升级:
3. https+hash验证升级劫持——以学而思网课为例(CVND-2021-169938)
(1)配置stunnel,实现https下载
由于我们的HFS文件服务器只能支持http访问,但是对于当下市面上大多是https传输,所以我们可以结合stunnel+HFS实现https访问下载
stunnel配置:详细见stunnel配置
(2)我们劫持请求报文
我们将响应的报文保存下来,并修改其对应的MD5值
(3) 我们用HFS模拟下载的URL链接
(4) 由于是采用https传输,我们需要借助工具stunnel,才能实现https传输
我们配置好后,就可以https访问了
(5)我们进行截获
重新启动,我们发现可以升级截获成功
四、实验总结
我们总结了当下APP升级劫持攻击的常见形式,并分别对三种不同形式的升级劫持攻击做了一个具体的案例描述,可以发现都是通过抓包劫持替换实现的,恶意攻击者可以在用户手机中安装证书,就可以使用http/https中间人攻击,来劫持升级报文。我们可以发现当下大部分主流的APP都存在这种漏洞,并以此对提交的三个漏洞做了一个讲解,对于一些其他的APP,通常采用加密算法加密,这样获取报文的情况较难。