三. 常见扫描主要技术
      1、存活性扫描:是指大规模去评估一个较大网络的存活状态。例如跨地域、跨系统的大型企业。但是被扫描主机可能会有一些欺骗性措施,例如使用防火墙阻塞ICMP数据包,可能会逃过存活性扫描的判定。
      2、端口扫描:针对主机判断端口开放和关闭情况,不管其是不是存活。端口扫描也成为存活性扫描的一个有益补充,如果主机存活,必然要提供相应的状态,因此无法隐藏其存活情况。
3、服务识别:通过端口扫描的结果,可以判断出主机提供的服务及其版本。
      4、操作系统识别:利用服务的识别,可以判断出操作系统的类型及其版本。
      3.1  主机存活扫描技术
      主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。Ping就是最原始的主机存活扫描技术,利用icmpecho字段,发出
的请求如果收到回应的话代表主机存活。
常用的传统扫描手段有:
      1. ICMP Echo扫描  精度相对较高。通过简单地向目标主机发送ICMP Echo Request 数据包,并等待回复的ICMP Echo Reply 包,如Ping
      2. ICMP Sweep 扫描:sweep这个词的动作很像机扫射,icmp进行扫射式的扫描,就是并发性扫描,使用ICMP Echo Request一次探测多个目标主机。通常这种探测包会并行发送,以提高探测效率,适用于大范围的评估。
      3. Broadcast ICMP扫描:广播型icmp扫描,利用了一些主机在icmp实现上的差异,设置ICMP请求包的目标地址为广播地址或网络地址,则可以探测广播域或整个网络范围内的主机,子网内所有存活主机都会给以回应。但这种情况只适合于UNIX/Linux系统。
      4. Non-Echo ICMP扫描:在ICMP协议中不光光只有ICMP ECHOICMP查询信息类型,在ICMP扫描 技术中也用到Non-ECHO ICMP技术(不仅仅能探测主机,也可以探测网络设备如路由)。利用了ICMP的服务类型(TimestampTimestamp Reply Information RequestInformation Reply Address Mask Request Address Mask Reply)。
      3.2  规避技术
      为到达规避防火墙和入侵检测设备的目的, ICMP协议提供网络间传送错误信息的功能也成为了主要的扫非常规描手段。其主要原理就是利用被探测主机产生的ICMP错误报文来进行复杂的主机探测。
      常用的规避技术大致分为4类:
      1. 异常的IP包头 :向目标主机发送包头错误的IP包,目标主机或过滤设备会反馈ICMP Parameter Problem Error信息。常见的伪造错误字段为Header Length  IP Options。不同厂家的路由器和操作系统对这些错误的处理方式不同,返回的结果也不同。
      2. IP头中设置无效的字段值:向目标主机发送的IP包中填充错误的字段值,目标主机或过滤设备会反馈ICMP Destination Unreachable信息。这种方法同样可以探测目标主机和网络设备。
      3. 通过超长包探测内部路由器:若构造的数据包长度超过目标系统所在路由器的PMTU且设置禁止分片标志, 该路由器会反馈 Fragmentation Needed and Don’t Fragment Bit was
Set差错报文。
      4. 反向映射探测:用于探测被过滤设备或防火墙保护的网络和主机。构造可能的内部IP地址列表,并向这些地址发送数据包。当对方路由器接收到这些数据包时,会进行IP识别并路由,对不在其服务的范围的IP包发送ICMP Host UnreachableICMP Time Exceeded 错误报文,没有接收到相应错误报文的IP地址可被认为在该网络中。
         3.3  端口扫描技术
