端口扫描的学习与设计.docx
- 文档编号:6186267
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:16
- 大小:113.39KB
端口扫描的学习与设计.docx
《端口扫描的学习与设计.docx》由会员分享,可在线阅读,更多相关《端口扫描的学习与设计.docx(16页珍藏版)》请在冰豆网上搜索。
端口扫描的学习与设计
端口扫描的学习与设计
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(端口扫描的学习与设计)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为端口扫描的学习与设计的全部内容。
摘要
网络端口扫描是一种探测远程或本地主机安全弱点的方法。
使用网络端口扫描,可以对目标主机的端口进行扫描,探察到各个端口的服务信息以及各个端口所具有的版本号等,进而间接或直观的了解到目标主机所存在的安全问题。
如今各种端口扫描的软件成出不穷,大多利用向规定范围内的常用端口逐个发送并返还数据包的方式对端口进行探测,进而发现端口的运行状态,然后根据扫描结果对网络的
数据进行分析,来获得目标机器的很多有用信息,有效的理解和使用端口扫描的原理和技术,能够为网络环境带来重要的防御作用。
当前流行的杀毒软件、防火墙、木马查杀等等软件,大多是通过特征库的扫描来完成安全处理任务,这些原理与扫描监听密不可分,技术上的基础也是很相似的,出去算法的区别,可谓一脉相承,将来国内的网络安全、信息安全等方向会有很大的发展,这些知识使我们必须掌握的.
关键词:
网络安全;端口扫描;TCP协议;
Abstract
Thenetworkportscanningisakindofmethodthatprobesintolongrangeorlocalhostsafeweakness.Useanetworkportscanning,cancarryonascanningtotheportoftargethost,probeserviceinformationandeachportofeachporthasofetc.edition,thenindirectorkeeptheunderstandingofviewtotargethostisthesafeproblemforexisting.Variousportscansatpresentofthesoftwarebecomenotpoor,mostlyexploitationtostipulatetheincommonuseportinthescopepursuesendoutandreturnreturnthedatawrapofthewaycarryonprobingintototheportandthendiscoverthemovementstatusofport,thenaccordingtoscanningresulttonetworkof
Thedatacarriesonanalysis,acquirealotofusefulinformationsoftargetmachine,theprincipleandtechniqueofeffectivecomprehensionanduseportscanning,canbringanimportantdefensefunctionfornetworkenvironment。
Killingofcurrentfadpoisonsoftware,firewallandwoodMaChakilletc。
software,mostlyisthescanningthatpassesacharacteristicdatabasetocompleteasafetyprocessingtask,theseprincipleandscanningwiretapinseparable,thefoundationinthetechniqueisalsoveryalike,gooutthedifferentiationofcalculateway,itmaybesaidaveinmutuallyaccepts,inthefuturelocalnetworksafety,theinformationsafetyetc。
directiontowillhaveaverybigdevelopment,theseknowledgemakeushavetocontrol.
Keyword:
Networksafety;Theportscans;TCPnegotiates;
论文总页数:
17页
1引言
在现在这个信息化的社会中,网络的发展已经超出了人们预想,在很短的时间里已经渗透
到军事,金融,商业,交通,电信,教育等领域,并发挥着越来越大的作用。
社会对网络系
统的依赖也越来越强,使得密集信息和财富高度集中与计算机中.另一方面,这些网络系统
都依靠计算机网络接受和处理信息,实现其相互间的联系和对目标的管理,控制。
以网络方
式获得信息和交流信息已经成为现代信息社会的一个重要特征。
然而,伴随网络而来的不仅仅是高速的信息获取方式和便捷的管理方式,安全问题也渐渐
成为信息社会的热点问题。
各种网络系统和一些软件本身的缺陷,带来了许多安全上的隐患。
目前,全世界每年由于信息系统脆弱性导致的经济损失逐年上升,安全问题日益严重。
各国
都开始组建自己的“黑客部队”以保护本国网络和攻击敌方的网络系统。
信息战也由此而生,
可见,网络安全的影响力已经越来越大。
而在各种网络攻击和安全检测过程中第一步要做的
就是搜集目标主机的一些信息,这里就产生了网络扫描技术.网络扫描技术主要可分为两类:
端口扫描技术和漏洞扫描技术。
1.1课题背景:
在21世纪的今天,计算机发展日新月异,伴随者网络技术的飞速更新,网络规模迅速增长和计算机系统的日益复杂,导致新的系统漏洞层出不穷,一些别有用心的人或者木马程序要想顺利的渗透一台联网的计算机,无论使用何种技术,首先必然要寻找计算机的漏洞来为自己的入侵打开大门。
端口扫描器是一把双刃剑,端口扫描器的产生可以使网络中的计算机及时的发现主机的开放与未开放的端口状态。
计算机的端口扫描技术是一种基于主动防御型的策略的重要技术手段。
本课题通过对计算机端口扫描器的研究来提高对网络中计算机的安全的认识。
本端口扫描器采用VB语言开发,在VB6。
0编译环境下通过测试,利用TCPconnect扫描原理,扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机的此端口在规定时间内有回复,则说明该端口是开放的。
利用多线程技术实现了对一目标IP进行设定数目的端口扫描。
这种扫描器可以在输入IP的情况下,对指定的端口进行扫描,也可以固定端口范围进行扫描。
1.2本课题研究意义:
现代社会是信息化网络化的社会,信息是社会发展的重要资源.信息安全的保障能力是一个国家的综合国力经济竞争实力和生存能力的重要组成部分,是世界各国在奋力攀登的制高点。
网络安全是指网络系统的硬件软件及其系统中的数据受到保护,不会因为偶然的或者恶意的原因而遭到破坏,更改,泄漏,系统连续可靠的正常的运行.网络安全包括技术领域和非技术领域两大部分;非技术领域包括一些制度政策管理安全意识是填权等方面的内容;技术领域包括:
隐患扫描、防火墙、入侵检测、访问控制、虚拟专用网、CA认证、操作系统等方面的内容。
这些技术的目标是保证信息的可控性、可用性、保密性、完整性和不可抵赖性。
1.3安全扫描技术的产生及其发展趋势
随着Internet的不断发展,信息安全技术已经成为促进经济发展、社会进步的巨大推动力。
端口扫描技术是网络安全扫描技术的一个重要的网络安全技术,与防火墙、入侵检测系统相互配合,能够有效地提高网络安全性。
安全扫描是安全技术领域中的重要的一类。
通过扫描能自动检测远程或者本地的主机系统的信息,包括主机的基本信息(如计算机名、域名、组名、操作系统型号等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进行安全评估,及时发现安全隐患,防患于未然.任何技术的诞生都有深刻的思想基础,人们在对“安全"认识逐步深化的过程中,不断的提出新的安全理论并付诸实践.在这个认识的过程中有两次重大的飞跃:
第一次飞跃式早在二十世纪八十年代,人们认为信息安全就是信息的保密性,相应的采取保障措施就是利用加密机制和基于计算机规则的访问控制。
这个时期防火墙和入侵检测系统(IDS)进一步发展起来,并在保护内部网络中起到了积极作用.然而,九十年代中期以后,黑客问题在一定程度上已经成为网络的公害,对于防卫者,他必须防备入侵网络的全部手段。
这是的保障网络安全愈加困难。
传统的网络站点的安全模式是一种被动的防御模式,难以实现对网络的远程攻击的有效遏制.防火墙可以保护一个子网的边界,但是无法彻底的防止黑客和抵制外部攻击.对于内部人员的攻击,防火墙就更加束手无策了。
一般情况之下,入侵检测系统只能对已知的入侵检测进行警告,对于针对新漏洞发起的攻击也无能为力。
人们逐渐认识到问题的关键在于如何查找网络安全漏洞,堵住了系统单圈漏洞,也就堵住了黑客和病毒的入侵.DanFame和WeitseVenema提出了划时代的隐患扫描思想,既然黑客可以查找系统的漏洞,并且针对这些漏洞对系统进行攻击,那么隐患扫描程序就可以采取与黑客相同的方法赵导系统漏洞,并且将他们加以修复,起到主动防御的作用。
第二次飞越就是在被动防护的基础上,提出了主动防御的思想.这就促进了安全扫描的技术的诞生。
安全扫描的主动防御思想渗透到了许多其他的安全领域。
例如传统的防御技术IDS的相应方式都是被动的,而2001年2月,美国国防部将主动防御列入到了ACID即AdvancedConceptTechnologyDemonstrations,预计在2005年完成,他们希望借此取得网络防御的制高点,充分掌握信息战的主动权。
安全扫描软件从最初的专门为UNIX系统编写的一些只具有简单的功能的小程序,发展到现在,已经成为可以用在多个系统的具有复杂的更能的商业程序.今后的发展趋势,我认为有以下几点:
使用插件或者叫做功能模块技术。
每个插件都封装一个或多个漏洞测试手段,朱扫描程序通过代用插件的方法来执行扫描。
仅仅是添加新的插件就可以使软件增加新功能,扫描更多漏洞.在插件编写的规范公布的情况下,用户或者第三方公司甚至可以编写自己的插件来扩充软件的功能。
同时这种技术使软件的升级维护都变得相对轻松,并且具有非常强的扩展性。
使用祝勇的脚本语言,这是用一种高级的插件技术,用户可以使用专用的脚本语言来扩充软件功能.这些脚本语言语法通常比较简单易学,往往用实际行代码就可以定制一个简单的测试,微软件添加新的测试项目,脚本语言的使用,简单化了边写新插件的编程工作,使扩充软件功能的工作变得更加容易,也更加有趣.有安全扫描程序到安全评估专家系统。
最早的安全扫描程序只是简单的吧各个扫描测试项目执行结果罗列出来,直接提供给测试者而不对信息进行任何分析处理.而当前较为成熟的扫描系统都能够将单个主机的扫描结果进行整理,形成报表能够并对具体漏洞提出一些解决方法,但对网络的状况缺乏一个整体的评估,对网络安全没有系统的解决方案。
未来的安全扫描系统,应该不但能够扫描安全漏洞,还能够智能化的协助网络信息管理人员评估本网络的安全撞垮,给出安全建议,成为安全评估专辑的系统。
1.4安全扫描技术的分类
安全扫描技术工具是一把双刃剑,既可以被网络公里远利用,又可以被黑客利用的。
端口扫描技术和漏洞检测技术是就安全扫描技术中的关键技术。
下面专门介绍本软件的侧重点端口扫描技术。
端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。
黑客能否进入“房间",关键在于他是否发现了打开的“门窗”.也就是说,关键是能否准确的收集系统信息.黑客要做的就是构造目标网络中的所有系统地图,包括操作系统的类型,版本号以及可以在其上运行的服务等.黑客手工收集信息一般遵循以下步骤:
(1)获取主机名与IP地址:
可以在其上使用whois与nsloopup等工具。
(2)获得操作系统的类型信息:
标志的最快方法就是试图telnet至该系统,从标识来判断。
(3)FTP信息:
黑客将测试是否开放FTP服务,匿名FTP是否可用,若可用,则试图发掘更多的潜在的问题。
(4)TCP/UDP扫描:
对于TCP,tenet可以用来试图与某一特定的端口连接,这样是手工扫描的基本方法。
从返回标志可以得到更多的信息.从中再分析系统是否开放RPC服务,RNGER,RUSERS和RWHO等比较危险的服务。
这样到这里为止,黑客完成了对远程系统信息的手工扫描。
端口扫描软件就是要尽可能的自动地模拟黑客的扫描手段。
根据端口扫描的方法不同,端口扫描技术分为五大类:
全开扫描,通过完整的TCP连接探查端口.主要有TCPconnect,反向dent。
半开扫描,通过不完整的TCP连接探查端口,主要SYNflag,IPIDheader,dumbscan等.隐蔽扫描(stealthscanning),利用RN字段来探查端口。
不包含标准三次握手的任何一部分。
主要由SMACKflag,ACKflags,NULLflags(XMAS).IP段扫描(sweepscanning),同时对一个网段进行扫描。
主要由TCPecho,UDPecho,TCPSYN,ICMPecho组成.
1.5网络端口扫描原理
一个端口就是一个潜在的通信通道,也就是一个入侵通道。
对目标计算机进行端口扫描,能得到许多有用的信息。
进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行。
在手工进行扫描时,需要熟悉各种命令。
对命令执行后的输出进行分析。
用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。
通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。
扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可以留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务和它们的软件版本,这就能让我们间接的或直观的了解到远程主机所存在的安全问题。
扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息(比如:
是否能用匿名登陆是否有可写的FTP目录,是否能用TELNET,HTTPD是用ROOT还是nobady在跑!
)扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标机的某些内在的弱点。
一个好的扫描器能对它得到的数据进行分析,帮助我们查找目标主机的漏洞。
但它不会提供进入一个系统的详细步骤.
常见的扫描原理我收集到的资料有下面:
1、TCP connect()扫描:
这是最基本的TCP扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。
如果端口处于侦听状态,那么connect()就能成功。
否则,这个端口是不能用的,即没有提供服务。
这个技术的一个最大的优点是,你不需要任何权限.系统中的任何用户都有权利使用这个调用。
另一个好处就是速度,如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,使用者可以通过同时打开多个套接字来加速扫描。
使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字.但这种方法的缺点是很容易被察觉,并且被防火墙将扫描信息包过滤掉.目标计算机的logs文件会显示一连串的连接和连接出错消息,并且能很快使它关闭。
2、TCP SYN扫描:
这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。
扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。
一个SYN|ACK的返回信息表示端口处于侦听状态:
返回RST表示端口没有处于侦听态。
如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。
这种扫描技术的优点在于一般不会在目标计算机上留下记录,但这种方法的缺点是必须要有root权限才能建立自己的SYN数据包。
3、TCP FIN 扫描:
SYN扫描虽然是“半开放”方式扫描,但在某些时候也不能完全隐藏扫描者的动作,防火墙和包过滤器会对管理员指定的端口进行监视,有的程序能检测到这些扫描.相反,FIN数据包在扫描过程中却不会遇到过多问题,这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。
另一方面,打开的端口会忽略对FIN数据包的回复。
这种方法和系统的实现有一定的关系,有的系统不管端口是否打开都会回复RST,在这种情况下此种扫描就不适用了.另外这种扫描方法可以非常容易的区分服务器是运行Unix系统还是NT系统。
4、IP段扫描:
这种扫描方式并不是新技术,它并不是直接发送TCP探测数据包,而是将数据包分成两个较小的IP段.这样就将一个TCP头分成好几个数据包,从而过滤器就很难探测到。
但必须小心:
一些程序在处理这些小数据包时会有些麻烦。
5、TCP 反向 ident扫描:
ident 协议允许(rfc1413)看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。
例如扫描者可以连接到http端口,然后用identd来发现服务器是否正在以root权限运行。
这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。
6、FTP 返回攻击:
FTP协议的一个有趣的特点是它支持代理(proxy)FTP连接,即入侵者可以从自己的计算机和目标主机的FTP server—PI(协议解释器)连接,建立一个控制通信连接。
然后请求这个server—PI激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方发送文件。
对于一个User-DTP,尽管RFC明确地定义请求一个服务器发送文件到另一个服务器是可以的,但现在这个方法并不是非常有效。
这个协议的缺点是“能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘,企图越过防火墙"。
7、UDP ICMP端口不能到达扫描:
这种方法与上面几种方法的不同之处在于使用的是UDP协议,而非TCP/IP协议。
由于UDP协议很简单,所以扫描变得相对比较困难.这是由于打开的端口对扫描探测并不发送确认信息,关闭的端口也并不需要发送一个错误数据包.幸运的是许多主机在向一个未打开的UDP端口发送数据包时,会返回一个ICMP_PORT_UNREACH错误,这样扫描者就能知道哪个端口是关闭的.UDP和ICMP错误都不保证能到达,因此这种扫描器必须还实现在一个包看上去是丢失的时候能重新传输。
这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定。
同样这种扫描方法也需要具有root权限.
8、UDP recvfrom()和write() 扫描:
当非root用户不能直接读到端口不能到达错误时,Linux能间接地在它们到达时通知用户.比如,对一个关闭的端口的第二个write()调用将失败.在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP出错还没有到达时回返回EAGAIN—重试。
如果ICMP到达时,返回ECONNREFUSED—连接被拒绝.这就是用来查看端口是否打开的技术.
2系统需求分析
本扫描器功能能简单,采用TCPconnect()三次握手方式进行远程主机的常用端口测试,很容易被主机发现痕迹,而且这是最基本的TCP扫描.操作系统提供的connect()系统调用,进行与远程主机端口的连接,这个扫描器最好在局域网内部使用,因为外部的防火墙可以阻止测试。
本扫描器界面整洁简单,分为两个部分,一个部分是对一个范围内的端口进行扫描,另一个部分是对某个指定端口进行扫描测试。
输入远程主机IP或者主机名称,并且选定端口范围或者指定某端口即可实现端口扫描.输出的格式是只输出常用的打开的端口。
本扫描器容易出现的问题是主机如果安装防火墙,并且防火墙的安全设置很高的时候,很可能测试不出来某个常用端口的开启与关闭的状态。
这也是需要改进的地方。
2.1开发思路与环境
本扫描器用vb语言编写,VB6.0中文版开发环境,并且所有测试也在此环境下进行。
在这个软件的实现过程中,我关键使用的就是vb自带的winsock控件,该控件的功能非常强大,通过它可以再VB程序中使用各种Internet协议。
由于TCP协议判断远程计算机比UDP协议准确,所以我使用Winsock控件的TCP协议里开发,这里先介绍Winsock的基本知识:
1。
Winsock的属性:
LocalHostname|本机名
LocalIP|本机IP地址
LocalPort|本机通信程序的端口
RemoteHost|远程计算机名
RemotePort|远程计算机通信程序端口
State|当前链接状态
Protocal|使用的协议
2。
Winscok的方法:
Listen|用于服务器程序,等待客户访问
格式:
winsock对象。
listen
Connect|用于向远程主机发出链接请求
格式:
winscok对象.connect[远程主机ip地址,远程端口]
Accept|用于接收一个链接请求
格式:
winsock对象。
acceptrequestID
Senddata|用于发送数据
格式:
winsock对象.senddata数据
Getdata|用于取得接收到的数据
格式:
winsock对象.getdata变量[数据类型,最大长度]
Close|关闭当前连接
格式:
winsock对象.cloes
3。
winsock事件
Close|远程计算机关闭时触发
Connect|链接建立好,可以进行通信时触发
ConnectRequest|链接请求到达
Dataarrival|数据到达时触发
Error|错误时触发
系统主要功能模块具体实现过程
本系统的主要模块分成两大模块:
一个是指定某固定常用端口扫描模块,另一个是制定端口范围的常用端口扫描模块;两个模块一起构成了整个系统.
2.1.1开始界面模块
通过VB窗体生成的前端开始界面模块的效果图如图所示:
2.3。
2扫描指定端口模块
(1)程序结构流程图如下图所示:
指定某端口扫描效果图:
(3)端口扫描前的预处理:
在WINDOWS下进行网络服务端程序开发,毫无疑问,Wincock完成端口模型是最高效的。
Wincock的完成端口模型借助Widnows的重叠IO和完成端口来实现。
首先完成端口模型,抽象出一个完成端口扫描的代码:
PrivateSubcmdStartScan_Click()
'开始扫描端口,根据扫描对象选择扫描方式
'在这里直接执行的是本机的扫描,远程扫描
'通过函数来执行,比较复杂。
OnErrorGoToPortError
DimStartPortAsString
DimEndPortAsString
DimConnectIPAsString
StartPort=txtStartPort.Text
EndPort=txtEndPort
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 端口扫描 学习 设计