网络端口扫描技术研究与实现

网络端口扫描技术研究与实现
网络端口扫描技术研究与实现

网络端口扫描技术研究与实现

0引言

网络出现故障时,人们总习惯先用ping命令检测目标系统是否有所反应,如果要进一步了解目标系统的网络连接情况,黑客最常使用的一种手段就是端口扫描。ping命令只能检测目标主机是否是激活的(开机状态),而许多时候,如果目标主机或者其防护设备禁止了ping探测包,那么探测者甚至连对方是否处于激活状态都不得而知,这时候,对目标主机进行全面的端口扫描不仅是为了确定其开放的网络服务,而更基本的还在于确定其是否真正处于激活状态。

当然,端口扫描最大的作用是提供目标主机网络服务的清单,许多时候,扫描者不仅获得目标主机对外开放的TCP和UDP端口列表,而且还能通过一些连接测试得到监听端口返回的banners(旗标)信息。这些信息,对于判断监听端口上开放的服务类型以及对应软件版本甚至操作系统类型都有重要作用。

总之,端口扫描是一种非常重要的预攻击探测手段,几乎是所有黑客攻击的通用手段。同时通过端口扫描技术,可以在主机或系统在被攻击前得到一些警告和预报,尽可能在早期预测攻击者的行为并获得一定的证据,从而对攻击进行预警或采取一定的防御措施。

1端口介绍

1.1 端口的概念

TCP/IP协议虽然规定了各个协议的实现细节,但却并没有确切地规定应用程序如何与协议软件进行交互。因此实际上所说的服务器和主机之间没有一个一一对应关系,主机是一个硬件的概念,是一台物理设备,而服务器是指一组软件系统,一台主机上可以装多个服务器来提供服务,而某个服务器也可以由几台计算机通过软件进行捆绑后实现,一台主机可由IP地址区分,而主机上的服务则可以由端口实现。端口通俗地讲就是一个通信通道的“门”,各种计算机服务和通信都是通过特定的端口与外部计算机进行通信,像常见的WWW、FTP、Telnet服务一样。根据Berkeley套接字,端口共用16bits来表示,故其范围为0-65535共65536个,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等

1.2 端口的分类

逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:

(1) 按端口号分布划分

公认端口(Well Known Ports):这类端口也常称之为“常用端口”。这类端口的端口号从0到1023,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口不可再重新定义它的作用对象。例如,80号端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口像木马这样的黑客程序通常不会利用。

注册端口(Registered Ports):端口号从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,一些远程控制软件和木马程序中都会有这些端口的定义的。记住这些常见的程序端口在木马程序的防护和查杀上是非常有必要的。

动态和/或私有端口(Dynamic and/or Private Ports):端口号从49152到65535。理论上,不应为服务分配这些端口。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。

(2) 按协议类型划分

按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口:

TCP端口:即传输控制协议端口,需要在客户端和服务器之间建立三次握手连接,这样可以提供可靠

的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP 服务的80端口等。

UDP端口:即用户数据报协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等。

1.3 常见端口介绍

表1常见端口介绍

2端口扫描的概念

2.1 端口扫描的原理

端口扫描,顾名思义,就是逐个对一段端口或指定的端口进行扫描。通过扫描结果可以知道一台计算机上都提供了哪些服务,然后就可以通过所提供的这些服务的已知漏洞就可以进行攻击。

其原理是当一个主机向远端一个服务器的某一端口提出一个建立连接的请求,如果对方有此项服务,就会应答,利用这个原理,如果对所有熟知的端口或自己选定的某个范围内的熟知端口分别建立连接,并记录下远端服务器所给予的应答,通过查看记录就可以搜集到目标服务器上都安装了哪些服务,这就是端口扫描,通过端口扫描,就可以搜集到很多关于目标主机的各种很多有参考价值的信息,还可以发现一些漏洞。

通常进行端口扫描的工具目前主要采用的是端口扫描软件,也称之为“端口扫描器”。端口扫描器也是一种程序,它可以对目标主机的端口进行连接,并记录目标端口的应答。端口扫描器通过选用远程TCP/IP 协议不同的端口的服务,记录目标计算机端口给予回答的方法,可以收集到很多关于目标计算机的各种有用信息(比如是否有端口在侦听,是否允许匿名登录,是否有可写的FTP目录,是否能用Telnet等)。但扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标主机的某些内在的弱点。一个好的扫描器能对它得到的数据进行分析,帮助我们查找目标主机的漏洞,但它不会提供进入一个系统的详细步骤。

2.2 端口扫描的目的

端口扫描主要是为三大类用户服务的:网络管理员、黑客、普通用户。他们对网络使用的角度不同,所以所进行端口扫描的目的也各不相同,具体的目的如表2所示。

3端口扫描技术

3.1 端口扫描技术的基础

端口这个概念是在传输层提出的,是传输层标志服务的手段。传输层有两个重要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。

3.1.1 TCP报文格式

TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议,它最主要的工作流程就是通过三次握手建立连接,通过面向连接来传输数据,最后再释放连接。

图1 TCP报文段的格式

图1中的标志位的含义分别为:

SYN—用来建立连接,让连接双方同步序列号。如果SYN=1,ACK=0,为连接请求;如果SYN=1,ACK=1,为接受连接。

FIN—用来释放一个连接。

RST—用来复位一个连接,当RST=1时,表明出现严重差错,必须释放连接,重建连接。

URG—紧急数据标志,URG=1时,表示数据包中含紧急数据,紧急指针有效。

ACK—确认标志位。ACK=I时确认号有效,ACK=0时确认号无效。

PSH—如果置位,接收端应尽快把数据传送给应用层。

3.1.2 TCP发送报文与响应报文的关系

(1) 当一个SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包。

(2) 当一个RST数据包到达一个监听端口时RST被丢弃。

(3) 当一个RST数据包到达一个关闭端口时RST被丢弃

(4) 当一个包含ACK的数据包到达一个监听口时,数据包被丢弃。

(5) 当一个SYN位关闭的数据包到达一个监听端口时,数据包被丢弃。

(6) 当一个SYN数据包到达一个监听端口时,正常的三阶段建链继续.回答一个SYN ACK数据包。

(7) 当一个FIN数据包到达一个监听端口时,数据包被丢弃。

(8) 当一个RST数据包到达SYN_RCVD端口时,目标主机仅仅退回LISTEN状态,并且不向应用层发送任何信号,处理完毕。

3.2 端口扫描的分类

端口扫描技术发展到现在,可以细分为许多类型。端口扫描的分类可以参见图2所示。

图2 端口扫描分类

3.3 常见端口扫描技术

3.3.1 TCP connect 扫描

这种方法也称之为“TCP 全连接扫描”。它是最简单的一种扫描技术,所利用的是TCP 协议的3次握手过程。它直接连到目标端口并完成一个完整的3次握手过程(SYN 、SYN/ACK 和ACK )。操作系统提供的“connect()”函数完成系统调用,用来与目标计算机的端口进行连接。如果端口处于侦听状态,那么“connect()”函数就能成功。否则,这个端口是不能用的,即没有提供服务。其扫描原理如图3-1及图3-2所示。

