Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >流量分析基础到实战

流量分析基础到实战

作者头像
字节脉搏实验室
发布于 2020-05-12 06:48:44
发布于 2020-05-12 06:48:44
1.6K0
举报

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

作者-小寺

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

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,请给一个三连,关注公众号,转发和点击再看,非常谢谢

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Node.js v19,它来了!详解 6 大特性
通译自:6 Major Features of Node.js 19. Details of Node.js 19 new features… | by Jennifer Fu | Oct, 2022 | Better Programming
掘金安东尼
2022/11/30
8750
Node.js v19,它来了!详解 6 大特性
走进Node.js 之 HTTP实现分析
作者:正龙(沪江Web前端开发工程师) 本文为原创文章,转载请注明作者及出处 上文“走进Node.js启动过程”中我们算是成功入门了。既然Node.js的强项是处理网络请求,那我们就来分析一个HT
iKcamp
2018/01/04
2.1K0
走进Node.js 之 HTTP实现分析
《深入浅出Node.js》-网络编程
Node 中提供了 net,dgram,http,https 四个模块,分别用来处理 TCP,UDP,HTTP,HTTPS,适用于客户端和服务器。
李振
2021/11/26
7300
nodejs源码分析之http Agent
Agent对TCP连接进行了池化管理。简单的情况下,客户端发送一个HTTP请求之前,首先建立一个TCP连接,收到响应后会立刻关闭TCP连接。但是我们知道TCP的三次握手是比较耗时的。所以如果我们能复用TCP连接,在一个TCP连接上发送多个HTTP请求和接收多个HTTP响应,那么在性能上面就会得到很大的提升。Agent的作用就是复用TCP连接。不过Agent的模式是在一个TCP连接上串行地发送请求和接收响应,不支持HTTP PipeLine模式。下面我们看一下Agent模块的具体实现。看它是如何实现TCP连接复用的。
theanarkh
2021/04/22
1K0
nodejs源码分析之http Agent
深入学习 Node.js Http
Expect 是一个请求消息头,包含一个期望条件,表示服务器只有在满足此期望条件的情况下才能妥善地处理请求。规范中只规定了一个期望条件,即 Expect: 100-continue,对此服务器可以做出如下回应:
阿宝哥
2019/11/05
9640
Node核心模块篇:HTTP
HTTP协议是世界上广泛使用的应用层通信协议,而通过Node的核心模块HTTP,我们可以方便快速的构建自己的HTTP服务器和客户端,并在两者之间进行通信传递数据。
凌虚
2020/07/18
6300
Node核心模块篇:HTTP
Node理论笔记:网络编程
TCP全名为传输控制协议,在OSI(由七层组成:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)中属于传输层协议。HTTP、SMTP、IMAP协议都是基于TCP构建的。
Ashen
2020/06/01
1.3K0
Node.js 安全最佳实践
最近 Node.js 团队在官方文档上公布了一份最新的安全实践,解读了一些 Node.js 服务下一些常见的攻击场景以及预防手段,我们一起来看看吧!
ConardLi
2023/01/09
2.4K0
Node.js 安全最佳实践
使用http维持socket长连接
用户1141560
2017/12/22
1.5K0
Http 持久连接与 HttpClient 连接池
HTTP协议是无状态的协议,即每一次请求都是互相独立的。因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接。
用户1257393
2018/07/30
2.1K0
Http 持久连接与 HttpClient 连接池
Node.js 在有赞的实践分享
有赞最早的一个比较完整的 Node 项目是公司内部的一个管理系统,这个系统是用 Node 全栈开发的,主要包括一个给 HR 用的员工管理系统和给小伙伴用的 APP。就像大多数公司一样,我们第一个 Node 项目也是直接用 Koa,然后整合一些开源的中间件,这样就快速的把项目搭建起来了。
五月君
2019/08/29
1.2K0
Node.js 在有赞的实践分享
基于Unix Socket的可靠Node.js HTTP代理实现(支持WebSocket协议)
实现代理服务,最常见的便是代理服务器代理相应的协议体请求源站,并将响应从源站转发给客户端。而在本文的场景中,代理服务及源服务采用相同技术栈(Node.js),源服务是由代理服务fork出的业务服务(如下图),代理服务不仅负责请求反向代理及转发规则设定,同时也负责业务服务伸缩扩容、日志输出与相关资源监控报警。下文称源服务为业务服务。
欲休
2020/03/12
1.7K0
《Node.js》核心技术教程(笔记)
模块化是一种设计思想,利用模块化可以把一个非常复杂的系统结构细化到具体的功能点,每个功能点看作一个模块,然后通过某种规则把这些小的模块组合到一起,构成模块化系统。
爱学习的程序媛
2022/04/07
1.8K0
《Node.js》核心技术教程(笔记)
详解HTTP 与TCP中Keep-Alive机制的区别
keepalive已经不是什么新鲜的概念了,HTTP协议中有keep-alive的概念,TCP协议中也有keep-alive的概念。二者的作用是不同的。本文将详细的介绍http中的keep-alive,介绍tomcat在server端是如何对keep-alive进行处理,以及jdk对http协议中keep-alive的支持。同时会详细介绍tcp中的keepalive机制以及应用层的心跳。
田守枝
2019/05/21
4.2K0
详解HTTP 与TCP中Keep-Alive机制的区别
Go http client 连接池不复用的问题
当 http client 返回值为不为空,只读取 response header,但不读 body 内容就执行 response.Body.Close(),那么连接会被主动关闭,得不到复用。
梦醒人间
2021/01/04
3.7K0
使用Node.js理解和测量Http时序
举个例子:如果你的DNS查询比你期望的时间更长,这个问题可能是因为你的DNS供应商或者DNS缓存引起的。
疯狂的技术宅
2019/03/27
1.2K0
使用Node.js理解和测量Http时序
HTTP 与 TCP 的 KeepAlive 是一个东西吗?
KeepAlive 已经不是什么新鲜的概念了,HTTP 协议中有 KeepAlive 的概念,TCP 协议中也有 KeepAlive 的概念。二者的作用是不同的。本文将详细的介绍 HTTP 中的 KeepAlive,介绍 Tomcat 在 Server 端是如何对 KeepAlive 进行处理,以及 JDK 对 HTTP 协议中 KeepAlive 的支持。同时会详细介绍 TCP 中的 KeepAlive 机制以及应用层的心跳。
涤生
2019/07/10
1.6K0
使用 C# 开发 node.js 插件
项目需求 最近在开发一个 electron 程序,其中有用到和硬件通讯部分;硬件厂商给的是 .dll 链接库做通讯桥接, 第一版本使用 C 写的 Node.js 扩展 😁;由于有异步任务的关系,实现使用了 N-API 提供的多线程做异步任务调度, 虽然功能实现了,但是也有些值得思考的点。 纯 C 编程效率低,木有 trycatch 的语言调试难度也大 (磕磕绊绊的) 编写好的 .node 扩展文件,放在 electron 主进程中运行会有一定的隐患稍有差错会导致软件闪退 (后来用子进程隔离运行) 基于
conanma
2022/01/05
2.1K0
Android网络编程(八)源码解析OkHttp中篇[复用连接池]
1.引子 在了解OkHttp的复用连接池之前,我们首先要了解几个概念。 TCP三次握手 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接。 TCP三次握手的过
用户1269200
2018/02/01
1.3K0
Android网络编程(八)源码解析OkHttp中篇[复用连接池]
为什么要用 Node.js
这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正。 Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎。前者负责渲染 HTML + CSS,后者则负责运行 JavaScript。Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快。 Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎。我们知道 Apache + PHP 以及 J
前朝楚水
2018/04/03
2.3K0
相关推荐
Node.js v19,它来了!详解 6 大特性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档