上期回顾:css
上一个专题,咱们采用了IDA静态分析和动态调试的方式,研究了一下脱壳技术。这是后续逆向恶意样本,掌握样本原理的前提,可是,一般分析代码并不能知道客户端与服务端是如何通讯的,通讯的内容是什么?或者只能分析出一点点,数据并不全,这就须要咱们经过设置代理,利用抓包工具分析其网络通讯数据包,这样就在未分析代码以前,能够先运行样本,抓取其网络数据包,它的基本行为目的就能够猜个八九不离十,所以,本篇文章就针对这个问题,重点分享一下Android平台的抓包分析方法和技巧。web

谈到网络数据抓包,抓包工具设置的位置,以及抓包工具的选择很是重要,好比,若是抓包工具和手机端不在同一个网段,也就是不在一个局域网,确定是没法获取到数据包;若是利用Fiddler抓取SMTP邮件传输协议,确定也是抓不到的,由于Fiddler根本就不支持这个协议,还有样本自己作了代理工具防御,设置代理后,样本将异常退出,这该怎么办?本篇文章就来解决这几种常见的应用场景。正则表达式
抓包工具的位置如何设置?算法
方式一 :组网是安装抓包工具的电脑端,以及手机端链接同一个路由器,这样就可使用抓包工具截获通过路由器的全部流量,其组网示意图如图1所示:
shell
图1 组网络示意图apache
方式一组网方式的缺点是使用抓包工具截获的数据包是全部经过该路由器的网络数据,无用的数据包很是多,不利于咱们快速的定位到关键的数据。了减小干扰的数据包,可使用计算机端开启Wi-Fi热点,而后用手机链接计算机释放的Wi-Fi,在手机端设置代理IP和端口,让手机端的流量经过计算机端的代理工具,这样就能够大大减小无用的数据包。图2是方式二的组网示意图,也是咱们常常最经常使用的方式(推荐)。windows
图2 组网络示意图浏览器
抓包工具如何选择?安全
在选择抓包工具以前,咱们须要知道工具支持哪些协议,是否是样本的客户端与服务端通讯使用的协议,好比:HTTP,HTTPS,或SMTP。抓包工具备不少种,针对不一样的平台,市场上有不少工具,为了知足平常工做中的需求,这里咱们推荐四种:Fiddler、Wireshark、Burpsuite(渗透测试),还有tcpdump。bash
工具名称 |
使用范围 |
tcpdump |
主要针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句,不支持图形化界面 |
Fiddler | 主要支持HTTP和HTTPS协议,操做简单,数据包内容清晰,支持图形化界面 |
Wireshark | 基本上支持全部的协议,也是市场上安全产品识别的数据包类型.pcap,支持图形化界面 |
Burpsuite | 主要用于攻击web 应用程序的集成平台,支持HTTP和HTTPS协议,支持图形化界面 (偏渗透测试) |
首先,咱们来看tcpdump,这个网上会有编译好的,能够直接下载,而后放入手机端(安卓或者苹果),这个工具是个命令行工具,没有图形化界面,不便于分析,可是有个好处是样本一旦增长了反代理技术,其余三种工具可能就没法使用了,可是这个工具并不影响,它能够保存为*.pcap格式,能够再使用Wireshark工具打开解析。
下面以Android手机为例,看一下如何使用该工具:
步骤1:在windows终端,使用adb命令将tcpdump工具push到测试机目录,如:/data/local/tmp(用户能够任意选择)
> adb push tcpdump /data/local/tmp
步骤2: 给测试机中的tcpdump可执行权限
> adb shell chmod 755 /data/local/tmp/tcpdump (注意:这个是在终端操做的命令,若是在测试机tcpdump的当前路径下,直接chmod 755 tcpdump )
步骤3: 工具准备好后,直接运行命令,开始抓包
> adb shell
> su
> ./tcpdump -p-vv -s -0 -w /sdcard/data.cap 或者 ./tcpdump -i any -p -s -0 -w /sdcard/data.cap
# WiFi下抓包tcpdump -i en0 -X -s0 -w data.pcap# 2G/3G下抓包tcpdump -i pdp_ip0 -X -s0 -w data.pcap 或 tcpdump -X -s0 -w data.pcap# 抓全包写文件tcpdump -X -s0 -w /tmp.cap # 主机全包tcpdump -X -s0 host www.qq.com # 抓端口全包c.tcpdump -X -s0 port 14000
# tcpdump的命令格式和参数说明tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ] [ -T 类型 ] [ -w 文件名 ] [表达式 ]# 选型介绍:-a # 将网络地址和广播地址转变成名字;-d # 将匹配信息包的代码以人们可以理解的汇编格式给出;-dd # 将匹配信息包的代码以c语言程序段的格式给出;-ddd # 将匹配信息包的代码以十进制的形式给出;-e # 将捕获的包数显示出来-f # 将外部的Internet地址以数字的形式打印出来;-l # 使标准输出变为缓冲行形式;-n # 不把网络地址转换成名字;-t # 在输出的每一行不打印时间戳;-v # 输出一个稍微详细的信息,例如在ip包中能够包括ttl和服务类型的信息;-vv # 输出详细的报文信息;-c # 在收到指定的包的数目后,tcpdump就会中止;-F # 从指定的文件中读取表达式,忽略其它的表达式;-i # 指定监听的网络接口;-r # 从指定的文件中读取包(这些包通常经过-w选项产生);-w # 直接将包写入文件中,并不分析和打印出来;-T # 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议)
# 下面是运维工程师,安全产品网络抓包调试,经常使用的命令,能指定具体的设备,也能制定具体的五元组进行捕获链路上的数据包:# 在使用该命令的时候,经常使用的主要选项是: -i [接口名] -w [文件名] -v -vv -c -X -e# 例如:从eth0捕获100个数据包的时候,并将数据写入到capture.cap文件中,命令格式为: tcpdump -i eth0 -w capture.cap -v -vv -c 100 -X -e# 抓取一个ip段之间的数据包: tcpdump –s 0 –w socket host 10.1.3.9 and host 10.1.3.84# 若是从eth0且通讯协议端口为22,目标IP为192.168.1.100获取数据: tcpdump -i eth0 port 22 and src host 192.168.1.10# 此外还有其余的一些关键词:host,(主机) , net( 网关), port(端口) , src(源IP) , dst(目的IP), 正则表达式:and , or。
步骤4: 中止抓包,使用Ctrl+C
步骤5: 使用adb pull命令导出已经抓好的数据包到电脑上,以便于分析
> adb pull /sdcard/data.cap D:/ (用户自定义指定电脑中的路径)
步骤6: 使用Wireshark工具分析,结束。
Fiddler是一个HTTP/HTTPS调试代理工具,它可以记录并检查全部被代理的客户端和互联网之间的HTTP/HTTPS通讯,支持设置断点调试,查看全部“进出”Fiddler的数据,包括cookie、js、css等文件。使用以前,必须先对客户端和手机端进行设置。
客户端设置
步骤1:Fiddler软件设置,点击菜单栏中的“Tools”→“Options”
步骤2: 点击“Connections”,设置代理端口是8888,勾选“Allow remote computers toconnect”,点击“OK”
这时在Fiddler中能够看到本机无线网卡的IP,若是没有则重启Fiddler,或者在cmd中的ipconfig找到本身的网卡IP。
手机端设置
步骤1:查看计算机端的IP地址,Windows系统使用ipconfig命令,Linux系统使用ifconfig命令
步骤2: 在手机端链接计算机的Wi-Fi,而且设置代理服务器地址与端口(代理服务器IP就是步骤1中的IP,端口是Fiddler的代理端口8888),而后点击“保存”
步骤3: 若是使用Fiddler工具抓取HTTPS的数据包,还需安装Fiddler证书。在手机端访问浏览器,输入代理IP和端口(如:192.168.23.1:8888),下载Fiddler的证书,点击“FiddlerRoot certificate”,为证书任意命名后点击“肯定”
设置完成以后,Fiddler就能够抓包到Android手机的网络请求了。在手机浏览器中打开百度网页,以及截获的数据包
经常使用技巧
如今Fiddler工具已经可以正常使用了。在平常工做中,Fiddler设置断点的功能很是重要,这里有必要提一下。点击菜单栏中的“Rules”→“Automatic Breakpoints”
(1)中断Requests
中断Requests通常有两种方式:
第一种方式是打开Fiddler,点击“Rules”→“AutomaticBreakpoint”→“Before Requests”,这样会中断全部的会话。消除命令只须要点击“Rules”→“AutomaticBreakpoint”→“Disabled”便可。
第二种方式是在命令行中输入命令bpu www.baidu.com,这样只会中断www.baidu.com。在命令行中输入命令bpu便可消除命令。
(2)中断Response
中断Response也有两种方式。
第一种方式是打开Fiddler点击“Rules”→“AutomaticBreakpoint”→“After Response”,这样会中断全部的会话。消除命令只须要点击“Rules”→ “AutomaticBreakpoint”→“Disabled”便可。
第二种方式是在命令行中输入命令bpafter www.baidu.com。这样只会中断www.baidu.com。在命令行中输入命令bpafter便可消除命令。
(3)AutoResponder
Fiddler的AutoResponder tab容许从本地返回文件,而不用将http request发送到服务器上。AutoResponder的设置界面以下:
Fiddler功能强大,以上功能基本上能够知足平常工做需求。
#Fiddler显示请求服务器IP的办法,若是没有设置,新安装的Fiddler是不显示目标IP地址# 打开Fiddler的自定义脚本文件CustomRules.js,找到static function Main这里,在函数体内添加以下一行并保存。FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP", 120, "X-HostIP");
代码效果以下:
注意: 若是没有找到CustomRules.js文件,必须首次先启动下Fiddler的规则:
CustomRules.js的路径:../个人文档/Fiddler2/Scripts/CustomRules.js
从新启动Fiddler,就能够看到了(Server IP这一列默认是在最后,能够用鼠标选中后能够往前拖,拖到本身喜欢的位置),效果以下:
Wireshark(原名Ethereal)是一个网络封包分析软件,功能是截取网络封包。Wireshark使用WinPCAP做为接口,直接与网卡进行数据报文交换。而Fiddler工具具备局限性,只能抓取HTTP和HTTPS的数据包,且保存的格式为.saz,如SMTP邮件协议的数据包是没法获取的。
网络配置和前面是一致的,必须保证手机和计算机在同一网段。打开Wireshark工具,选择计算机中设置的本地网络,点击“Start”,按照最新版的wireshark,通常状况计算机中会有不少网络节点,咱们观察有流量的哪个。
上图是截获的是电脑中的全部流量,若是要抓取手机端的流量,最好是电脑端先使用工具释放个Wi-Fi热点,让手机端链接电脑端释放的Wi-Fi,这样网络选择就选择虚拟Wi-fi节点,这样能够减小没必要要的流量。
该工具使用简单,须要注意的是,在分析数据包时,有效的过滤可以提升工做效率。好比在打电话时收到某程序发送的报文,能够关闭全部其余使用网络的应用来减小流量,但仍是可能有大批报文须要筛选,这时就要用到Wireshark过滤器。最基本的方式就是在窗口顶端过滤栏输入并点击“Apply”,或者按下回车键显示过滤结果。例如,输入“dns”就会只看到DNS报文。输入的时候,Wireshark会帮助自动完成过滤条件。
下面是经常使用于IP过滤的几个命令。
(1)源IP的表达式:ip.src==192.168.0.105,或ip.srceq192.168.0.105
含义:筛选出源IP是192.168.0.105的数据包。
(2)目标IP的表达式:ip.dst==119.147.74.18,或ip.dsteq119.147.74.18
含义:筛选出目标IP是119.147.74.18的数据包。
(3)直接按IP过滤的表达式:ip.addr==202.105.182.132,或ip.addreq 202.105.182.132
含义:筛选出与202.105.182.132相关的数据包。
更多详细的使用方法,你们能够在网上参考相关资料,这方面仍是比较丰富的。
Burp Suite 主要应用于攻击web 应用程序的集成平台,也能够抓包,支持HTTP和HTTPS协议,数据包篡改重放测试,密码字典破解常用,工具截图以下:
电脑端设置:
手机端设置
手机端设置,操做步骤与Fiddler工具设置同样,这里就不赘述了,惟一的区别在于,当要抓取HTTPS数据包时,须要先在手机端安装工具对应的证书,burpsuite也是同样的,在手机端设置好电脑端代理IP和8080端口后,还须要用户在手机浏览器中访问http://burp安装证书,这样就设置完成了,就能够利用Proxy功能开始抓包了。
鉴于篇幅缘由,这里就不深刻展开了,感兴趣的能够参考网上的资料学习。本文中介绍的工具不只限于Android平台,IOS平台也一样支持。
至此,抓包工具网络设置清楚了,抓包工具的使用方法也清楚了,在平常工做中,只要没有特殊要求,咱们就根据我的喜爱,选择抓包工具。我的比较喜欢Fiddler和Wireshark。若是系统须要*.pacp数据包格式,那就必须使用tcpdump和Wireshark,若是不要求,建议直接使用Fiddler,简单,直观,同时该工具内置解密算法,解密也比较方便,可是,如何涉及到密码、验证码爆破等操做,仍是使用Burp Suite比较好。
最后,再给你们推荐一个博客http://www.vants.org/,网络分析实战,利用抓包技术,解决网络运维中常见问题,更切合现实场景。
好了,本篇文章就分享到此。

本文分享自微信公众号 - App安全红宝书(apphongbaoshu)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。