[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)

这是做者的系列网络安全自学教程,主要是关于网安工具和实践操做的在线笔记,特分享出来与博友共勉,但愿您们喜欢,一块儿进步。前文分享了Wireshark安装入门和一个抓取网站用户名和密码的案例,本篇文章将继续深刻学习Wireshark的抓包原理知识,并分享数据流追踪、专家信息操做,最后结合NetworkMiner工具抓取了图像资源和用户名密码。本文参考了PingingLab陈鑫杰老师的部份内容,很是推荐你们观看他的教程。同时,Bilibili是学习网络安全和编程的好地方喔,你们能够去试试。css

Wireshark做为网络分析的最佳利器之一,很是推荐网络安全初学者学习。做者做为网络安全的小白,分享一些自学基础教程给你们,但愿大家喜欢。同时,更但愿你能与我一块儿操做深刻进步,后续也将深刻学习网络安全和系统安全知识并分享相关实验。总之,但愿该系列文章对博友有所帮助,写文不容易,大神请飘过,不喜勿喷,谢谢!html

下载地址:https://github.com/eastmountyxz/NetworkSecuritySelf-study
百度网盘:https://pan.baidu.com/s/1dsunH8EmOB_tlHYXXguOeA 提取码:izebgit

前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登陆加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向破解
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)github

前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差别备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包web

参考文献:
《安全之路Web渗透技术及实战案例解析》陈小兵老师
《Wireshark数据包分析实战》第二版 Chris Sanders
《Wireshark网络分析》第二版 Laura Chappell
《TCP/IP协议栈详解卷一》 W.Richard Stevens算法

《Wireshark协议分析从入门到精通》-51cto老师(强推)
使用Wireshark抓包获取在网页中输入的帐号密码 - 鹏晓星博友
安全科普:利用WireShark破解网站密码 - JackFree大神
用wireshark抓包分析TCP三次握手、四次挥手以及TCP实现可靠传输的机制 - suddoo大神
Wireshark如何抓明文用户名和密码 - liu_yanzhao大神
网络抓包工具 wireshark 入门教程 - zhuyunier
https://www.bilibili.com/video/av29479068数据库

声明:本人坚定反对利用社会工程学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络须要咱们共同维护,更推荐你们了解它们背后的原理,更好地进行防御。编程


一.Wireshark抓包原理

(一).网络抓包原理

网络中不论传输什么,最终经过物理介质发送的都是二进制,相似于0101的Bit流。纯文本(字符串)中文一般采用UTF-8编码,英文用ASCII编码;非纯文本音频、视频、图片、压缩包等按不一样编码封装好,转换成二进制传输。在IP网络中,经过Wireshark抓包,获取的原始数据都是二进制。浏览器

哪一种网络状况下可以抓取到包呢?下面结合网络原理讲解。网络抓包主要存在三种状况:本机环境、集线器环境和交换机环境。安全

1.本机环境
本机环境直接抓包本机网卡进出的流量。Wireshark会绑定咱们的网卡,不须要借助第三方设备(交换机、集线路由器)就能抓取咱们的网络通讯流量,这是最基本的抓包方式。

2.集线器环境
集线器环境能够作流量防洪,同一冲突域。集线器的英文是“Hub”,“Hub”是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把全部节点集中在以它为中心的节点上。它工做于OSI参考模型第一层,即“物理层”。

假设三台电脑通讯,PC1处安装Wireshark,当PC二、PC3发送数据包到集线器网络里面(冲突域或广播域),因为集线器是物理层产品,不能识别MAC地址、IP地址,它会将接收包往其余全部接口泛洪,此时Wireshark就能抓到从同一个集线器其余电脑发过来的数据包,即局域网中的数据包。这是一种典型的老网络作法,如今基本淘汰。

3.交换机环境

交换机环境是更加常见的方式,包括端口镜像、ARP欺骗、MAC泛洪。

(1)端口镜像
交换机是一种数据链路层甚至网络层的产品,它的转包接包严格按照交换机上的MAC地址表通讯。因此正常状况下,PC2和PC3通讯流量是很难流到PC1的网卡上。当PC2和PC3通讯时,PC1是没法经过Wireshark抓到包。可是咱们能够在交换机端口作SAPN端口镜像操做,它会将其余两个口的流量复制一份到PC1处,PC1的网卡和Wireshark设置为混插模式,此时就能进行抓包。该模式经常使用于不少付费的流量分析软件。

