HTTPS数据包抓取的可行性分析
来源:互联网 发布:象过河软件怎么样 编辑:程序博客网 时间:2024/04/30 03:52
相信只要是从事软件开发, 多多少少都会涉及到数据包的抓取。常见的有网页数据抓取(即网页爬虫),应用程序数据包抓取等。网页数据抓取比较简单, 在chrome下可以非常方便的分析网页结构和数据请求;而应用程序数据包的抓取则相对复杂些, 通常需要配置代理软件。常用的代理软件有paros, mitmproxy, honeyproxy等。若是你的路由器支持, 你甚至可以直接在电脑上使用wireshark捕捉其他ip的数据包。
paros 是一种轻量型的数据包抓取软件, 自带代理服务器, 配置非常简单。 其配置方法可以参考使用Paros监控iPhone发出的HTTP请求。paros 是用java编写的, 跨平台, 支持windows, mac, linux。
mitmproxy 是python编写的数据包抓取软件, 使用控制台作为操作界面。提供libmproxy工具包。
honeyproxy 基于 mitmproxy, 提供比较友好的交互界面。
通常,简单的未加密的http数据包是非常容易抓取的, 只要简单的配置下paros就可以了。 因为, http未加密, 所有的数据都是明文传输的, 配置代理后, 代理可以直接读取到这些通信数据包。
然而, https 则不行, 即便是通过代理进行数据传输, 流过代理的数据也是经过ssl加密的, 代理当然没有办法解密通信数据包。
首先来普及下https的知识。
Https 通信时序
https 对应的通信时序图如下:
- 服务器在接受到客户端发起https连接请求后, 将返回该网站的证书(根证书信息等)
- 客户端将校验网站证书的合法性。
- 验证通过后,客户端产生随机的对称密钥。
- 客户端使用网站证书的公钥加密对称密钥, 并发送给服务器端。
- 服务器端收到对称密钥后, 就可以进行利用对称密钥的密文通信了。
每一个https的网站都会向证书颁发机构(CA)申请一个网站证书, 这个证书实际是非对称加密的公钥密钥对, 利用非对称加密算法的特殊性, 可以在理论上避免第三方窃听。
非对称加密算法的原理
假设有A, B 两方, 双方都有一对密钥(公钥和私钥)。公钥是对外开放的, 任何人都可以得到;私钥是自己的, 别人是获取不到的。公钥和私钥是相对应的, 利用公钥进行加密, 只能用私钥解密, 使用公钥无法解密; 利用私钥解密, 则只能用公钥解密, 使用私钥也无法解密。
利用A的公钥对数据进行加密, 则只有A的私钥可以解密, 任何第三方都不可以解密数据。 这样可以在不安全的通道上进行数据传输, 保证只有A可以解密数据, 任何第三方只能窃听到已加密的数据, 即便拥有公钥也无法进行解密操作。
利用A的私钥对约定好的数据加密, 发送给B。 B可以使用公钥进行解密, 从而验证A的身份。任何第三方都无法模拟这样加密后的数据。这种形式广泛用于电子签名等。
对非对称加密算法不了解的同学, 可以参考百度百科.
Https加密通信原理
Https 加密通信利用非对称加密算法
和对称算法
, 使用非对称加密算法验证身份
和发送对称密钥
, 使用对称算法
加密通信数据。
证书实际就是非对称加密算法的公钥
和私钥
, 分为两大类, 根证书
和网站证书
。
根证书
属于证书颁发结构, 根证书的公钥默认内嵌在我们的系统中。运行命令win+r
运行certmgr.msc
可以查看在系统中的根证书列表。网站证书
带有根证书的私钥签名
, 在https握手开始阶段由网站服务器发送给客户端。 客户端收到网站证书
后, 立即校验证书的有效性。校验方法是: 取根证书的私钥签名, 利用客户端系统内嵌的根证书公钥解密。 解密成功, 则证书有效。
聊到这里, 我们可以看出若想伪造网站证书进行https代理, 必须导入自己的根证书到系统中, 才能使客户端认为伪造的网站证书是有效的。
伟大的goagent 就是用这种原理实现的, 因此从严格的角度上来说, goagent是不安全的, 有被窃听的危险。不过, 屌丝怕啥, 随便窃...
所以, 有人说没办法抓取https 的数据包, 这是不正确的。 经过一些配置还是可以抓取https 数据包的。可惜我跟个傻帽似的还跟honeyproxy 的作者探讨怎么加入https的支持, 羞愧死了。
mitmproxy实际上是支持抓取https数据包的。在官方文档里面, 甚至将Firefox, OSX, Windows7, iOS, Android 怎么配置根证书都说的一清二楚。Android的配置地址是http://mitmproxy.org/doc/certinstall/android.html。 可惜我在我的手机Galaxy Nexus( 4.2 Stock ROM)上测试没成功。
Android 2.X 与 Android 4.1 以及Android 4.2 的根证书配置方式都不同。 若是有同学搞定这个问题, 分享下心得哈.
转自:http://www.fanxu.me/post/2013-06-04
- HTTPS数据包抓取的可行性分析
- Charles抓取HTTP、HTTPS的数据包
- HTTPS-使用Fiddler抓取HTTPS数据包原理
- 3.10以上charles版本抓取Https数据包
- Fiddler抓取移动端HTTPS数据包
- Fiddler抓取HTTPS数据包步骤(Android/ios)
- 火狐浏览器下burpsuite 抓取https数据包
- wireshark网络抓取数据包分析
- 网络数据包分析与抓取
- 有关C#开发抓取、分析网络数据包的代码段
- 人工智能的可行性分析
- 安居客app端抓取数据包 分析数据包的签名 编写爬虫脚本
- 如何抓取基于https协议的webservice数据包(webservice调试)
- 火狐浏览器下burpsuite 抓取https数据包----记录一下可笑的配置过程
- 迅速抓取数据包的特征
- 关于客户端数据包的抓取
- tcpdump抓取TCP/IP数据包分析
- mac使用Wireshark抓取分析iphone数据包
- UITextField 的用法详解
- linux 中的setitimer()函数
- Ecplise必须知道的配置
- 删除一个xcode引起IDEA中android工程的svn失效问题
- XML基础知识
- HTTPS数据包抓取的可行性分析
- java junit 使用注解引入
- 简单易学的highcharts
- 开机自动启动Service,做这个烦恼我好几天了,是因为在服务中加了toast导致自启服务不成功
- android手势滑动方向监听
- 使用OleDb向acces插入数据或者查询数据发生INSERT INTO 语法错误
- Windows 8 下查看memcache运行情况 + PHP安装Memcache
- ORA-01940:无法删除当前已链接的用户
- Android自定义进度条