20199112 2019-2020-2 《网络攻防实践》第 4 周作业
实践内容及过程
网络嗅探技术定义
网络嗅探(Sniff)是一种黑客常用的窃听技术,它利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。
网络嗅探的危害和作用
危害:
- 被动地、静默地嗅探数据,窃取机密信息;
- 嗅探底层网络协议信息,为发起进一步攻击收集信息;
- 为攻击者进行中间人攻击提供帮助;
- 隐蔽性强,难以被发现。
应用价值:
- 网络管理员可以找出网络中的潜在问题,并加以解决;
- 为网络入侵检测系统提供底层数据来源基础,捕获原始网络传输报文,由检测系统发现入侵迹象;
- 开发网络应用的程序员,可用于实际捕获与分析所开发应用程序的网络报文收发情况,并对之进行分析。
网络嗅探技术与工具分类
按照所监听的链路层网络分类 | 按照实现形式分类 |
---|---|
以太网、Wi-Fi | 软件嗅探器、硬件嗅探器 |
以太网
以太网是一种计算机局域网技术。IEEE 组织的 IEEE 802.3 标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是目前应用最普遍的局域网技术,取代了其他局域网技术如令牌环、FDDI 和 ARCNET。
类 Unix 平台网络嗅探器软件
(1)libpcap 抓包开发库
libpcap 是类 Unix 平台上基于内核态 BPF 向应用程序提供的标准抓包开发库。
(2)tcpdump 嗅探器软件
tcpdump 是最老的也是最通用的嗅探器程序。它提供命令行模式,支持使用 BFP 语法的过滤条件进行网络上数据包的选择性嗅探,然后进行 TCP/IP 协议栈的协议分析,并以每行一个数据包捕获内容的方式呈现嗅探结果。
(3)wireshark 嗅探器软件
wireshark 是当前类 Unix 平台下最好的基于图形界面的嗅探器软件。
Tcpdump 嗅探器软件
TCPDump 可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供 and、or、not 等逻辑语句来帮助你去掉无用的信息。
网络嗅探的检测
- 在同一主机上,可以检查网卡是否运行在混杂模式下,来发现正在进行监听的嗅探器;
- 基于混杂模式下操作系统和协议栈的不同特性,来检测出网络中其他主机上的嗅探器。
网络嗅探器的防范措施
- 采用安全的网络拓扑,尽量采用交换式网络,并通过在交换机上设置 VLAN 等技术手段,对网络进行合理的分段,从而尽量使得网络包只被转发到目的主机上;
- 用静态 ARP 或者 MAC-端口 映射表代替动态机制;
- 重视网络数据传输的集中位置点的安全防范,如网关、路由器、交换机等;
- 避免使用明文传输口令或敏感信息的网络协议,而使用加密及安全增强的网络协议进行替代。
实践:Tcpdump
使用 Tcpdump 对在本机上访问 www.tianya.cn 网站过程进行嗅探,回答问题:浏览器将访问多少个 Web 服务器?它们的 IP 地址是什么?
打开终端,输入以下命令:
sudo tcpdump -nn '(tcp[tcpflags] & tcp-syn !=0 and tcp[tcpflags] & tcp-ack!=0) and (host 192.168.1.12)'
其中 192.168.1.12
是本机的 IP 地址,上述命令抓取 SYN 和 ACK 不为 0 的数据包,关于二者的含义详见参考文献。
输入命令后,浏览器访问 www.tianya.cn ,终端有如下输出:
可知访问的 Web 服务器有:
IP | 位置 |
---|---|
124.225.65.154 | 海南省海口市 电信 |
124.225.214.206 | 海南省海口市 电信 |
106.120.159.126 | 北京市 电信 |
124.225.135.230 | 海南省三亚市 电信 |
103.79.25.53 | 北京市海淀区 BGP多线 |
218.77.130.200 | 海南省海口市 电信 |
124.225.214.214 | 海南省海口市 电信 |
网络协议分析技术原理
- 首先网络嗅探得到的原始数据是在链路层传输的二进制数据包,大多数情况是以太网数据帧;
- 对以太网数据帧进行结构分析,定位出帧头各字段结构,根据帧头的 type 字段确定网络层协议类型,大多数情况是 IP 协议,并提取数据帧中包含的网络层数据内容;
- 进一步对 IP 数据包进行分析,如果设置了分位片,则进行 IP 分片重组,根据 IP 协议头中的 Protocol 字段,确定传输层协议类型,通常情况是 TCP 或 UDP,并提取 IP 数据包中的传输层数据内容;
- 继续根据 TCP 或 UDP 的目标端口确定具体的应用层协议,如 http、ftp、telnet 等协议数据包,并对 TCP 或 UDP 数据包进行拼接重组,得到应用层特定协议的应用交互内容;
- 依据相应的应用层协议对数据进行整合恢复,得到实际传输的数据。
Wireshark
Wireshark(前称 Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换。在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal 的出现改变了这一切。在 GNUGPL 通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal 是全世界最广泛的网络封包分析软件之一。
实践:Wireshark
使用 Wireshark 软件对在本机上以 telnet 方式登录 BBS 进行嗅探与协议分析,回答:
- 你所登录的 BBS 服务器的 IP 地址与端口各是什么?
- telnet 协议是如何向服务器传送你输入的用户名及登录口令的?
- 如何利用 Wireshark 分析嗅探的数据包,并从中获取你的登录名及登录口令?
打开 Wireshark,开启捕获。
打开终端,输入以下命令访问复旦大学 BBS:
telnet bbs.fudan.edu.cn
抓包结果:
由上可知,服务器 IP 为 202.120.225.9,端口为 23
Telnet 使用明文传输用户名和密码。
在终端中,使用“guest”用户登录 BBS。
在 Wireshark 的过滤规则中输入 telnet,可查看所有使用该协议的数据包,如下图,依次可找到 Data 项中刚才登录的 “guest” 用户名字符串(单字符传送):
其他字符数据截图省略。
取证分析实践:解码网络扫描
下载老师提供的 pcap 包,使用 Wireshark 打开,依次打开 Statistics - Conversations
可知,攻击机 IP:172.31.4.178,网络扫描的目标 IP:172.31.4.188
打开 kali 实验环境,安装 snort 工具,对上述 pcap 包进行入侵检测:
sudo apt-get install snort
给予所有权限:
sudo chmod 777 /etc/snort/snort.conf
进入 pcap 包所在目录后,执行:
sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r listen.pcap
由此可见,攻击机使用 nmap 扫描目标网络。
以下对扫描过程进行分析:
首先筛选 ARP 数据包,下图中第5、6、7、8号数据包之间没有额外的其他数据包,所以可以知道这是采用 namp -sP
探测活跃主机。
接下来筛选 tcp.port == 57738 and tcp.flags.syn == 1 and tcp.flags.ack == 0
,表示tcp 端口 57738 发送 tcp 请求但无回应。此次扫描基本囊括了靶机上的所有协议和服务,所以猜测是进行了 namp -O
扫描靶机上安装的操作系统。
如下图,第三次扫描大致的往返包是 12W,大致扫描了 6W 个端口。由于 nmap
默认只能扫描 1000 个端口,因此可以猜测第三次扫描应该是用命令 nmap -sS
人为指定端口数量。
筛选 tcp.port == 23
(23 为 telnet 端口)过滤文件数据。发现攻击机对靶机进行 4 次扫描过程。不难看出在第一、二、三次扫描都只是建立了连接就结束了,但在第四次扫描的时候出现了 telnet 连接;如果使用命令 tcp.port == 22
(22 为 ssh 端口)同样可知第一、二、三次都是建立连接,第四次出现了 ssh 连接,所以猜测第四次 nmap
扫描使用了命令 nmap -sV
探测靶机上开放的网络服务。
确定端口:筛选 tcp.flags.syn == 1 and tcp.flags.ack == 1
,可以得到:
端口有:21、22、23、25、53、80、139、445、3306、5432、8009、8180
确定操作系统:
首先安装 p0f:
sudo apt-get install p0f
使用以下命令探测:
sudo p0f -r listen.pcap
由上图可知,系统为 Linux 2.6.x
攻防对抗实践
kali 攻击机 IP:192.168.237.128
靶机 IP:192.168.119.128
靶机监控:sudo tcpdump -i eth0 -w dump.pcap
攻击机攻击:sudo nmap -sP 192.168.119.128
靶机查看日志:sudo tcpdump -r dump.pcap
上图中“who-has”字段内容表示靶机被探测了主机活跃状态。
学习中遇到的问题及解决
Q:系统没有 telnet
A:通过 brew install telnet
安装
Q:由于网络原因,包管理工具 Homebrew 无法正常安装
A:换源安装:Homebrew 国内一步安装
Q:telnet 访问复旦大学 BBS 出现乱码
A:终端设置中选择中文编码
Q:博客园上传的图片有时候无法正常显示
A:可能是图床服务器出现了问题,考虑更换图床:https://sm.ms
实践总结
本次实践内容是有一定难度的,需要很多计算机网络方面的专业知识,否则很难去理解每一步的含义。