前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS逆向之【截获分析网络数据包】 1、tcpdump 2、Wireshark的原理和基本使用 3、使用Charles联调测试

iOS逆向之【截获分析网络数据包】 1、tcpdump 2、Wireshark的原理和基本使用 3、使用Charles联调测试

作者头像
公众号iOS逆向
发布2021-03-08 11:07:35
2.6K0
发布2021-03-08 11:07:35
举报
文章被收录于专栏:iOS逆向与安全

前言

原文:

https://kunnan.blog.csdn.net/article/details/114310538

抓取http/https的,推荐使用Charles;如果是socket,推荐使用Wireshark

I、 tcpdump

1.0 基础知识

  • TCP Flags(tcp header第十四个字节)--这8个flag首字母分别是:C E U A P R S F
代码语言:javascript
复制
flags位于tcp header的第十四个字节,包含8个比特位,也就是上图的CWR到FIN。
这8个比特位都有特定的功能用途,分别是:CWR,ECE,URG,ACK,PSH,RST,SYN,FIN。

<!-- CWR((Congestion Window Reduced)) ,ECE 两个flag是用来配合做congestion control; -->
发送方的包ECE(ECN-Echo)为0的时候表示出现了congestion,
接收方回的包里CWR(Congestion Window Reduced)为1表明收到congestion信息并做了处理。

<!-- URG URG代表Urgent,表明包的优先级高,需要优先传送对方并处理。像我们平时使用terminal的时候经常ctrl+c来结束某个任务,这种命令产生的网络数据包就需要urgent。 -->


<!-- ACK:用来告诉对方上一个数据包已经成功收到。在下一个要发送的packet里设置ack位,这属于tcp的优化机制 -->
参见delayed ack:https://en.wikipedia.org/wiki/TCP_delayed_acknowledgment

<!-- PSH Push接收方接收到P位的flag包需要马上将包交给应用层处理 -->
一般我们在http request的最后一个包里都能看到P位被设置。

<!-- RST Reset位,表明packet的发送方马上就要断开当前连接了。 -->
在http请求结束的时候一般可以看到一个数据包设置了RST位。


<!-- SYN位在发送建立连接请求的时候会设置,我们所熟悉的tcp三次握手就是syn和ack位的配合:syn->syn+ack->ack。 -->

<!-- FIN Finish位设置了就表示发送方没有更多的数据要发送了,之后就要单向关闭连接了,接收方一般会回一个ack包。接收方再同理发送一个FIN就可以双向关闭连接了。 -->
<!-- ps:[S],[P],[R],[F],[.]; -->
[.]特殊点,是个占位符,没有其他flag被设置的时候就显示这个占位符,一般表示ack


1.1 截获分析网络数据包

  • rvictl -s udid,创建虚拟网卡
  • 启动tcpdump监控流量:sudo tcpdump -i rvi0 -AAl

1.2 tcpdump常用的一些命令参数

  • tcpdump
代码语言:javascript
复制
-i, 要监听的网卡名称,-i rvi0监听虚拟网卡。不设置的时候默认监听所有网卡流量。

-A, 用ASCII码展示所截取的流量,一般用于网页或者app里http请求。-AA可以获取更多的信息。

-X,用ASCII码和hex来展示包的内容,和上面的-A比较像。-XX可以展示更多的信息(比如link layer的header)。

-n,不解析hostname,tcpdump会优先暂时主机的名字。-nn则不展示主机名和端口名(比如443端口会被展示成https)。

-s,截取的包字节长度,默认情况下tcpdump会展示96字节的长度,要获取完整的长度可以用-s0或者-s1600。

-c,只截取指定数目的包,然后退出。

-v,展示更多的有用信息,还可以用-vv -vvv增加信息的展示量。

src,指明ip包的发送方地址。

dst,指明ip包的接收方地址。

port,指明tcp包发送方或者接收方的端口号。

and,or,not,



  • 例子
代码语言:javascript
复制
tcpdump tcp[13] & 16!=0’

tcpdump src port 80 and tcp

tcpdump -vv src baidu and not dst port 23

tcpdump -nnvvS src 192.0.1.100 and dst port 443

  • sudo tcpdump -i rvi0 -AAl src 192.168.2.54 or dst 101.227.169.159
代码语言:javascript
复制
tcpdump: WARNING: rvi0: That device doesn't support promiscuous mode
(BIOCPROMISC: Operation not supported on socket)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rvi0, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes

