20199102 2019-2020-2 《网络攻防实践》第四周作业
20199102 2019-2020-2 《网络攻防实践》第四周作业
0 总体结构
本次作业属于那个课程 | 《网络攻防实践》 |
---|---|
这个作业要求在哪里 | 第四次作业 网络嗅探与协议分析 |
我在这个课程的目标是 | 学习网络攻防相关技术、掌握网络攻防相关能力 |
这个作业在哪个具体方面帮助我实现目标 | 实施网络嗅探,解析网络传输的敏感信息 |
作业正文 | 下述正文,1,2,3, 4部分 |
其他参考文献 | 见正文最后部分 |
1.实践内容
1.1 网络嗅探
- 网络嗅探概述
- 网络嗅探技术是一种常用的窃听技术,利用计算机的网络接口截获并监听数据流中所包含的隐私信息。
- 嗅探技术按照链路可以分为:有线局域网和无线局域网嗅探技术;也可以按照实现方式分为:软件嗅探器和硬件嗅探器。
- 网络嗅探的原理与实现
- 以太网工作原理介绍:以太网通过使用CSMA/CD协议的共享通信信道进行消息传输。以太网中的数据以帧为单位,将上层的数据包装配上帧头和帧尾,通过MAC地址匹配数据包的目标。当网卡处于混杂模式下,能够接受一切通过它连接的以太网络的数据帧。
- 共享式网络和交换式网络:通过集线器进行连接的网络称为共享式网络,其网络拓扑呈总线的形式,这种连接方式导致同一集线器上的任一主机的数据包将发送到每一台主机;通过交换机连接的网络称之为交换式网络,在交换机中存在“MAC地址-端口映射表”,与交换机相连的任意主机的数据包将定向发送到特定的网卡。
- 交换式网络中的网络嗅探技术:MAC地址洪泛攻击、MAC欺骗、ARP欺骗
- 不同平台网络嗅探技术实现:类UNIX平台下,用户态的libpcap与内核态的BPF和过滤机制进行配合,共同提供UNIX平台的网络嗅探接口;windows平台下,通过与libpcap相容的WinPcap进行抓取。
- 网络嗅探软件
- 类Unix平台下的嗅探软件:libpcap、tcpdump、wireshark和dsniff、sniffit等等
- windows平台下的嗅探软件:wireshark、snifferPro等等
- 网络嗅探的检测与防范
- 网络嗅探的检测:网络嗅探是一种被动的攻击手段,较为难以检测。可以通过探测网卡是否处于混杂模式来进行检测,或者通过构建MAC地址不合法但是IP地址有效的ICMP Echo请求进行测试网卡是否处于混杂状态。
- 网络嗅探的防范措施:使用更加安全的网络拓扑,严格隔离各个以太网;使用静态ARP和“MAC-端口映射表”;重视网络安全中集中位置点的安全防范; 避免使用明文传输口令或敏感信息的网络协议。
1.2 网络协议分析
- 网络协议分析技术
- 网络协议分析技术原理:对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
- 网络协议分析技术的具体流程:通过嗅探得到链路层原始二进制数据包、对以太网帧进行结构分析、对IP数据包进行分析、确定具体的应用层协议、对数据进行整合恢复,得到实际传输数据。
- 网络协议分析工具Wireshark
- 过滤源ip、目的ip:在wireshark的过滤规则框Filter中输入过滤条件。如查找目的地址为
192.168.101.8
的包,ip.dst==192.168.101.8
;查找源地址为ip.src==1.1.1.1
- 端口过滤:如过滤80端口,在Filter中输入,
tcp.port==80
,这条规则是把源端口和目的端口为80的都过滤出来。使用tcp.dstport==80
只过滤目的端口为80的,tcp.srcport==80
只过滤源端口为80的包 - 协议过滤:比较简单,直接在Filter框中直接输入协议名即可,如过滤HTTP的协议
- http模式过滤:如过滤get包,
http.request.method=="GET"
,过滤post包,http.request.method=="POST"
- 连接符and的使用:过滤两种条件时,使用and连接,如过滤ip为
192.168.101.8
并且为http协议的,ip.src==192.168.101.8 and http
。
- 过滤源ip、目的ip:在wireshark的过滤规则框Filter中输入过滤条件。如查找目的地址为
2.实践过程
作业一:动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
- 在terminal运行命令
sudo tcpdump src 172.16.6.112 and tcp dst port 80
(中间的IP地址要用本机IP)
-
从中可以看到系统发出了四次目标为对方80端口的请求,共计访问了两个web服务器,地址为
124.255.135.230
和124.255.135.154
(之前看书的时候做了一遍实验,写作业的时候,应该是调用了chrome的缓存,导致部分资源直接从本地加载) -
通过
nslookup tianya.cn
命令查看www.tianya.cn
对应的IP地址,验证我们tcpdump的正确性。
作业二:动手实践Wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
- 你所登录的BBS服务器的IP地址与端口各是什么?
- TELNET协议是如何向服务器传送你输入的用户名及登录口令?
- 如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
-
BBS服务器的IP地址为
202.120.255.9
,端口为23
, Wireshark截图如下 -
TELNET协议在传输用户名和口令的时候,通过明文进行传输在上有图和下图中部可以看到用户名
guest
-
利用Wireshark分析嗅探的数据包,并从中获取你的用户名和密码。可以看到账号为
guest
,密码为空。截图如下:
作业三:取证分析实践,解码网络扫描器
-
攻击主机的IP地址是什么?
-
网络扫描的目标IP地址是什么?
-
本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
-
你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
-
在蜜罐主机上哪些端口被发现是开放的?
-
攻击主机的操作系统是什么?
-
攻击的IP地址是
172.31.4.178
, 网络扫描的目标IP是172.31.4.188
。 下述第一张图可以看出数据流量主要出现在上述两者之间,下述第二张图显示出172.31.4.178
为攻击方。 -
本次攻击是使用nmap发起的,通过使用
snort
和可视化的Websnort
进行分析可以得到这个结论。sudo apt-get install snort sudo update-rc.d snort disable sudo chmod 777 /etc/snort/snort.conf 如果没有安装pip这里插一句 sudo apt-get install python-pip sudo pip install websnort 下面第二张图的命令是 sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r ~/listen.pcap 下面第一张图的命令是 websnort 后打开浏览器localhost:8080,具体端口可能会发生变化。
-
攻击者使用了nmap的
-sP
、-O
、-sS
和-sV
四种方法。下面我们将分析如何确定扫描的次数、每种扫描的特征和每种扫描的工作原理。接下来的原理比较枯燥,但是分析比较精彩,没用相关软件纯手动分析。-
首先使用Wireshark的过滤器扫描出arp包(在每次扫描之前,nmap会通过arp更新目标MAC地址),在这里我们只关注攻击机和靶机之间的arp包 。此外nmap的
-sP
命令也就是通过枚举网段全部ip对应的arp请求实现,若目标机器回复IP is at MAC
,则表示当前主机处于在线状态。 (关于arp的相关信息可以看我的笔记 )。通过下图我们不难看出攻击机共向靶机发出过四次arp
请求,说明共进行四次nmap
扫描。其中第一次和第二次arp
之间并没有数据包,所以第一次arp
单独作为一次扫描,也就是参数为-sP
的扫描。至此我们知道, 一共进行四次扫描, 第一次扫描的参数是-sP
。 截图如下
-
接下来我们进行第二次过滤,这一次我们以特定的端口为例使用的过滤器命令为
tcp.port == 22
。在TCP的端口中,某些端口是确定的,比如22
端口用于ssh
登录。我们对22端口进行分析,可以看到攻击机对靶机的22端口进行了四次扫。第一次扫描的过程为([SYN]->[SYN,ACK]->[RST])
, 第二次扫描的过程为([SYN]->[SYN,ACK]->[SYN])
, 第三次扫描的过程为([SYN]->[SYN,ACK]->[SYN])
,第四次扫描为([SYN]->[SYN,ACK]->[ACK]->[SSH]->[ACK]->[FIN,ACK]->[FIN,ACK]->[ACK])
。即使你不懂,也能看出第四次扫描的过程好TM长。第一次、第二次和第三次仅仅确定目标端口打开(返回SYN
)后就RST
终端连接,但是第四次却反常的建立了SSH
连接,此处就是为了探知靶机的SSH
软件版本。就此我们知道第三次和第四次对22
端口的扫描实际上是一体的,第三次用来发现22
端口是否打开,第四次探知22
端口服务的软件版本。由此可知,第三次和第四次扫描的参数为-sV
。相关截图如下。
-
接下来进行第三次分析。我们可以看到第三次扫描的端口数大致往返包大致为12W,考虑到靶机多数端口都处于关闭状态,整体数据流应为([SYN]->[SYN, ACK])大小为2,故大致扫描了6w个端口。考虑到nmap默认只能扫描1000个端口,则第三次扫描的参数只能为
-sS
来人为指定扫描端口的数量。 -
至此只还剩下了第二次扫描,通过wireshark过滤器
tcp.port == 57738 and tcp.flags.syn == 1 and tcp.flags.ack == 0
查看具体扫描的端口。不难发现,此次扫描不是按照顺序进行的扫描,而是选择了具有特定端口对照表中的端口进行对照。端口对照表可以在这里看到,因此大胆猜测第二次扫描的参数是-O
。如何证明是-O
在下文会说, 下面是这一步的截图(其实建国的方法更好,可以参考他的博客) -
接下来的问题就是系统版本的问题,在这里可以供我们使用的参数不多。通过查看上文的
22
端口的ssh
数据包可以捕获如下信息:ttl=64
、ssh
版本为SSH-2.0-OpenSSH_4.7p1 De
。通过相关百度,大胆猜测系统应为linux 2.4以上版本
。下面使用p0f
进行验证,命令为p0f -r ~/listen.pcap
(后面的参数是listen.pcap
文件放置的位置)。具体图片如下: -
最后,靶机上那些端口是开放的。通过过滤器的
tcp.flags.syn == 1 and tcp.flags.ack == 1
的扫描即可找到答案21、22、23、25、53、80、139、445、3306、5432、8009、8180
。截图如下。
-
作业四 攻击方用nmap扫描,防守方用tcpdump进行嗅探,用wireshark分析并分析出攻击方的扫描目的并以及每次使用的nmap命令
-
具体的分析方法在上文已经提到,下面展示tcpdump的相关使用方法和wireshark截图
-
使用kali和win2Kserver进行相关实践,kali为
192.168.200.3
,win2Kserver为192.168.200.126
。 -
在kali上运行命令
tcpdump -i eth0 -w listen.pcap
和nmap -O 192.168.200.126
(第一句命令在局域网中任何一台机器上运行都可以)。 -
将
listen.pcap
导入wireshark查看, 以上步骤截图如下。- tcpdump运行过程与结果
-
nmap -sP 192.168.200.126
-
nmap -O 192.168.200.126
-
nmap -sS 192.168.200.126
-
nmap -sV 192.168.200.126
3.学习中遇到的问题及解决
- 问题1:
listen.pcap
文件老师没给 - 问题1解决方案:自己百度到了,但愿没错,不然作业白做了。
- 问题2:自己只用wireshark做过抓包和协议分析,并没有做过网络扫描的取证分析实践。
- 问题2解决方案:youtube上确实有不少关于nmap使用wireshark分析的教程。如果不出意外我将会搬运到我的bilibili
4.实践总结
对nmap的原理掌握还是不够牢固,导致在用wireshark分析nmap数据包的时候走了不少弯路。好在最后想明白了相关扫描的关键区别,最后完成作业。