Total Pageviews

Friday, 13 August 2021

抓包工具:Charles & Fiddler

 

总的一句话:mac下Charles和windows下的Fiddler绝对是你最爱的抓包工具。

备注:上面附的关于chairs和fiddler的使用方法是随机找了,大概浏览还可以的。

https://github.com/james-proxy/james , Charles的替代品

----

Wireshark命令

技巧:

右键Follow TCP Stream就可以看到完整的HTTP通信内容
PS: 在filter中会有tcp.stream eq xx的字样, 说明就是过滤出了tcp.stream == xx的包而已
以后遇到这种类型的包, 或是想查看完整的HTTP通信过程就方便多了, 不用一个个包去找了

mac使用事项:

// wireshark在mac下打开监控不到网卡时
// 把以下文件修改为有权限
chgrp admin /dev/bpf*
chmod g+rw /dev/bpf*

常用查询条件:

ip.addr==39.107.212.12

协议:

tcp
http
icmp
TLSv1.2

ip实例:

% 与ip:39.107.212.12的http请求
ip.addr==39.107.212.12 and
% 指定目的地址ip
ip.dst==39.107.212.12 and tcp
% 源地址
ip.src==39.107.212.12 and tcp

ip段:
ip.addr == 100.100.1.1/16

与:
ip.addr == 10.140.100.6) && ip.addr == 100.100.105.70
或:
ip.addr == 10.140.100.6) || ip.addr == 100.100.105.70
非:
!(ip.addr == 10.140.100.32)

只查ip:
ip
只查ip6:
ipv6

其他:

离线流量分析
· Wireshark/tshark
·dsniff
·ngrep

参考

---------

charles

Note

Fiddler 或 Charles 这类使用的代理的抓包软件与Wireshark是完全不同的(Wireshark 使用的网卡数据复制,只要是经过指定网卡都会被抓取),其只能对使用代理的应用层网络协议生效,比如常见的HTTP(https),Websocket 。


客户端需要完成一次HTTP请求,通常需要先找到服务器,客户端会根据http请求中url的主机名(实际会使用host中的主角名)及其端口与目标主机建立tcp连接,建立连接后会将http报文发送给目标服务器 (更多细节请参考https://tools.ietf.org/html/rfc7232)

接下来我来看下HTTP代理是如何运作的,我们启动Fiddler 或 Charles就是启动了一个HTTP代理服务器,这类工具会通知操作系统,“现在我在系统上创建了一个HTTP代理,IP为XXXXXX端口为XX。如果您使用的是linux您可以手动通知操作系统(export http_proxy=ip:port export https_proxy=$http_proxy),如果您使用的是手机等移动设备您可以在当前wifi设置处告诉系统你要使用http代理。 现在我们已经告诉系统我们想要使用代理,这个时候运行在系统上的http客户端再去发送请求的时候,他就不会再去进行DNS解析,去连接目标服务器,而是直接连接系统告诉他代理所在的地址(代理的ip及端口,注意无论是http或https或其他支持代理的协议都会连接同一个端口)。然后代理服务器会与客户端建立连接,再然后代理服务器根据请求信息再去连接真正的服务器。

常见问题

https相关:

启动https:
Proxy -> Start SSL Proxying

启动后是https或wss协议
不启动是http或ws协议

本机启动相关:

启动本机抓包:
Proxy -> macOS Proxy

iOS手机安装注意:

1. 先打开代理再安装证书,安装操作目录为:
通用-> 描述文件与设备管理
2. 证书安装后记得要信任证书,操作为:
通用-> 关于本机-> 证书信任设置

参考

-----------------------------------------------------------------------------

charles-proxy


使用mac作为开发工具的web相关的开发同学,相信都有用过一个很好用的代理截包工具—charles

这两年,随着google对https的大力推动和越来越多的公司认识到https对于网络安全的重要性,越来越多的项目已经使用上https了。

这使得以前相对比较简单的截包设置来说,多了一些步骤。这里主要记录一下关于ios的截包设置。

对于charles端的设置,相对来说网上也有很多的教程了。这边就简单提一下。

  1. 需要在help 的 SSL Proxying 选项中点击install Charles Root Certificate
    Alt text
  2. 在钥匙串中点击添加
    Alt text
  3. 设置证书为信任
    Alt text
  4. CharlesProxy中选中SSL Proxying Settings, 在里面增加你需要解析的https
  5. 接下来,我们将我们ios设备连接上Charles的代理(这个网上教程很多了)
  6. 然后在safari中打开https://chls.pro/ssl,添加证书,然后你就可以再safari中访问https的网站,并看到请求的具体信息了。

    但是很多时候我们更多的是需要查看APP中的信息,那么你还需要下面一步

  7. 在ios大于10.3的版本中,你需要打开设置-> 通用-> 关于本机-> 证书信任设置,在这里,将Charles的证书设置为完全信任,那么我们在ios设备上的任何地方访问的https请求都可以被解析看到了。

具体的信息可以查看Charles的官方文档

------------------------------------

Fiddler

说明:

功能类似Charles

简介:

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,
查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)
Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。

--------------------------

官网: https://httptoolkit.tech/

-------------------------

其他

Burpsuite
mitmproxy
FireBug
HTTPWatch

No comments:

Post a Comment