TCP 连接扫描技术的一个最大的优点是不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处是速度快。如果对每个目标端口以线性的方式,使用单独的“connect()”函数调用,那么将会

花费相当长的时间,用户可以同时打开多个套接字,从而加速扫描。使用非阻塞I/O 允许用户设置一个低的时间以用尽周期,并同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且很容易被过滤掉。目标计算机的日志文件会显示一连串的连接和连接出错的服务消息,目标计算机用户发现后就能很快使它关闭。

3.3.2 TCP SYN 扫描

若端口扫描没有完成一个完整的TCP 连接,即在扫描主机和目标主机的一指定端口建立连接的时候,只完成前两次握手,在第三步时,扫描主机中断了本次连接,使连接没有完全建立起来,所以这种端口扫描又称为“半连接扫描”,也称为“间接扫描”或“半开式扫描”(Half Open Scan )。

SYN 扫描,通过本机的一个端口向对方指定的端口,发送一个TCP 的SYN 连接建立请求数据报,然

后开始等待对方的应答。如果应答数据报中设置了SYN 位和ACK 位,那么这个端口是开放的;如果应答数据报是一个RST 连接复位数据报,则对方的端口是关闭的。使用这种方法不需要完成Connect 系统调用所封装的建立连接的整个过程,而只是完成了其中有效的部分就可以达到端口扫描的目的。TCP SYN 扫描过程如图4-1、图4-2所示。

此种扫描方式的优点是不容易被发现,扫描速度也比较快。同时通过对MAC 地址的判断,可以对一

些路由器进行端口扫描,缺点是需要系统管理员的权限,不适合使用多线程技术。因为在实现过程中需要自己完成对应答数据报的查找、分析,使用多线程容易发生数据报的串位现象,也就是原来应该这个线程接收的数据报被另一个线程接收后,这个数据报就会被丢弃,而等待线程只好在超时之后再发送一个SYN 数据报,等待应答。这样,所用的时间反而会增加。

3.3.3 TCP FIN 扫描

这种扫描方式不依赖于TCP 的3次握手过程,而是TCP 连接的“FIN”(结束)位标志。原理在于TCP 连接结束时,会向TCP 端口发送一个设置了FIN 位的连接终止数据报,关闭的端口会回应一个设置了RST 的连接复位数据报;而开放的端口则会对这种可疑的数据报不加理睬,将它丢弃。可以根据是否收到RST 数据报来判断对方的端口是否开放。其扫描过程如图5-1、图5-2所示。

此扫描方式的优点比前两种都要隐秘,不容易被发现。该方案有两个缺点:首先,要判断对方端口是否开放必须等待超时,增加了探测时间,而且容易得出错误的结论;其次,一些系统并没有遵循规定,最典型的就是Microsoft 公司所开发的操作系统。这些系统一旦收到这样的数据报,无论端口是否开放都会回应一个RST 连接复位数据报,这样一来,这种扫描方案对于这类操作系统是无效的。

3.3.4 TCP ACK 扫描

扫描主机想目标主机发送ACK 数据包。根据返回的RST 数据包有两种方法可以得到端口的信息。方法一是:若返回的RST 数据包的TTL 值小于或等于64,则端口开放,反之端口关闭,如图6-1所示。方法二是:若返回的RST 数据包的WINDOW 值非零,则端口开放,反之端口关闭,如图6-2所示。

3.3.5 TCP NULL 扫描

扫描主机将TCP 数据包中ACK 、FIN 、RST 、SYN 、URG 、PSH 标志位全部置空后发给目标主机。若目标端口开放,目标主机将不返回任何信息,如图7-1所示;若目标主机返回RST 信息,则表示端口关闭,如图7-2所示。

3.3.6 TCP XMAS 扫描

XMAS 扫描原理和NULL 扫描类似,它是将TCP 数据包中ACK 、FIN 、RST 、SYN 、URG 、PSH 标志位全部置1后发给目标主机。若目标端口开放,目标主机将不返回任何信息,如图8-1所示;若目标主机返回RST 信息,则表示端口关闭,如图8-2所示。

3.3.7 SYN/ACK 扫描

这种扫描故意忽略了TCP 的3次握手过程。这里,扫描主机不向目标主机发送SYN 数据包,而是先发送SYN/ACK 数据包,目标主机将报错,并判断为一次错误的连接。若目标端口开放,目标主机将返回RST 信息,如图9-1所示;若目标端口关闭,目标主机将不返回任何信息,数据包会被丢掉,如图9-2所示。

3.3.8 UDP ICMP 端口不可到达扫描

扫描主机发送UDP 数据包给目标主机的UDP 端口,等待目标端口的端口不可到达(ICMP_PORT_UNREACH)的ICMP 信息。若超时也未能收到端口不可到达的ICMP 信息,则表明目标端口可能处于监听状态,如图10-1所示;若这个ICMP 信息及时收到,则表明目标端口处于关闭状态,如图10-2所示。

这种扫描方法可以扫描非TCP 端口,避免了TCP 的入侵检测,但是由于基于简单的UDP 协议,扫描相对困难,速度很慢而且需要root 权限,同时这种方法十分不可靠。

3.3.9 UDP recvfrom()和write()扫描

当非root 用户不能直接读到端口不可到达错误时,Linux 能间接地在它们到达时通知用户。例如,对一个关闭的端口的第二个write ()调用将失败。在非阻塞的UDP 套接字上调用recvfrom()时,如果ICMP 出错还没有到达时会返回eagain (重试)。如果ICMP 到达时,将会返回econnrefused (连接被拒绝),这样就能查看端口是否打开。

3.3.10 IP 段扫描

这种方法并不是直接发送TCP 协议探测数据包,而是将数据包分成两个较小的IP 协议段。这样就将一个TCP 协议头分成好几个数据包,从而过滤器就很难探测到。但必须小心,一些程序在处理这些小数据包时会有些麻烦。 3.3.11 ICMP echo 扫描

其实这并不能算是真正意义上的扫描。但有时的确可以通过支持Ping 命令,判断在一个网络上主机是否开机。Ping 是最常用的,也是最简单的探测手段,用来判断目标是否活动。实际上Ping 是向目标发送一个回显(Type =8)的ICMP 数据包,当主机得到请求后,再返回一个回显(Type =0)的数据包。而且Ping 程序一般是直接实现在系统内核中的,而不是一个用户进程,更加不易被发现。

3.3.12高级ICMP 扫描

ping 是利用ICMP 协议实现的,高级的ICMP 扫描技术主要利用ICMP 协议最基本的用途—报错。根据网络协议,如果接收到的数据包协议项出现了错误,那么接收端将产生一个“Destination Unreachable”(目标主机不可达)ICMP 的错误报文。这些错误报文不是主动发送的,而是由于错误,根据协议自动产生的。当IP 数据包出现Checksum (校验和)和版本的错误的时候,目标主机将抛弃这个数据包;如果是Checksum

