20199116 2019-2020-2 《网络攻防实践》第四周作业
前言
问题 | 解答 |
---|---|
这个作业属于哪个课程 | 《网络攻防实践》 |
这个作业的要求在哪里 | <作业要求> |
我在这个课程的目标是 | 熟练掌握网络攻防知识 |
这个作业在哪个具体方面帮助我实现目标 | 学习Linux操作命令以及虚拟机的应用;学习网络攻防知识,为以后研究打下基础 |
作业正文 | 如下 |
其他参考文献 | 见正文最后 |
1.实践内容
1.1网络嗅探
- 网络嗅探技术定义:
- 网络嗅探是一种黑客常用的窃听技术。与传统的电话窃听相类似,网络嗅探利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。
- 实现网络嗅探技术的工具称为网络嗅探器。嗅探器捕获的数据报文是经过封包处理之后的二进制数据。因此,通常会结合网络协议分析技术来解析嗅探到的网络数据,这样才能恢复出TCP/IP协议栈上各层网络协议的内容。以及实际发送的应用程序信息。
- 网络嗅探技术的分类,按照所监听的链路层网络分为:以太网和Wi-Fi
- 网络嗅探器分为:有线嗅探器和“有线”嗅探器;
- 网络嗅探器(按实现形式)分为:软件嗅探器和硬件嗅探器
- 网络嗅探的原理与实现
- 以太网工作原理介绍:以太网通过使用CSMA/CD协议的共享通信信道进行消息传输。以太网中的数据以帧为单位,将上层的数据包装配上帧头和帧尾,通过MAC地址匹配数据包的目标。当网卡处于混杂模式下,能够接受一切通过它连接的以太网络的数据帧。
- 以太网在部署局域网时分为共享式网络与交换式网络。共享式网络使用集线器连接;交互式网络使用交换机组件,数据通过交换机转发。
- 集线器的工作模式决定了同一集线器上连接的所有主机在发送数据包时,都会发往每一台主机,因此任一主机都能嗅探整个集线器上的全部网络流量。
- 交换机对每一个收到的数据帧根据映射表进行转发处理,发送至特定端口。这种方式可以减少网络被嗅探的风险。不过还是可以通过以下三种方式嗅探:1)MAC地址洪泛攻击 2)MAc地址欺骗 3)ARP欺骗
- 使用工具
- 类Unix平台下的嗅探软件:libpcap抓包开发库、tcpdump、wireshark和dsniff、sniffit等等
- windows平台下的嗅探软件:wireshark、snifferPro等等
- 防范措施
- 采用安全的网络拓扑:对网络进行合理的分段,从而尽量使网络包只被转发到目标主机上。对网段分段越细,网络嗅探能够搜集到的信息就越少。
- 用静态ARP或MAC-端口映射表代替动态机制:通过在重要的主机或网关上设置静态的ARP对应表,以及在交换机上设置静态的MAC-端口映射表,能够防止利用MAC地址欺骗、ARP欺骗。
- 重视网络数据传输集中位置点的安全防范,如网关、路由器和交换机等。
- 避免使用明文传输口令或敏感信息的网络协议:使用安全性强的网络协议进行替代。
1.2网络协议分析
- 原理
- 对网络上传输的二进制数据包进行解析,以恢复出各层网络协议信息以及传输内容的技术方法。
- 网络协议分析技术的具体流程:
1.通过嗅探得到链路层传输的二进制数据包(大多是以太网数据帧)
2.对以太网帧进行结构分析确定网络层协议类型并提取数据帧包含的网络层数据内容
3.进一步对IP数据包进行分析,确定传输层协议类型,并提取IP数据包中的传输数据内容
4.然后根据TCP或UDP端口确定具体的应用层协议,并对TCP或UDP数据包重组,得到应用层特定协议的应用交互内容。
5.最后依据相应的应用层协议对数据进行整合恢复,得到实际传输数据。
- 技术的实现
在开源的软件如tcpdump、wireshark、snort中都有相应源码实现。
Snort网络协议分析处理过程如下:1)解析以太网数据帧 2)解析IP数据包 3)解析TCP数据包
上述的三个解析过程都可以分为三个部分:1)预处理 2)拆包 3)解析- wireshark
主要作用是捕获网络数据包,对数据包进行协议分析以尽可能地显示详细的情况,并以更容易被理解的格式呈现给用户。
- wireshark
2.实践过程
动手实践:tcpdump
使用tcpdump开源软件对在本机上访问www.tianya.cn网络过程进行嗅探,回答问题:你在访问www.tianya.com网站首页时,浏览器将访问多少个web服务器?他们的ip地址都是什么?
使用kali自带的tcpdump进行网络嗅探,首先将kali的网络适配器设置为“桥接模式”
接着在终端运行Tcpdump,命令如下:
tcpdump -n src 主机IP and tcp port 80 and "tcp[13] & 18==2"
打开浏览器,输入网址
监听结果如下
可以看出系统访问了4个web服务器,IP地址分别是:223.119.141.240;223.119.248.8;221.182.218.244;221.182.218.174。
用nslookup
查看www.tianya.cn的IP地址
动手实践:wireshark
使用Wireshark开源软件对在本机上以TELNET方式登录BBS进行嗅探与协议分析,回答如下问题并给出操作过程:
你所登录的BBS服务器的IP地址与端口各是什么?
TELNET协议是如何向服务器传送你输入的用户名及登录口令?
如何利用Wireshark分析嗅探的数据包,并从中获取你的用户名及登录口令?
在官网下载wireshark并安装在主机
选择在主机上进行telnet,首先将telnet打开(控制面板->程序->打开或关闭Windows功能)
打开wireshark界面
在主机的dos窗口,执行telnet bbs.fudan.edu.cn
访问bbs.fudan.edu.cn,(因为其他网页需要其学校的邮箱注册),
注册用户名密码,再登录
接着回到wireshark界面,找到telnet进行分析
由上图wireshark界面有三部分
1)上部分:wireshark的数据包列表中,第一列是编号,第二列是截取时间,第三列source是源地址,第四列destination是目的地址,第五列protocol是这个包使用的协议,第六列info是一些其它的信息,包括源端口号和目的端口号。
2)中间部分:协议树,通过此协议树可以得到被截获数据包的更多信息,如主机的MAC地址(Ethernet II)、IP地址(Internet protocol)、UDP端口号(user datagram protocol)以及UDP协议的具体内容(data)。
3)下部分:是以十六进制显示的数据包的具体内容,这是被截获的数据包在物理媒体上传输时的最终形式,当在协议树中选中某行时,与其对应的十六进制代码同样会被选中,这样就可以很方便的对各种协议的数据包进行分析。
上图中,,我们可以在data处,看到我的用户名第一个英文字:x,
第二个为j
基于此,找到了我的用户名(不写出来了)及密码,密码为1108
我发现telnet是明文传输,且一个一个字符传输的,不够安全。
那TELNET协议是如何向服务器传送你输入的用户名及登录口令的呢?
Telnet远程登录服务分为以下4个过程:
1)本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据报;
3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
4)本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。
Telnet是远程登录程序,它由运行在用户的本地计算机上的Telnet客户程序和运行在要登录的远程计算机上的Telnet服务器程序所组成。
Telnet的作用就是让用户以模拟终端的方式,登录到Internet的某台主机上。一旦连接成功,这些个人计算机就好像是远程计算机的一个终端,可以像使用自己的计算机一样输入命令,运行远程计算机中的程序。
实践作业
取证分析实践,解码网络扫描
下载云班课上分享的listen.pcap,用wireshark打开该文件,用wireshark打开待分析的二进制记录文件,使用菜单栏中Statistics(统计)下的Conversation(会话),选择IPV4得到如下图:
由上图,172.31.4.178与172.31.4.188互相发送了大量的数据包,可以确定攻击者与被攻击者在二者之间。
- ACK定义
即确认字符,表示接收到的字符无错误。接收站对所收到的报文进行检查,若未发现错误,便向发送站发出确认回答ACK,表明信息已被正确接收,并准备好接收下一份报文。
从上图tcp数据包的分析可以看出,172.31.4.188基本发送的都是ACK确认包,可以推测出此ip为目标主机,而172.31.4.178为攻击主机的IP地址。
1.攻击主机的IP地址是什么?
攻击主机的IP地址为:172.31.4.178
2.网络扫描的目标IP地址是什么?
网络扫描的目标IP地址:172.31.4.188
3.本次案例中是使用了哪个扫描工具发起这些端口扫描?你是如何确定的?
通过snort工具解析wireshark的pcap文件
开启kali,把云班课上的listen.pcap文件粘贴到/home/kali里
进入root权限执行
apt-get install snort //可以只写下面那句试试,如果显示没成,再用这句
update-rc.d snort disable //安装snort
chmod 777 /etc/snort/snort.conf //给予snort.conf可读可写可执行权限
snort sudo snort -A console -q -u snort -c /etc/snort/snort.conf -r /home/kali/listen.pcap
4.你所分析的日志文件中,攻击者使用了那种扫描方法,扫描的目标端口是什么,并描述其工作原理。
在Wireshark中筛选ARP
nmap每次探测主机活跃是在广播域内广播arp request报文,而nmap每次扫描之前都会进行主机活跃探测。如果收到arp response报文即为活跃。并可以得到目标主机mac地址。
nmap在发起端口扫描之前总是先通过Ping扫描和针对80端口的探测确定目标主机是否活跃。
通过过滤器搜索icmp,可以定位ICMP协议对应的Ping扫描,实现了两次Ping扫描。
!
在数据包中存在大量SYN请求包,这是攻击机57738端口向目标主机进行的TCP SYN扫描,目的是用于扫描目标主机的端口是否活跃,如果活跃则目标主机会反馈一个SYN|ACK包,攻击机端口会立刻发送一个RST包关闭这个链接,目标端口不活跃则会反馈RST|ACK包,指令可能为nmap -sS -p XXX端口 172.31.4.188
5.在蜜罐主机上哪些端口被发现是开放的?
在wireshark过滤器中输入tcp.flags.syn == 1 and tcp.flags.ack == 1
,可以过滤出SYN | ACK的数据包,即为目标主机反馈扫描机的端口活跃信息。可以确定21,22,23,25,53,80,139,445,3306,3632,5432,8009,8180这几个端口是活跃的。(图片info处箭头的左边)
6.攻击主机的操作系统是什么?
经查询发现不同操作系统的ttl是不一样的linux的ttl是64,点击telnet下面的详细信息可以看到ttl=64因此靶机使用的操作系统应该是linux。
攻防对抗实践
攻击方用nmap扫描,防守方用tcpdump嗅探,用wireshark分析,并分析出攻击方的扫描目的以及每次使用的nmap命令。
我用的winxp进行nmap扫描攻击kali,kali用tcpdump嗅探,wireshark抓包
winxp的IP为192.168.200.3,kali的IP为192.168.200.2
由此看出是nmap -sP命令
由上面两幅图,发现winxp(192.168.200.3)的40388端口一直在扫描kali(192.168.200.2)的将近1000个TCP端口,kali(192.168.200.2)向winxp(192.168.200.3),服务器发回rst位,同时win置为0,是告诉客户端不要发包。(win代表窗口大小,即这个包的发送方当前还有多少缓存可以接受data)。
故猜测是 nmap -sS命令,但是tcp端口似乎没有打开。
3.学习中遇到的问题与解决
- 问题1:在官网下载的最新的wireshark,安装过程中,一直next,所以它安装了Npcap。特意百度过,与Winpcap差别不大,但是发现没用,wireshark捕抓不到接口,如下图
- 问题1解决方案:删掉了之前安装的Npcap,在官网下载了并安装了Winpcap,然后接OK了。下载网址:https://www.winpcap.org/install/default.htm
4.实践总结
多实践,多百度,解决不懂的
wireshark抓包分析仍需多多学习
参考资料
- Wireshark在win7捕获不到接口问题解决方法
- 最全的tcpdump使用详解
- 几种TCP连接中出现RST的场景分析
- wireshark、异常数据分析、常见RST介绍
- nmap参数原理抓包分析