用夜神模拟器进行app抓包,针对cert pinning的issue

时间:2024-04-09 19:11:47

开启fiddler默认修改了IE的代理设置并把自己作为代理

开启burpsuite,不修改IE代理,只是把自己作为代理,所以要抓那个程序或者系统的包,

需要把代理设置为burpsuite的代理地址和端口。


B

证书锁定Certificate Pinning技术 


在中间人攻击中,攻击主机通常截断客户端和服务器的加密通信。攻击机以自己的证书替代服务器发给客户端的证书。通常,客户端不会验证该证书,直接接受该证书,从而建立起和攻击机的安全连接。这样,客户端发送的数据,都会被攻击机获取和解密。
证书锁定Certificate Pinning是SSL/TLS加密的额外保证手段。它会将服务器的证书公钥预先保存在客户端。在建立安全连接的过程中,客户端会将预置的公钥和接受的证书做比较。如果一致,就建立连接,否则就拒绝连接。
Certificate Pinning在手机软件中应用较多。因为这些应用连接的服务器相对固定,可以预先将服务器的X509证书或者公钥保存在App中。例如,苹果应用商店Apple App Store就预置了这个功能。当使用中间人工具或者Fiddler之类的工具拦截数据,就会造成应用商店无法联网的情况。
在渗透测试中,遇到这类技术,有三种解决办法。第一种是从系统层面禁用证书锁定验证功能(hook 底层)。第二种是反编译软件,将其保存的公钥替换为攻击机的证书。第三种,如果该目标不是分析的对象,可以设置代理时忽略其要连接的服务器,不进行拦截和修改。


http://fiddler.wikidot.com/certpinning
http://blog.dewhurstsecurity.com/2015/11/10/mobile-security-certificate-pining.html//很好
https://eaton-works.com/2016/07/31/reverse-engineering-and-removing-pokemon-gos-certificate-pinning/





1  adb 连接模拟器


因为我的电脑安装了安卓开发环境,导致直接输入adb会调用安卓开发环境的,所以进入夜神的安装模块
cd "C:\Program Files (x86)\Nox\bin"


输入adb devices,看下能否找到夜神模拟器。如果找不到,重启夜神模拟器。然后重新执行adb devices
C:\Program Files (x86)\Nox\bin>adb devices
List of devices attached
127.0.0.1:62001 device



2   模拟器上安装Burp证书


Burpsuite的**版的运行需要把电脑的时间调整到2015年前,运行路径为D:\Issue\burp\burp.1.7.17\burpsuite_pro_v1.7.17\BurpLoader.jar
双击运行BurpLoader.jar,然后在PC上运行浏览器(默认值:127.0.0.1:8080),然后单击CA认证。下载证书到PC
用夜神模拟器进行app抓包,针对cert pinning的issue


重命名证书

cacert.der --> cacert.cer


用夜神模拟器进行app抓包,针对cert pinning的issue


然后传到模拟器
adb push C:\Users\ma\Desktop\berry\cacert.cer /mnt/sdcard/DCIM
  
在设备上(无论是虚拟的还是实际的),你必须安装证书才能将其放入Android的信任证书存储库中。
具体操作步骤是这样的:点击菜单按钮→进入设置→一直向下滚动到安全→选择从SD卡安装。


用夜神模拟器进行app抓包,针对cert pinning的issue


点击cacert.cer并命名证书,为Burp,应用为WLAN .如果一切正常,你应该在设置→安全→可信凭证→用户下看到以下显示。

用夜神模拟器进行app抓包,针对cert pinning的issue





现在你已经在系统上安装了PortSwigger CA,为此需要先设置代理,以便拦截应用程序服务器的流量。


3配置模拟器的代理网络


进入设置→点击Wi-Fi→点击WiredSSID→点击修改网络 →点击代理→选择手动设置,这样屏幕就会出现以下信息列表。

用夜神模拟器进行app抓包,针对cert pinning的issue


你需要填写的内容如下:


1.你的Burp Suite应用程序的IP地址是代理主机名吗;
2.端口是否启动了Burp Suite(默认为8080)。




4 电脑上面配置burpsuite
在默认情况下,Burp会在主机端口8080上打开一个本地代理,以拦截你的移动流量。为此,你必须设置Burp来监听外部IP地址。启动Burpsuite并转到代理项,然后选项当前配置(如下图所示),最后进行编辑。

用夜神模拟器进行app抓包,针对cert pinning的issue

现在选择特定地址选项并选择你的本地IP地址,比如我的就是172.16.216.100





5 在你的Android设备上安装Frida


