《毕业设计论文半打开端口扫描技术的实现.doc》由会员分享,可在线阅读,更多相关《毕业设计论文半打开端口扫描技术的实现.doc(17页珍藏版)》请在三一办公上搜索。
1、半打开端口扫描技术的实现摘 要随着互联网的飞速发展,网络入侵行为日益严重,网络安全日益成为人们关注的焦点。端口扫描技术是网络安全扫描技术的重要技术之一。对目标系统进行端口扫描,是网络系统入侵者进入目标系统的第一步。本文对端口扫描技术的原理和应用进行了阐述,并设计了一个简单的基于windows平台上的端口扫描系统。在论文中介绍了半打开扫描中的SYN探测技术,分析了这种扫描技术实现的原理和特点。实际设计中采用了扫描安全性和可行性较好的SYN探测技术来实现端口扫描,并实现了端口列表自定义,扫描结果存储等几大模块化功能。最后结合当前的实际情况对端口扫描的未来发展方向提出了一点个人的看法。关键词:网络安
2、全;端口扫描;SYN探测The Implementation of a Port-scanning ProgramBased on Semi-opened Port TechnologyAbstractWith the quick development of the internet, network intrusion behavior becomes more and more serious; Network security becomes the focus which people pay attention to. Port-Scanning Technology is one
3、 of the most important technologies of the safe scanning on internet. The first step that network system intruders enter the target system is the port scanning of the system. This essay explains the principle and application of the port scanning technology, and then designs a simple port-scan system
4、 which bases on the Windows platform. The paper introduces the SYN probe technology of the semi-open scan technologies, analyzes its implementing principle, approach and characters. In the real design it use the SYN probe technology which has a better scanning security and feasibility to achieve the
5、 Port Scanning, then realize user-defined port list function, recording of the scanning result, and some other functional modules. At last, combined with the nowadays actual situation, the paper brings a few personal minds for the future direction of the development of the Port-Scanning.Key words: N
6、etwork security;Port scanning;SYN probe目 录论文总页数:22页1引言11.1端口扫描概述11.2端口扫描技术的国内外研究现状11.3端口扫描原理11.4端口扫描技术概要21.5SYN技术详解31.5.1TCP包探测原理31.5.2SYN包探测41.5.3分组时延41.6端口扫描实现方法42需求分析42.1端口扫描器的总体要求42.1.1设计背景42.1.2用户特点42.1.3软件开发及运行环境52.2端口扫描器的需求分析53端口扫描器的实现53.1功能模块简介53.2程序实现流程63.3SYN探测的实现63.4端口扫描功能模块153.4.1端口选择模块1
7、53.4.2目标IP选取模块163.4.3终止扫描173.4.4扫描结果存储模块174测试环境及结果184.1硬件环境184.2软件环境184.3测试结果185端口扫描技术的发展方向和趋势19结 论19参考文献201 引言1.1 端口扫描概述网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。每一个网络主机都相当于一个“房间”,黑客能否进入“房间”,取决于是否发现了打开的“门窗”。也就是说,能否入侵网络主机,或者网络主机是否安全,关键在于能否查出网络主机的系统信息。而端口是主机与外界通
8、讯交流的数据出入口,即是“门窗”。端口分为硬件端口和软件端口,所谓硬件端口又称为接口,包括:USB端口、串行端口、并行端口等。软件端口一般指网络中面向连接服务(TCP)和无连接服务(UDP)的通讯协议的端口。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。通过端口扫描,发现系统的安全漏洞。它使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种手段。1.2 端口扫描技术的国内外研究现状网络的安全状况取决于网络中最薄弱的环节,任何疏忽都可能引入不安全的因素,最有效的方法是定期对网络系统进行安全性分析,及时发现并修正存在的脆
9、弱性,保证系统的安全。国外安全扫描技术的历史可以追溯到20世纪90年代,当时因特网刚刚起步,但是在过去的十多年内,扫描技术飞速发展,迄今为止,其扫描技术己经非常完善,但是在全面性、隐蔽性和智能性上还有待提高。而安全扫描器从最初专门为UNIX系统而编写的一些只有简单功能的小程序发展到现在,己经出现了可以运行在多个操作系统平台上的、具有复杂功能的系统程序。国内的扫描技术是在国外扫描器基础上发展起来的。其中有些专门从事安全技术的公司包括绿盟科技、启明星辰等等。这些公司的扫描器以硬件为主,其特点是执行速度快,不像软件一样受到安装主机系统性能的限制。然而对于更多的基于主机的端口扫描器而言,简单、实用、可
10、靠才是它们的长处。1.3 端口扫描原理端口扫描通常指用同一个信息对目标主机的所有需要扫描的端口进行发送探测数据包即扫描,然后,根据返回端口的状态来分析目标主机端口是否打开,是否可用。端口扫描通过与目标主机的TCP/IP端口建立连接并请求某些服务,记录目标主机的应答,收集目标主机相关信息,从而发现目标主机某些内在的安全弱点,并且确定该端口什么服务正在进行并获取该服务的信息。端口扫描也可以通过捕获本地主机或服务器的流入流出IP数据包来监视本地主机的运行情况,它仅能对接收到的数据进行分析,帮助我们发现目标主机的某些内在的弱点,而不会提供进入一个系统的详细步骤。1.4 端口扫描技术概要端口扫描途径主要
11、是扫描器。扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器可以不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务和它们的软件版本。这就能让我们间接的或直观的了解到远程主机所存在的安全问题。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息。扫描器有三项功能:发现一个主机或网络的能力;一旦发现一台主机,有发现什么服务正运行在这台主机上的能力;通过测试这些服务,发现漏洞的能力。为了理解扫描以及它的工作原理,首先应对TCP的三次握手机制有所了解。TCP的报头包含一个序列号和一些起着特殊作用的标记位。
12、这里仅提到其中的四个标记位:SYN(同步),ACK(确认),RST(复位)和FIN(完成)。它们四个的作用与这里讨论的主题密切相关。当系统间建立连接和释放连接时,就会用到所谓的握手机制。本文中所提到的连接均指的是发生在两个IP地址间,有一定的端口号的连接。它的工作原理大致如下:握手的第一步,一台计算机首先请求和另外一台计算机建立连接,它通过发送一个SYN请求来完成,也即前面提到的SYN标记位置位。两台计算机间每条信息都有一个由发送方产生的序列号,序列号的使用使得双方知道他们之间是同步的,而且还可以起到丢失信息时或接收顺序错误时发送警告信息的作用。握手的第二步,接收到SYN请求的计算机响应发送来
13、的序列号,它会将ACK 标记位置位,同时它也提供自己的序列号。到现在为止,发起连接建立请求的计算机认为连接已经建立起来,然而对方却并不这样认为,对方还要等到它自己的序列号有了应答后才能确认连接建立起来。因此现在的状态称为“半连接”。如果发起连接请求的计算机不对收到的序列号做出应答,那么这个连接就永远也建立不起来,而正因为没有建立连接,所以系统也不会对这次连接做任何记录。握手的第三步,发起连接请求的计算机对收到的序列号作出应答,这样,两台计算机之间的连接才算建立起来。两台计算机释放连接时的情况与此类似:当一台计算机说没有更多的数据需要发送了,它发送一个FIN信号(将FIN标记位置位)通知另一端,
14、接收到FIN的另一端计算机可能发送完了数据,也可能没发送完,但它会对此作出应答,而当它真正完成所有需要发送的数据后,它会再发送一个自己的FIN 信号,等对方对此作出应答后,连接才彻底解除。1.5 SYN技术详解1.5.1 TCP包探测原理高效的探测方法需要解决3个问题:(1)用几个包判断主机和端口状态;(2)占用双方的资源少;(3)准确的分组时延计算方法。如果不建立完整的TCP连接,直接用TCP包来检测TCP应用服务端口的状态,会有效地提高探测效率和准确性。对于问题(1)和(2),可以借鉴TCP端口扫描技术,发送特殊TCP包解决。对于问题(3),可以在仿照Ping的方式在TCP某些字段或选项中
15、嵌入时间戳来解决。TCP端口扫描技术通过发送一些特殊的TCP包判断目标主机和端口状态。端口扫描通过扫描目标主机的大量端口,发现系统的漏洞。而服务器的地址和端口一般都是公开的,如果只探测服务器的工作端口,不用探测其余的端口,可以向工作端口发送特殊的TCP包,根据返回包判断目标状态。绝大多数TCP/IP协议栈的实现遵循以下原则:(1)当一个SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包。(2)当一个包含ACK的数据包到达一个监听端口时,数据包被丢弃,同时发送一个RST数据包。(3)当一个SYN数据包到达一个监听端口时,正常的三阶段握手继续,回答一个SYN|ACK
16、数据包。(4)当一个FIN数据包到达一个监听端口时,数据包被丢弃。“FIN行为”(关闭的端口返回RST,监听端口丢弃包),在URG和PSH标志位置位时同样要发生。所有的URG,PSH和FIN,或者没有任何标记的TCP数据包都会引起“FIN行为”。一般TCP端口扫描根据以上方式的发包收包来判断主机与端口状态。因为FIN包不能直接探测监听端口,所以通常选择使用SYN包或ACK包探测监听端口。一些防火墙出于安全的考虑,将发现和拦截ACK与FIN探测包,但不会拦截SYN包。通过网络上别人的一些测试和实验发现,对Internet中发布的60个HTTP代理服务器进行探测。其中,97%的服务器对SYN包有应
17、答,只有53%的服务器对ACK包有应答。实验发现对SYN包无应答的主机对任何TCP包都无应答。无论服务器有什么样的安全处理规则,根据方式(1)(2),SYN请求都会得到应答,所以选择SYN包作为探测包。1.5.2 SYN包探测第一步:客户端向服务器的工作端口发送SYN,服务器返回SYN|ACK包或RST包。如果客户端收到SYN|ACK,则可以肯定服务器活动和端口开启。收到RST包,则说明服务器活动但端口关闭,客户端不用执行第二步。如果超时无应答,则认为包丢失。第二步:因为不需要建立正常的TCP连接,所以对应答ACK包的服务器发送RST包,保证服务器端关闭半连接。因为只有少量报文对端口探测,不会
18、引起安全系统的报警。使用SYN包探测,可以检测服务器和端口的状态、分组时延、丢包率,又可以穿透防火墙,符合网络对安全的要求。1.5.3 分组时延假如用定时器来计算分组往返的时间,大量的定时器会造成资源极大消耗。虽然TCP协议规定了时间戳选项(类型8),用该选项中嵌入时间戳,服务器返回包的选项部分含有发送的时间戳。然而,在具体TCP/IP协议实现中,有些TCP/IP协议栈会忽略该选项,或者选项值置0,无法得到往返时间。如果能像Ping一样保证某一字段的数据在往返中不改变,就可以像Ping一样嵌入时间戳。但TCP的各字段不能保证往返数据一致。可以考虑用一种变通的方式嵌入时间戳。对于客户机发送的SY
19、N报文,设序号x,则服务主机返回报文的确认序号等于x+1。利用发送序号和确认序号的关系来传递时间戳。设置SYN包的发送序号为时间戳,收到的SYN|ACK包或RST包的确认序号减1即可得到发送包的时间戳。用收到包的时间减去发送时间戳即得到分组时延。1.6 端口扫描实现方法本文通过对基于半打开的端口扫描技术的实现来介绍了现在一些主流的端口扫描技术,通过对程序的开发加深了对端口扫描技术的认识。经过对端口扫描技术的了解和认识,本文采用隐蔽性较好基于主机的SYN刺探技术来实现。2 需求分析2.1 端口扫描器的总体要求2.1.1 设计背景该端口扫描器是面向普通用户使用,以期成为一个普通用户用来检测端口网络
20、主机端口并有效地保护自己。在采用SYN刺探方式进行扫描的基础上成为一个基于半打开的实用、简单、方便的端口扫描工具。2.1.2 用户特点由于该端口扫描系统是一个基于半打开的端口扫描器,其面向的是普通的对于端口扫描有需求的用户,因此需要提供一个简洁、方便、高效的界面和功能。2.1.3 软件开发及运行环境系统开发工具:Visual C+ 6.02.2 端口扫描器的需求分析端口扫描器的一般需求:(1)隐蔽性需求作为扫描的一方来说,端口扫描除了要能扫出目标主机的端口信息以外,还需要能有一定的隐蔽性,以最大的可能不在目标主机留下访问信息。如果仍然采用基于TCP connect()的扫描则将很容易被目标主机
21、记录,因此从隐蔽性上考虑SYN半打开扫描或者FIN扫描会是很好的选择。(2)端口选择需求当我们在使用扫描软件对目标主机进行扫描的时候,有的时候是有目的性地扫描目标主机的某一个端口,然而在大部分时候却需要扫描批量端口或者是一些重要的指定端口。这个时候需要端口扫描系统具有自定义端口列表的功能。(3)扫描结果存储需求在进行完一次端口扫描之后,需要对结果进行保存。无论是攻击还是检测,端口扫描器是需要与其他的一些工具配合到一起使用的,所以要求端口扫描器一定要具有存储结果的功能,以将扫描得到的目标主机端口信息保存下来。3 端口扫描器的实现3.1 功能模块简介3.2 程序实现流程3.3 SYN探测的实现 (
22、5)原始套接字包发送完后,就可以接收目标主机的回应。当发送原始套接字包时(如TCP SYN数据包),操作系统核心并不知道,也没有此数据发送或者连接建立的记录。因此,当远端主机回应时,系统核心就把这些包都全部丢掉,从而到达不了应用程序上。所以,程序中不能简单地使用接收函数来接收这些数据包。要达到接收数据包的目的,必须采用嗅探,接收所有通过的数据包,然后进行筛选,留下符合需要的。为此可以表示接收所有的数据。通过设置原始套接字的I/0控制命令,便可以调用SIO_RCVALL接收返回的数据包,分析是不是扫描程序返回的。DWORD WINAPI ListeningFunc(LPVOID lpvoid)
23、/定义套接字rawsock,以连接应用程序和监听的本地网卡SOCKET rawsock;SOCKADDR_IN addr_in=0;int settimeout = 500;INFORLISTEN* lp =(INFORLISTEN*)lpvoid;int num = lp-num;*省略部分代码*if(rawsock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)=INVALID_SOCKET)/建立原始IPPROTO_IP套接字AfxMessageBox(Socket Setup Error!n);return false;addr_in.sin_family=AF
24、_INET;构造SYN包,最好选用较大的端口号作为发送端口,以免和应用程序正在使用的端口发生冲突。在这里我们选用的是8288。另外在构造TCP头的时候,还添加了TCP选项SACK,保证TCP连接请求被接受。addr_in.sin_port=htons(8288); /设置接收的端口为8288addr_in.sin_addr.S_un.S_addr=htonl(INADDR_ANY); /监听所有的本地IP地址/对rawsock绑定本机IP和端口,当系统收到目标的返回信息时,便可以通过rawsock传到应用程序当中。int ret=bind(rawsock, (struct sockaddr *
25、)&addr_in, sizeof(addr_in);if(ret=SOCKET_ERROR) AfxMessageBox(bind false);程序使用两次判断来过滤IP包。首先判断IP头部,要求目的地址是本机、协议号是TCP协议。然后再判断TCP头部,要求目的端口等于选用端口号,控制标志位为SYN|ACK或者RST。因为监听套接字会接收到所有的IP包,要保证能尽快处理分组,如图4所示。图4 返回IP包的接收及过滤设置SIO_RCVALL,包括延时和数据大小等信息,以接收所有的数据包。在收到返回信息的时候接受并分析数据包是否为应用程序返回的信息。setsockopt(rawsock,SOL
26、_SOCKET,SO_RCVTIMEO, (char *)&settimeout, sizeof(int);DWORD lpvBuffer = 1; DWORD lpcbBytesReturned = 0; /设置一个套接口的模式,接受所有数据WSAIoctl(rawsock, SIO_RCVALL, &lpvBuffer, sizeof(lpvBuffer), NULL, 0, &lpcbBytesReturned, NULL, NULL);*省略部分代码*char RecvBuf256=0;/接收数据包ret=recvfrom(rawsock,RecvBuf,sizeof(RecvBuf)
27、,0,(struct sockaddr*)&from,&size);if(ret!=SOCKET_ERROR)/分析数据包IPHEADER *lpIPheader;lpIPheader=(IPHEADER *)RecvBuf;这里从接受到的数据中分离出IP报头lpIPheader,接着又从IP报头中继续分离出源地址sourceip,并判断源地址是否在起始IP和结束IP的范围内和是否为远程开放端口返回的数据包。if(lpIPheader-proto=IPPROTO_TCP& ntohl(lpIPheader-sourceIP)=StartIP & ntohl(lpIPheader-sourceI
28、P)th_seq != 0 & lpTCPheader-th_flag=0x12)CString StrIP = sourceip;*省略部分代码*InsertToTree (hTree,StrIP,CSPort);(6)在扫描完成以后,使用函数InsertToTree将结果插入到结果树中hTree,并在结果树中进行排序,使得结果按照选择的方式展开或合拢。void InsertToTree (CTreeCtrl* hTree,CString CSIP,CString CSPORT)HTREEITEM A=hTree-InsertItem(CSIP,NULL,TVI_LAST);hTree-In
29、sertItem(CSPORT,A,TVI_LAST);3.4 端口扫描功能模块3.4.1 端口选择模块选择从端口范围或默认端口列表中获取待扫描的端口,首先通过消息传递函数m_IsChecked来判断是否得到了选取端口范围的消息,如果是,则获取起始端口和结束端口的数据并判断起始端口是否不大于结束端口;如果没有传来消息,则尝试调用m_PortListTree.GetNextItem从自定义端口列表树中得到当前所选择的默认端口并从端口列表树中继续获得下一个端口。BOOL CLScanPortDlg:ReadPortToPortList()UpdateData();这里通过m_IsChecked获得
30、选取端口范围的消息,然后就判断端口范围是否符合规则,即起始端口不应该大于结束端口。if ( m_IsChecked )if ( m_PortFrom m_PortTo )AfxMessageBox(起始端口 不应该大于 结束端口!);return FALSE;while ( m_PortFrom IsBlank() )AfxMessageBox(IP地址 不能为空!);Return FALSE;*省略部分代码*AfxMessageBox(IP地址 不能为空!);Return FALSE;pIP-GetAddress(m_EndIP);最后使用if循环来判断m_StartIP和m_EndIP,当
31、m_StartIP大于m_EndIP的时候,返回提示信息起始IP必须EnableWindow(TRUE),以使界面上的按钮有效,可以重新开始扫描。3.4.4 扫描结果存储模块通过使用OnButtonSaveResult函数,在得到保存结果的消息后首先判断结果地址树是否为空,如果有扫描结果则创建一个标准文件对话框以准备存储扫描结果。在创建成功以后将扫描结果列表树上的数据写入到文本框中以存储本次扫描的结果。如果程序仍然处于扫描状态中,将不能保存结果。通过全局变量判断程序是否处于扫描状态,如果没有则创建一个命为“Result.txt”的文本文件来保存扫描结果。if ( :OK = TRUE )Afx
32、MessageBox(失败,还在扫描,请等待停止后再保存!);return;TCHAR pRMAX_PATH=0;GetModuleFileName(NULL,pR,MAX_PATH);memset(pR+strlen(pR)-4,0,4);strcat(pR,Result.txt);/创建标准文件对话框,用Fdlg.DoModal()来显示创建的对话框当打开文件的时候属性设置为写入,并将得到的扫描结果保存到创建的文本文件当中。FILE* fp = fopen(Fname,w);if ( fp = NULL )AfxMessageBox(写入失败!);return;fprintf(fp,Por
33、tScanner 扫描结果如下:n);定义两个结构体A和B,A表示结果树中的IP地址,B表示每个IP下面扫描出来的端口信息。在对扫描结果进行保存的时候,首先用A通过m_ListTreeResult.GetItemText()得到一个扫描的IP,然后将所有扫描这个IP得到的端口子属性m_ListTreeResult.GetNextSiblingItem()写到A的下面。如此循环便可以将所有的IP和扫描出来的端口保存到创建的文本文件中。*省略部分代码*fclose ( fp);AfxMessageBox(成功写入!);/创建标准文件对话框失败 else if (nResponse = IDCANC
34、EL)return;4 测试环境及结果4.1 硬件环境计算机:CPU:sempron2200+ oc 1.8G 内存512M网络环境:局域网4.2 软件环境系统环境:Windows XP 编译工具:Visual C+ 6.04.3 测试结果通过和寝室同学搭建的一个局域网,对所设计的端口扫描器进行了实验。在一开始的实验中,发现扫描速度及结果的准确率都不理想。在经过编程测试后发现是延时设置过小的原因。接受包的延时本来设置为1000毫秒,但正是由于延时过小,所以不能及时接收返回的包,导致了结果准确率不高,很多扫描的结果都不能显示出来。发现这一问题后,将延时设置为5000毫秒,这时扫描速度及准确度大大
35、提高。5 端口扫描技术的发展方向和趋势在未来,端口扫描将不仅仅作为一个简单的工具,它会集成更多的功能,或是和别的工具结合起来,成为一个综合的检测工具。仅仅借助单一的漏洞扫描等工具进行的安全评估是不完整的、有局限性的,它不能够很好地表现信息系统的安全特征,因此需要一种既能够有效收集系统中各主机的安全信息,又能够及时发现网络中发送信息的源地址相关信息的工具为安全评估提供支持。现在已有一些综合扫描系统既能实现安全扫描,又能监听并分析系统中的数据包,提供网络中的存在的漏洞及安全状况,成为一个综合扫描系统。综合扫描系统是一种自动检测远程或本地主机安全脆弱点的程序,通过使用扫描系统,系统管理员能够发现所维
36、护的Web服务器的各种TCP端口的分配、提供的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞;同时综合扫描系统还能从主机系统内部检测系统配置上的缺陷,模拟系统管理员进行系统内部审核的全过程,发现能够被黑客利用的问题。根据扫描子系统所发现的信息,系统管理员可以及时填补安全漏洞,避免入侵者攻击。在综合扫描系统中通过使用端口扫描系统来交换信息协同工作,可以使入侵检测得到更好的效果。综合扫描系统可以利用扫描子系统的扫描结果,对目前网络或系统和应用所存在的漏洞做到心中有数,然后利用扫描结果对预警策略进行修改。这样一方面可以尽可能的减少误报,另外也可以对隐含在正常行为中的攻击行
37、为做出报警。综合扫描系统也可以利用对日常警报信息的分析,对端口扫描系统的扫描策略进行修改,然后进行预约扫描,对目前可能遭受攻击的漏洞提出一个报告。端口扫描子系统也可以利用综合扫描系统的报警信息,对有些主机进行特定的扫描,查看正在受攻击的端口或漏洞是否真的存在。结 论由于计算机网络的广泛应用,黑客的活动日益猖獗,网络入侵事件越来越多,网络系统的安全已经成为网络建设面临的一个重大问题。信息系统安全的实现,网络安全占有很重要的一部分。如何能够有效地获取网络安全信息,是信息安全评估需要首先解决的一个问题,同时了解网络安全状况又是防止网络被攻击必须解决的问题。只有发现并填补了网络系统存在的各种安全漏洞,
38、才能更有效地保护计算机网络,真正将网络带来的优势发挥出来。因此,网络安全漏洞信息的收集是至关重要的一步。工具的辅助是一个完整的安全评估体系不可或缺的重要组成部分,所以一个高效、实用、方便的端口扫描器将为我们对端口进行评估、对整个入侵检测体系提供支持。本论文中提供的这个端口扫描器就能满足以上的需求,并且利用SYN刺探能实现安全扫描。参考文献1程鹅,董小国.端口扫描技术及检测J.华南金融电脑.2004,(7):109-112。2杨成卫.“端口侦听”与“端口扫描”研究J.警察技术,2006,(3):22-24。3洪宏,张玉清,胡予濮,戴祖锋.网络安全扫描技术研究J.计算机工程,2004,(10):7
39、-9。4李健,张国印,顾国昌,张万松.网络扫描技术实现及其在网络安全中的应用J.计算机应用研究,2004,(2):55-58。5武装.网络端口扫描及对策研究J.电子技术应用,2004,(6):19-23。6李树军.反射式TCP端口扫描技术的研究J.网络安全技术与应用,2006,(9):29-33。7戴文华,桂学勤.基于TCP连接的网络漏洞扫描器的设计与实现J.福建电脑,2005,(11):96-99。8谢希仁.主机网络教程M.北京:人民邮电出版社,2003。9周明天,汪文勇.TCP/IP网络原理与技术M.北京:清华大学出版社,1998。10 Eric Cole著.苏雷等译.黑客攻击透析与防范M.北京:电子工业出版社,2002。 第 14 页 共 22 页