(2)ARP劫持
假设咱们没有权限在交换机上作端口镜像技术,由于有MAC地址表,又想获取整个局域网中的流量,窃取到PC二、PC3上的流量。这能够经过著名的ARP攻击软件Cain&Abel实现,其流程是:

  • 首先,PC2发送ARP请求广播包,交换机收到包以后会发给PC1和PC3。
  • PC1和PC3接收到,正常状况下PC1会丢弃该包,由于询问的是PC3,但ARP欺骗会回复“我是IP3,对应地址为MAC1”,这就是典型的ARP欺骗或ARP病毒。
  • 最后PC2会将流量封装成底层的MAC1回复过去。若是PC3和PC1都回应,但APR有个特性叫后到优先,PC1会作一个错误的绑定,将数据包发到MAC1,从而致使PC2和PC3的通讯流量都会通过PC1,这也是典型的流量劫持、局域网攻击。

(3)MAC泛洪
经过工具泛洪带来大量垃圾包,产生大量MAC地址,此时交换机MAC地址表会变为右边这张表(爆表),MAC2和MAC3被挤出了MAC地址表。一旦这种MAC地址被挤出MAC地址表,按照交换机原理,若是收到的数据包是未知,它会对外泛洪,此时PC2和PC3对外流量泛洪。

(二).底层框架原理

那么,抓包的底层架构是怎样的?下面开始讲解Wireshark的底层原理。

Wireshark包括5层架构:

  • 最底层Win-/libpcap:Wireshark抓包时依赖的库文件(驱动文件、库文件)
  • Capture:抓包引擎,利用libpcap/WinPcap底层抓取网络数据包,libpcap/WinPcap提供了通用的抓包接口,能从不一样类型的网络接口(包括以太网、令牌环网、ATM网等)获取数据包
  • Wiretap:此时获取的是一些比特流,经过Wiretap(格式支持引擎)能从抓包文件中读取数据包,支持多种文件格式
  • Core:核心引擎,经过函数调用将其余模块链接在一块儿,起到联动调用的做用,包分析引擎涉及Protocol-Tree(保存数据包的协议信息,协议结构采用树形结构,解析协议报文时只需从根节点经过函数句柄依次调用各层解析函数便可)、Dissectors(各类协议解码器,支持700多种协议解析,解码器能识别出协议字段,并显示出字段值,Wireshark采用协议树的形式对数据流量的各层次协议逐层处理)、Plugins(一些协议解码器以插件形式实现,源码在plugins目录)、Display-Filters(显示过滤引擎,源码在epan/dfilter目录)。
  • GTK1/2:图形处理工具,处理用户的输入输出显示,最终存储至Harddisk硬盘中。

PS:了解基本的原理知识挺重要的,尤为为后续深刻的研究。


二.界面功能介绍

Wireshark运行后,其界面以下图所示,包括标题栏、菜单栏、工具栏、数据包过滤栏、数据包列表区、数据包详细区、数据包字节区、数据包统计区。

从上下按序编号以下图所示。

下面简单介绍一些界面常识。

1.点击“捕获”->“选项”以下图所示,能够设置输入接口和过滤器。

2.数据包详细区用得最多,它是解析数据包核心区域。数据包包含时间流、谁发给谁(原始IP地址和目的IP地址)、协议、长度、内容等,当双击它能看到对应的详细信息。

数据包详细区、数据包字节区包含比特字节信息。

3.统计栏的内容也值得你们去深刻学习,后面会分享流量图信息。

4.显示界面中能够设置字体大小,以下图所示。

5.列设置包括默认列表、增长列、修改列、隐藏列、删除列,设置默认便可,下图是选中某行右键“应用为列”便可增长列。

增长后以下图所示:

选中该列名称,右键“删除列”便可。点击“编辑列”能够对名称进行修改。

6.时间设置涉及时间格式和参考时间。

修改以后以下图所示,不在显示时间间隔。

7.名字解析主要用于判断厂商信息,名词解析库,基本知识以下图所示。

设备相关信息以下图所示:

8.开启传输域名解析。

开启以后能够看到解析的域名(domain)及对应的DNS。

9.查看解析地址。

显示结果以下:

10.数据包操做包括数据包标记、注释数据包、合并数据包、打印数据包、导出数据包,经过不一样的协议设置不一样的配色方案。

以下图所示修改成红色。

11.文件->打印。

接下来做者将继续分享Wireshark的实际案例知识,首先讲解数据流追踪、专家信息获取和统计摘要获取的知识。


三.数据流追踪和专家统计说明

1.数据流追踪
数据流追踪主要是将TCP、UDP、SSL数据流进行重组并完整呈现出来,其点击路径为:Analyze -> Follow -> TCP stream 分析。跟踪TCP流实现以下图所示:

咱们在访问网页的时候,除了HTTP协议,大部分的流量应该是经过TCP协议生成数据包的,以下图所示。红色部分表示浏览器访问的网址信息(Request),蓝色部分表示对方给咱们的反馈信息(Response)。

