第三章 网络安全扫描编程
第二节 端口扫描
3.2.1 端口的意义
端口号实质上也是操作系统标识应用程序的一种方法,其取值可由用户定义或者系统分配。TCP和UDP端口与一个16位的整数值相对应,将应用程序与某个端口号进行绑定,这样TCP和UDP就可以通过该端口与程序通信,如图3-1所示。
图3-1 端口
由于IP地址只对应到因特网中的某台主机,而TCP端口号可对应到主机上的某个应用进程,因此,TCP模块采用IP地址和端口号的对偶来标识TCP连接的端点。一条TCP连接实质上对应了一对TCP端点。
TCP端口号采用了动态和静态相结合的分配方法,对于一些常用的应用服务使用固定的端口号,该端口号称为周知端口,一般不作为他用,例如,电子邮件(SMTP)的端口号为25,文件传输(FTP)的端口号为21,Web服务器的端口为80等。
对于其他的应用服务,尤其是用户自行开发的应用服务,端口号采用动态分配方法,由用户指定操作系统分配。TCP/IP约定0~1023为保留端口号,标准应用服务使用,1024以上是自由端口号,用户应用服务使用。
常用的协议和端口对应值如图3-2所示。
图3-2 常用端口信息
3.2.2 端口扫描过程
端口扫描通常指用同一个信息对目标主机的所有需要扫描的端口进行发送探测数据,然后根据返回数据的状态来分析目标主机端口是否打开、是否可用。端口扫描通过与目标主机的端口建立连接并请求某些服务,判断目标主机的应答,收集目标主机的端口信息,从而发现目标主机的漏洞和弱点,并确定端口所进行的服务类型以及服务的详细信息。端口扫描也可以通过捕获本地主机或服务器的流入流出数据包来监视本地IP主机的运行情况,它能对接收到的数据进行分析,帮助人们发现目标主机的某些内在的弱点。
端口扫描是最基本的网络安全扫描技术,它的基本流程如图3-3所示。
图3-3 端口扫描流程
在这个流程中,发送数据是最重要的,而数据的产生主要是根据各种不同的网络协议而构造的。例如,如果是基于TCP协议的端口扫描,就可以利用TCP协议来产生相应的数据。所以,在这里数据就是各种不同的网络协议数据。
为了获知目标主机有哪些端口打开,就要发送数据到目标端口,然后等待接收目标返回的数据,有时候,目标根本不返回任何数据,那么要分不同的情况进行判断。要对返回的信息进行仔细分析。
对于返回的协议数据,利用网络协议分析模块进行分析,读出不同的数据内容,根据数据内容的不同来判断端口是否打开或者关闭。
虽然基本流程是这样的,但是网络端口扫描的方法非常多,有些方法非常独特,需要借助第三方主机的帮助来获得端口信息。总的来说,端口扫描就是不断对目标主机进行探测,不同的方法有不同的探测技巧,后面的内容将对各种方法进行阐述。