出现错误,那么路由器就直接丢弃这个数据包。有些主机比如AIX、HP/UX等,是不会发送ICMP的Unreachable数据包的。

3.3.13 认证扫描

认证扫描(即TCP ident扫描)基于认证Ident协议。认证协议允许看到通过TCP连接的任何进程拥有者的用户名。利用认证协议,可以获得运行在某个端口上的进程的用户名(userid)。认证扫描同时也被称为反向认证扫描(即TCP反向ident扫描),因为虽然最初的RFC建议了一种帮助服务器认证客户端的协议,然而在实际中也还是考虑了反向应用,即用户认证服务器。Ident用于确定某个TCP连接的发起用户身份,方法是与身份待验证方主机的TCP 113端口建立连接并通信,许多版本的ident服务会响应并返回与某端口上服务进程相关联的用户属主。

3.3.14 代理扫描

代理扫描(即FTP反弹攻击)基于文件传输协议。其扫描原理为:操作者在本地打开与一个FTP Server 的控制连接(到其TCP 21端口),然后用PORT命令向FTP Server提供一个欲扫描的目标主机端口号,继而发送LIST命令,这时,FTP Server会向目标主机指定端口发送连接请求,如果目标主机相应端口正在监听,则会返回成功信息,否则,会返回类似“425 Can’t build data connetion:Connection refused”的连接失败信息。

这种方法的优点很明显,难以跟踪,能穿过防火墙。主要缺点是速度很慢,有的FTP服务器最终能得到一些线索,关闭代理功能。

3.3.15 窗口扫描

窗口扫描技术是向目标端口发送窗口控制报文。由于窗口控制报文总是以应答报文ACK的方式发送,所以可以和ACK扫描一样用来探测过滤性防火墙的过滤规则。但有意思的是,一些网络实现,例如BSD4.3,在LISTEN状态对于到达的窗口控制报文,在发送的RST响应报文中还包含了当前的窗口大小。这样,只要检查RST报文的SEQ、WND,就可通过窗口扫描获得目标端口的状态。

3.4 逃避检测的几种方法

(1) 改变检测的次序

将要扫描的IP地址和端口的次序打乱,可以躲避或降低检测的效率。

(2) 降低扫描速度

降低扫描速度能使当前大部分扫描检测系统不产生报警,即使对一些能够检测慢速扫描的系统来说,要分析相当长时间的网络连接,并要在更多的正常连接中找出扫描行为,增加了检测的难度。

(3) 扫描间隔随机化

确定的扫描时间间隔使得检测器能够比较高效地工作,随机化间隔能使之降低检测效率。

(4) 随机化不太重要的字段

扫描数据包中的序列号、ACK号、IP序号、源端口号经常是一些较固定的值,很容易通过一些简单的运算产生,改变这些固有的数值会增加检测的难度。

(5) 假冒源地址

源地址是一个比较难以改变的部分,因为扫描者需要接收对方的反馈以确定端口是否开放。如果能够监视一个靠近目标的网络(如目标网络的ISP),就可以假冒一个源地址发送扫描的包,再从被监视的网络中获取回应的包。

(6) 分布式扫描

从许多不同位置的真实主机发起扫描,扫描的痕迹也被分散到不同的主机上,这使扫描检测变得更加复杂。大量的可发起拒绝服务攻击的代理可被用来实现分布式扫描。

4端口扫描的防御

4.1 网络扫描的监测与处理

网络扫描监测系统从逻辑上可以分为三个部分:即抓包模块、判定模块、处理模块。同时还应该保留对处理模块的接口。

(1) 抓包模块

这一模块一般只需要调用标准的网络接口,目前一般的开发工具都提供相应的Winsock API()。

(2) 判定模块

本模块是处理由抓包模块提交的数据报文,根据预定义的过滤规则进行第一次匹配,选出非正常报文,提交给上层应用,对于选定的非正常报文,由于存在多种可能,如:TCP SYN、TCP FIN等,则需要进行由用户定制的二次匹配,其中的特征值由用户根据相应的扫描特点定义。那些仍然没有确定的报文,往往带有二义性,这就需要借助历史记录的数据库,或者报文(如ICMP报文)长度的阀值来加以判断。

(3) 处理模块

这一模块是按照需要设置的各种实现方式和采取相对策略,并且要将相应记录存入日志。需要注意的是对一般的扫描要设置有效的阀值,仅仅一次、二次的扫描不应该被视为网络扫描。

4.2 端口扫描的防御措施

一般来说,扫描者并不是孤立地、单纯地使用某种扫描方法,而是综合地应用一系列扫描方法目前存在的扫描程序主要可分为基于主机和基于网络两种,前者主要关注软件所在主机上面的风险漏洞,而后者则是通过网络远程探测其它主机的安全风险漏洞。

现在反扫描的软件主要两种:一种是伪装型的,即这个程序伪装打开所有的常用的端口,这样攻击者扫描会得到一个错误的结果,并且程序会记录攻击者扫描纪录;另一种是影视型的,即程序只能监视攻击者的扫描并且发出预警信息,但不能阻止扫描。这两种反扫描的软件都无法对攻击者扫描行为进行拦截,但却可以记录下攻击者的扫描行为,只要定期查看或者在程序中实现一定的人工智能报警,就可以较大程度的防范攻击者的下一步攻击。

但是编写的再好的反扫描软件也没有防火墙的功能强大,这是因为反扫描本属于防火墙的一部分,防火墙本可以通过屏蔽外部非法连接等手段来防止扫描。通过防火墙设定一定规则是完全可以拦截攻击者的扫描行为的,当然,防火墙也不是万能的,对于“端口反弹”式的木马和病毒,防火墙也有不少局限之处。

目前常用的扫描防御方法有以下3种:

(1) 在防火墙(或NA T)上采用更严格的过滤规则,阻止大部分扫描数据报文进入系统。

(2) 主机系统除了必要的网络服务外,关闭其他所有的网络服务。例如,对于一台纯粹的WEB服务器而言,只需要开放其80端口,其余的FTP、Telnet等网络服务均可以全部关闭。

(3) 对于不需要为公众所周知的网络服务,采用更改默认端口的方法。例如,某UNIX只为某些特定的用户提供FTP服务,那么该FTP端口可以不用默认端口21,而选用另外一个值,这样非特定用户就无法使用该网络服务。

目前针对端口扫描的防御方法就是加强信息隐蔽。扫描的目的是为了获取信息,因此,通过提高自身的安全系数,杜绝不必要信息的外泄,是目前网络扫描防御方法的实质。对于一般的普通用户可以关闭不必要的系统服务,借助软件关闭电脑上的不必要端口,或者直接封杀所有常见的木马端口,加强电脑防护意识等。

5端口扫描的实现

5.1 基于TCP connect扫描原理的JA V A源代码

package net;

import java.io.IOException;

import https://www.360docs.net/doc/ee14051942.html,.Socket;

import https://www.360docs.net/doc/ee14051942.html,.UnknownHostException;

