20199304 2019-2020-2 《网络攻防实践》第4周作业
本次作业属于那个课程 | 《网络攻防实践》 |
---|---|
这个作业要求在哪里 | 《网络攻防实践》第四周作业 |
我在这个课程的目标是 | 学习网络攻防相关技术、掌握网络攻防相关能力 |
这个作业在哪个具体方面帮助我实现目标 | 学习网络嗅探基本原理和工具的使用,复习TCP/IP协议基本知识 |
作业正文 | 见正文 |
其他参考文献 | 见文末 |
1.实践内容
1.1 网络嗅探
1.1.1网络嗅探概述
- 网络嗅探技术是一种常用的窃听技术,利用计算机的网络接口截获并监听数据流中所包含的隐私信息。
- 嗅探技术按照链路可以分为:有线局域网和无线局域网嗅探技术;也可以按照实现方式分为:软件嗅探器和硬件嗅探器。
1.1.2网络嗅探基本原理
-
网络嗅探技术是一把双刃剑,即可用于攻击者进行攻击,也可用于防御者进行检测。网络嗅探技术可以按照所监听的网络链路层网络进行分类,分为有线局域网和无线局域网两种。网络嗅探器按照实现方式也可以分为硬件和软件嗅探器两种。下面介绍有线局域网链路层协议——以太网为例,对网络嗅探技术的基本原理做简要介绍。
-
网络嗅探按照其定义可知其是用于对网络中传输的数据进行捕获,因此我们先了解下以太网的基本工作原理以便更好理解网络嗅探。以太网是共享信道,采用CSMA/CD(载波监听/冲突检测技术)。在以太网共享通信媒介中,网络上的站点采用广播方式因此计算机能够接收到在共享媒介上发送给其他计算机的信息。以太网数据以帧为数据单位进行传输,传输时需要加上帧头。在网卡收到以太网共享媒介上传输的数据时,如果网卡驱动程序设置为混杂模式,则其能够接收到一切通过它连接共享通信媒介的数据帧,这就可用于网络嗅探。
-
根据以太网在实际部署有线局域网方式的不同分为共享式网络与交换式网络两种。
- 共享式网络:使用集线器设备进行部署网络。由于集线器本身的特性(广播数据),因此此种方式使得在同一集线器上连接的所有主机在发送数据包时,都会发往每一台主机,因此其中任一主机都能够嗅探整个集线器上的全部网络流量。
- 交换式网络:使用交换机进行部署的网络。交换机内存中保存了MAC-端口映射表这便于交换机转发数据(具体的原理可百度或见教材)
- 还有下面的几种技术手段也可实现网络嗅探:(1)MAC地址泛红攻击(2)MAC欺骗(3)ARP欺骗
1.1.3网络嗅探软件
- 类Unix平台下的嗅探软件:libpcap、tcpdump、wireshark和dsniff、sniffit等等
- windows平台下的嗅探软件:wireshark、snifferPro等等
1.1.4网络嗅探的检测与防范
-
网络嗅探检测:同一主机上,可以通过检查网卡是否运行在混杂模式下,来发现正在监听的嗅探器。许多版本的linux内核只检查数据包中的IP地址以确定是否送到IP协议栈,因此可以构造MAC地址无效而IP。
-
网络嗅探防范:采取一系列措施达到减少或消除网络嗅探对网络数据所造成的安全危险。以下为四种措施:
- 使用安全的网络拓扑,尽量将共享式网络升级为交换式网络。
- 用静态ARP或者MAC-端口映射表代替动态机制,能够防范MAC地址欺骗、ARP欺骗等。
- 重视网络数据传输的集中位置点的安全防范。比如网关、路由器、交换机等重要区域。
- 避免使用明文传输口令或敏感信息的网络协议,使用加密及安全增强的网络协议。
1.2网络协议
1.2.1网络协议分析技术
-
网络协议分析技术原理:对网络上传输的二进制格式数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
-
网络协议分析技术的具体流程:通过嗅探得到链路层原始二进制数据包、对以太网帧进行结构分析、对IP数据包进行分析、确定具体的应用层协议、对数据进行整合恢复,得到实际传输数据。
1.2.2网络协议分析工具Wireshark
-
作用:对网络数据进行分析,主要作用是捕获网络数据包,对于数据包进行协议分析时尽可能地显现详细情况。被应用于多个安全领域。
-
wireshark过滤命令:
- 端口过滤:例如过滤TCP协议端口号为80的包,tcp.port80;只过滤TCP协议源端口号为80的包,tcp.srcport80;过滤TCP协议目的端口号为80的包,tcp.dstport==80。
- ip过滤:例如过滤源ip地址的包,ip.src192.168.200.125;例如过滤目的ip地址的包,ip.dst192.168.200.125
- 协议过滤:在过滤框中输入协议名称即可。
- http模式过滤:
- 过滤get包,http.request.method=="GET"
- 过滤post包,http.request.method=="POST"
2.实践过程
实践一、动手实践tcpdump
-
问题: 使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问题:你在访问www.tianya.cn网站首页时,浏览器将访问多少个Web服务器?他们的IP地址都是什么?
-
答案:(kali虚拟机环境下)
-
1.首先查询本机ip地址为:
192.168.200.3
-
2.使用浏览器输入天涯的链接
www.tianya.cn
-
3.使用
sudo tcpdump src 192.168.200.3 and tcp dst port 80
命令捕获80端口的TCP协议数据包,监听192.168.200.3的http通信
-
可以看到ip:
117.18.237.29
和124.225.65.154
-
使用
nslookup www.tianya.cn
查看天涯的ip为124.225.65.154
核实上述tcpdump已抓取到天涯的数据包
实践二、利用Wireshark分析嗅探的数据包
-
问题: 使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
-
1.你所登录的BBS服务器的IP地址与端口各是什么?
-
2.TELNET协议是如何向服务器传送你输入的用户名及登录口令?
-
3.如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
-
答案:
-
1.实践环境是在kali,首先开启wireshark,并选择eth0网卡
-
2.以复旦大学BBS为例,在终端输入命令
luit -encoding gbk telnet bbs.fudan.edu.cn
-
3.到wireshark查看网络动态,在filter框过滤只显示telnet协议的数据,我们发现它的ip地址是202.120.225.9,端口号是23
-
4.使用wireshark的tcp追踪流查看数据:可以看到我输的用户名和密码分别是
lbs
和20199304
-
分析:telnet是明文传输,是十分不安全的。经过查找,Telnet远程登录服务分为以下4个过程:
- (1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
- (2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式 传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包;
- (3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
- (4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。
实践三、取证分析实践:解码网络扫描
-
问题: 人为构造的到一台蜜罐主机的5次不同类型的端口扫描。
-
1.攻击主机的IP地址是什么
-
2.网络扫描的目标IP地址是什么
-
3.本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的
-
4.你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理
-
5.蜜罐主机上哪些端口被发现是开放的
-
6.攻击主机的操作系统是什么
解答 -
先用用wireshark打开listen.pcap
-
问题1.2:打开下载好的 listen.pcap,我们发现攻击机的ip是
172.31.4.178
,网络扫描的ip是172.31.4.188
-
问题2.3:通过snort命令,可以发现攻击机使用nmap发起端口扫描的,使用如下代码:
-
安装
sudo apt-get update
snort:sudo apt-get install snort
-
使用命令
sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r ./listen.pcap
(-A开启报警模式,-q不显示状态报告,,-u为初始化后改变snort的UID,-c为使用后面的配置文件,进入IDS模式,-r从pcap格式的文件中读取数据包)
-
问题四:你所分析的日志文件中,攻击者使用了哪种扫描方法,扫描的目标端口是什么,并描述其工作原理。
-
在每次扫描前,nmap会通过arp更新目标MAC地址,如图共更新了四次。所有nmap共攻击了四次。
- 由下图可知,第一个RAP与第二个之技安没有数据包,所以可以确定第一次是采用
namp -sP
进行主机活跃探测。
- 接下来,我们看第二次扫描,将抓包过程挪到第二次扫描的末端,可以看到攻击机在UDP、TCP、SSH端口上使用了大量标志位。由此可知,第二次扫描使用了
namp -o
。
-
接下来观察第三次扫描,第三次扫描的往返是13W数据包,估计扫描端口六万多,所以应该是指定端口扫描,使用
namp -sS -p 1-65535
(猜测是全端口扫描),其中-p指定扫描的端口数。
-
通过filter的指令tcp.flags.syn == 1 and tcp.flags.ack == 1,根据过滤之后的结果可以看出,端口21、22、23、25、53、80、139、445、3306、5432、8009、8180是开放的。
3.学习中遇到的问题及解决
-
问题1:在安装snort时
snort:sudo apt-get install snort
,提示错误
-
问题1解决方案:参照博客 更新APT库
sudo apt-get update
-
问题2:在解决问题1时,kali虚拟机断网
-
问题2解决方案:参照博客
-
问题3:在解决问题1时,更新APT库也无效
-
问题3解决方案:通过询问孙启龙大佬,虚拟机换源
4.实践总结
通过本次作业,感觉个人内心又强大了很多;学到了许多知识,例如kali虚拟机断网问题的解决,可以通过wireshark监听目标主机,然后获取密码(这次是telnet,获取的是明文密码)。但是对nmap的原理还不太熟练,需加强。