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 连接模拟器
因为我的电脑安装了安卓开发环境,导致直接输入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
重命名证书
cacert.der --> cacert.cer
adb push C:\Users\ma\Desktop\berry\cacert.cer /mnt/sdcard/DCIM
在设备上(无论是虚拟的还是实际的),你必须安装证书才能将其放入Android的信任证书存储库中。
具体操作步骤是这样的:点击菜单按钮→进入设置→一直向下滚动到安全→选择从SD卡安装。
点击cacert.cer并命名证书,为Burp,应用为WLAN .如果一切正常,你应该在设置→安全→可信凭证→用户下看到以下显示。
现在你已经在系统上安装了PortSwigger CA,为此需要先设置代理,以便拦截应用程序服务器的流量。
3配置模拟器的代理网络
进入设置→点击Wi-Fi→点击WiredSSID→点击修改网络 →点击代理→选择手动设置,这样屏幕就会出现以下信息列表。
你需要填写的内容如下:
1.你的Burp Suite应用程序的IP地址是代理主机名吗;
2.端口是否启动了Burp Suite(默认为8080)。
4 电脑上面配置burpsuite
在默认情况下,Burp会在主机端口8080上打开一个本地代理,以拦截你的移动流量。为此,你必须设置Burp来监听外部IP地址。启动Burpsuite并转到代理项,然后选项当前配置(如下图所示),最后进行编辑。
现在选择特定地址选项并选择你的本地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点击界面,就可以看到发出去的包了
由于抓取的进程需要用v*n才可以联网,先建立v*n,然后抓包
//参考
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/