public class PortScanner {

public PortScanner() {//这是一个最常规的TCP connect扫描端口的程序,

}//主要原理是TCP经过三次握手建立连接后表示目标端口开放,否则关闭

public static void main(String[] args) {

String host = "10.1.184.122";//这里可以随便填某一IP地址

for (int i = 20; i < 25; i++) {//这里的端口号也随便填

Socket s = null;

try {

s = new Socket(host, i);

System.out.println(" 目标主机" + host + "在端口" + i + "上有服务运行!"); } catch (UnknownHostException e) {

} catch (IOException e) {

System.out.println("目标主机" + host + "在端口" + i + "上没有服务运行!"); } finally {

try {

if (s != null) {

s.close();

}

} catch (IOException e) {

}

}

}

}

}

扫描结果如下:

run-single:

目标主机10.1.184.122在端口20上没有服务运行!

目标主机10.1.184.122在端口21上有服务运行!

目标主机10.1.184.122在端口22上没有服务运行!

目标主机10.1.184.122在端口23上没有服务运行!

目标主机10.1.184.122在端口24上没有服务运行!

成功生成(总时间:1 分钟 26 秒)

5.2 安全扫描器

目前端口扫描工具比较多,如SuperScan就是一款非常优秀的端口扫描工具,它具有速度快、可靠性高、多线程等优点。下面将使用SuperScan同样对主机10.1.184.122进行扫描演示。

图11中显示出了目标主机10.1.184.122在20—25端口间的开放情况,其结果与5.1中的结果一样。

图11用SuperScan扫描一个目标主机的界面

6总结

端口扫描是一种非常重要的预攻击探测手段,几乎是黑客攻击的必经之途。通过端口扫描,可以知道目标主机上开放了哪些端口,运行了哪些服务,这些都是入侵系统的可能途径。对端口扫描技术进行研究,可以在攻击前得到一些警告和预报,尽可能在早期预测攻击者的行为并获得一定的证据,从而对攻击进行预警。

网络安全扫描技术是新兴的技术,与防火墙、入侵检测等技术相比,它们从另一个角度来解决网络安全上的问题。随着网络的发展和内核的进一步修改,新的端口扫描技术及对入侵的端口扫描的新防御技术还会诞生,所以只有紧紧跟踪扫描技术的发展,才能“知己知彼”,才能安全和有效地管理网络。

实验2-网络端口的扫描

南昌航空大学实验报告 二〇一三年十一月八日 课程名称:信息安全实验名称:实验网络端口扫描 班级:姓名:同组人: 指导教师评定:签名: 一、实验目的 通过练习使用网络端口扫描器,可以了解目标主机开放的端口和服务程序,从而获取系统的有用信息,发现网络系统的安全漏洞。在实验中,我们将在操作系统下使用进行网络端口扫描实验,通过端口扫描实验,可以增强学生在网络安全方面的防护意识。利用综合扫描软件“流光”扫描系统的漏洞并给出安全性评估报告。 二、实验原理 .端口扫描的原理 对网络端口的扫描可以得到目标计算机开放的服务程序、运行的系统版本信息,从而为下一步的入侵做好准备。对网络端口的扫描可以通过执行手工命令实现,但效率较低;也可以通过扫描工具实现,效率较高。 扫描工具根据作用的环境不同,可分为两种类型:网络漏洞扫描工具和主机漏洞扫描工具。 .端口的基础知识 为了了解扫描工具的工作原理,首先简单介绍一下端口的基本知识。 端口是协议中所定义的,协议通过套接字()建立起两台计算机之间的网络连接。套接字采用[地址:端口号]的形式来定义,通过套接字中不同的端口号可以区别同一台计算机上开启的不同和连接进程。对于两台计算机间的任意一个连接,一台计算机的一个[地址:端口]套接字会和另一台计算机的一个[地址:端口]套接字相对应,彼此标识着源端、目的端上数据包传输的源进程和目标进程。这样网络上传输的数据包就可以由套接字中的地址和端口号找到需要传输的主机和连接进程了。由此可见,端口和服务进程一一对应,通过扫描开放的端口,就可以判断出计算机中正在运行的服务进程。 /的端口号在~范围之内,其中以下的端口保留给常用的网络服务。例如,端口为服务,端口为服务,端口为服务,端口为服务,端口为服务等。 .扫描的原理 扫描的方式有多种,为了理解扫描原理,需要对协议简要介绍一下。 一个头的数据包格式如图所示。它包括个标志位,其中:、、、。 图数据包格式 根据上面介绍的知识,下面我们介绍基于和协议的几种端口扫描方式。

端口扫描实验报告

综合实验报告 ( 2010 -- 2011 年度第二学期) 名称:网络综合实验 题目:端口扫描程序 院系:信息工程系 班级: 学号: 学生姓名: 指导教师:鲁斌李莉王晓霞张铭泉设计周数: 2 周 成绩: 日期:2011年7月1日

一、综合实验的目的与要求 1.任务:设计并实现一个端口扫描程序,检测某个IP或某段IP的计算机的端口工作情况。 2.目的:加深对课堂讲授知识的理解,熟练掌握基本的网络编程技术和方法,建立网络编程整体概念,使得学生初步具有研究、设计、编制和调试网络程序的能力。 3.要求:熟悉有关定义、概念和实现算法,设计出程序流程框图和数据结构,编写出完整的源程序,基本功能完善,方便易用,操作无误。 4.学生要求人数:1人。 二、综合实验正文 1.端口扫描器功能简介:服务器上所开放的端口就是潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息,进行端口扫描的方法很多,可以是手工进行扫描、也可以用端口扫描软件进行。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法可以搜集到很多关于目标主机的各种有用的信息,例如远程系统是否支持匿名登陆、是否存在可写的FTP目录、是否开放TELNET 服务和HTTPD服务等。 2.实验所用的端口扫描技术:端口扫描技术有TCP connect()扫描、TCP SYN扫描、TCP FIN 扫描、IP段扫描等等。本次实验所用的技术是TCP connect()扫描,这是最基本的TCP 扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。 3.实验具体实现方案:编写一个端口扫描程序,能够显示某个IP或某段IP的计算机的某一个或某些端口是否正在工作。基本工作过程如下: (1) 设定好一定的端口扫描范围; (2) 设定每个端口扫描的次数,因为有可能有的端口一次扫描可能不通; (3) 创建socket,通过socket的connect方法来连接远程IP地址以及对应的端口; (4) 如果返回false,表示端口没有开放,否则端口开放。 4.有关TCP/IP的知识: 4.1套接字概念 1)在网络中要全局地标识一个参与通信的进程,需要采用三元组:协议、主机IP地址、端口号。

TCP的客户 服务器 端口扫描程序设计

海南大学信息科学技术学院《安全扫描技术》 TCP的客户/服务器/端口扫描程序设计 学号: ______ 姓名: 年级: 2010级 __________ 专业:信息安全 ______ 指导老师:顾剑 ____

