You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
p2l5wexnu/data/ch_wireshark/sec_arp.tex

302 lines
13 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

%# -*- coding: utf-8-unix -*-
\section{Wireshark软件使用与ARP协议分析}
\label{sec:c:wireshark:s:arp}
\subsection{实验目的}
\label{subsec:c:wireshark:s:arp_object}
学习Wireshark的基本操作
抓取和分析有线局域网的数据包;
掌握以太网MAC帧的基本结构
掌握ARP协议的特点及工作过程。
\subsection{实验内容}
\label{subsec:c:wireshark:s:arp_content}
使用Wireshark抓取局域网的数据包并进行分析
\begin{enumerate}
\item \textbf{学习Wireshark基本操作}
重点掌握捕获过滤器和显示过滤器。
\item \textbf{观察MAC地址}了解MAC地址的组成辨识MAC地址类型。
\item \textbf{分析以太网帧结构:}观察以太网帧的首部和尾部,
了解数据封装成帧的原理。
\item \textbf{分析ARP协议}抓取ARP请求和应答报文分析其工作过程。
\end{enumerate}
\subsection{实验原理}
\label{subsec:c:wireshark:s:arp_principle}
\subsubsection{Wireshark简介}
Wireshark软件是目前全球使用最广泛的开源网络数据包分析工具前身为Ethereal
由Gerald Combs编写并于1988年获开源许可发布。
网络数据包分析是指进入网络通信系统、
捕获和解码网络上实时传输数据以及搜集统计信息的过程。
通过Wireshark对网络数据进行分析
我们能够了解网络是如何运行的、数据包是如何被转发的、应用是如何被访问的;
能够分析各层网络协议的性能、掌握通信主体的运行情况,
确认带宽分配和时延大小、查看应用的快慢并改进优化,
识别网络中存在的攻击或恶意行为、解决网络异常和故障。
Wireshark可以在Windows、Linux和macOS操作系统中运行
具备友好的图形界面、丰富的统计及图表分析功能。
\subsubsection{以太网MAC帧格式}
本实验基于使用最广泛的有线局域网以太网Ethernet II
以太网的帧结构如表\ref{tab:c:wireshark_eth-format}所示。
其中MAC地址Media Access Control Address媒体存取控制位址或称物理地址Physical Address
用于在网络中标识网卡。MAC地址的长度为48位(6个字节)
通常表示为12个16进制数00-16-EA-AE-3C-40。
其中前3个字节的16进制数00-16-EA代表网络硬件制造商的编号、即组织唯一标志符(OUI)
它由IEEE分配
而后3个字节的16进制数AE-3C-40代表该制造商所生产的某个网络产品(如网卡)的系列号。
\begin{table}[!ht]
\small
\centering
\caption{以太网帧格式}
\label{tab:c:wireshark_eth-format}
\begin{tabular}{|c|c|c|c|c|c|} \hline
\heiti 前导字符 & \heiti 目的MAC地址 & \heiti 源MAC地址 &
\heiti 类型 & \heiti IP数据报 & \heiti 帧校验\\ \hline
8字节 & 6字节 & 6字节 & 2字节 & 46-1500字节 & 4字节 \\ \hline
\end{tabular}
\end{table}
\subsubsection{ARP协议及数据报格式}
地址解析协议Address Resolution ProtocolARP
主要作用是将IP地址解析为MAC地址。当某主机或网络设备要发送数据给目标主机时
必须知道对方的网络层地址即IP地址而且在数据链路层封装成帧时
还必须有目标主机或下一跳路由器的MAC地址。
本实验重点观察最简单的情形:
同一个网段内主机A要向主机B发送信息时
ARP解析的过程主机A和B不在同一网段的情况请参阅课本相关内容。具体如下
\begin{enumerate}
\item 主机A首先查看自己的ARP表。如果找到了主机B的MAC地址
则利用这个地址对IP数据报进行帧封装并将数据报发送给主机B。
\item 如果主机A在ARP表中找不到主机B的MAC地址则以广播方式发送一个ARP请求报文。
ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址
目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。
由于ARP请求报文以广播方式发送该网段上的所有主机都可以接收到该请求
但只有被请求的主机B会对该请求进行处理。
\item 主机B比较自己的IP地址和ARP请求报文中的目标IP地址
当两者相同时进行如下处理:
将ARP请求报文中的发送端即主机A的IP地址和MAC地址存入自己的ARP表中。
然后以单播方式发送ARP响应报文给主机A其中包含了自己的MAC地址。
\item 主机A收到ARP响应报文后
将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发
同时将IP数据报进行封装后发送出去。
\end{enumerate}
ARP报文结构如图\ref{fig:c:wireshark_arp-format}所示,
ARP报文总长度为28字节MAC地址长度为6字节
IP地址长度为4字节。每个字段的含义如下
\begin{itemize}
\item \textbf{硬件类型:}指明了发送方想知道的硬件接口类型以太网的值为1。
\item \textbf{协议类型:}表示要映射的协议地址类型。IP 地址的类型值为0x0800。
\item \textbf{硬件地址长度和协议地址长度:}分别指出硬件地址和协议地址的长度,
以字节为单位。在以太网中它们的值分别为6和4。
\item \textbf{操作码op}用来表示这个报文的类型,
ARP 请求为1ARP 响应为2RARP 请求为3RARP 响应为4。
\end{itemize}
\begin{figure}[!ht]
\centering
\includegraphics[width=9cm]{arp-format}
\caption{ARP报文结构示意图}
\label{fig:c:wireshark_arp-format}
\end{figure}
\subsubsection{实验方法及手段}
使用Wireshark软件在有线局域网中捕捉相关网络操作的数据包
运用观察对比、计算验证、分析统计等方法,
掌握以太网MAC帧和IP数据报的结构以及ARP协议的工作原理。
\subsection{实验条件}
\label{subsec:c:wireshark:s:arp_requirement}
\begin{itemize}
\item PC机一台连入局域网
\item Wireshark软件建议3.0以上版本。
\end{itemize}
\subsection{实验步骤}
\label{subsec:c:wireshark:s:arp_procedure}
\subsubsection{WireShark基本使用}
\begin{enumerate}
\item 通过Wireshark官网下载最新版软件按默认选项安装。
\item 运行Wireshark软件程序界面会显示当前的网络接口列表
双击要观察的网络接口,开始捕捉数据包,
Wireshark软件选择网络接口的界面如图\ref{fig:c:wireshark_wireshark-boot-ui}所示。
\begin{figure}[!ht]
\centering
\includegraphics[width=12cm]{wireshark-boot-ui}
\caption{Wireshark软件启动界面}
\label{fig:c:wireshark_wireshark-boot-ui}
\end{figure}
\item 点击工具栏上的红色方块按钮停止捕捉。
\item 菜单、工具栏、状态栏和主窗口如图\ref{fig:c:wireshark_wireshark-main-ui}所示,
可以根据需要通过菜单“视图”以及“编辑/首选项/外观”的相关选项对基本设置进行更改。
例如图\ref{fig:c:wireshark_wireshark-setup-ui}中的语言、字体缩放、颜色、布局等项目。
\begin{figure}[!ht]
\centering
\includegraphics[width=12cm]{wireshark-main-ui}
\caption{Wireshark主窗口界面}
\label{fig:c:wireshark_wireshark-main-ui}
\end{figure}
\begin{figure}[!ht]
\centering
\includegraphics[width=12cm]{wireshark-setup-ui}
\caption{Wireshark的设置界面}
\label{fig:c:wireshark_wireshark-setup-ui}
\end{figure}
\item 使用“显示过滤器”可以方便地从捕获的数据包中筛选出要观察的数据包。
显示过滤器支持若干的过滤选项:
源MAC、目的MAC、源IP、目的IP、TCP/UDP传输协议、
应用层协议HTTP, DHCP、源端口Port、目的端口Port等。
在显示过滤器栏中输入过滤表达式(
更详细的显示过滤语法可以查看WireShark的官方文档
\footnote{
\href{https://www.wireshark.org/docs/wsug_html_chunked/ChWorkBuildDisplayFilterSection.html}
{WireShark显示过滤器语法}
}
),例如下面的命令:
\begin{itemize}
\item \texttt{arp~~~~~~~~~~~~~~~~~~~~~~~~//显示arp协议报文例如图\ref{fig:c:wireshark_wireshark-filters}}
\item \texttt{ip.src == a.b.c.d \&\& icmp~~//显示源地址为a.b.c.d的icmp报文}
\end{itemize}
\begin{figure}[!ht]
\centering
\includegraphics[width=12cm]{wireshark-filters}
\caption{显示过滤规则的示例}
\label{fig:c:wireshark_wireshark-filters}
\end{figure}
\item 通过主菜单“文件”/“导出特定分组”(如图\ref{fig:c:wireshark_wireshark-save}
可以保存捕获的网络数据(也可以先选中某些包,只保存部分数据)。
\begin{figure}[!ht]
\centering
\includegraphics[width=12cm]{wireshark-save}
\caption{操作主菜单保存数据文件}
\label{fig:c:wireshark_wireshark-save}
\end{figure}
\item 如果只想捕捉特定的数据包,
可以使用菜单“捕获”/“捕获过滤器”选定想要的类型
(如图\ref{fig:c:wireshark_wireshark-special-type})。
例如选择“IPv4 only”Wireshark只抓取ipv4类型的数据包。
Wireshark过滤器官方文档提供了更加全面详细的语法和常用示例
\footnote{\href{https://wiki.wireshark.org/CaptureFilters/\#Useful_Filters}
{WireShark常用过滤器语法}}
\begin{figure}[!ht]
\centering
\includegraphics[width=12cm]{wireshark-special-type}
\caption{选中特定的捕获类型}
\label{fig:c:wireshark_wireshark-special-type}
\end{figure}
\item Wireshark还提供了丰富的统计功能供用户选用
如图\ref{fig:c:wireshark_wireshark-statistic}
更多文档可以查询Wireshark使用帮助
\footnote{\href{https://www.wireshark.org/\#learnWS}{WireShark学习手册}}
\begin{figure}[!ht]
\centering
\includegraphics[width=12cm]{wireshark-statistic}
\caption{统计功能}
\label{fig:c:wireshark_wireshark-statistic}
\end{figure}
\end{enumerate}
\subsubsection{观察MAC地址}
启动Wireshark捕捉数据包
在命令行窗口分别ping网关和ping同网段的一台主机
分析本机发出的数据包。
重点观察以太网帧的 Destination和Source的MAC地址
辨识MAC地址类型解读OUI信息、I/G和G/L位。
\subsubsection{分析以太网的帧结构}
选择其中一个数据包点击Ethernet II展开\ref{fig:c:wireshark_eth-frame-detail}
查看MAC帧的各个字段。
\begin{figure}[!ht]
\centering
\includegraphics[width=12cm]{eth-frame-detail}
\caption{以太网帧结构展开界面}
\label{fig:c:wireshark_eth-frame-detail}
\end{figure}
\begin{figure}[!ht]
\centering
\begin{code}[text]
arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]]
[-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]
-a 显示所有接口/特定接口的当前 ARP 缓存表
-g 同 -a
-d 删除所有/指定的IP地址项
-s 在ARP缓存中添加对应InetAddr地址的EtherAddr地址静态项
\end{code}
\caption{arp命令语法及参数}
\label{fig:arp-cmd}
\end{figure}
\subsubsection{ARP协议分析}
\begin{enumerate}
\item 使用\texttt{arp d}命令(其语法见图\ref{fig:arp-cmd})
清空本机的ARP缓存
开启Wiresharkping本机的同网段地址在显示过滤器条框中输入“\texttt{arp}”,
观察捕获的ARP报文的各个字段分析请求/响应的过程。
\item 使用\texttt{arp d}命令清空本机的ARP缓存。开启Wireshark
ping与本机网段不同的IP地址或域名观察捕获的ARP报文的各个字段
分析请求/响应的过程。
\end{enumerate}
\subsection{思考题}
\label{subsec:c:wireshark:s:arp_rethink}
\begin{enumerate}
\item 使用了显示过滤器后Wireshark的抓包工作量会减少吗
\item MAC帧的长度和IP数据报的长度有怎样的关系请用你的数据记录进行验证。
\item 假设本机IP地址是192.168.0.38在本机上运行Wireshark捕获报文
使用“\texttt{ip.addr == 192.168.0.38}”作为过滤条件,
能否过滤出本机发出/收到的ARP报文为什么
\item ping同一局域网内的主机和局域网外的主机都会产生ARP报文么
所产生的ARP报文有何不同为什么
\item ARP请求数据包是支撑TCP/IP协议正常运作的广播包。
如果滥发或错发ARP广播包会产生那些不良影响如何发现和应对
\item 什么是免费 ARPGratuitous ARP它的作用是什么
请使用Wireshark进行捕捉和分析。
\end{enumerate}
\subsection{考核方法}
\label{subsec:c:wireshark:s:arp_criterion}
考核分为现场考核和实验报告两个部分,具体如下。
报告内容应包含以下内容,相关的分析解释都需要截图证明,
并与提交的Wireshark抓包数据文件相吻合。
\begin{enumerate}
\item 20分现场考核Wireshark的基本使用。
\item 30分以太网帧格式分析MAC地址类型、头部信息、长度及封装。
\item 30分结合捕捉的网络数据分析ARP数据包描述ARP协议工作过程。
\item 10分回答任意两道思考题。
\item 10分记录自己在本次实验中所遇到的问题以及心得感悟。
如果遇到异常情况,或者无法完成任务时,也请分析错误产生的原因。
\end{enumerate}