A
开启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 连接模拟器
重命名证书
cacert.der --> cacert.cer
点击cacert.cer并命名证书,为Burp,应用为WLAN .如果一切正常,你应该在设置→安全→可信凭证→用户下看到以下显示。
3配置模拟器的代理网络
现在选择特定地址选项并选择你的本地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
看到已经注入成功了
9 启动burpsuite,然后在app点击界面,就可以看到发出去的包了
由于抓取的进程需要用VPN才可以联网,先建立VPN,然后抓包
//参考
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/