流量分析基础到实战

2020-05-12 14:48:44 浏览数 (1)

文章源自【字节脉搏社区】

作者-小寺

扫描下方二维码进入社区:

0x00 抓包工具的介绍

Wireshark的作者Gerald Combs,于1998年由于在校项目需求而开发,早期名为Ethereal。Wireshark是世界上最重要和最广泛使用的网络协议分析仪。

优点:

1.支持多平台(Kali Linux自带该工具)

2.开源免费

3.界面友好

4.对新手友好

缺点:

1.当采集的数据包很大的时候,相应速度较慢

2.生成分析图表不够直观

0x01安装Wireshark

1.官方下载链接:

https://www.wireshark.org/#download

(上图中文是使用了Chrome自带的谷歌翻译)

2.选择你的操作系统并下载安装

步骤:

①下载完毕后,直接运行,弹出安装界面

②选择安装路径

③无脑按Next

④安装完毕

安装参考链接:

https://jingyan.baidu.com/article/6181c3e0d81551152ef153eb.html

0x02 安装的注意事项

刚开始学习的时候,wireshark安装有时候挺头疼的,如果你是Win10用户,有一定几率会出现安装报错,或者进入到界面的时候显示“没有找到接口“。如果没有上述情况,请跳过0x02

修复方法(请按顺序排查):

1.npf没有启动

方法:管理员身份打开CMD输入net start npf

参考链接:

https://blog.51cto.com/12078224/2390095

2.安装了npcap但是依然不显示接口

方法:更换为Win10pcap

参考链接:

https://www.cnblogs.com/pangya/p/9881175.html

3.更新网卡驱动

方法:使用360驱动大师等更新网卡驱动

参考链接:

https://blog.csdn.net/kanamisama0/article/details/78558585

4.终极方法:

直接使用虚拟机Kali Linux自带的Wireshark或在虚拟机linux上安装wireshark

0x03 使用介绍

一.使用步骤

运行wireshark,快速执行一次抓包分三步骤:

①选择本地网卡(可以是无线网卡)

②输入捕获过滤器的表达式

③点击开始抓包

④输入应用显示过滤器的表达式

二、什么是捕获过滤器?

你可能会有点疑惑,第二步的捕获过滤器是什么东西?

Q:什么是捕获过滤器?

A:在抓包前先设置好条件,只抓取想要的部分,

避免产生过大数据。

ps:这个功能相当于使用电子图书馆的检索功能;假如我只想看中国近代文学,只要在筛选条件中输入“中国近代文学“,这样子就只会列出想要的书籍。

常见的表达式如:

筛选IP如:host 192.168.31.100

筛选端口如:port 80

筛选协议如:icmp

你在捕获筛选器填了什么,在后面的捕获中就只会捕获符合条件的流量!

选择好网卡,输入完过滤器后,点击左上角的开始捕获图标就可以开始抓包了!

三、什么是应用显示过滤器

刚进去的时候会遇到特别多的数据,不要害怕,这都是来自其他网络应用程序的数据包,他有可能是QQ,微信,某个刚刚访问的页面等等的流量,所有在局域网内经过的流量都被Wireshark捕抓了下来。

“那么这么多的流量,应该怎么只显示我想要的呢?”

作业一:捕获ICMP流量数据包

内容:使用终端Ping路由器网关地址,然后使用应用显示过滤器筛选出ICMP的流量

一、打开终端,用Ping命令ping网关地址(路由器的IP地址)

二、在应用显示过滤器输入表达式

应用显示捕获器输入表达式:ICMP

此时就从整个捕获到的数据中,筛选出了ICMP的数据包了,再也没有其他数据表的干扰着我们分析

注意:我们在终端ping命令后门添加了-c参数,指定了只发两个请求包

在wireshark里显示4个包的原因是因为:“正常情况下,如果这是一个在线的设备,发送了一个ICMP请求包过去,对方就会返回一个回响包”

你会注意到:

第一行的Source是本机IP,Destination是路由器IP,说明这是一个请求包

第二行的Source是路由器IP,Destination是本机IP,说明这是一个回响包

三、进阶玩法

概要:ftp的设计是一个建立在互相信任的平台,这个协议采用了明文的方式传输数据,包括用户名和口令!接下来的实验是证明,为什么FTP协议不安全

作业二:报告司令!抓住一个明文口令

内容:通过wireshark捕获两个客户端和服务端之间的FTP协议通信的流量,分析数据包中的明文用户名和密码

(一).搭建一个FTP Server服务

在Windows环境中,强烈安利一个迷你的Ftp服务端软件Slyar FTPserver,这是一款很久以前的小工具,在传送小文件的场景下,非常实用!

地址:

