计算机网络课程设计---端口扫描工具设计.docx_第1页
计算机网络课程设计---端口扫描工具设计.docx_第2页
计算机网络课程设计---端口扫描工具设计.docx_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络课程研究报告信息工程学院计算机网络课程研究报告题目全称: 端口扫描工具设计 课 程: 计算机网络 学 号: 20105605 班 级: 通信1004 姓 名: 刘科 15计算机网络课程研究报告摘要在现在这个信息化的社会中,网络的发展已经超出了人们预想,在很短的时间里已经渗透到军事,金融,商业,交通,电信,教育等领域,并发挥着越来越大的作用。社会对网络系统的依赖也越来越强,使得密集信息和财富高度集中与计算机中。另一方面,这些网络系统都依靠计算机网络接受和处理信息,实现其相互间的联系和对目标的管理与控制。而网络端口扫描作为维护网络安全的重要手段,可以帮助服务器提供商找出自身漏洞,避免黑客攻击;测试远程服务器的端口是否可达,防止沿途运营商、防火墙限制了端口导致服务不可用。.备注本次计算机网络课程设计我主要是学习一下端口扫描工具的基本知识以及研究别人做出的端口扫描工具,以下即是本次研究的相关研究报告。鉴于自己计算机方面知识不是很好,不足之处还请老师指出与修正。1 端口扫描器的研究1.1 tcp协议介绍提到端口扫描技术就不可不提及tcp协议了,作为互联网的核心协议,tcp协议的重要性是人人皆知,端口扫描主要是建立在tcp协议基础上的一门技术。tcp协议是一种面向连接的,可靠的传输协议。一次正常的tcp传输需要通过在客户和服务器之间建立特定的虚电路连接来完成,这个过程通常被称为“三次握手”。tcp通过数据分段中的序列号保证所有的传输数据可以在远端按照正常的次序重组,而通过确认保证数据传输的完整性。三次握手过程:1:客户端发送一个tcp包(syn请求)给服务端,其中标记syn(同步序号)要打开。syn请求指明了客户端希望连接的服务器端端口号和客户端的isn。 2:服务器端发回应答,包含自己的syn信息isn和对客户端的syn应答,应答时返回下一个希望得到的字节序号。 3:客户端对从s服务器端来的syn进行应答,数据发送开始。1.2 udp协议介绍udp,用户数据报协议。udp为应用程序提供了一种方法来发送经过封装的ip数据报,而且不必建立连接就可以发送这些ip数据报。udp传输的数据段是由8个字节的头和净荷域构成的。两个端口分别被用来标识出源机器和目标机器内部的端点。当一个udp分组到来的时候,它的净荷部分被递交给与目标端口相关联的那个进程。当目标端口必须将一个应答送回给源端口的时候,源端口是必须的。发送应答的进程只要将近来的数据段中的源端口域复制到输出的数据段中的目标端口域,就可以指定在发送机器上有哪个进程来接受应答。udp长度包含了8字节的头和数据部分。udp校验和是可选的,如果不计算的话,则在该域中存放0,如果真正的计算结果试的话,则该域中存放的全是1,除非数据 的质量并不重要,否则就不应该将校验和的功能关闭。另外值得明确提出来的是udp没有做到的一些事情。udp并不考虑流控制,错误控制,在收到一个坏的数据段之后它也不重传。所有这些工作都留给用户的进程。udp所作的事情是提供一个接口,并且在接口中增加解复用的特性。他利用端口的概念将数据段解复用到多个进程中,这就是他所做的全部工作。1.3 socket介绍socket接口是tcp/ip网络的api,socket接口定义了许多函数或例程,程序员可以用它们来开发tcp/ip网络上的应用程序。要学internet上的tcp/ip网络编程,必须理解socket接口。 socket接口设计者最先是将接口放在unix操作系统里面的。如果了解uinx系统的输入和输出的话,就很容易了解socket了。网络的socket数据传输是一种特殊的i/o,socket也是一种文件描述符。socket也具有一个类似于打开文件的函数调用socket(),该函数返回一个整型的socket描述符,随后的连接建立,数据传输等操作都是通过该socket实现的。sockfd是需要关闭的socket的描述符。参数 how允许为shutdown操作选择以下几种方式:0-不允许继续接收数据 1-不允许继续发送数据 2-不允许继续发送和接收数据,均为允许则调用close () shutdown在操作成功时返回0,在出现错误时返回-1并置相应errno。1.4 常用端口扫描技术1.4.1 tcp connect()扫描:这是最基本的tcp扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度,如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,使用者可以通过同时打开多个套接字来加速扫描。使用非阻塞i/o允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被察觉,并且被防火墙将扫描信息包过滤掉。目标计算机的logs文件会显示一连串的连接和连接出错消息,并且能很快使它关闭。 1.4.2 tcp syn扫描:这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的tcp连接。扫描程序发送的是一个syn数据包,好象准备打开一个实际的连接并等待反应一样(参考tcp的三次握手建立一个tcp连接的过程)。一个syn|ack的返回信息表示端口处于侦听状态:返回rst表示端口没有处于侦听态。如果收到一个syn|ack,则扫描程序必须再发送一个rst信号,来关闭这个连接过程。这种扫描技术的优点在于一般不会在目标计算机上留下记录,但这种方法的缺点是必须要有root权限才能建立自己的syn数据包。1.4.3 tcp fin 扫描:syn扫描虽然是“半开放”方式扫描,但在某些时候也不能完全隐藏扫描者的动作,防火墙和包过滤器会对管理员指定的端口进行监视,有的程序能检测到这些扫描。相反,fin数据包在扫描过程中却不会遇到过多问题,这种扫描方法的思想是关闭的端口会用适当的rst来回复fin数据包。另一方面,打开的端口会忽略对fin数据包的回复。这种方法和系统的实现有一定的关系,有的系统不管端口是否打开都会回复rst,在这种情况下此种扫描就不适用了。另外这种扫描方法可以非常容易的区分服务器是运行unix系统还是nt系统。1.4.4 ip段扫描:这种扫描方式并不是新技术,它并不是直接发送tcp探测数据包,而是将数据包分成两个较小的ip段。这样就将一个tcp头分成好几个数据包,从而过滤器就很难探测到。但必须小心:一些程序在处理这些小数据包时会有些麻烦。1.4.5 tcp 反向 ident扫描:ident 协议允许(rfc1413)看到通过tcp连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。例如扫描者可以连接到http端口,然后用identd来发现服务器是否正在以root权限运行。这种方法只能在和目标端口建立了一个完整的tcp连接后才能看到。1.4.6 ftp 返回攻击:ftp协议的一个有趣的特点是它支持代理(proxy)ftp连接,即入侵者可以从自己的计算机和目标主机的ftp server-pi(协议解释器)连接,建立一个控制通信连接。然后请求这个server-pi激活一个有效的server-dtp(数据传输进程)来给internet上任何地方发送文件。对于一个user-dtp,尽管rfc明确地定义请求一个服务器发送文件到另一个服务器是可以的,但现在这个方法并不是非常有效。这个协议的缺点是“能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘,企图越过防火墙”。1.4.7 udp icmp端口不能到达扫描:这种方法与上面几种方法的不同之处在于使用的是udp协议,而非tcp/ip协议。由于udp协议很简单,所以扫描变得相对比较困难。这是由于打开的端口对扫描探测并不发送确认信息,关闭的端口也并不需要发送一个错误数据包。幸运的是许多主机在向一个未打开的udp端口发送数据包时,会返回一个icmp_port_unreach错误,这样扫描者就能知道哪个端口是关闭的。udp和icmp错误都不保证能到达,因此这种扫描器必须还实现在一个包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为rfc对icmp错误消息的产生速率做了规定。同样这种扫描方法也需要具有root权限。1.4.8 udp recvfrom()和write() 扫描:当非root用户不能直接读到端口不能到达错误时,linux能间接地在它们到达时通知用户。比如,对一个关闭的端口的第二个write()调用将失败。在非阻塞的udp套接字上调用recvfrom()时,如果icmp出错还没有到达时回返回eagain-重试。如果icmp到达时,返回econnrefused-连接被拒绝。这就是用来查看端口是否打开的技术。1.5 常见端口扫描器1.5.1 nss(网络安全扫描器)nss由perl语言编成,它最根本的价值在于它的速度,它运行速度非常快,它可以执行下列常规检查:sendmail 匿名ftp nfs出口 tftphosts.equivxhost利用nss,用户可以增加更强大的功能,其中包括:appletalk扫描novell扫描 lan管理员扫描可扫描子网nss执行的进程包括:取得指定域的列表或报告,该域原本不存在这类列表用ping命令确定指定主机是否是活性的扫描目标主机的端口 报告指定地址的漏洞 1.5.2 strobe(超级优化tcp端口检测程序)strobe是一个tcp端口扫描器,它可以记录指定机器的所有开放端口。strobe运行速度快。strobe的主要特点是,它能快速识别指定机器上正在运行什么服务。strobe的主要不足是这类信息是很有限的,一次strobe攻击充其量可以提供给“入侵者”一个粗略的指南,告诉什么服务可以被攻击。但是,strobe用扩展的行命令选项弥补了这个不足。比如,在用大量指定端口扫描主机时,可以禁止所有重复的端口描述。其他选项包括:定义起始和终止端口 定义在多长时间内接收不到端口或主机响应,便终止这次扫描。定义使用的socket号码定义strobe要捕捉的目标主机的文件1.5.3 satan(安全管理员的网络分析工具)satan是为unix设计的,它主要是用c和perl语言编写的(为了用户界面的友好性,还用了一些html技术)。它能在许多类unix平台上运行,有些根本不需要移植,而在其他平台上也只是略作移植。satan用于扫描远程主机的许多已知的漏洞,其中包括,但并不限于下列这些漏洞:ftpd脆弱性和可写的ftp目录nfs脆弱性nis脆弱性rsh脆弱性sendmailx服务器脆弱性1.5.4 jakal jakal是一个秘密扫描器,也就是就,它可以扫描一个区域(在防火墙后面),而不留下任何痕迹。秘密扫描器工作时会产生“半扫描”(half scans),它启动(但从不完成)与目标主机的syn/ack过程。从根本上讲,秘密扫描器绕过了防火墙,并且避开了端口扫描探测器,识别出在防火墙后面运行的是什么服务。(这里包括了像courtney和gabriel这样的精制扫描探测器)1.5.5 identtcpscan identtcpscan是一个更加专业化的扫描器,其中加入了识别指定tcp端口进程的所有者的功能,也就是说,它能测定该进程的uid。可在如下地址找到拷贝:http:/www.giga.or.at/pub/hacker/unix ; 1.5.6 connectconnect是一个bin/sh程序,它的用途是扫描tftp服务子网。1.5.7 fspscanfspscan用于扫描fsp服务顺。fsp代表文件服务协议,是非常类似于ftp的internet协议。它提供匿名文件传输,并且据说具有网络过载保护功能(比如,fsp从来不分叉)。fsp最知名的安全特性可能就是它记录所有到来用户的主机名,这被认为优于ftp,因为ftp仅要求用户的e-mail地址。 1.5.8 xscanxscan扫描具有x服务器弱点的子网(或主机)。xscan增加了一个功能:如果它找到了一个脆弱的目标,它会立即加入记录。 xscan的其他优点还包括:可以一次扫描多台主机。这些主机可以在行命令中作为变量键入(并且你可以通过混合匹配同时指定主机和子网)。1.6 本章小节本章节着重介绍了tcp协议、udp协议以及socket接口的相关知识还大致介绍了tcp connect()扫描、cp syn扫描、cp fin 扫描、ip段扫描等几种常规扫描模式。最后还介绍了nss、strobe、atan、jakal等几种常见的扫描工具。为网络扫描工具的开发打下了理论基础。计算机网络课程研究报告2 端口扫描器的开发2.1 开发原理开发端口扫描器需要用到控件,利用它与远程计算机建立连接,并通过用udp协议或tcp协议进行数据交换。这样就能确认远程计算机的端口开放情况。由于tcp协议判断远程计算机的信息比udp协议准确,所以本文使用winsock控件的tcp协议来开发扫描器。首先在ip地址和端口的循环中动态建立winsock套接字(fsocket),在该套接字的通讯方式上选择非阻塞方式(wsaasyncselect(),并在fsocket套接字,线程内分配的非可视控件句柄,网络事件处理函数以及网络事件消息(fd_connect连接消息)之间建立相应的关联。设置好fsocket的ip地址和相应的端口号后,调用connect()函数与远程目标主机建立连接。调用waitforsingleobject()函数等待网络连接事件的发生,一旦连接成功将自动调用自定义的 readdata()函数处理相应网络消息。最后将网络事件复位(resetevent)以便等待下一网络事件发生,并取消在fsocket套接字,线程内分配的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论