目录 1实验目的及要求 (1) 2实验的背景及意义 (1) 3实验流程 (1) 4实验内容与步骤 (3) 5实验代码 (5) 5.1 TCP服务器程序: (5) 5.2 TCP客户端: (8) 5.3 TCP端口扫描: (10) 6实验操作手册 (11) 7实验总结 (14)

第 1 页共17 页 1实验目的及要求 (1)、熟悉Microsoft Visual Studio 2006编程环境。 (2)、了解TCP客户/服务器/扫描端口的模型原理。 (3)、熟悉Socket编程原理,掌握简单的套接字编程。 2实验的背景及意义 (1)、TCP客户和服务器 TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后数据传送,最后拆除连接三个过程并且TCP在建立连接时又分三步走: 第一步是请求端(客户端)发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号; 第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP 序号被加一,ACK即确认(Acknowledgement)。 第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。然后才开始通信的第二步:数据处理。 这就是所说的TCP三次握手(Three-way Handshake)。简单的说就是:(C:客户端,S:服务端) C:SYN到S S:如成功--返回给C(SYN+ACK) C:如成功---返回给S(ACK)以上是正常的建立连接方式(2)、TCP端口扫描 “端口”在计算机网络领域中是个非常重要的概念。它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。如果有需要的话,一台计算机中可以有上万个端口。 端口是由TCP/IP协议定义的。其中规定,用IP地址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向[A:端口]就可以实现通信了。 可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,入侵者通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接,这也是端口扫描的主要目的。 3实验流程 (1)、TCP客户程序和服务器程序流程图 程序分两部分:客户程序和服务器程序。 工作过程是:服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。或者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到的字符在屏幕上显示出来。

端口扫描与检测技术的实现论文

端口扫描与检测技术的实现 摘要 随着Internet日益广泛的应用,黑客攻击行为也是有增无减。如何有效地抵御这种攻击行为,一直是信息安全领域的焦点。 而其中,端口扫描技术吸引了越来越多人的关注。端口扫描是黑客搜集目标主机信息的一种常用方法。为了有效地对付网络入侵行为,对端口扫描进行研究是非常有益和必要的。攻击者在攻击一个目标时,首先要获取目标的一些基本信息,端口扫描就是其中最简单最重要的方法之一,它可以扫描目标机器中开放的端口,从而确定目标机器中提供的服务,为下一步攻击做准备。针对端口扫描技术,相应的端口扫描检测技术显的越发重要,作为网络安全技术中的一个重要课题,端口扫描检测技术意义重大。 本文首先阐述了端口扫描技术以及端口扫描检测技术的基本原理和常用方法,然后在此基础上设计了一个对基于网络的端口进行扫描,能判断出目标主机端口开放情况的程序以及一个从网络信息的数据包的捕获和分析着手,再通过统计判断是否存在端口扫描行为的程序,最后从攻击和防御的角度对端口扫描和检测技术作了演示及分析。 关键词:端口;端口扫描;数据包捕获;端口检测

The Realization of Port Scanning and Detecting Technology Abstract As the widely applying of Internet, the attacking behavior made by hacker is increasing but not decreasing. How to resist this kind of attacking behavior is always the key point of the domain of the information security. And the port scanning draws people's attention more and more. Port scanning is a usual method which is used by the hacker to collect the information of the target main processor. In order to deal with the invading behavior of the Internet effectively, it is very useful and necessary to work on the port scanning. When an attacker attacks to a target, he or she will firstly gets some basic information about the target, and the port scanning is one of the most simple and important methods which can scan the opening Port of the target machine to make sure the offering service made by the target machine, and it is a preparation to the next attacking. The port detecting seems more and more important referring to the port scanning. As an important task of the secure technique of Internet, the port detecting is of great significance. In this thesis, it firstly elaborates the basic principles and usual methods of the port scanning. On this basis, it then designs a program which can scan the Port of the Internet, and assess the opening situation of the target main processor, and the other program which begins on capturing and analyzing the information packet of Internet, and then assess whether there is a behavior about port scanning through statistic analyses. Lastly, it demonstrates and analyses the technology of port scanning and port detecting from the viewpoint of attacking and resisting. Key Words:port; port scanning; packet capture; port detecting

端口扫描报告

杭州电子科技大学软件学院网络工程试验报告 端口扫描报告 09109146 王子龙

1.端口及端口扫描技术简介 (2) 2.对现有端口扫描工具程序的理解 (2) 主界面 (3) 3.核心代码 (6) 4.个人总结 (13) 1.端口及端口扫描技术简介 根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP 端口和UDP端口。 一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。主机不只是靠IP地址来区分网络服务,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。 一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。 在手工进行扫描时,需要熟悉各种命令。对命令执行后的输出进行分析。用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。 通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。 2. 对现有端口扫描工具程序的理解 该程序是有C++编写的。C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。 该程序能够扫描主机IP的某一个端口,或者是扫描该主机IP某一范围内的端口。并且提供多次扫描功能。如果要扫描的端口很多,在扫描过程中可以暂停扫描。扫描结果在界面的下方显示。主要显示内容有IP地址、端口号、端口状态、连接次数及备注。

主机端口扫描程序设计

主机端口扫描程序设计 摘要 计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显。端口扫描技术是发现安全问题的重要手段之一。 本程序是在Windows系统中使用C语言用MFC完成的一个端口扫描程序。此程序主要完成了TCP connect()扫描和UDP扫描功能。TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。而对于UDP扫描只支持单线程,速度较慢。扫描结果以列表的形式直观地展现出来。 关键词:端口扫描、TCP扫描、UDP扫描、TCP多线程扫描

目录 1引言 (1) 1.1 课题的背景及意义 (1) 1.2 端口扫描现状 (1) 2系统设计 (1) 2.1 系统主要目标 (1) 2.2 开发环境及工具 (1) 2.3 功能模块与系统结构 (2) 3系统功能程序设计 (4) 3.1 获取本机IP (4) 3.2 分割字符串函数的实现 (4) 3.3 获取待扫描的IP地址 (5) 3.4 获取待扫描的端口号 (5) 3.4.1 指定端口号的初始化 (6) 3.4.2 指定端口号的保存 (7) 3.5 TCP CONNECT()扫描 (8) 3.5.1 基本原理 (8) 3.5.2 扫描多个主机多端口多线程的实现 (8) 3.5.3 扫描结果的显示 (9) 3.6 UDP扫描 (10) 3.6.1 基本原理 (10) 3.6.2 计算效验和 (11) 3.6.3 发送UDP数据包 (11) 3.6.4 接收ICMP数据包 (12) 4测试报告 (12) 4.1 TCP扫描检测 (12) 4.1.1扫描本机 (12) 4.1.2扫描网络中其他主机 (13) 4.1.3 扫描IP段 (13) 4.2 UDP扫描检测 (14) 4.2.1 扫描本机 (14) 4.1.2扫描网络中其他主机 (15) 4.3 TCP、UDP一起扫描 (16) 结论 (17) 参考文献 (17)

常见的端口扫描类型及原理

