以太网中网络扫描的原理与检测方法
对网络扫描原理和现有基本方法进行了分析,并设计了一个陷阱机来检测所在网段中的网络扫描行为。
本文引用地址:http://www.amcfsurvey.com/article/153916.htm网络扫描通过扫描本地主机,能检测主机当前可用的服务及其开放端口,帮助网络管理员查找安全漏洞,查杀木马、蠕虫等危害系统安全的病毒。一些扫描器还封装了简单的密码探测,利用自定义规则的密码生成器来检测过于简单和不安全的密码。
网络扫描一般包括2个阶段:(1)对整个网络扫描一遍,从而找到活动主机(因为许多子网配置得很稀疏,大部分IP地址是空的)。(2)对每个活动主机进行穷尽式的端口扫描。
网络扫描也是网络入侵的基础。一次成功的网络入侵离不开周密的网络扫描。攻击者利用网络扫描探知目标主机的各种信息,根据扫描的结果选择攻击方法以达到目的。因此,若能及时监测、识别网络扫描,就能预防网络攻击。为了得到被扫描主机的信息,网络扫描报文对应的源地址往往是真正的地址,因此监测网络扫描可以定位攻击者。
1 网络扫描原理
网络扫描通过检测目标主机TCP/IP不同端口的服务,记录目标给予的回答。通过这种方法,可以搜集到很多目标主机的各种信息(如是否能用匿名登录,是否有可写的FTP目录,是否能用Telnet等)。在获得目标主机TCP/IP端口和其对应的网络访问服务的相关信息后,与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。
在匹配原理上,网络漏洞扫描器一般采用基于规则的匹配技术。根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员关于网络系统安全配置的实际经验,形成一套标准的系统漏洞库,然后在此基础上构成相应的匹配规则,由程序自动进行系统漏洞扫描的分析工作。如在对TCP 80端口的扫描过程中,发现/cgi-bin/phf或/cgi-bin/Count.cgi,则根据专家经验以及CGI程序的共享性和标准化,可以推知该WWW服务存在2个CGI漏洞。
1.1 主机在线探测
为了避免不必要的空扫描,在扫描之前一般要先探测主机是否在线。其实现原理和常用的ping命令相似。具体方法是向目标主机发送ICMP报文请求,根据返回值来判断主机是否在线。所有安装了TCP/IP协议的在线网络主机,都会对这样的ICMP报文请求给予答复。该方法不仅能探测主机是否在线,而且能根据ICMP应答报文的TTL(TTL是位于IP首部的生存时间字段)值来粗略分辨出目标主机操作系统,为下一步的扫描工作提供依据。RFC793说明了TCP怎样响应特别的信息包:这些响应基于2个TCP状态,即关闭(CLOSED)和监听(LISTEN)。
RFC793描述了当一个端口在关闭状态时,必须采用下面的规则:(1)任意进入的包含RST标志的信息段(segment)将被丢弃。(2)任意进入的不包含RST标志的信息段(如SYN、FIN和ACK)会导致在响应中回送一个RST。
当一个端口处于监听状态时,将采用下面的规则:(1)任意进入的包含RST标志的信息段将被忽略。(2)任意进入的包含ACK标志的信息段将导致一个RST的响应。
如果SYN位被设置,且进入的信息段不被允许,则将导致一个RST的响应;若进入的信息段被允许,则将导致响应中发送一个SYN|ACK 信息包。
这样,通过2个ACK信息包的发送就可以验证计算机是否处于在线状态。
1.2 端口状态探测
发送1个SYN包到主机端口并等待响应。如果端口打开,则响应必定是SYN|ACK;如果端口关闭,则会收到RST|ACK响应。这个扫描可以称为半打开(half-scan)扫描。如NMAP(Network Mapper)在进行端口状态探测时会发送1个SYN包到主机,如果端口关闭就发送RST信息通知NMAP。但如果NMAP发送SYN信息包到打开状态的端口,端口就会响应SYN|ACK信息包给NMAP。当NMAP探测到SYN|ACK信息包后自动回应RST,并由这个RST断开连接。一般情况下,计算机不会记录这种情况,但对于NMAP来说也已经知道端口是否打开或者关闭。如果被扫描主机安装了防火墙则会过滤掉请求包,使发送者得不到回应,这时就需发送设置了TCP首部中标志位的FIN、PSH和URG位(其中FIN表示发端完成发送任务,PSH表示接收方应该尽快将这个报文段交给应用层,URG表示紧急指针有效)的echo request请求信息包。因为一些配置较差的防火墙允许这些信息包通过。
1.3 操作系统探测
每个操作系统,甚至每个内核修订版本在TCP/IP栈方面都存在微小的差别,这将直接影响对相应数据包的响应。如NMAP提供了一个响应列表,把所接收到的响应与表中的各项响应进行比较,如果能与某种操作系统的响应相匹配,就能识别出被探测主机所运行的操作系统的类型。在进行网络入侵攻击时,了解操作系统的类型是相当重要的,因为攻击者可以由此明确应用何种漏洞,或由此掌握系统存在的弱点。
2 主要扫描技术
2.1 TCP connect扫描
这是最基本的TCP扫描。利用操作系统提供的系统调用connect(),与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,则connect()就能成功。否则,该端口是不能用的,即没有提供服务。该技术的优点是响应速度快,并且使用者不需要任何权限。系统中的任何用户都有权利使用该调用。另一个优点就是速度很快。但缺点是容易被发觉,并且易被过滤掉。使用该方法时目标计算机的logs文件会显示一连串的连接和连接时出错的服务消息,并且能很快将连接关闭。
2.2 TCP SYN扫描
TCP SYN扫描是半开放式扫描,扫描程序不必打开一个完全的TCP连接。扫描程序发送的是SYN数据包。返回RST,表示端口没有处于侦听状态;返回SYN/ACK信息表示端口处于侦听状态,此时扫描程序必须再发送一个RST信号来关闭这个连接过程。这种扫描技术的优点是一般不会在目标计算机上留下记录。但这种方法必须要有管理员权限才能建立自己的SYN数据包。通常这个条件很容易满足。
2.3 TCP FIN扫描
有时SYN扫描不够秘密,防火墙和包过滤器就会对一些指定的端口进行监视,并能检测到这些扫描。相反,FIN数据包可能会没有任何麻烦地被放行。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包;而打开的端口会忽略对FIN数据包的回复。但这种方法和系统的实现有关。有的系统不管端口是否打开,都回复RST,这时这种扫描方法就不适用了。在区分Unix和NT操作系统时,这种方法是有效的。
2.4 IP段扫描
IP段扫描并不是直接发送TCP探测数据包,而是将数据包分成2个较小的IP段。这样就将一个TCP头分成好几个数据包,从而很难探测到过滤器。但必须小心,一些程序在处理这些小数据包时会丢弃。
2.5 TCP反向ident扫描
ident协议(RFC1413)允许看到通过TCP连接的任何进程的拥有者的用户名。例如用户能连接到http端口,然后用identd来发现服务器是否正在以管理员权限运行。这种方法只能在和目标端口建立了完整的TCP连接后才能使用。
tcp/ip相关文章:tcp/ip是什么
评论