抓包原理和实践

代理【抓包原理和实践】代理服务器英文全称是(Proxy Server) , 其功能就是代理网络用户去取得网络信息 。形象的说:它是网络信息的中转站 。代理服务器就好象一个大的Cache , 这样就能显著提高浏览速度和效率 。更重要的是:Proxy Server(代理服务器)是Internet链路级网关所提供的一种重要的安全功能 。建议使用switchyOmega修改浏览器的代理 , 这样可以很容易进行切换

抓包原理和实践

文章插图
 
证书.DER = DER扩展用于二进制DER编码证书 。这些文件也可能承载CER或CRT扩展 。正确的说法是“我有一个DER编码的证书”不是“我有一个DER证书” 。
https首先是SSL握手过程:访问https网站 , 浏览器向服务器发送ssl client hello请求 , 服务器进行响应发回自己的证书(是的每一次建立ssl连接服务器都会向客户端发送证书不要怀疑) , 浏览器收到服务器的证书后检测证书的签发机构(即CA)是否在自己信任的机构列表中 , 如果不在则浏览器报错并终止ssl握手过程如果在则继续进行后续握手步骤 。
其次是https代理原理:一方面 , 浏览器发起ssl client hello请求 , burpsuite伪造成服务器 , 给浏览器发回使用burpsuite自己证书为当前目标网站签发的证书与浏览器建立一个连接(我们暂称其为C1);另burpsuite向真正的服务器发送一个ssl client hello , 与真正的服务器建立另一个连接(我们暂称其为C2) 。所以真正的请求是浏览器通过C1向burpsuite提交数据 , burpsuite又从C1中把http数据拿出来从C2提交到真正的服务器 , 响应过程则反过来 。(burpsuite没有服务器证书对应的私钥所以不能直接把服务器的证书转给浏览器 , 而只能引入自己的证书 , 不然到时就解不出http的内容了;burpsuite本质上即是一个中间人 , 或者说中间人攻击说的就是burpsuite这种形式)
浏览器发现收到的证书的签发机构不在自己的信任列表中则报错 , 具体到burpsuite , 返回给浏览器的证书是burpsuite自己的证书签名的 , 而burpsuite自己的证书不在浏览器默认的信任CA列表中 , 所以导致了报错 。所以导证书我们本质上要做的就是把burpsuite的CA证书导入到浏览器的信任证书机构列表中的 , 使浏览器以后再接收到burpsuite签发的证书时不再报错 。
Fiddler 给Android7及以上的手机安装系统级证书 , 实现HTTPS的抓包最新的雷电模拟器基于7.0版本在修改完代理后仍然没有效果 。使用了雷电模拟器的稳定版进行的抓包 。将Filddler或者其他抓包程序的证书导出 , 一般为xxx.cer或者xxx.pem
抓包原理和实践

文章插图
 
使用openssl的x509指令进行cer证书转pem证书 和 用md5方式显示pem证书的hash值
#1. 证书转换 , 已经是pem格式的证书不需要执行这一步openssl x509 -inform DER -in xxx.cer -out cacert.pem #2. 进行MD5的hash显示#openssl版本在1.0以上的版本的执行这一句openssl x509 -inform PEM -subject_hash_old -in cacert.pem#openssl版本在1.0以下的版本的执行这一句openssl x509 -inform PEM -subject_hash -in cacert.pem将第二条指令输出的类似347bacb5的值进行复制tips: 查看openssl版本的指令openssl version将pem证书重命名,使用上面复制的值(类似于269953fb)对pem证书进行重命名
mv cacert.pem 269953fb.0手机系统目录位置是:
/system/etc/security/cacerts
adb rootadb remountadb disable-verityadb push 269953fb.0 /system/etc/security/cacertsadb enable-verityadb reboot需要拷贝至此目录必须拥有root权限,重启Android设备以生效




    推荐阅读