常见的端口扫描类型及原理 常见的扫描类型有以下几种: 秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术。 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己。 秘密扫描能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。由于没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽。 但是这种扫描的缺点是扫描结果的不可靠性会增加,而且扫描主机也需要自己构造IP包。现有的秘密扫描有TCP FIN 扫描、TCP ACK扫描、NULL扫描、XMAS扫描和SYN/ACK 扫描等。 1、Connect()扫描: 此扫描试图与每一个TCP端口进行“三次握手”通信。如果能够成功建立接连,则证明端口开发,否则为关闭。准确度很高,但是最容易被防火墙和IDS检测到,并且在目标主机的日志中会记录大量的连接请求以及错误信息。 TCP connect端口扫描服务端与客户端建立连接成功(目标

端口开放)的过程: ① Client端发送SYN; ② Server端返回SYN/ACK,表明端口开放; ③ Client端返回ACK,表明连接已建立; ④ Client端主动断开连接。 建立连接成功(目标端口开放)如图所示 TCP connect端口扫描服务端与客户端未建立连接成功(目标端口关闭)过程: ① Client端发送SYN; ② Server端返回RST/ACK,表明端口未开放。 未建立连接成功(目标端口关闭)如图所示。 优点:实现简单,对操作者的权限没有严格要求(有些类型的端口扫描需要操作者具有root权限),系统中的任何用户 都有权力使用这个调用,而且如果想要得到从目标端口返回banners信息,也只能采用这一方法。 另一优点是扫描速度快。如果对每个目标端口以线性的方式,使用单独的connect()调用,可以通过同时打开多个套接字,从而加速扫描。 缺点:是会在目标主机的日志记录中留下痕迹,易被发现,并且数据包会被过滤掉。目标主机的logs文件会显示一连串的连接和连接出错的服务信息,并且能很快地使它关闭。

端口扫描实验报告

网络端口扫描实验报告 一、网络端口扫描简介 TCP/IP协议在网络层是无连接的,而“端口”,就已经到了传输层。端口便是计算机与外部通信的途径。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。在手工进行扫描时,需要熟悉各种命令,对命令执行后的输析出进行分,效率较低。用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。扫描工具根据作用的环境不同可分为:网络漏洞扫描工具和主机漏洞扫描工具。前者指通过网络检测远程目标网络和主机系统所存在漏洞的扫描工具。后者指在本机运行的检测本地系统安全漏洞的扫描工具。本实验主要针对前者。 端口是TCP协议中定义的,TCP协议通过套接字(socket)建立起两台计算机之间的网络连接。它采用【IP地址:端口号】形式定义,通过套接字中不同的端口号来区别同一台计算机上开启的不同TCP和UDP连接进程。端口号在0~~65535之间,低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。这些常见的服务可以划分为使用TCP端口(面向连接如打电话)和使用UDP端口

(无连接如写信)两种。端口与服务进程一一对应,通过扫描开放的端口就可以判断计算机中正在运行的服务进程。 二、实验目的 1.了解熟悉MFC及的基本原理和方法。 2.加深对tcp的理解,学习端口扫描技术和,原理熟悉socket编程。 3.通过自己编程实现简单的IP端口扫描器模型。 4.通过端口扫描了解目标主机开放的端口和服务程序。 三、实验环境 Windows操作系统 VC++6.0开发环境 四、实验设计 实验原理 通过调用socket函数connect()连接到目标计算机上,完成一次完整的三次握手过程,如果端口处于侦听状态,那么connect()就可以成功返回,否则这个端口不可用,即没有提供服务。 实验内容 1. 设计实现端口扫描器 2. IP地址、端口范围可以用户输入。 3. 要求有有好的可视化操作界面。 实验步骤: 1、用户界面:使用vc6.0里的MFC来开发用户界面 2、端口扫描:使用socket函数中的connect()连接计算机来判定目标计算机是否开放了要测试的端口 五、代码实现 #include #include #pragma comment(lib,"wsock32.lib") #define ZERO (fd_set *)0 int maxth, scanok, scannum; int portip, hoststart, hoststop, startport, endport; long searchnum, searched; void usage(char *); void playx(int); void setip2(char *); void customport(char *, char *, char *); void portscannow(int); int main(int argc, char *argv[]) { WSADATA wsadata; system("cls.exe"); printf("\r\n============== 命令行端口扫描器PortScanner V1.0 ==============");

网络扫描实验

实验一:网络扫描实验 【实验目的】 了解扫描的基本原理,掌握基本方法,最终巩固主机安全 【实验内容】 1、学习使用Nmap的使用方法 2、学习使用漏洞扫描工具 【实验环境】 1、硬件PC机一台。 2、系统配置:操作系统windows XP以上。 【实验步骤】 1、端口扫描 解压并安装ipscan15.zip,扫描本局域网内的主机 【实验背景知识】 1、扫描及漏洞扫描原理见第四章黑客攻击技术.ppt NMAP使用方法 扫描器是帮助你了解自己系统的绝佳助手。象Windows 2K/XP这样复杂的操作系统支持应用软件打开数百个端口与其他客户程序或服务器通信,端口扫描是检测服务器上运行了哪些服务和应用、向Internet或其他网络开放了哪些联系通道的一种办法,不仅速度快,而且效果也很不错。 Nmap被开发用于允许系统管理员察看一个大的网络系统有哪些主机以及其上运行何种服务。它支持多种协议的扫描如UDP,TCP connect(),TCP SYN (half open), ftp proxy (bounce attack),Reverse-ident, ICMP (ping sweep), FIN, ACK sweep,X

mas Tree, SYN sweep, 和Null扫描。你可以从SCAN TYPES一节中察看相关细节。nmap还提供一些实用功能如通过tcp/ip来甄别操作系统类型、秘密扫描、动态延迟和重发、平行扫描、通过并行的PING侦测下属的主机、欺骗扫描、端口过滤探测、直接的RPC扫描、分布扫描、灵活的目标选择以及端口的描述。 图1 图2

图3 1)解压nmap-4.00-win32.zip,安装WinPcap 运行cmd.exe,熟悉nmap命令(详见“Nmap详解.mht”)。 图4

端口扫描程序设计

网络安全程序设计结课论文端口扫描程序设计

目录 第一章序言 (3) 第二章系统设计 (5) 2.1 运行环境及语言 (5) 2.2系统功能 (6) 2.3程序运行流程图 (6) 2.4 程序设计过程 (6) 2.41创建工程 (6) 2.42 主机端口扫描程序设计流程 (8) 2.43主要代码 (9) 2.5运行结果测试 (15) 第三章总结及心得 (16) 3.1 总结 (16) 3.2 心得体会 (16) 第四章参考文献 (16)

第一章序言 1.1 背景 Internet快速的发展,为我们带来了方便同时也带给了我们信息安全担忧。在计算机信息安全管理中可以通过端口扫描收集系统的信息来自动监测远程或本地主机安全性弱点的程序,可以发现远程服务器的各种tcp端口的分配及提供的服务与他们的软件版本。从而让管理员间接的或直观的了解到远程主机所存在的安全问题。从而端口扫描技术得到人们的重视。 1.2目的 该文章对端口扫描技术的原理和应用进行了阐述,并设计了一个简单的基于windows平台上的端口扫描系统。此程序主要完成了TCP connect()扫描和UDP扫描功能。TCP扫描支持多线程,能对单个指定的主机进行扫描或对指定网段的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段的端口进行逐个扫描。此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议开放的端口。而对于UDP扫描只支持单线程,速度较慢。扫描结果以列表的形式直观地展现出来。 1.3端口扫描概述 网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础

