在对app进行安全分析时,有时需要检查app的网络接口请求是否安全,网络协议交互是否可被恶意利用。因此就需要运行app并捕获其与服务端交互的网络数据进行分析。前面文章已介绍过http、https数据包的捕获,该篇文章主要介绍捕获app的tcp、udp流量数据。我们将使用tcpdump捕获tcp、udp流量,再通过wireshark过滤、分析app的tcp、udp流量。
一、tcpdump捕获app流量
- tcpdump安装(iOS设备已越狱) ios设备越狱后,则会在设备中安装cydia。安装tcpdump只需要打开cydia搜索"tcpdump",然后点击安装即可,如下所示
如果搜索不到tcpdump,则可以尝试添加如下源 https://apt.bingner.com
- 运行tcpdump捕获app流量 ios设备通过数据线连接到电脑 ssh连接ios设备,如下所示
使用命令ifconfig 查看tcpdump需要抓包的网络接口,如下所示
启动tcpdump监听上面查看到的网络接口,捕获该网络接口的数据流,并进行保存,如下所示 捕获tcp、udp命令:tcpdump -i en0 -vv -w 1.pcap
运行需要分析的app,让它产生网络数据,如下所示
tcpdump继续抓包,app运行后不要马上关掉,准备查看app的流量特征
- 识别app的流量特征 安装lsof,用于查看app网络交互信息。打开cydia,搜索"lsof",(lsof很强大,这里有点大材小用了,想了解更多关于lsof知识点的朋友可以自行百度、Google或者查看文末的参考链接)点击安装,如下所示
在运行app后,不要马上关掉app进程,我们要找出与app通信的服务端ip或者端口以及网络协议(tcp、udp),方便后续wireshark过滤
新开一个终端,ssh再连接一次ios设备,查看app的进程pid(比如该app的进程pid为11524),如下所示
找到app的进程pid后,查看app的网络交互情况,我们使用lsof,它可查看系统中的文件使用情况,广义上网络套接字也属于文件描述符,因此可以通过lsof查看,如下所示
lsof -i -a -p <pid> #我们上面查看到的进程pid
-i 表示 列出所有网络连接
-a 表示 指定当前用户
-p 表示 某个进程(pid)
我们即可看到该app网络交互的网络协议、ip、端口等
最后停止tcpdump捕获app网络数据,结束抓包
二、wireshark过滤分析app流量
- wireshark下载安装 wireshark下载,可通过如下链接下载(如果下载慢,也可以公众号回复"wireshark",百度盘下载) https://www.wireshark.org/download.html wireshark安装 双击wireshark安装包,如下所示
拖动wireshark到Applications中
- 根据app的流量特征过滤数据包 通过scp将tcpdump捕获到的网络数据包拷贝到电脑中,如下所示
使用wireshark打开网络数据包,如下所示
- 根据上面识别到的app的流量特征(IP、端口)过滤出app的流量,如下所示
- 跟踪app的整个流量交互过程 右键选择 follow
再选择 tcp stream
即可看到app与服务端tcp网络交互过程
- 后续文章将对app进行逆向分析还原交互过程
参考链接:
https://linux.die.net/man/8/lsof