20211901 2021-2022-2 《网络攻防实践》第三次作业
1.实验内容
1.1网络嗅探
网络嗅探定义
网络嗅探(Sniff)是一种黑客常用的窃听技术,网络嗅探的基础是数据捕获,网络嗅探系统是并接在网络中来实现对于数据的捕获的,这种方式和入侵检测系统相同,因此被称为网络嗅探,网络嗅探是网络监控系统的实现基础。
网络嗅探的原理
①以太网工作原理:以太网通过使用CSMA/CD协议的共享通信信道进行消息传输。以太网中的数据以帧为单位,将上层的数据包装配上帧头和帧尾,通过MAC地址匹配数据包的目标。当网卡处于混杂模式下,能够接受一切通过它连接的以太网络的数据帧。
②共享式网络和交换式网络:在共享式网络中,当主机A向主机C发送数据包时,集线器先接收到数据,然后再把它所接收到的数据发送到所有接口,所以集线器上所有接口所连接的主机上的网卡也能收到数据,如主机B网卡如果处于混杂模式,就可以嗅探到主机A到主机C的通信数据包。集线器的这种工作模式决定了在同一集线器上连接的所有主机在发送数据包时,都会发往每一台主机,因此其中任一主机都能够嗅探整个集线器上的全部网络流量。
③类Unix平台的网络嗅探技术实现:类UNIX平台的网络嗅探技术主要通过内核态的BPF (Berkelev Packet Filter)和用尸态的libpcap抓包工具库实现。
④windows平台下的网络嗅探实现技术:Windows操作系统内核并不提供标准的网络嗅探与抓包接口,因此需要通过增加一个驱动程序或网络组件来访问内核网卡驱动中捕获的数据包,而目前最常用的是与类UNIX平台上的BPF模块兼容的NPF (NetGroup Packet Filter)。
网络嗅探软件
- 类Unix平台:libpcap、tcpdump、wireshark和dsniff、sniffit
- windows平台:wireshark、snifferPro
网络嗅探的检测与防范
- 网络嗅探的检测:网络嗅探属于一种被动式非干扰性的攻击手段,具有很高的隐蔽性,因此对网络嗅探的检测比较困难,但仍然有一些技术方法能够对网络中的嗅探器进行检测。在同一主机.可以通过检查网卡是否运行在混杂模式下,来发现正在进行监听的嗅探器。此外,也可基于混杂模式下操作系统和协议栈的不同特性,来检测出网络中其他主机上的嗅探器。
- 网络嗅探的防范措施:使用更加安全的网络拓扑,严格隔离各个以太网;使用静态ARP和“MAC-端口映射表”;重视网络安全中集中位置点的安全防范; 避免使用明文传输口令或敏感信息的网络协议。
1.2网络协议分析
网络协议分析技术
- 网络协议分析技术原理:对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
- 网络协议分析技术的具体流程:通过嗅探得到链路层原始二进制数据包、对以太网帧进行结构分析、对IP数据包进行分析、确定具体的应用层协议、对数据进行整合恢复,得到实际传输数据。
网络协议分析工具Wireshark
wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就wireshark.
2.实验过程
2.1动手实践tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
①打开ubuntu虚拟机,输入命令:sudo tcpdump src 192.168.1.108 and tcp dst port(中间的IP为虚拟机自身的IP,该命令表示所有由主机发出的,SYN位置1,ACK位置0的,发往端口80(http)的数据包)。网页访问 www.tianya.cn,此时终端可以看到抓取的数据包详情。和tianya服务器建立连接也就是TCP的三次握手,访问了多少web服务器关键就在于TCP握手阶段。记录监听结果如下,打开天涯的过程中,总共捕获了363个数据包。
②可以看到IP有
124.225.65.170
104.18.30.182
82.221.107.34
124.225.65.155
124.225.69.77
124.225.206.22
③输入nslookup www.tianya.cn查看天涯的ip为124.225.65.154核实上述tcpdump已抓取到天涯的数据包
2.2动手实践Wireshark
- 使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
你所登录的BBS服务器的IP地址与端口各是什么?
TELNET协议是如何向服务器传送你输入的用户名及登录口令?
如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
首先解释一下Telnet:
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
winxp虚拟机里面自带telnet并且有wireshark软件,于是我就在winxp里面做了这个实践
①打开cmd输入命令行telnet bbs.fudan.edu.cn进入界面如下图,开始输入命令行的时候不可行,需要把Telnet打开。发现其IP为202.120.225.9,然后注册再重新登录,通过查看wireshark可知其端口号为23
②在wireshark的最下面的一栏,是这些,这些是什么意思呢?
我的理解时,计算机中的数据是以二进制存储的,那么2个16进制数就组成了一个8位的二进制数,对应一个ASCII码
③首先是DNS找到网关的IP为192.168.200.1;TCP协议三次握手;最后是telnet传输;使用Telnet协议进行远程登录时需要满足以下条件:在本地计算机上必须装有包含Telnet协议的客户程序;必须知道远程主机的Ip地址或域名;必须知道登录标识与口令。。telnet远程登录服务分为以下4个过程:
- 本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
- 将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据报;
- 将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
- 最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。
下图红框描述了三次握手的过程:
第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,seq=x
第二次:服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。ACK=1,ack=x+1,SYN=1,seq=y
第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常.seq=x+1,ACK=1,ack=y+1
④由Telnet数据可知,Telnet协议是以明文的形式向服务器传送输入的用户名及登录口令,可以看出,这里的用户名为jxyjxy,登录口令为123456,注意这里的问题是登录口令,不是密码,这是因为在网络安全中,口令一般由简单的字符串组成,不能起到数据保护的作用,我们经常说的微信密码,QQ密码,其实严格意义上来讲只是口令而不是密码,而密码是一个非常专业的词语,大家经常听到的加密、解密、签名等词汇和密码紧密相连,密码是指用特定的变换对数据信息进行加密保护或者安全身份认证的物质和技术。可以看出Telnet很不安全,我设置的口令是简单的123456,但即使设成jqiJUHI!@$#^*)+"48DIkd,这个口令包含大小写,数字和特殊字符,即便如此,也是不安全的,反而给登陆者增加了麻烦。
2.3取证分析实践,解码网络扫描器(listen.cap)
- 攻击主机的IP地址是什么?
- 网络扫描的目标IP地址是什么?
- 本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
- 你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
- 在蜜罐主机上哪些端口被发现是开放的?
- 攻击主机的操作系统是什么?
①打开kali攻击机,使用sudo apt-get install snort安装snort软件,我在输入这个指令安装时显示安装失败了,然后我在网上找了中科大和阿里云的源更新了一下,更新过程如下:
源的网站:https://blog.csdn.net/single_g_l/article/details/122138859
②输入sudo apt-get install snort安装snort,安装完毕后输入指令:
sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r ./Desktop/listen.pcap,这里/Desktop/listen.pcap是指文件路径,因为我是将listen.pcap放在了kali的桌面。由扫描结果可知: 攻击主机的IP地址是172.31.4.178,网络扫描的目标IP地址是什么172.31.4.188,并且是使用了nmap工具进行扫描
③接下来我们用wireshark打开listen.pcap进行数据分析,在控制台中输入sudo wireshark打开wirkshark软件,打开后的界面如下
④攻击机在每次要发起攻击之前,nmap工具会向靶机发送ARP请求包,从而能确认靶机是否还是活跃的状态,ARP是地址解析协议,主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址,因此,我们可以把广播形式的ARP数据包作为攻击机要开启攻击的一个标志。我们看下面的这个图,很生动的描述了这个过程,who has 172.31.4.188? Tell 172.31.4.178,就是攻击机问网络中的其他主机,你们谁是ip地址为172.31.4.188的主机,快告诉我。
⑤要分析工作原理,关键在于对攻击机和靶机之间数据包的特点进行分析。首先要弄清楚进行了几次nmap扫描,筛选ARP协议,由图中信息可知,总共进行了4次ARP扫描,扫描的起点分别是5,7,2071和133220,下面我们对这四个扫面一一分析:
(1)攻击机第一次nmap扫描和第二次nmap扫描之间没有数据包的往来,那么可以断定第一次nmap扫描的目的是为了判断目标靶机是否处于活跃状态,对应nmap的命令为:nmap -sP 172.31.4.188
(2)第二次扫描的数据包来往没有第三次那么多,那么初步判断第二次并不是对所有的端口进行扫描,在第二次扫描的最后,攻击机向靶机发送了TCP,UDP,ICMP格式的数据包,根据nmap -O的原理,在Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中), 根据返回的数据包生成系统指纹与样本库作比较,查找匹配的系统, 如果无法匹配,则以概率形式列举出可能的系统。这次扫描对应的nmap命令为nmap -O 靶机IP
(3)和前两次相比,第三次扫描有大量的数据包往来,从2071一直到133221,往返的是13万数据包, 扫描了6万多的端口,端口号是0-65535,所以是全端口扫描,对于的nmap命令为nmap -sS
(4)第四次扫描,筛选端口tcp.port==80,80端口是为HTTP即超文本传输协议对外开放的,在这次扫描中,建立了HTTP连接,因此这次对应的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进行验证操作系统的版本,结果如下:
3.学习中遇到的问题及解决
- 问题1:安装snort软件失败
- 问题1解决方案:更新源
4.学习感悟、思考等
本次实验虽然操作不难,但是要理解背后的原理还是需要下功夫的,本科时学计算机网络的知识就是停留在书面上,这次是知识的应用,感觉很有收获,我写的博客有部分不懂的地方是提出了自己的想法,不知道对不对,如果有其他想法的同学欢迎和我交流讨论
参考资料
- 《网络攻防技术与实践》
- https://blog.csdn.net/weixin_43291459/article/details/102792389
- https://blog.csdn.net/weixin_34356138/article/details/89909267
- https://www.cnblogs.com/hyddd/archive/2009/01/21/1379531.html
- https://blog.csdn.net/qq78069460/article/details/79153895
- https://blog.csdn.net/weixin_43318134/article/details/104102925