2.专家信息说明
其功能是对数据包中特定状态进行警告说明,包括错误(errors)、警告(warnings)、注意(notes)、对话(chats)。正常通讯是不会丢包的,但实际状况可能有延迟,能够经过专家信息分析和查看网站的稳定性。

显示结果以下图所示,并被标注为各类颜色。

3.统计摘要说明

其功能主要是对抓取的数据包进行全局统计,基本点击路径为:Statistics -> Summary 统计汇总信息。显示结果以下图所示,后续可能会结合案例详细讲解。

四.Wireshark和NetworkMiner劫持流量及图片

NetworkMiner:一款开源的网络取证和协议分析工具,可以经过嗅探器检测操做系统、主机名以及开放的端口。同时也能够经过分析pcap文件来获取到数据包的详细信息。 除了可以进行基本的数据包抓取分析,NetworkMiner还支持如下功能:

  • 以节点形式展现针对某个主机的通信信息。
  • 能够经过数据包详细信息查看主机的IP地址、端口、使用协议以及服务器版本、数据包大小等。
  • 能够设置以IP地址或者主机名或者操做系统等其余类别显示数据包。
  • 能够自动经过数据包分析出里面的文件,例如图片、js以及css等其余传输的文件。
  • 能够分析出数据包中的证书信息。
  • 能够分析出http协议中的Session信息和cookie以及其余参数。
  • 支持根据关键词查找功能,支持对FTP、TFTP、HTTP、SMB 和 SMTP协议的文件提取。

总之,这个源码项目仍是比较复杂的,若是想深刻研究数据包结构分析和Pcap,NetworkMiner也是个不错的选择。

下面结合Wireshark和NetworkMiner工具讲解劫持流量案例,获取登陆HTTP网站的用户名和密码,而且做者修改了头像图片,经过NetworkMiner软件获取了该上传资源。

第一步:启动Wireshark软件,并开始监听流量数据包。

第二步:打开浏览器并输入目标网址。(后续会尝试分析HTTPS网站或手机APP检测)

第三步:输入用户名和密码登陆。

登陆以后以下图所示,做者这里尝试点击连接提交个人一张本地头像。

上传以后以下图所示,接下来咱们开始尝试分析抓取的流量数据包。

第四步:获取网址对应的IP地址,这里使用IP站长之家实现。IP地址为:47.110.166.107 。

第五步:点击暂停并经过过滤器获取与该IP地址相关的HTTP协议数据包。
http and ip.addr==47.110.166.107

第六步:选中POST登陆提交表单的连接,能够查看对应的用户名和密码以下图所示,双击该行能够查看详情。注意,该网站是明文传输用户名和密码,若是密码加密,能够采用在线MD5解密。仍是建议该网站对密码进行加密或设置HTTPS传输。

第七步:右键连接,点击“追踪流”->“TCP流”。

显示的详情内容以下图所示,其中红色为Request,蓝色为服务器响应Response,咱们也能够尝试将其导出保存至本地。

第八步:若是过滤器为“ ip.addr==47.110.166.107”,则还除了获取HTTP协议数据包,还能获取其余协议,包括TCP,大多数流量包均经过TCP协议三次握手传输。

这里,读者尝试寻找POST提交图片表单,找到其TCP流的原图片格式进行分析。

第九步:打开工具NetworkMiner,尝试经过它分析数据包。(注意,前面Wireshark抓取的包将存储为本地pcap文件)。

第十步:该软件打开咱们本地的0921.pcap文件,显示以下图所示。

第十一步:点击Credentials查看咱们Wireshark劫持的全部流量登陆信息,能够看到咱们目标网站的用户名Yxiuzhang和密码。

第十二步:点击Images能够查看咱们上传的图片为“eastmount.jpg”,上传服务器以后头像命名为“17577…jpg”,成果抓取了图像资源。


五.总结

讲到这里,此篇文章讲述完毕。总之,Wireshark是一个很是强大的 工具,但愿读者能学会使用它,后续咱们将分享如何获取手机APP中的流量。做者也是小白,但仍然在一步一个脚印学习,但愿你也能与我同行。再次强调,Bilibili中有不少资源,去看看吧。

三年后,再次来到这座曾生活过六年的城市,仍是那么有历史韵味,仍是那么让人喜欢。这竟然是我第一次走进国家会议中心,第一次近看鸟巢。

感恩老师,来之不易的学习机会,让咱们异常珍惜。虽然听得懵懵懂懂,但也见识了差距,算是种经历和成长吧。人生,总有不少不期而遇的温暖,和生生不息的但愿,且行且珍惜。赶忙总结下学术知识、写篇博文。

这里有不少老师、知己和故友,但此次匆忙,下次共聚,勿怪、勿念。争取带女生来一次北京。

——秀璋 2019.9.22 北京

(By:Eastmount 2019-09-22 晚上11点 http://blog.csdn.net/eastmount/ )