• 端口扫描技术


    目前主要的端口扫描技术有以下几种:
    1.TCP connect Scan(TCP连接扫描)
    这 种方法也称之为“TCP全连接扫描”。它是最简单的一种扫描技术,所利用的是TCP协议的3次握手过程。它直接连到目标端口并完成一个完整的3次握手过 程(SYN、SYN/ACK和ACK)。操作系统提供的“connect()”函数完成系统调用,用来与目标计算机的端口进行连接。如果端口处于侦听状 态,那么“connect()”函数就能成功。否则,这个端口是不能用的,即没有提供服务。
    TCP连接扫描技术的一个 最大的优点是不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处是速度快。如果对每个目标端口以线性的方式,使 用单独的“connect()”函数调用,那么将会花费相当长的时间,用户可以同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许用户设置一个低的 时间以用尽周期,并同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且很容易被过滤掉。目标计算机的日志文件会显示一连串的连接和连接出错的服务 消息,目标计算机用户发现后就能很快使它关闭。 


    2.TCP SYN Scan(TCP同步序列号扫描)
    若端口扫描没有完成一个完整的 TCP连接,即在扫描主机和目标主机的一指定端口建立连接的时候,只完成前两次握手,在第三步时,扫描主机中断了本次连接, 使连接没有完全建立起来,所以这种端口扫描又称为“半连接扫描”,也称为“间接扫描”或“半开式扫描”(Half Open Scan)。
    SYN 扫描,通过本机的一个端口向对方指定的端口,发送一个TCP的SYN连接建立请求数据报,然后开始等待对方的应答。如果应答数据报中设置了SYN位 和ACK位,那么这个端口是开放的;如果应答数据报是一个RST连接复位数据报,则对方的端口是关闭的。使用这种方法不需要完成Connect系统调用所 封装的建立连接的整个过程,而只是完成了其中有效的部分就可以达到端口扫描的目的。
    此种扫描方式的优点是不容易被发 现,扫描速度也比较快。同时通过对MAC地址的判断,可以对一些路由器进行端口扫描,缺点是需要系统管理员的权限,不适合 使用多线程技术。因为在实现过程中需要自己完成对应答数据报的查找、分析,使用多线程容易发生数据报的串位现象,也就是原来应该这个线程接收的数据报被另 一个线程接收,接收后,这个数据报就会被丢弃,而等待线程只好在超时之后再发送一个SYN数据报,等待应答。这样,所用的时间反而会增加。


    3.TCP FIN Scan(TCP结束标志扫描)
    这种扫描方式不依赖于TCP的3次握 手过程,而是TCP连接的“FIN”(结束)位标志。原理在于TCP连接结束时,会向TCP端口发送一个设置了FIN 位的连接终止数据报,关闭的端口会回应一个设置了RST的连接复位数据报;而开放的端口则会对这种可疑的数据报不加理睬,将它丢弃。可以根据是否收到 RST数据报来判断对方的端口是否开放。
    此扫描方式的优点比前两种都要隐秘,不容易被发现。该方案有两个缺点:首先, 要判断对方端口是否开放必须等待超时,增加了探测时间,而且容易得出错误的结 论;其次,一些系统并没有遵循规定,最典型的就是Microsoft公司所开发的操作系统。这些系统一旦收到这样的数据报,无论端口是否开放都会回应一个 RST连接复位数据报,这样一来,这种扫描方案对于这类操作系统是无效的。


    4.IP Scan(IP协议扫描) 
    这种方法并不是直接发送TCP协议探测数据包,而是将数据包分成两个较小的IP协议段。这样就将一个TCP协议头分成好几个数据包,从而过滤器就很难探测到。但必须小心,一些程序在处理这些小数据包时会有些麻烦。


    5.TCP Xmas Tree Scan
    这种方法向目标端口发送一个含有FIN(结束)、URG(紧急)和PUSH(弹出)标志的分组。根据RFC793,对于所有关闭的端口,目标系统应该返回RST标志。根据这一原理就可以判断哪些端口是开放的。


    6.TCP Null Scan
    这种方法与上一方法原理是一样,只是发送的数据包不一样而已。本扫描方案中,是向目标端口发送一个不包含任何标志的分组。根据RFC793,对于所有关闭的端口,目标系统也应该返回RST标志。


    7.UDP Scan(UDP协议扫描)
    在UDP扫描中,是往目标端口发送一个UDP分 组。如果目标端口是以一个“ICMP port Unreachable”(ICMP端口不可到达)消息来作为响应的,那么该端口是关闭的。相反,如果没有收到这个消息那就可以推断该端口打开着。还有就 是一些特殊的UDP回馈,比如SQL Server服务器,对其1434号端口发送“x02”或者“x03”就能够探测得到其连接端口。由于UDP是无连接的不可靠协议,因此这种技巧的准确性 很大程度上取决于与网络及系统资源的使用率相关的多个因素。另外,当试图扫描一个大量应用分组过滤功能的设备时,UDP扫描将是一个非常缓慢的过程。如果 要在互联网上执行UDP扫描,那么结果就是不可靠的。


    8.ICMP echo扫描 
    其实这并不能算是真正意义上的扫描。但有时的确可以通过支持 Ping命令,判断在一个网络上主机是否开机。Ping是最常用的,也是最简单的探测手段,用 来判断目标是否活动。实际上Ping是向目标发送一个回显(Type=8)的ICMP数据包,当主机得到请求后,再返回一个回显(Type=0)的数据 包。而且Ping程序一般是直接实现在系统内核中的,而不是一个用户进程,更加不易被发现。


    9.高级ICMP扫描技术
    Ping是利用ICMP协议实现的,高级的ICMP扫描技术主要 利用ICMP协议最基本的用途——报错。根据网络协议,如果接收到的数据包协议项出现了错 误,那么接收端将产生一个“Destination Unreachable”(目标主机不可达)ICMP的错误报文。这些错误报文不是主动发送的,而是由于错误,根据协议自动产生的。
    当IP数据包出现Checksum(校验和)和版本的错误的时候,目标主机将抛弃这个数据包;如果是Checksum出现错误,那么路由器就直接丢弃这个数据包。有些主机比如AIX、HP/UX等,是不会发送ICMP的Unreachable数据包的。
    例 如,可以向目标主机发送一个只有IP头的IP数据包,此时目标主机将返回“Destination Unreachable”的ICMP错误报文。如果向目标主机发送一个坏IP数据包,比如不正确的IP头长度,目标主机将返回“Parameter Problem”(参数有问题)的ICMP错误报文。
    注意:如果是在目标主机前有一个防火墙或者一个其他的过滤装置, 可能过滤掉提出的要求,从而接收不到任何的回应。这时可以使用一个非常大的协议数字作为 IP头部的协议内容,而且这个协议数字至少在今天还没有被使用,主机一定会返回Unreachable;如果没有Unreachable的ICMP数据包 返回错误提示,那么,就说明被防火墙或者其他设备过滤了,也可以用这个方法探测是否有防火墙或者其他过滤设备存在。

  • 相关阅读:
    Asp.NET 4.0 ajax实例DataView 模板编程1
    ASP.NET 4.0 Ajax 实例DataView模板编程 DEMO 下载
    部分东北话、北京话
    .NET 培训课程解析(一)
    ASP.NET 4.0 Ajax 实例DataView模板编程2
    ASP.NET Web Game 架构设计1服务器基本结构
    ASP.NET Web Game 构架设计2数据库设计
    TFS2008 基本安装
    Linux上Oracle 11g安装步骤图解
    plsql developer远程连接oracle数据库
  • 原文地址:https://www.cnblogs.com/wiessharling/p/4070826.html
Copyright © 2020-2023  润新知