实验一
实验1 网络服务和端口的扫描一、实验目的通过ping 等命令了解目标主机的可访问性;通过使用网络扫描软件,了解目标主机端口和服务的开放情况,从而进一步获取系统信息,找出系统安全漏洞;通过本次实验,读
实验1 网络服务和端口的扫描
一、实验目的
通过ping 等命令了解目标主机的可访问性;
通过使用网络扫描软件,了解目标主机端口和服务的开放情况,从而进一步获取系统信息,找出系统安全漏洞;
通过本次实验,读者可以了解到端口与服务开放的风险,增强在网络安全防护方面的意识。
二、实验原理
常用扫描探测命令:ping 、tracert
扫描工具:Superscan 和Nmap
1. Ping以及tracert
·ping
ping 命令首先会构建一个固定格式的ICMP 请求数据包echo request,发给远端计算机 ;
远端计算机收到后,构造一个ICMP 应答包echo reply,发送回本机; 本机收到应答包后,即可判断出目的主机是否开机,并根据发送包和应答包携带的时间信息计算出网络延迟。
·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 相互转换
这个功能的作用就是取得域名比如:163.com 的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 in right-click menu 】,这里有关于此端口的详细说明和所使用的程序。我们选择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 总会给出well known端口的服务名(如果可能) 、端口号、状态和协议等信息。每个端口的状态有: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 不能确定端口是关闭的还是被过滤的。它只可能出现在IPID Idle 扫描中。
(4)语法
Nmap 的语法相当简单.Nmap 的不同选项和-s 标志组成了不同的扫描类型, 比如:一个Ping-scan 命令就是"-sP". 在确定了目标主机和网络之后, 即可进行扫描. 如果以root 来运行Nmap,Nmap 的功能会大大的增强, 因为超级用户可以创建便于Nmap 利用的定制数据包。
一般语法格式:nmap [Scan Type(s)] [Options]
(5)基本扫描类型
可以使用nmap -h快速列出功能选项的列表。
-sT
TCP connect()扫描:这是最基本的TCP 扫描方式。connect()是一种系统调用,
,由操作系统提供,用来打开一个连接。如果目标端口有程序监听, connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,你勿需root 权限。任何UNIX 用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS
TCP 同步扫描(TCP SYN):因为不必全部打开一个TCP 连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP 同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应) 包就表示目标端口正在监听;如果返回RST 数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位) 数据包断开和目标主机的连接。这项技术最大的好处是,很少有系统能够把这记入系统日志。
-sP
ping 扫描:若只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP 地址发送ICMP echo 请求数据包,nmap 就可以完成这项任务,如果主机正在运行就会作出响应。在默认的情况下nmap 也能够向80端口发送TCP ack 包,如果你收到一个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 主机。有些网络的防火墙不允许ICMP echo请求穿过,使用这个选项可以对这些网络进行扫描。
-O
这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。换句话说,nmap 使用一些技术检测目标主机操作系统网络协议栈的特征。