网络安全实验报告一.docx
《网络安全实验报告一.docx》由会员分享,可在线阅读,更多相关《网络安全实验报告一.docx(19页珍藏版)》请在冰豆网上搜索。
网络安全实验报告一
实验1网络服务和端口的扫描
一、实验目的
通过ping等命令了解目标主机的可访问性;
通过使用网络扫描软件,了解目标主机端口和服务的开放情况,从而进一步获取系统信息,找出系统安全漏洞;
通过本次实验,读者可以了解到端口与服务开放的风险,增强在网络安全防护方面的意识。
二、实验原理
常用扫描探测命令:
ping、tracert
扫描工具:
Superscan和Nmap
1.Ping以及tracert
·ping
ping命令首先会构建一个固定格式的ICMP请求数据包echorequest,发给远端计算机;
远端计算机收到后,构造一个ICMP应答包echoreply,发送回本机;
本机收到应答包后,即可判断出目的主机是否开机,并根据发送包和应答包携带的时间信息计算出网络延迟。
·tracert
源主机将构造并向目标主机发送不同TTL值的ICMP请求数据包,tracert诊断程序根据ICMP的回应数据包来确定到目标所采取的路由;
Tracert程序首先发送TTL为1的请求数据包,该包经过第一个路由设备后TTL减1为0,第一个路由设备就将给源主机发回“ICMP已超时”的消息;
源主机的tracert命令通过该消息中的IP信息就获得了第一个路由设备的IP;
在随后的每次发送过程将TTL依次递增1,直到目标响应或TTL达到最大值,从而确定从源主机到目的主机中间的路由。
2端口扫描的原理
扫描的过程就是向目标主机的端口发送请求数据包,希望建立“连接”,根据目标主机的回应判断其端口是否开放;
通过扫描判断目标主机端口是否打开的一个最简单的方法,是利用TCP协议的三次握手机制;
只要和目标主机的端口能建立TCP的三次握手,说明目标主机的端口是开的,反之则没有打开。
·三次握手
第一次握手:
主机A的某个端口向主机B的某个端口发出TCP连接请求数据包,其TCP包头的标志位设置为SYN=1,ACK=0,同时选择一个序号x,表明在后面传送数据时的第一个数据字节的序号是x,这个过程称为第一次握手。
第二次握手:
主机B的相应端口收到连接请求数据包后,如端口是开放的,则发回确认数据包。
在确认数据包中,TCP包头的标志位设置为SYN=1,ACK=1,确认序号为x+1,同时B主机也会生成一个自己的序号y,这个过程称为第二次握手。
第三次握手:
主机A收到此数据包后,还要向B给出确认数据包,其TCP包头的标志位设置为ACK=1,其确认序号为y+1,这个过程称为第三次握手。
3扫描分类
1)全TCP连接
这种扫描方法使用三次握手,与目标计算机建立标准的TCP连接;
攻击者首先向目的端口发送一个SYN数据包,如果收到来自该端口的SYN/ACK数据包,就可以判定该端口是开放的;然后攻击者再发送一个ACK数据包;
如果目标端口是关闭的,攻击者就会收到一个直接返回的RST/ACK数据包;
2)半打开式扫描(SYN扫描)
在这种扫描技术中,扫描主机同样向目标计算机的指定端口发送SYN数据包,表示希望建立连接。
a.当端口开放时,目标计算机回应SYN/ACK数据包,这和全TCP连接扫描类似。
但是扫描主机接着发送一个RST=1的数据包给目标主机,RST数据包将对TCP连接进行重置,目标计算机因为没有接到相应ACK数据包,从而不会建立三次握手。
b.如果端口是关闭的,则按照TCP协议中端口未开规则处理,由目标主机发送RST/ACK数据包给扫描主机,此时TCP连接依然没有建立。
扫描主机根据目标计算机的回应数据包是SYN/ACK数据包,还是RST/ACK数据包即可判断端口是否打开。
3)秘密扫描
这种方法的优点在于没有涉及TCP连接的部分,所以比前2种都要安全,所以也被称做秘密扫描;缺点就是不够准确,不能完全识别开放的端口。
FIN标记扫描:
攻击者发送一个FIN=1的TCP报文到目标主机:
端口关闭时,该报文会被丢掉,并返回一个RST报文。
端口开放时,该报文只是简单的丢掉,不会返回任何回应。
三、实验环境
两台运行win7的计算机,通过网络连接。
使用Superscan和nmap作为练习工具。
四、实验内容
1、Ping以及Tracert
2、使用Superscan进行扫描
首先安装Superscan3.0,安装完毕后,双击程序,进入其主界面。
●域名(主机名)和IP相互转换
这个功能的作用就是取得域名比如:
的IP;或者根据IP:
192.168.1.156取得域名。
(如下图)
在SuperScan里面,有两种方法来实现此功能:
1)通过Hostname Lookup来实现
在Hostname Lookup的输入框输入需要转换的域名或者IP,按【LookUp】就可以取得结果。
如果需要取得自己计算机的IP,可以点击【Me】按钮来取得;
同时,也可以取得自己计算机的IP设置情况,点击【InterFaces】取得本地IP设置情况
2)通过Extract From File实现
这个功能通过一个域名列表来转换为相应IP地址。
选择【Extract from file】,点击【->】按钮,选择域名列表,进行转换。
●Ping功能的使用
Ping主要目的在于检测目标计算机是否在线和通过反应时间判断网络状况。
如下图,在【IP】的【Start】填入起始IP,在【Stop】填入结束IP,然后,在【Scan Type】选择【Ping only】,按【Start】就可以检测了。
在以上的设置中,我们可以使用以下按钮达到快捷设置目的:
选择【Ignore IP zreo】可以屏蔽所有以0结尾的IP;选择【Ignore IP 255】可以屏蔽所有以255结尾的IP;点击【PrevC】可以直接转到前一个C网段;选择【NextC】可以直接转到后一个C网段;选择【1..254】直接选择整个网段。
同样,也可以在【Extract From File】通过域名列表取得IP列表。
在Ping的时候,可以根据网络情况在【Timeout】设置相应的反应时间。
一般采用默认就可以了,而且,SuperScan速度非常快,结果也很准确,一般没有必要改变反应时间设置。
●端口检测
端口检测可以取得目标计算机提供的服务,同时,也可以检测目标计算机是否有木马。
现在,我们来看看端口检测的具体使用。
(1)检测目标计算机的所有端口
如果检测的时候没有特定的目的,只是为了了解目标计算机的一些情况,可以对目标计算机的所有端口进行检测。
一般不提倡这种检测,因为:
1)它会对目标计算机的正常运行造成一定影响,同时,也会引起目标计算机的警觉;
2)扫描时间很长;
3)浪费带宽资源,对网络正常运行造成影响。
在【IP】输入起始IP和结束IP,在【Scan Type】选择最后一项【All Ports From 1 to 65535】,如果需要返回计算机的主机名,可以选择【Resolve Hostnem】,按【Start】开始检测。
上图是对一台目标计算机所有端口进行扫描的结果,扫描完成以后,按【Expand all】展开,可以看到扫描的结果。
我们来解释一下以上结果:
第一行是目标计算机的IP和主机名;从第二行开始的小圆点是扫描的计算机的活动端口号和对该端口的解释。
【Active hosts】显示扫描到的活动主机数量,这里只扫描了一台,为1;【Open ports】显示目标计算机打开的端口数,这里是5。
(2)扫描目标计算机的特定端口(自定义端口)
其实,大多数时候我们不需要检测所有端口,我们只要检测有限的几个端口就可以了,因为我们的目的只是为了得到目标计算机提供的服务和使用的软件。
所以,我们可以根据个人目的的不同来检测不同的端口,大部分时候,我们只要检测80(web服务)、21(FTP服务)、23(Telnet服务)就可以了,即使是攻击,也不会有太多的端口检测。
点击【Port list setup】,出现端口设置界面(如下图):
以上的界面中,在【Select ports】双击选择需要扫描的端口,端口前面会有一个"√"的标志;选择的时候。
注意左边的【Change/Add/Delete port info】和【Helper apps inright-clickmenu】,这里有关于此端口的详细说明和所使用的程序。
我们选择21、23、80、三个端口,然后,点击【save】按钮保存选择的端口为端口列表。
【ok】回到主界面。
在【Scan Type】选择【All selected port in list】,按【Start】开始检测。
使用自定义端口的方式有以下有点:
1) 选择端口时可以详细了解端口信息;
2) 选择的端口可以自己取名保存,有利于再次使用;
3) 可以工具要求有的放矢的检测目标端口,节省时间和资源;
4) 根据一些特定端口,我们可以检测目标计算机是否被攻击者利用,种植木马或者打开不应该打开的服务;
3、网络扫描软件Nmap的使用
(1)简介
Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。
确定哪服务运行在那些连接端,并且推断哪个操作系统计算机运行(这是亦称fingerprinting)。
它是网络管理员必用的软件之一,以及用以评估网络系统保安。
正如大多数工具被用于网络安全的工具,nmap也是不少黑客及骇客(又称脚本小孩)爱用的工具。
系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
Nmap常被跟评估系统漏洞软件Nessus混为一谈。
Nmap以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。
(2)描述
nmap运行通常会得到被扫描主机端口的列表。
nmap总会给出wellknown端口的服务名(如果可能)、端口号、状态和协议等信息。
每个端口的状态有:
open、filtered、unfiltered。
open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。
filtered状态表示:
防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。
unfiltered表示:
这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。
通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。
根据使用的功能选项,nmap也可以报告远程主机的下列特征:
使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
(3)Nmap所识别的6个端口状态。
·open(开放的)
应用程序正在该端口接收TCP连接或者UDP报文。
发现这一点常常是端口扫描的主要目标。
安全意识强的人们知道每个开放的端口都是攻击的入口。
攻击者或者入侵测试者想要发现开放的端口。
而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。
非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。
·closed(关闭的)
关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应),但没有应用程序在其上监听。
它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行up也对部分操作系统探测有所帮助。
·filtered(被过滤的)
由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。
过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。
·unfiltered(未被过滤的)
未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。
只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。
用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定端口是否开放。
·open|filtered(开放或者被过滤的)
当无法确定端口是开放还是被过滤的,Namp就把该端口划分成这种状态。
开放的端口不响应就是一个例子。
没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何响应。
因此Nmap无法确定该端口是开放的还是被过滤的。
UDP,IP协议,FIN,Null和Xmas扫描可能把端口归入此类。
·closed|filtered(关闭或者被过滤的)
该状态用于Nmap不能确定端口是关闭的还是被过滤的。
它只可能出现在IPIDIdle扫描中。
(4)语法
Nmap的语法相当简单.Nmap的不同选项和-s标志组成了不同的扫描类型,比如:
一个Ping-scan命令就是"-sP".在确定了目标主机和网络之后,即可进行扫描.如果以root来运行Nmap,Nmap的功能会大大的增强,因为超级用户可以创建便于Nmap利用的定制数据包。
一般语法格式:
nmap[ScanType(s)][Options]
(5)基本扫描类型
可以使用nmap-h快速列出功能选项的列表。
-sT
TCPconnect()扫描:
这是最基本的TCP扫描方式。
connect()是一种系统调用,由操作系统提供,用来打开一个连接。
如果目标端口有程序监听,connect()就会成功返回,否则这个端口是不可达的。
这项技术最大的优点是,你勿需root权限。
任何UNIX用户都可以自由使用这个系统调用。
这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS
TCP同步扫描(TCPSYN):
因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。
你可以发出一个TCP同步包(SYN),然后等待回应。
如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接。
这项技术最大的好处是,很少有系统能够把这记入系统日志。
-sP
ping扫描:
若只是想知道此时网络上哪些主机正在运行。
通过向你指定的网络内的每个IP地址发送ICMPecho请求数据包,nmap就可以完成这项任务,如果主机正在运行就会作出响应。
在默认的情况下nmap也能够向80端口发送TCPack包,如果你收到一个RST包,就表示主机正在运行。
nmap使用的第三种技术是:
发送一个SYN包,然后等待一个RST或者SYN/ACK包。
对于非root用户,nmap使用connect()方法。
在默认的情况下(root用户),nmap并行使用ICMP和ACK技术。
实际上,nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
如果只是想知道目标主机是否运行,而不想进行其它扫描,才会用到这个选项。
-sU
UDP扫描:
如果想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用这种扫描方法。
nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的。
(6)通用选项
这些内容不是必需的,但是很有用。
-Pn
在扫描之前,不必ping主机。
有些网络的防火墙不允许ICMPecho请求穿过,使用这个选项可以对这些网络进行扫描。
-O
这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。
换句话说,nmap使用一些技术检测目标主机操作系统网络协议栈的特征。
nmap使用这些信息建立远程主机的指纹特征,把它和已知的操作系统指纹特征数据库做比较,就可以知道目标主机操作系统的类型。
-v
冗余模式。
它会给出扫描过程中的详细信息。
使用这个选项,可以得到事半功倍的效果。
使用-d选项可以得到更加详细的信息。
-h
快速参考选项。
-p<端口范围>
这个选项让你选择要进行扫描的端口号的范围。
例如,-p23表示:
只扫描目标主机的23号端口。
-p20-30,139,60000-表示:
扫描20到30号端口,139号端口以及所有大于60000的端口。
在默认情况下,nmap扫描从1到1024号以及nmap-services文件(如果使用RPM软件包,一般在/usr/share/nmap/目录中)中定义的端口列表。
-F
快速扫描模式,只扫描在nmap-services文件中列出的端口。
显然比扫描所有65535个端口要快。
(7)目标设定
在nmap的所有参数中,只有目标参数是必须给出的。
其最简单的形式是在命令行直接输入一个主机名或者一个IP地址。
如果你希望扫描某个IP地址的一个子网,你可以在主机名或者IP地址的后面加上/掩码。
掩码在0(扫描整个网络)到32(只扫描这个主机)。
使用/24扫描C类地址,/16扫描B类地址。
除此之外,nmap还有更加强大的表示方式让你更加灵活地指定IP地址。
例如,如果要扫描这个B类网络128.210.*.*,你可以使用下面三种方式来指定这些地址:
128.210.*.*、128.21-.0-255.0-255或者128.210.0.0/16这三种形式是等价的。
(8)一些例子
举例说明如何使用nmap。
nmap-v
扫描主机的所有TCP端口。
-v打开冗余模式。
nmap-sS-O
发起对所在网络上的所有255个IP地址的秘密SYN扫描。
同时还探测每台主机操作系统的指纹特征。
nmap-v–randomize_hosts-p80*.*.2.3-5
只扫描指定的IP范围,有时用于对这个Internet进行取样分析。
nmap将寻找Internet上所有后两个字节是.2.3、.2.4、.2.5的IP地址上的WEB服务器。
如果你想发现更多有意思的主机,你可以使用127-222,因为在这个范围内有意思的主机密度更大。
首先,安装Nmap6.35,双击进入界面。
下面给出一些实际的扫描例子。
(1)隐蔽扫描(StealthScanning)TCPSYNscan:
命令:
nmap-sSIP_address
从图中可以看到,共扫描了10.13.83.110)的1000个tcp端口,发现有903个filteredports,92个closedports,并列出了5个openports,并可以知道这些服务的状态和采用的协议。
如端口22提供的是ssh服务,采用tcp协议。
(2)端口扫描(PortScanning)
命令:
nmap-sTIP_address
扫描结果和TCPSYNscan相同。
但是耗时却是TCPSYNscan的7倍,这是因为TCPconnectscan是调用connect()函数来打开一个链接,效率较低,而TCPSYNscan不必全部打开一个tcp连接,只是发出一个TCP同步包(SYN),然后等待回应。
如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接。
(3)UDP扫描(UDPScanning)
命令:
nmap-sUIP_address
从图中可以看到,共扫描了(10.13.83.110)的1000个udp端口,发现有973个filteredports,8个closedports,18个open|filteredports,1个openport,并可以知道这些服务的状态和采用的协议。
如端口137提供的是neibios-ns,采用udp协议,端口状态为open。
filtered状态表示:
防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。
open|filtered状态表示:
无法确定端口是开放还是被过滤的。
(4)IPprotocolscan
命令:
nmap-sO-vIP_address
IP协议扫描允许你判断目标主机支持哪些IP协议,从结果可以看到共扫描了256个端口,发现被扫描主机支持8种IP协议,其中只有端口1处于open状态。
(5)-p(只扫描指定的端口)
扫描主机10.13.83.110的21、23和80端口
命令:
nmap-sS-pIP_address
如图所示,指定扫描端口80,21,23,可以看到提供http服务的80端口处于closed状态。
提供telnet的23端口处于filtered的状态,原因是被主机禁止,可能是目标主机上的防火墙的缘故。
提供ftp服务的21端口处于open状态。
(6)扫描目标主机的操作系统类型
命令:
nmap-sS-OIP_address
扫描到ip地址为10.13.83.110的目标主机的细节信息,可知,该主机现在为up状态,总共扫描端口1000个,其中有903个被过滤掉,92个端口状态为closed,5个端口状态为open。
能获得该主机的IP地址,但是不能获得MAC地址,能知道系统的版本为Linux2.6.X。
五、实验报告要求
(1)熟悉使用ping和tracert,设置不同参数进行实验并记录结果。
(2)安装Superscan,并对另一台主机进行扫描,记录扫描步骤和结果。
(3)安装Nmap,熟悉其命令行操作,扫描主机的TCP端口、UDP端口以及其操作系统和支持的服务,记录扫描步骤和结果。