............en0...................... ...............................................................................$.Z............................................ZF.[............ZF.[...6..........
15:45:04.201643 IP 192.168.2.54.49525 > 218.75.177.11.https: Flags [F.], seq 1966557688, ack 1968545729, win 4096, options [nop,nop,TS val 1005623903 ecr 2012104264], length 0
............en0...................... ...............................................................................$.Z.......................................`w...ZF.[..E..4..@.@......6.K...u..u7I.uU.............
;.._w.FH
15:45:04.216860 IP 192.168.2.54.49525 > 218.75.177.11.https: Flags [FP.], seq 4294967211:0, ack 1, win 4096, options [nop,nop,TS val 1005623943 ecr 2012134515], length 85
............en0...................... ...............................................................................$.Z.O.....................................`w...ZF.[..E....m@.@.*....6.K...u..u7I.uU.............
;...w..s....P'._..c..)L..b....X....[....m.)"k.*7...'x.....P$.......1...)....?t+._ny4..UQd/..3
15:45:04.232246 IP 192.168.2.54.49525 > 218.75.177.11.https: Flags [.], ack 1, win 4096, options [nop,nop,TS val 1005623957 ecr 2012134519], length 0
............en0...................... ...............................................................................$.Z6......................................`w...ZF.[..E..4X.@.@......6.K...u..u7I.uU......v#.....
;...w..w
15:45:04.232328 IP 192.168.2.54.49525 > 218.75.177.11.https: Flags [.], ack 2, win 4096, options [nop,nop,TS val 1005623957 ecr 2012134519], length 0
............en0...................... ...............................................................................$.Z.......................................`w...ZF.[..E..4)L@.@..B...6.K...u..u7I.uU......v".....
;...w..w
15:45:18.443362 IP 192.168.2.54 > 192.168.2.100: ICMP 192.168.2.54 udp port weblogin unreachable, length 36
............en0...................... ...............................................................................$.Z....................................4.......ZF.[..E..8*...@..>...6...d.. .....E..8...........d...6.5...$..
15:45:23.372847 ARP, Reply 192.168.2.54 is-at f4:f1:5a:46:97:5b (oui Unknown), length 28
............en0...................... ...............................................................................$.Zo...................................4.......ZF.[............ZF.[...64........d
15:46:18.444230 IP 192.168.2.54 > 192.168.2.100: ICMP 192.168.2.54 udp port weblogin unreachable, length 36
............en0...................... ...............................................................................$.ZF...................................4.......ZF.[..E..8$...@..U...6...d..
o....E..8./.........d...6.c...$..
15:46:23.372414 ARP, Reply 192.168.2.54 is-at f4:f1:5a:46:97:5b (oui Unknown), length 28
............en0...................... ...............................................................................$.Z....................................4.......ZF.[............ZF.[...64........d
15:46:56.202113 ARP, Request who-has 192.168.2.1 tell 192.168.2.54, length 28
............en0...................... ...............................................................................$.Z............................................ZF.[............ZF.[...6..........
15:46:56.231715 IP 192.168.2.54.62927 > public1.114dns.com.domain: 39203+ A? minorshort.weixin.qq.com. (42)
............en0...................... ...............................................................................$.Z#......................................`w...ZF.[..E..F.A..@.,....6rrrr...5.2.;.#..........
minorshort.weixin.qq.com.....
15:46:56.593275 IP 192.168.2.54.49527 > 41.224.151.61.dial.xw.sh.dynamic.163data.com.cn.https: Flags [S], seq 2997068169, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 1005736282 ecr 0,sackOK,eol], length 0
............en0...................... ...............................................................................$.Z{. ....................................`w...ZF.[..E..@.i@.@.q....6=..).w.............................
;.QZ........

<!-- rvictl -x fa6770acd2e0625 -->

II 、Wireshark

Wireshark用的是RVI(Remote Virtual Interface)

(iOS5以上才支持)。

wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡。然后点击"Start"按钮, 开始抓包

2.0 原理:

是在MAC上建立虚拟网络接口来作为iOS设备的网络栈,这样所有经过iOS设备的数据都会经过该虚拟接口,iOS设备可以为任意网络类型,这样在MAC上用tcpdump或WireShark来抓取该虚拟接口就能实现对iOS设备的抓包。

rvictl不像代理,不会干扰iOS设备正常的网络访问。

打开Wireshark,在捕获选项里面选择rvi0这个设备,这个时候,iPhone所有TCP和UDP流量,都会打印到Mac上 .在Wireshark里面输入合适的过滤器,便于追踪目标流量

2.1 使用方法

-l 当前的活跃设备

-x 创建虚拟网卡

-s 结束虚拟网卡

  • 1、获取设备udid

打开Xcode,按 shift + command + 2,找到你要抓包的iOS设备的Identifier后面的一长串,复制下来

  • 2.指定虚拟的网卡

打开Terminal,输入rvictl -s xxx 。xxx为你刚才复制的东西

  • 3.开始抓包

打开WireShark,找到设置按钮,排在首项的第四个,然后在输入项选择rvi0这个虚拟网卡,点开始,就开始抓包了。

  • 4、停止建立虚拟网络接口
代码语言:javascript
复制
devzkndeMacBook-Pro:~ devzkn$ rvictl -x 07cf5424d3844522c3396fc55f419a11633cb54c

2.2 封包详细信息 (Packet Details Pane)

  • Frame: 物理层的数据帧概况
  • Ethernet II: 数据链路层以太网帧头部信息
  • Internet Protocol Version 4: 互联网层IP包头部信息
  • Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
  • Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议

III 、iOS逆向抓包工具Charles

  • 文章地址:https://blog.csdn.net/z929118967/article/details/78192383
  • 【应用场景:App联调测试】(绕过Certificate Pinning的方案)
  • iOS逆向与安全:解决使用Charles分析报文遇到的问题【SSLHandshake: Received fatal alert: certificate_unknown】
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iOS逆向 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • I、 tcpdump
    • 1.0 基础知识
      • 1.1 截获分析网络数据包
        • 1.2 tcpdump常用的一些命令参数
        • II 、Wireshark
          • 2.0 原理:
            • 2.1 使用方法
              • 2.2 封包详细信息 (Packet Details Pane)
              • III 、iOS逆向抓包工具Charles
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档