端口扫描

一、高级ICMP扫描技术 Ping就是利用ICMP协议走的,高级的ICMP扫描技术主要是利用ICMP协议最基本的用途:报错。根据网络协议,如果按照协议出现了错误,那么接收端将产生一个ICMP的错误报文。这些错误报文并不是主动发送的,而是由于错误,根据协议自动产生。 当IP数据报出现checksum和版本的错误的时候,目标主机将抛弃这个数据报,如果是checksum出现错误,那么路由器就直接丢弃这个数据报了。有些主机比如AIX、HP-UX等,是不会发送ICMP的Unreachable数据报的。 我们利用下面这些特性: 1、向目标主机发送一个只有IP头的IP数据包,目标将返回Destination Unreachable的ICMP错误报文。 2、向目标主机发送一个坏IP数据报,比如,不正确的IP头长度,目标主机将返回Parameter Problem的ICMP错误报文。 3、当数据包分片但是,却没有给接收端足够的分片,接收端分片组装超时会发送分片组装超时的ICMP数据报。

向目标主机发送一个IP数据报,但是协议项是错误的,比如协议项不可用,那么目标将返回Destination Unreachable的ICMP报文,但是如果是在目标主机前有一个防火墙或者一个其他的过滤装置,可能过滤掉提出的要求,从而接收不到任何回应。可以使用一个非常大的协议数字来作为IP头部的协议内容,而且这个协议数字至少在今天还没有被使用,应该主机一定会返回Unreachable,如果没有Unreachable的ICMP数据报返回错误提示,那么就说明被防火墙或者其他设备过滤了,我们也可以用这个办法来探测是否有防火墙或者其他过滤设备存在。 利用IP的协议项来探测主机正在使用哪些协议,我们可以把IP头的协议项改变,因为是8位的,有256种可能。通过目标返回的ICMP错误报文,来作判断哪些协议在使用。如果返回Destination Unreachable,那么主机是没有使用这个协议的,相反,如果什么都没有返回的话,主机可能使用这个协议,但是也可能是防火墙等过滤掉了。NMAP的IP Protocol scan也就是利用这个原理。 利用IP分片造成组装超时ICMP错误消息,同样可以来达到我们的探测目的。当主机接收到丢失分片的数据报,并且在一定时间内没有接收到丢失的数据报,就会丢弃整个包,并且发送ICMP分片组装超时错误给原发送端。我们可以利用这个特性制造分片的数据包,然后等待ICMP组装超时错误消息。可以对UDP 分片,也可以对TCP甚至ICMP数据包进行分片,只要不让目标主机获得完整的数据包就行了,当然,对于UDP这种非连接的不可靠协议来说,如果我们没

网络扫描及安全评估实验报告

一、实验目的 ●掌握网络端口扫描器的使用方法,熟悉常见端口和其对应的服务程序,掌 握发现系统漏洞的方法。 ●掌握综合扫描及安全评估工具的使用方法,了解进行简单系统漏洞入侵的 方法,了解常见的网络和系统漏洞以及其安全防护方法。 二、实验原理 ●端口扫描原理 ●端口扫描向目标主机的TCP/IP服务端口发送探测数据包,并记录 目标主机的响应。通过分析响应来判断服务端口是打开还是关闭, 就可以得知端口提供的服务或信息。 ●端口扫描主要有经典的扫描器(全连接)、SYN(半连接)扫描器、 秘密扫描等。 ●全连接扫描:扫描主机通过TCP/IP协议的三次握手与目标主机的 指定端口建立一次完整的连接。建立连接成功则响应扫描主机的 SYN/ACK连接请求,这一响应表明目标端口处于监听(打开)的 状态。如果目标端口处于关闭状态,则目标主机会向扫描主机发送 RST的响应。 ●半连接(SYN)扫描:若端口扫描没有完成一个完整的TCP连接, 在扫描主机和目标主机的一指定端口建立连接时候只完成了前两 次握手,在第三步时,扫描主机中断了本次连接,使连接没有完全 建立起来,这样的端口扫描称为半连接扫描,也称为间接扫描。 ●TCP FIN(秘密)扫描:扫描方法的思想是关闭的端口会用适当的 RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数 据包的回复。 ●综合扫描和安全评估技术工作原理 ●获得主机系统在网络服务、版本信息、Web应用等相关信息,然后 采用模拟攻击的方法,对目标主机系统进行攻击性的安全漏洞扫 描,如果模拟攻击成功,则视为漏洞存在。最后根据检测结果向系 统管理员提供周密可靠的安全性分析报告。

基于多线程的端口扫描程序

计算机网络课程课程设计任务书

计算机网络设计说明书 学院名称:计算机与信息工程学院 班级名称:网络工程122班 学生姓名: 学号: 题目:基于多线程的端口扫描程序 指导教师 姓名: 起止日期:2015年6月13日至2015年6月20日

一、选题背景 随着互联网的飞速发展,网络入侵行为日益严重,网络安全成为人们关注的焦点。端口扫描技术是网络安全扫描技术的重要技术之一。对目标系统进行端口扫描,是网络系统入侵者进入目标系统的第一步。网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。 现实世界中的很多过程都具有多条线索同时动作的特性。Java语言的一大特性就是内置对多线程的支持。多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况,它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。 端口是由计算机的通信协议TCP/IP协议定义的。其中规定,有IP地址和端口号作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机的进程。 可见端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,通过扫描端口,就可以判断出目标计算机有哪些通信进程正在等待连接。 利用TCP connect扫描原理,扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机该端口有回复,则说明该端口开放。利用多线程技术实现了对一目标IP进行设定数目的端口扫描,对多IP段的特定端口进行扫描。 二、方案设计 多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序。IP设置应为所在主机的IP地址,起始端口和结束端口应为0~65535之间的一个数,且起始端口应小于结束端口的大小。线程数为0~200之间的一个数。点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕。 本系统要实现的功能: ①端口扫描功能:扫描开放的端口,并将扫描到的开放端口号送到前台。 ②图像显示功能:显示图形界面,以及显示扫描结果。 ③多线程功能:当客户端要求与服务器端建立连接时,服务器端就将用到多线程功能,为每一个建立起来的连接创建一个线程。 ④异常抛出功能:对于明显的数据错误,能提示出错误的类型并阻止程序的运行。 流程图:

基于多线程的端口扫描程序课程设计报告

滁州学院 课程设计报告 课程名称: 设计题目:基于多线程的端口扫描程序 院部:计算机与信息工程学院 专业:网络工程 组别:第六组 起止日期: 2012 年12月31日~2013 年1月6日指导教师: 计算机与信息工程学院二○一二年制

