返回列表 发帖

各种扫描技术

  端口是TCP/IP体系中运输层的服务访问点,传输层到某端口的数据都被相应绑定到该端口的进程所接收。保留端口是TCP/IP分配端口的一种方法,它们都对应了相应的应用程序和服务。攻击者可以试图和目标主机的一系列端口(一般是保留端口和常用端口)建立连接或请求通信,若目标主机有回应,则它打开了相应的应用程序或服务,攻击者也就可以使用应用层的一些攻击手段了。
常用的端口扫描技术:
1)TCP connect() 扫描
这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标主机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。
2)TCP SYN扫描
这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程
3)TCP FIN 扫描
有的时候可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。并且这种方法在区分Unix和NT时,是十分有用的。
4)IP包分段扫描
这种不能算是新方法,只是其它技术的变化。它并不是直接发送TCP探测数据包,是将数据包分成几个较小的IP段。这样就将一个TCP头分成好几个数据包,从而过滤器就很难探测到。
5)UDP ICMP端口不能到达扫描
这种方法与上面几种方法的不同之处在于使用的是UDP协议。由于这个协议很简单,所以扫描变得相对比较困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。
6)慢速扫描
由于一般扫描检测器的实现是通过监视某个时间段里一台特定主机被连接的数目来决定是否在被扫描,这样攻击者可以通过使用扫描速度慢一些的扫描软件进行扫描,这样检测软件就不会判别出他在进行扫描了。
对于端口扫描的防范需要进行统计分析,即在单位时间内统计,当发现接收到超过上限数目的以扫描端口为目的的数据包请求时,可以判断为发现了端口扫描攻击。对于慢扫描,可以在一段较长时间内对此类请求数据包进行联合分析,若发现某特定时间段内主机较为均匀地接受到此类数据包请求,则判断为慢速扫描。

返回列表 回复 发帖