http://www.slyar.com/blog/slyar-ftpserver.html

在Linux环境中,推荐使用vsftpd

Centos下安装Vsftpd的命令:

1.安装vsftpd

[root@localhost ~]# yum -y install vsftpd

2.启动vsftpd

[root@localhost ~]# service vsftpd start

3.添加一个普通用户

[root@localhost ~]# useradd test

4.修改密码

[root@localhost ~]# passwd test

(二)查看服务端和客户端的IP地址

Windows在CMD输入ipconfig,Linux在终端输入ifconfig

客户端

服务端

以我这边作为例子,一台Kali是FTP客户端,另一台Centos是FTP服务端

服务端的IP为:192.168.31.144

客户端的IP为:192.168.31.112

(PS:如果在虚拟机的实验,请确保是在同一网段)

(三)wireshark抓包

1.打开Wireshark,选择本地网卡,设置捕获过滤器为空,点击左上角图标开始捕获

2.开始抓包

在应用显示过滤器中输入

ip.host==192.168.31.144 && ip.host==192.168.31.112 && ftp,然后回车

这里的ip.host==ip地址表示筛选出该ip地址的流量,&&代表and匹配多条件的意思,ftp代表只匹配FTP协议的流量

3.在客户端输入ftp 192.168.31.144 (windows在cmd下的操作也是相同命令)

(四)wireshark数据包分析

1.先点击左上角第二个红色按钮停止抓包

2.我们可以看到下面列表中的几条数据,就是我们刚刚在使用ftp的流量,对其中任意一条右键—>追踪流—>TCP流

我们在TCP流中可以看到,你刚刚输入的全部信息,都将是明文信息,所以Ftp协议是一个非常不安全的协议,无论是明文用户名和口令或者文件内容

实验结束

总结:

1.捕获过滤器和应用显示过滤器的区别:

捕获过滤器:数据经过的第一层过滤器,主要作用防止产生过大的数据包文件

应用显示过滤器:数据经过的第二层过滤器,主要作用精准找到所需记录

2.ftp实验证明不安全的,那有其他替代协议吗?

答:有的,如:FTPS (FTP over SSL),就是ftp的传输上加了SSL证书来加密传输的数据,还有SFTP(SSH文件传输协议)

四、案例分析

某学校有一个内网后台管理系统,小A和小B是在同一个办公室内,小A负责每日的内网的维护,所以每天都会固定在一个时间登录后台管理系统,进行日常工作

一天小B突发奇想也想登录进后台看看有什么东西,但是没有账号和密码,但是他知道小A会在每天9点钟的时候登录后台,小B想使用wireshark来抓取局域网的流量包,然后从中分析出小A的登录密码。

第二天的八点半钟,小A来到了办公室,打开了电脑,打开了wireshark,他选定好网卡后,尝试着捕获数据包。

但是他发现了个问题,整个楼层都是使用同一个网段的(如:192.168.0.0/24),捕获到的数据非常非常的多,自己的电脑性能并不好,捕获起来一卡一卡的,他会使用什么方法减少数据量呢?

答:使用捕获过滤器

在捕获过滤器输入src host 192.168.0.105 or dst host 192.168.0.105

(其中192.168.80.130为小A的IP地址,注意此处用了or)

此时的流量就只限定于捕获有关小A电脑发出的数据包和接受的数据包。

到了9点钟,小A此时准时打开后台管理页面,流畅的输入了密码,小B看到后嘴角一笑,知道上钩了,就点击了左上角的红色终止按钮,结束了抓包,开始了分析流程。

首先第一步,如果是一个登陆页面,那么一般登陆流程的是通过发送POST包给服务器做校验,服务器在返回状态码的形式来重定向到新的页面。

所以,小B在显示过滤器里输入了http.request.method == POST,这个代表着只筛选出http的带有post请求的数据包出来。

在这么多项中,就有账号和密码藏在这些数据包里面,小B是一个聪明的人,他使用了Ctrl F查找功能——查找更加详细的字段,一般密码的字段是password或者passwd,所以小B在查找输入框内选中了“分组详情”,“字符串”,不区分大小写,试图更准确的查找需要的数据。

可以发现的确在数据包出现了password的字段,小B右键了这一行追踪流—HTTP流

可以看到,在这个POST请求里,包含了小A输入的用户名,密码等信息,成功拿到了口令!

实验结束

总结:

问:对于在局域网可以捕获明文口令这一情况,服务端有什么简单的解决办法?

答:1.采用md5加密(可加盐)来加密用户口令和密码2.添加其他的验证方式3.开启HTTPS加密

如果觉得写的文章还ok,请给一个三连,关注公众号,转发和点击再看,非常谢谢

0 人点赞