网络中的每一台计算机如同一座城堡,在这些城堡中,有的对外完全开放,有的却是紧锁城门。在网络技术中,把这些城堡的城门称之为计算机的“端口”。端口扫描是入侵者搜集信息的几种常用手法之一,也正是这一过程最容易使入侵者暴露自己的身份和意图,所以利用暴露的信息可以防范此类攻击。一般来说,扫描端口有如下目的。
(1)判断目标主机上开放了哪些服务。
(2)判断目标主机的操作系统。
如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能够使用相应的手段实现入侵。
1.端口扫描原理
端口在计算机网络领域中是个非常重要的概念。它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。如果有需要的话,一台计算机中可以有上万个端口。
端口是由计算机的通信协议TCP/IP协议定义的。TCP/IP协议规定,用IP地址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向[A:端口]就可以实现通信了。
端口扫描就是尝试与目标主机的某些端口建立连接,如果目标主机该端口有回复(见三次握手中的第二次),则说明该端口开放,即为“活动端口”。
2.扫描原理分类
(1)全 TCP 连接。这种扫描方法使用三次握手,与目标计算机建立标准的TCP连接。需要说明的是,这种古老的扫描方法很容易被目标主机记录。
(2)半打开式扫描(SYN扫描)。在这种扫描技术中,扫描主机自动向目标计算机的指定端口发送 SYN数据段,表示发送建立连接请求。
如果目标计算机的回应TCP报文中SYN=1,ACK=1,则说明该端口是活动的,接着扫描主机传送一个RST给目标主机拒绝建立TCP连接,从而导致三次握手的过程失败。如果目标计算机的回应是RST,则表示该端口为“死端口”,这种情况下,扫描主机不用做任何回应。
由于扫描过程中,全连接尚未建立,所以大大降低了被目标计算机记录的可能性,并且加快了扫描的速度。
(3)FIN扫描。在前面介绍过的TCP报文中,有一个字段为FIN,FIN扫描则依靠发送FIN 来判断目标计算机的指定端口是否是活动的。
发送一个FIN=1 的TCP报文到一个关闭的端口时,该报文会被丢掉,并返回一个RST 报文。
但是,如果当FIN报文到一个活动的端口时,该报文只是被简单的丢掉,不会返回任何回应。从FIN扫描可以看出,这种扫描没有涉及任何TCP连接部分。因此,这种扫描比前两种都安全,可以称之为秘密扫描。
(4)第三方扫描。第三方扫描又称“代理扫描”,这种扫描是利用第三方主机来代替入侵者进行扫描。这个第三方主机一般是入侵者通过入侵其他计算机而得到的,该“第三方”主机常被入侵者称之为“肉鸡”。这些“肉鸡”一般为安全防御系数极低的个人计算机。
领取专属 10元无门槛券
私享最新 技术干货