这一步要进行的就是绕过证书锁定了,为此你需要在你的Android设备上安装一个Frida-Server的副本。首先,你需要下载最新版本的Frida-Server,点此进行下载(https://github.com/frida/frida/releases)。
不过,问题来了你需要知道下载的版本,是x86还是x86_64,在此,我告你一个简单方法:只需要输入adb shell getprop ro.product.cpu.abi即可找出正确的版本,
比如我就是x86。所以对我来说,正确的版本是frida-server-11.0.0-android-x86.xz。你可能会会注意到.xz扩展名是一个档案文件,所以,在使用二进制文件之前,
使用解压工具解压即可。




6  模拟器中运行frida服务端并且运行



1.把frida-server-11.0.0-android-x86frida-server,将其重命名为frida-server;
2.adb root,确保你的环境能够以root身份运行命令;
3. adb push C:\Users\ma\Desktop\berry\frida-server /data/local/tmp/,将frida-server二进制文件复制到设备;
4.adb shell "chmod 755 /data/local/tmp/frida-server",为二进制文件系统提供正确的权限;
5.adb shell  "/data/local/tmp/frida-server&"   //在后台将frida-server作为一个服务运行;不作为后台的话,去掉&






7 电脑上安装Frida客户端
   
   
    1 安装python3.6 
    2 打开另外一个cmd终端 , pip install frida 安装frida
   
    为验证你是否安装了Frida(不管是远程还是本地),你都需要执行frida-ps。此时会显示一个ps命令,该命令将在电脑上生成当前正在运行的进程列表。

 因为我们要知道的是模拟器上的进程名字,所以使用frida-ps U;
   -U 代表着 USB,并且让 Frida 检查 USB-Device(我们模拟USB的使用),但是使用模拟器也会有这样的效果,你会得到类似于下面的结果

    C:\Program Files (x86)\Nox\bin>frida-ps -U //如果下面出现了PC的进程,重启cmd.exe然后重新执行
 PID  Name
----  ---------------------------------
  70  adbd
 567  android.process.acore
 783  android.process.media
 838  com.android.onetimeinitializer
 653  com.android.phone
 771  com.android.providers.calendar
 640  com.android.settings
 531  com.android.systemui
 871  com.bignox.app.store.hd
2272  com.cyanogenmod.filemanager
1472  com.eg.android.AlipayGphone
1100  com.eg.android.AlipayGphone:push
1152  com.eg.android.AlipayGphone:tools
1219  com.gxb.wallet.app
1233  com.gxb.wallet.app:pushservice
1336  com.jiliguala.niuwa
 664  com.vphone.launcher
 169  debuggerd
 948  dhcpcd
 174  drmserver
2470  frida-server
 163  healthd
   1  init
 176  installd
 177  keystore
 175  mediaserver
 168  netd
 171  rild
  68  sdcard
 164  servicemanager
1431  sh
2301  sh
2319  sh
 726  su
2294  su
2296  su
2299  su
2300  su
2312  su
2314  su
2317  su
2318  su
 172  surfaceflinger
 298  system_server
  46  ueventd
 165  vold
 639  wpa_supplicant
1820  wsmd
 173  zygote


启动我们要抓包的app后再遍历一遍进程




C:\Program Files (x86)\Nox\bin>frida-ps -U
 PID  Name
----  ---------------------------------
  70  adbd
 567  android.process.acore
 783  android.process.media
 838  com.android.onetimeinitializer
 653  com.android.phone
 771  com.android.providers.calendar
 640  com.android.settings
 531  com.android.systemui
 871  com.bignox.app.store.hd
2272  com.cyanogenmod.filemanager
1472  com.eg.android.AlipayGphone
1100  com.eg.android.AlipayGphone:push
1152  com.eg.android.AlipayGphone:tools
1219  com.gxb.wallet.app
1233  com.gxb.wallet.app:pushservice
2523  com.i7play.bcdm//多了这个
1336  com.jiliguala.niuwa
 664  com.vphone.launcher
 169  debuggerd
 948  dhcpcd
 174  drmserver
2470  frida-server
 163  healthd
   1  init
 176  installd
 177  keystore
 175  mediaserver
 168  netd
 171  rild
  68  sdcard
 164  servicemanager
1431  sh
2301  sh
2319  sh
 726  su
2294  su
2296  su
2299  su
2300  su
2312  su
2314  su
2317  su
2318  su
 172  surfaceflinger
 298  system_server
  46  ueventd
 165  vold
 639  wpa_supplicant
1820  wsmd
 173  zygote


你可以看到进程号 id(PID),以及正在运行的程序的名字。利用 Frida,你现在就可以 hook 其中任意一个进程,并且开始进行修改。
得到名字是com.i7play.bcdm






8  使用Frida绕过证书锁定


在frida-android-repinning_sa-1.js文件中有frida客户端的用法


 1 把之前下载的证书,重新命名 cacert.cer 为burpca-cert-der.crt
  2  adb push C:\Users\ma\Desktop\berry\burpca-cert-der.crt /data/local/tmp/cert-der.crt

  3 运行脚本实行注入, frida -U -f com.i7play.bcdm -l "C:\Users\ma\Desktop\berry\frida-android-repinning_sa-1.js" --no-pause


用夜神模拟器进行app抓包,针对cert pinning的issue


看到已经注入成功了


9 启动burpsuite,然后在app点击界面,就可以看到发出去的包了

  由于抓取的进程需要用v*n才可以联网,先建立v*n,然后抓包

用夜神模拟器进行app抓包,针对cert pinning的issue




  
  //参考
  https://zhuanlan.zhihu.com/p/30462507
  https://zhuanlan.zhihu.com/p/26412114
  
  //扩展
  http://www.mottoin.com/104396.html
  https://www.anquanke.com/post/id/86507
  https://www.anquanke.com/post/id/85758
  https://blog.csdn.net/daye5465/article/details/76473420
  https://fuping.site/2017/04/01/Android-HOOK-%E6%8A%80%E6%9C%AF%E4%B9%8BFrida%E7%9A%84%E5%88%9D%E7%BA%A7%E4%BD%BF%E7%94%A8/

  http://pwn4.fun/2017/05/05/Frida%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/