课程设计任务书 目录 1 需求分析. 0 1..1 网络安全 0 1.2 课程背景 0 1.3 扫描器 0 1.4 多线程扫描器介绍 (1) 错误! 未定义书签。

错误! 未定义书签。 错误! 未定义书签。 错误! 未定义书签。 1.5 端口扫描 (2) 2 概要设计. (3) 2.1 整体框架设计 (3) 2.2 流程图描述 (3) 3 详细设计. (3) 3.1 端口扫描线程启动 (3) 3.2 GUI 图形界面 (5) 3.3 按钮监听及异常处理 (6) 4 调试与操作说明. (8) 4.1 运行界面 (8) 4.2 扫描结果 (8) 4.3 错误提示 (8) 5 课程设计总结与体会. (8) 6 参考文献. (9) 7 致谢. (9) 8 附录. 0 1 需求分析 1..1 网络安全二十一世纪是信息化、网络化的世纪,信息是社会发展的重要资源。信息安全保障能力是一个国家综合国力、经济竞争实力和生存能力的重要组成部分,是世界各国在奋力攀登的制高点。网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行。网络安全包括技术领域和非技术领域两大部分: 非技术领域包括一些制度、政策、管理、安全意识、实体安全

等方面的内容; 技术领域包括隐患扫描、防火墙、入侵检测、访问控制、虚拟专用网、CA 认证、操作系统等方面的内容。这些技术的目标是保证信息的可控性、可用性、保密性、完整性、和不可抵赖性。端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。 1.2 课程背景 随着Internet 的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。端口扫描技术是网络安全扫描技术一个重要的网络安全技术。与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。安全扫描是安全技术领域中重要的一类。通过扫描能自动检测远端或本地主机系统信息,包括主机的基本信息(如计算机名、域名、组名、操作系统 型等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进行安全评估,及时发现安全隐患,防患于未然。 网络的安全状况取决于网络中最薄弱的环节,任何疏忽都有可能引入不安全的因素,最有效的方法是定期对网络系统进行安全分析,及时发现并修正存在的脆弱,保证系统安全。 国外安全扫描技术的历史可以追溯到20 世纪90 年代,当时因特网刚刚起步,但是在过去的十年内,扫描技术飞速发展,迄今为止,其扫描技术已经非常完善,但是在全面性,隐蔽性和智能性上还有待提高。安全扫描从最初专门为UNIX 系统而编写的一些只有简单功能的小程序发展到现在,已经出现了可以运行多个操作系统平台上的,具有复杂功能的系统程序。 国内的扫描技术是在国外的扫描器基础上发展起来的。其中有一些专门从事安全技术的公司。这些公司的扫描器以硬件为主,其特点是执行速度快,不像软件一样受到安装主机系统的限制。 然而对于更多的基于主机的端口扫描而言,简单,实用,可靠才是它们的长处。 1.3 扫描器扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可以不留痕迹的发现远程服务器的各种TCP端口的分配。这就能让我们间接的或直观的了解到远程主机所存在的安全问题。为了保证网络中计算机的安全性,必须采取主动策略, 快速、及时、准确、安全的检测出网络中计算机及防火墙开放的和未开放的端口。计算机端口扫描技术就是这种主动防御策略实现的重要技术手段。 扫描器采用模拟攻击的形式对目标可能存在的已知安全漏洞进行逐项检查。目标可以是工作站、服务器、交换机、数据库应用等各种对象。然后根据扫描结果向系统管理员提供周 密可靠的安全性分析报告,为提高网络安全整体水平产生重要依据。在网络安全体系的建设中,安全扫描工具花费低、效果好、见效快、与网络的运行相对对立、安装运行简单,可以大规模减少安全管理员的手工劳动,有利于保持全网安全政策的统一和稳定。 1.4 多线程扫描器介绍 在java 中,组件放置在窗体上的方式是完全基于代码的。组件放置在窗体上的方式通常不是通过绝对坐标控制,而是由“布局管理器”根据组件加入的顺序决定其位置。每个容器都有一个属于的自己布局管理器。使用不同的布局管理器,组件大小,位置和形状将大不相同。表格型布局管理器将容器划分成为一个多行多列的表格,表格的大小全部相同,是由其中最大的组件所决定。通过add 方法可以将组件一一放在每个表格

端口扫描-史上最全常用端口号

端口扫描必须了解的端口数 1、21端口: 端口说明:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。 操作建议:因为有的FTP服务器可以通过匿名登录,所以常常会被黑客利用。另外,21端口还会被一些木马利用,比如Blade Runner、FTP Trojan、Doly Trojan、WebEx等等。如果不架设FTP服务器,建议关闭21端口。 2、23端口 端口说明:23端口主要用于Telnet(远程登录)服务。 操作建议:利用Telnet服务,黑客可以搜索远程登录Unix的服务,扫描操作系统的类型。而且在Windows 2000中Telnet服务存在多个严重的漏洞,比如提升权限、拒绝服务等,可以让远程服务器崩溃。Telnet服务的23端口也是TTS(Tiny Telnet Server)木马的缺省端口。所以,建议关闭23端口。 3、25端口 端口说明:25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件 端口漏洞: 1. 利用25端口,黑客可以寻找SMTP服务器,用来转发垃圾邮件。 2. 25端口被很多木马程序所开放,比如Ajan、Antigen、Email Password Sender、ProMail、trojan、Tapiras、Terminator、WinPC、WinSpy等等。拿WinSpy来说,通过开放25端口,可以监视计算机正在运行的所有窗口和模块。 操作建议:如果不是要架设SMTP邮件服务器,可以将该端口关闭。 4、53端口 端口说明:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析。 端口漏洞:如果开放DNS服务,黑客可以通过分析DNS服务器而直接获取Web服务器等主机的IP地址,再利用53端口突破某些不稳定的防火墙,从而实施攻击。近日,美国一家公司也公布了10个最易遭黑客攻击的漏洞,其中第一位的就是DNS服务器的BIND漏洞。 操作建议:如果当前的计算机不是用于提供域名解析服务,建议关闭该端口。 5、67与68端口 端口说明:67、68端口分别是为Bootp服务的Bootstrap Protocol Server(引导程序协议服务端)和

端口扫描器的设计与实现

河南理工大学 计算机科学与技术学院课程设计报告 2015— 2016学年第一学期 课程名称网络与信息安全 设计题目端口扫描器的设计与实现姓名范腾飞 学号311309040113 专业班级网络1301 指导教师叶青 2016 年 1 月16 日

目录 一.课程设计的目的........................................................ 二.课程设计的要求........................................................ 三.端口扫描器相关知识................................................. 3.1:端口的基本概念............................................... 3.2:常见的端口介绍............................................... 3.3:端口扫描器基本原理....................................... 3.4:端口扫描常用技术........................................... 四.实验流程.................................................................... 4.1:基本步骤............................................................. 4.2:主要函数............................................................... 4.3流程图..................................................................... 五.实验结果..................................................................... 六.总结........................................................................

相关文档
最新文档