端口扫描在系统攻防中占据非常重要的地位,在了解端口扫描之前,有必要先了解一些TCP协议以及三次握手的相关知识。
TCP报文格式如下图所示:
其中比较重要的几个字段:
复位比特RST:当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其它原因),必须释放连接,然后再重新建立连接。
同步比特SYN:同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。
终止比特FIN:用来释放一个连接。当FIN=1时,表明此报文的发送端的数据已发送完毕,并要求释放连接。
TCP三次握手建立连接的过程:
端口扫描就是尝试与目标主机的某些端口建立连接,如果目标主机该端口有回复,则说明端口开放,即为“活动端口”。通过端口扫描可以判断目标主机上开放了哪些服务,运行何种操作系统,以便使用相应的手段进行入侵。
根据扫描原理不同,端口扫描可以有以下分类:全TCP扫描、半开式扫描(SYN扫描)、FIN扫描。
这种扫描方法使用三次握手,与目标计算机建立标准的TCP连接。但这种扫描方法很容易被目标主机记录。
在这种扫描方式中,扫描主机向目标计算机的指定端口发送SYN数据段,表示发送建立连接请求。
如果目标计算机的回应TCP报文中SYN=1,ACK=1,则说明该端口是活动的,接着扫描主机传送一个RST给目标主机,拒绝建立TCP连接,从而导致三次握手过程的失败。
如果目标计算机的回应是RST,则表示该端口是“死端口”,这种情况下,扫描主机不用做任何回应。
SYN扫描,由于扫描过程中全连接尚未建立,所以大大降低了被目标计算机记录的可能性,并且加快了扫描的速度。
当发送一个FIN=1的TCP报文到一个关闭的端口时,该报文会被丢掉,并返回一个RST报文。但是当发送FIN报文到一个活动的端口时,该报文只是简单的丢掉,不会返回任何回应。
FIN扫描没有涉及任何TCP连接部分,因此这种扫描比前两种都安全,可以称之为秘密扫描。
本文出自 “一壶浊酒” 博客,转载请与作者联系!
原文地址:http://yttitan.blog.51cto.com/70821/1574064