tcp ip协议技术      在完成主机存活性判断之后,就应该去判定主机开放信道的状态,端口就是在主机上面开放的信道,0-1024为知名端口,端口总数是65535。端口实际上就是从网络层映射到进程的通道。通过这个关系就可以掌握什么样的进程使用了什么样的通信,在这个过程里面,能够通过进程取得的信息,就为查后门、了解系统状态提供了有力的支撑。常见流行的端口扫描技术通常有:
      3.3.1  TCP扫描:
      利用三次握手过程与目标主机建立完整或不完整的TCP连接。
      TCP connect()扫描: tcp的报头里,有6个连接标记,分别是urgackpshrstsynfin。通过这些连接标记不同的组合方式,可以获得不同的返回报文。例如,发送一个syn置位的报文,如果syn置位瞄准的端口是开放的,syn置位的报文到达的端口开放的时候,他就会返回syn+ack,代表其能够提供相应的服务。我收到syn+ack后,返回给对方一个ack。这个过程就是著名的三次握手。这种扫描的速度和精度都是令人满意的。
      Reverse-ident扫描:这种技术利用了Ident协议(RFC1413)tcp端口113.很多主机都会运行的协议,用于鉴别TCP连接的用户。
      identd 的操作原理是查特定 TCP/IP 连接并返回拥有此连接的进程的用户名。它也可以返回主机的其他信息。但这种扫描方式只能在tcp全连接之后才有效,并且实际上很多主机都会关闭ident服务。
      Tcp syn扫描:向目标主机的特定端口发送一个SYN包,如果端口没开放就不会返回syn+ack,这时会给你一个rst,停止建立连接。由于连接没有完全建立,所以称为半开放扫描。但由于syn flood作为一种ddos攻击手段被大量采用,因此很多防火墙都会对syn报文进行过滤,所以这种方法并不能总是有用。
      其他还有finNULLXmas等扫描方式。
      3.3.2    UDP扫描
      由于现在防火墙设备的流行,tcp端口的管理状态越来越严格,不会轻易开放,并且通信监视严格。为了避免这种监视,达到评估的目的,就出现了秘密扫描。这种扫描方式的特点是利用UDP端口关闭时返回的ICMP信息,不包含标准的TCP三次握手协议的任何部分,隐蔽性好,但这种扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息。
      但是,UDP扫描方式的缺陷很明显,速度慢、精度低。UDP的扫描方法比较单一,基础原理是:当你发送一个报文给udp端口,该端口是关闭状态时,端口会返回给一个icmp信息,所有的判定都是基于这个原理。如果关闭的话,什么信息都不发。
      Traceroute扫描:tracert 30000以上的高端口(一般认为,主机的30000以上高端口利用率非常低,任何主机都不会轻易开放这种高端口,默认都是关闭的)。如果对方端口关闭,会返回给icmp信息,根据这个往返时间,计算跳数、路径信息,了解延时情况。这是tracerote原理,也是从这个原理上演变出来udp扫描技术。
      使用udp扫描要注意的是1udp状态、精度比较差,因为udp是不面向连接的,所以整个精度会比较低。2udp扫描速度比较慢,tcp扫描开放1秒的延时,在udp里可能就需要2秒,这是由于不同操作系统在实现icmp协议的时候为了避免广播风暴都会有峰值速率的限制(因为icmp信息本身并不是传输载荷信息,不会有人拿他去传输一些有价值信息。操作系统在实现的时候是不希望icmp报文过多的。为了避免产生广播风暴,操作系统对icmp报文规定了峰值速率,不同操作系统的速率不同) 利用udp作为扫描的基础协议,就会对精度、延时产生较大影响。
      当前在渗透测试过程中对于端口的扫描是非常灵活的,06年的黑帽大会上,就有人利用了开发了工具探测网内哪台主机打开了80端口,这样的技术在当前的互联网上利用的非常普遍。
      3.4  服务及系统指纹
      在判定完端口情况之后,继而就要判定服务。
      3.4.1  根据端口判定
      这种判定服务的方式就是根据端口,直接利用端口与服务对应的关系,比如23端口对应telnet21对应ftp80对应http。这种方式判定服务是较早的一种方式,对于大范围评估是有一定价值的,但其精度较低。例如使用nc这样的工具在80端口上监听,这样扫描时会以为80在开放,但实际上80并没有提供http服务,由于这种关系只是简单对应,并没有去判断端口运行的协议,这就产生了误判,认为只要开放了80端口就是开放了http协议。但实际并非如此,这就是端口扫描技术在服务判定上的根本缺陷。
     为了判断服务类型、应用版本、OS平台,通过模拟各种协议初始化握手,就可以获取信息
     
      3.4.3  指纹技术
      指纹技术利用TCP/IP协议栈实现上的特点来辨识一个操作系统。可辨识的OS的种类,包括哪些操作系统,甚至小版本号。指纹技术有主动和被动两种。
      主动识别技术:采用主动发包,利用多次的试探,去一次一次筛选不同信息,比如根据A
CK值判断,有些系统会发送回所确认的TCP分组的序列号,有些会发回序列号加1。还有一些操作系统会使用一些固定的tcp窗口。某些操作系统还会设置IP头的DF位来改善性能。这些都成为判断的依据。这种技术判定windows的精度比较差,只能够判定一个大致区间,很难判定出其精确版本,但是在unix,网络设备时甚至可以判定出小版本号,比较精确。如果目标主机与源主机跳数越多,精度越差。因为数据包里的很多特征值在传输过程中都已经被修改或模糊化,会影响到探测的精度。nmap –O参数就是其代表。
      被动识别技术:不是向目标系统发送分组,而是被动监测网络通信,以确定所用的操作系统。利用对报头内DF位,TOS位,窗口大小,TTL的嗅探判断。因为并不需要发送数据包,只需要抓取其中的报文,所以叫做被动识别技术。例如telnet对方,并用snort监听数据包:
      ICMP指纹识别技术 :这种工具的出现较晚,大概在2001-2002年,在黑帽大会上提出,并开发出相应的工具xprobe,其优势是只需要通过icmp,发送一批UDP包给高端关闭的端口,然后计算返回来的不可达错误消息。通常情况下送回IP+8个字节,但是个别系统送回的数据更多一些。根据ICMP回应的TOSTTL值、校验和等信息,通过这些信息以树状的形式去过滤,最终精确锁定。下图只是整个判定过程中的一小量部分,类似的图还有很多张。
      例如TTL值,当你发送icmp echo请求,对方回应的ttl值是有一定规律可循的,一般是4个数值,32win95,唯一值为32的操作系统),64128windows家族,只有win95例外),25664256比较难以分辨,大多数的unixlinux都可能是。 代表性扫描工具 Xprobe

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。