首页 端口扫描程序的设计与实现

端口扫描程序的设计与实现

举报
开通vip

端口扫描程序的设计与实现端口扫描程序的设计与实现 摘 要 随着互联网的飞速发展,网络入侵行为日益严重,网络安全日益成为人们 关注的焦点。端口扫描技术是网络安全扫描技术的重要技术之一。对目标系统 进行端口扫描,是网络系统入侵者进入目标系统的第一步。 本文对端口扫描技术的原理和应用进行了阐述,并设计了一个简单的基于 windows平台上的端口扫描系统。 此程序主要完成了TCP connect()扫描和UDP扫描功能。TCP扫描支持多线 程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。能扫 描特定的部分端口号或对指定的端...

端口扫描程序的设计与实现
端口扫描程序的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 与实现 摘 要 随着互联网的飞速发展,网络入侵行为日益严重,网络安全日益成为人们 关注的焦点。端口扫描技术是网络安全扫描技术的重要技术之一。对目标系统 进行端口扫描,是网络系统入侵者进入目标系统的第一步。 本文对端口扫描技术的原理和应用进行了阐述,并设计了一个简单的基于 windows平台上的端口扫描系统。 此程序主要完成了TCP connect()扫描和UDP扫描功能。TCP扫描支持多线 程,能对单个指定的主机进行扫描或对指定网段内的主机进行逐个扫描。能扫 描特定的部分端口号或对指定的端口段内的端口进行逐个扫描。此端口扫描程 序能快速地进行TCP扫描,准确地检测出对TCP 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 开放的端口。而对于UDP 扫描只支持单线程,速度较慢。扫描结果以列表的形式直观地展现出来。 关键词:网络安全 端口扫描 TCP扫描 UDP扫描 Design and Implementation of a Port Scanner ABSTRACT With 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 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 which bases on the Windows platform. This program is essentially completed the TCP connect () scan and UDP scanning function.TCP scan support multi-threaded, single specified host scan-by-scan or network segment specified host. Can scan a specific part of the port number or port in the port specified in paragraph one by one scan. This port scanner can quickly scan TCP,accurately detect the open ports on the TCP protocol. For UDP scanning only supports single-threaded, but slower. Scan results visually demonstrate the form of a list. Key Words: Network Security Port Scanning TCP Scan UDP Scanning 目 录 第一章 绪论 ..................................................................................................... 1 1.1引言 ........................................................................................................................... 1 1.2课题的背景及意义 .................................................................................................... 1 1.3端口扫描概述 ............................................................................................................ 2 1.4端口扫描国内外研究现状......................................................................................... 2 1.5端口扫描技术概要 .................................................................................................... 2 1.6安全扫描技术的产生及其发展趋势 ......................................................................... 3 1.7安全扫描的分类 ........................................................................................................ 4 第二章 端口扫描的相关知识 .......................................................................... 5 2.1网络端口扫描原理 .................................................................................................... 5 2.2端口的基本概念及其分类......................................................................................... 6 2.2.1 端口的基本概念 ............................................................................................. 6 2.2.2 端口的分类 ..................................................................................................... 7 2.3相关协议 ................................................................................................................... 8 2.3.1 TCP头的组成 .................................................................................................. 8 2.3.2 TCP三次握手过程 .......................................................................................... 9 2.3.3 TCP/IP实现遵循的原则 ................................................................................ 10 2.4常用端口和漏洞扫描技术....................................................................................... 10 2.5扫描的定义 ............................................................................................................... 11 2.6多线程技术 .............................................................................................................. 12 第三章 系统设计 ............................................................................................12 3.1系统的主要目标 ...................................................................................................... 12 3.2开发环境及工具 ...................................................................................................... 13 3.3功能模块与系统结构 .............................................................................................. 13 第四章 系统实现 ............................................................................................15 4.1 程序的主要数据结构 ............................................................................................. 15 4.1.1数据包首部结构 ............................................................................................ 15 4.1.2网卡信息数据结构......................................................................................... 17 4.1.3传递给线程的参数的数据结构 ..................................................................... 17 4.2 核心算法的设计 ..................................................................................................... 18 4.2.1 TCP校验和的计算 ........................................................................................ 18 4.2.2 Winpcap 过滤原则 ........................................................................................ 19 4.3端口扫描流程 .......................................................................................................... 19 4.3.1 端口扫描的总流程........................................................................................ 19 4.3.2 TCP扫描流程 ................................................................................................ 20 4.3.3 UDP扫描流程 ............................................................................................... 21 4.4调试分析 ................................................................................................................. 23 4.4.1 编译后选择网卡界面 .................................................................................... 23 4.4.2 选择设备后的开始界面 ................................................................................ 23 4.4.3 TCP扫描 ........................................................................................................ 24 4.4.3.1 Connect 扫描 ....................................................................................... 24 4.4.3.2 XMAS 扫描 ......................................................................................... 24 4.4.3.3 SYN 扫描 ............................................................................................ 25 4.4.3.4 ACK扫描 ............................................................................................. 25 4.4.3.5 FIN扫描 ............................................................................................... 26 4.4.3.6 NULL扫描 ........................................................................................... 26 4.4.4 UDP扫描 ....................................................................................................... 27 4.4.5 子系统功能测试 ........................................................................................... 27 第五章 总结 ....................................................................................................29 参考文献 ..........................................................................................................30 致谢 ..................................................................................................................31 第一章 绪论 1.1引言 在计算机网络开放性和互连性不断增强的今天,网络安全问题日益引起社会的重视,网络安全 评估工具逐渐被企事业单位所接受。端口扫描器作为网络安全评估软件的一部分,在网络安全方面起 着重要的作用。通过向目的主机的TCP/IP端口发送TCP或UDP探针, 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 目标的响应信息,得出目的主机服务端口的状态和提供的服务,从而分析出系统存在的漏洞 。网络管理人员可以借此分析网络 和主机中的安全状况,先于黑客了解系统存在的漏洞, [1]从而防患于未然。 WinPcap库是一套基于Win32平台的开放源 代码的网络数据包截获和分析系统。它具有功能强大的包处理API接口,而且性能稳定、效率极高。该扫描器利用WinPcap库处理原始数据包,能对目的主机相应端口进行扫描并能显示目的主机的操作系统相关信息。该扫描器目前在局域网中工作良好,性能稳定。 1.2课题的背景及意义 网络中每台计算机犹如一座城堡,这些城堡中,有些是对外完全开放的,有些却是大门紧闭的。入侵者们是如何找到,并打开它们的城门呢,这些城门究竟通向何处, 在网络中,把这些城堡的“城门”称之为计算机的“端口”。端口扫描是入侵者搜索信息的几种常用方法之一,也正是这一种方法最容易暴露入侵者的身份和意图。一般说来,扫描端口有以下目的和用途: 1)能识别在线的一台计算机或多台计算机组成的网络。 2)能识别计算机上启用的服务、开放的端口。 3)能识别计算机上操作系统类型、系统信息。 4)能识别计算机上应用程序和特定服务的版本。 5)能识别计算机的系统漏洞、软件漏洞。 如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能使用相应的手段实现入侵。而如果管理员先掌握了这些端口服务的安全漏洞,就能采取有效的安全措施, [2]防范相应的入侵。 1 1.3端口扫描概述 网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。 每一个网络主机都相当于一个“房间”,黑客能否进入“房间”,取决于是否发现了打开的“门窗”。也就是说,能否入侵网络主机,或者网络主机是否安全,关键在于能否查出网络主机的系统信息。而端口是主机与外界通讯交流的数据出入口,即是“门窗”。端口分为硬件端口和软件端口,所谓硬件端口又称为接口,包括:USB端口、串行端口、并行端口等。软件端口一般指网络中面向连接服务(TCP)和无连接服务(UDP)的通讯协议的端口。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。通过端口扫描,发现系统的安全漏洞。它使系统用户了解系统目前向外界提供了哪 [3]些服务,从而为系统用户管理网络提供了一种手段。 1.4端口扫描国内外研究现状 网络的安全状况取决于网络中最薄弱的环节,任何疏忽都可能引入不安全的因素,最有效的方法是定期对网络系统进行安全性分析,及时发现并修正存在的脆弱性,保证系统的安全。 国外安全扫描技术的历史可以追溯到20世纪90年代,当时因特网刚刚起步,但是在过去的十多年内,扫描技术飞速发展,迄今为止,其扫描技术己经非常完善,但是在全面性、隐蔽性和智能性上还有待提高。而安全扫描器从最初专门为UNIX系统而编写的一些只有简单功能的小程序发展到现在,己经出现了可以运行在多个操作系统平台上的、具有复杂功能 [4]的系统程序。 国内的扫描技术是在国外扫描器基础上发展起来的。其中有些专门从事安全技术的公司包括绿盟科技、启明星辰等等。这些公司的扫描器以硬件为主,其特点是执行速度快,不像软件一样受到安装主机系统性能的限制。 然而对于更多的基于主机的端口扫描器而言,简单、实用、可靠才是它们的长处。 1.5端口扫描技术概要 端口扫描途径主要是扫描器。扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器可以不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务和它们 2 的软件版本。这就能让我们间接的或直观的了解到远程主机所存在的安全问题。 扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息。扫描器有三项功能:发现一个主机或网络的能力;一旦发现一台主机,有发现什么服务正运行在这台主机上的能力;通过测试这些服 [5]务,发现漏洞的能力。 为了理解扫描以及它的工作原理,首先应对TCP的三次握手机制有所了解。TCP的报头包含一个序列号和一些起着特殊作用的标记位。这里仅提到其中的四个标记位:SYN(同步),ACK(确认),RST(复位)和FIN(完成)。它们四个的作用与这里讨论的主题密切相关。 当系统间建立连接和释放连接时,就会用到所谓的握手机制。本文中所提到的连接均指的是发生在两个IP地址间,有一定的端口号的连接。 它的工作原理大致如下:握手的第一步,一台计算机首先请求和另外一台计算机建立连接,它通过发送一个SYN请求来完成,也即前面提到的SYN标记位置位。两台计算机间每条信息都有一个由发送方产生的序列号,序列号的使用使得双方知道他们之间是同步的,而且还可以起到丢失信息时或接收顺序错误时发送警告信息的作用。 握手的第二步,接收到SYN请求的计算机响应发送来的序列号,它会将ACK标记位置位,同时它也提供自己的序列号。到现在为止,发起连接建立请求的计算机认为连接已经建立起来,然而对方却并不这样认为,对方还要等到它自己的序列号有了应答后才能确认连接建立起来。因此现在的状态称为“半连接”。如果发起连接请求的计算机不对收到的序列号做出应答,那么这个连接就永远也建立不起来,而正因为没有建立连接,所以系统也不会对这次连接做任何记录。 握手的第三步,发起连接请求的计算机对收到的序列号做出应答,这样,两台计算机之间的连接才算建立起来。 两台计算机释放连接时的情况与此类似:当一台计算机说没有更多的数据需要发送了,它发送一个FIN信号(将FIN标记位置位)通知另一端,接收到FIN的另一端计算机可能发送完了数据,也可能没发送完,但它会对此做出应答,而当它真正完成所有需要发送的数据后,它会再发送一个自己的FIN 信号,等对方对此做出应答后,连接才彻底解除。 1.6安全扫描技术的产生及其发展趋势 随着Internet的不断发展,信息安全技术已经成为促进经济发展、社会进步的巨大推动了。端口扫描技术是网络安全扫描技术的一个重要的网络安全技术,与防火墙、入侵检测系统相互配合,能够有效地提高网络安全性。安全扫描是安全技术领域中的重要的一类。通过扫描能自动检测远程或者本地的主机系统的信息,包括主机的基本信息(如计算机名、域名、组名、操作系统类型号等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进 3 行安全评估,及时发现安全隐患,防患于未然。 任何技术的诞生都有深刻的思想基础,人们在对“安全”认识逐步深化的过程中,不断地提出新的安全理论并付诸实践。在这个认识的过程中有两次重大的飞跃:第一次飞跃式早在二十世纪八十年代,人们认为信息安全就是信息的保密性,相应的采取保障措施就是利用加密机制和基于计算机规则的访问控制。这个时期防火墙和入侵检测系统(IDS)进一步发展起来,并在保护内部网络中起到了积极作用。Dan Fame和Weitse Venema提出了划时代的隐患扫描思想,既然黑客可以查找系统的漏洞,并且针对这些漏洞对系统进行攻击,那么隐患扫描程序就可以采取与黑客相同的方法找到系统漏洞,并且将他们加以修复,起到主动防御的作用。第二次飞跃就是在被动防护的基础上,提出了主动防御的思想。这就促进了安全扫 [6]描的技术的诞生。安全扫描的主动防御思想渗透到了许多其他的安全领域。 安全扫描软件从最初的专门为UNIX系统编写的一些只具有简单的功能的小程序,发展到现在,已经成为可以用在多个系统的具有复杂的功能的商业程序。今后的发展趋势,我认为有以下几点:使用插件或者叫做功能模块技术。每个插件都封装一个或多个漏洞测试手段,主扫描程序通过代用插件的方法来执行扫描。仅仅是添加新的插件就可以使软件增加新功能,扫描更多漏洞。在插件编写的 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 公布的情况下,用户或者第三方公司甚至可以编写自己的插件来扩充软件的功能。同时这种技术使软件的升级维护都变得相对轻松,并且具有非常强的扩展性。由安全扫描程序到安全评估专家系统。最早的安全扫描程序只是简单的把各个扫描测试项目执行结果罗列出来,直接提供给测试者而不对信息进行任何分析处理。而当前较为成熟的扫描系统都能够将单个主机的扫描结果进行整理,形成报表能够并对具体漏洞提出一些解决方法,但对网络的状况缺乏一个整体的评估,对网络安全没有系统的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。未来的安全扫描系统,应该不但能够扫描安全漏洞,还能够智能化的协助网络信息管理人员评估本网络的安全状况,给出安全建议,成为安全评估专家的系统。 1.7安全扫描的分类 安全扫描技术工具是一把双刃剑,既可以被网络管理员利用就,又可以被黑客利用。端口扫描技术和漏洞检测技术是就安全扫描技术中的关键技术。下面专门介绍本软件的侧重点端口扫描技术。端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。黑客能否进入“房间”,关键在于他是否发现了打开了“门窗”。也就是说,关键是能否准确的收集系统信息。黑客要做的就是构造目标网络中的所有系统地图,包括操作系统的类型,版本号以及可以在其上运行的服务等。 黑客手工收集信息一般遵循以下步骤: (1)获取主机名与IP地址:可以通过使用Whois与Nslookup等工具。 (2)获得操作系统类型信息:标识的最快方法就是试图Telnet至该系统,从标识来判断。 4 (3) FTP信息:黑客将测试是否开放FTP服务,匿名FTP是否可用,若可用,则试图发掘更多的潜在问题。 (4) TCP/UDP扫描:对于TCP, Telnet可以用来试图与某一特定端口连接,这也是手工扫描的基本方法。从返回的标识可以得到更多的信息。从中再分析系统是否开放RPC服务、FINGER, RUSERS和RWHO等比较危险的服务。 这样,到这里为止,黑客完成了对远程系统信息的手工扫描。端口扫描软件就是要尽可 [7]能的自动地模拟黑客的扫描手段。 根据端口扫描的方法的不同,端口扫描技术分为五大类: 全开扫描:通过完整的TCP连接探查端口。主要有TCP Connect,反向Ident。 半开扫描:通过不完整的TCP连接探查端口。主要有SYN flag,IP ID Header "Dumb Scan"。 隐蔽扫描(Stealth Scanning):利用FIN字段来探查端口。不包含标准三次握手的任一部分。主要有SMACK Flag, ACK Flags, NULL Flags,ALL Flags (XMAS)。 IP段扫描(SweepsScanning): 同时对一个网段进行扫描。主要有TCP Echo, UDP Echo, [8]TCP SYN, ICMP Echo。 第二章 端口扫描的相关知识 2.1网络端口扫描原理 端口有两种,UDP端口和TCP端口。由于UDP端口是面向无连接的,从原理的角度来看,没有被扫描的可能,或者说不存在一种迅速而又通用的扫描算法;而TCP端口具有连接定向(Connection Oriented)的特性(即是有面向连接的协议),为端口的扫描提供了基础。 TCP建立连接时有三次握手:首先,Client端往Server某一端口发送请求连接的SYN包,如果Server的这一端口允许连接,就会给Client端发一个ACK回包,Client端收到Server的ACK包后再给Server端发一个ACK包,TCP连接正式建立,这就是连接成功的过程,如图2.1所示。当Client端往Server某一端口发送请求连接的SYN包,此时若Server的这一端口不允许连接,就会给Client端发一个RST回包,Client端收到Server的RST包后再给Server端发一个RST包,这就是连接失败的过程,如图2.1所示。基于连接的建立过程,可以想到,假如要扫描某一个TCP端口,可以往该端口发一个SYN包,如果该端口处于打开状态,我们就可以收到一个ACK,也就是说,如果收到ACK,就可以判断目标端口处于打开状态,否则,目标端口处于关闭状态。这就是TCP端口扫描的基本原理。 5 图2.1TCP端口扫描的基本原理 2.2端口的基本概念及其分类 2.2.1 端口的基本概念 我们这里所说的端口,不是计算机硬件的I/O端口,而是软件形式上的概念。服务器可以向外提供多种服务,比如,一台服务器可以同时是WEB服务器,也可以是FTP服务器,同时,它也可以是邮件服务器。为什么一台服务器可以同时提供那么多的服务呢,其中一个很主要的方面,就是各种服务采用不同的端口分别提供不同的服务,比如:WEB采用80端口,FTP采用21端口等。这样,通过不同端口,计算机与外界进行互不干扰的通信。 工具提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。 那么,如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了那些服务。我们都知道,提供服务就一定有服务软件的漏洞,根据这些, 6 攻击者可以达到对目标计算机的初步了解。如果计算机的端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务,而管理员可能没有注意到;一种是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。 2.2.2 端口的分类 端口是一组号码,占16个二进制位,其范围为0-65535,服务器在预设置端口等待客户端的连接。例如,WWW服务使用TCP的80号端口,FTP使用21号端口,Telnet的端口号为23等。 端口定义了TCP/UDP和上层应用程序之间的接口点。客户程序可任意选择端口号,服务程序则使用固定的标准端口号,IP地址和端口号的组合成为套接字Socket,在一个主机上是唯一的。一条连接由客户端和服务器的套接字组成。 端口一般分为两类。 1(根据端口的性质划分 公认端口(Well Known Ports):范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP服务,80端口分配给HTTP服务,135端口分配给RPC服务等等 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始 动态和/或私有端口(Dynamic and/or Private Ports):动态端口的范围从49152到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如8080端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。 2(根据提供的服务方式划分 (1)TCP端口 TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。 (2)UDP端口 UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,其安全性得不到保障。常见的有DNS服务的53端口,SNMP服务的161端口,QQ使用的8000和4000 7 端口等等。 2.3相关协议 在介绍端口扫描技术之前,要了解一下关于TCP的基础知识,因为TCP扫描都是基于以 下基础知识。 IP地址和端口被称作套接字,它代表一个TCP连接的一个连接端。为了获得TCP服务,必 须在发送机的一个端口上和接收机的一个端口上建立连接。TCP连接用两个连接端来区别, 也就是(连接端 1,连接端 2)。连接端互相发送数据包。 2.3.1 TCP头的组成 一个 TCP 数据包包括一个TCP头,后面是选项和数据。一个TCP 头包含6个标志位, 具体结构如图2.2所示。 原端口 目的端口 发送序号 确认序号 校验和 紧急数据 指针 头 长 保留 U A P R S F 窗口大小 度 可选项及数据填充 TCP数据 图2.2 TCP头部 它们的意义分别为: (1)URG:为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据指针有效。 (2)ACK::为确认标志位。如果为1,表示包中的确认号时有效的。否则,包中的确认号 无效。 (3)PSH:如果置位,接收端应尽快把数据传送给应用层。 8 (4)RST:用来复位一个连接。RST标志置位的数据包称为复位包。一般情况下,如果TCP 收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。 (5)SYN: 标志位用来建立连接,让连接双方同步序列号。如果SYN,1 ACK=0,则表示 该数据包为连接请求,如果SYN=1而ACK=1则表示接受连接。 (6)FIN:表示发送端已经没有数据要求传输了,希望释放连接。 2.3.2 TCP三次握手过程 TCP是一个面向连接的可靠传输协议。面向连接表示两个应用端在利用TCP传送数据前必须先建立TCP连接。TCP的可靠性通过校验和,定时器,数据序号和应答来提供。通过给每个发送的字节分配一个序号,接收端接收到数据后发送应答,TCP协议保证了数据的可靠传输。数据序号用来保证数据的顺序,删除重复的数据。在一个TCP会话中,有两个数据流,每个连接端从另外一端接收数据,同时向对方发送数据,因此在建 立连接时,必须要为每一个数据流初始序列号。为了了解实现过程,我们假设客户端C希望跟服务器端S建立连接,然后分析连接建立的过程(通常称作三次握手),如图2.3所示。 (1) 首先客户端在连接请求中,发送SYN=1,ACK=0的TCP数据包(包含初始序列号给服务器,表示要同服务器建立一个连接; (2) 服务器受到SYN连接请求后,会响应一个SYN=1,ACK=1的TCP数据包(包含自己的初始序列号)给客户端,表示同意这个连接,并要求服务器确认。 (3) 最后客户端再发送SYN=0,ACK=1的数据包给服务器,表示确认这个链接。 图2.3 TCP三次握手过程 9 2.3.3 TCP/IP实现遵循的原则 大部分TCP/IP实现遵循以下原则: FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST (1) 当一个SYN或者 数据包。 (2) 当一个RST数据包到达一个监听端口,RST被丢弃。 (3) 当一个RST数据包到达一个关闭的端口,RST 被丢弃。 (4) 当一个包含ACK的数据包到达一个监听端口时,数据包被丢弃,同时发送一个RST 数据包。 (5) 当一个SYN位关闭的数据包到达一个监听端口时,数据包被丢弃。 (6) 当一个SYN数据包到达一个监听端口时,正常的三阶段握手继续,回答一个SYN | ACK数据包。 2.4常用端口和漏洞扫描技术 端口扫描就是得到目标主机开放和关闭的端口列表,这些开放的端口往往与一定的服务相对应,通过这些开放的端口,就能了解主机运行的服务,然后就可以进一步整理和分析这些服务可能存在的漏洞,随后采取针对性的攻击。 (1)TCP Connect扫描 这是最基本的扫描方式。如果目标主机上的某个端口处于侦听状态,可根据其IP地址和端口号并调用Connect()与其建立连接。若目标主机未开放该端口,则Connect操作失败。因此,使用这种方法可以检测到目标主机开放了那些端口。注意,在执行这种扫描方式时,不需要对目标主机拥有任何权限。 (2)TCP SYN 扫描。 这种技术通常认为是“半”扫描,因为扫描程序不必与目标主机三次握手就可建立一个完全的TCP连接。扫描程序发送一个SYN数据包,等待目标主机的应答。如果目标主机返回SYN|ACK,表示端口处于侦听状态。若返回RST,表示端口没有处于侦听状态。如果收到一个SYN|ACK,则扫描程序发送一个RST数据包,来终止这个连接。这种扫描技术的优点在于一般不会在目标计算机上留下痕迹。但要求攻击者在发起攻击的计算机上必须有Root权限,因为不是通过Connect调用来扫描端口,必须直接在网络上向目标主机发送SYN和RST数据包。 (3)TCP FIN 扫描 一些防火墙和包过滤器会对一些指定的端口进行监视,因此TCP SYN扫描攻击可能会被 10 检测并纪录下来。FIN数据包可以通过它们而不留痕迹。向目标主机的某个端口发送FIN数据包,若端口处于侦听状态,目标主机不会回复FIN数据包。相反,若端口未被侦听,目标主机会用适当的RST来回复。这种方法依赖于系统的实现。某些系统对所有的FIN一律回复RST,而不管端口是否打开,在这种情况下,TCP FIN扫描是不适用的。 (4)IP分片扫描 这种方法并不直接发送TCP探测数据包,而是预先将数据包分成两个较小的IP数据包传送给目标主机。目标主机收到这些IP包后,会把它们组合还原为原先的TCP探测数据包。将数据包分片的目的是使他们能够通过防火墙和包过滤器,将一个TCP分为几个较小的数据包,可能会穿过防火墙而到达目标主机。 (5)TCP 反向Ident扫描 Ident协议(RFC1413)允许通过TCP连接列出任何进程拥有者的用户名(包含该进程拥有何种权限)。因此,扫描器能连接到Http端口,然后检查httpd是否正在以Root权限运行。 (6)FTP反射攻击 FTP协议的一个特性是支持代理(Proxy)FTP连接。即入侵者可以从自己的计算机和目标主机的FTP Server-PI(协议解释器)连接,建立一个控制通信连接。然后,请求这个Server-PI激活一个有效的Server_DTP(数据传输进程)来给Internet的任何地方发送文件。 (7)UDP端口扫描 这种方法与上面几种方法的不同之处在于使用UDP协议。由于UDP协议较TCP简单,所以要判断一个端口是否被侦听较为困难。这是由于处于侦听状态的端口对扫描探测并不发送确认,而未侦听的端口也并不会返回错误数据包。 (8)UDP Recvfrom()和Write()扫描 若在发起攻击的计算机上没有Root权限,就不能得到端口不可达的 ICMP_PORT_UNREACH错误数据包。在Linux中可以间接的检测到是否收到了目标主机的这个应答数据包。例如,对一个未侦听端口的第二个Write()调用将失败。在非阻塞的UDP套接字上调用Recvfrom()时,如果未收到这个应答,返回EAGAIM(其意思是可以“重试”)。如果收到这个应答,则返回ECONNREFUSED(连接被拒绝)。可以根据Recvfrom()和Write()的返回信息来判断目标主机是否发送了ICMP_PORT_UNREACH应答。 (9)ICMP_echo扫描 通过执行Ping命令,可以判断出在一个网络上主机是否能到达(即是否开机)。 2.5扫描的定义 扫描程序(Scanner)是自动检测远端主机或者本地主机安全脆弱性的程序。通过使用扫描程序一个用户可以发现远程服务器的安全弱点。目前,绝大多数操作系统都支持TCP/IP协 11 议簇,扫描程序查询TCP/IP端口并记录目标机器的响应。扫描程序通过确定下列项目收集目标主机的有用信息: 当前主机正在进行什么服务, 哪些用户拥有这些服务, 是否支持匿名登录, 是否有某些网络服务需要鉴别? 2.6多线程技术 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可 运行的上下文。所以线程基本上是轻量级的进以在程序里独立执行。也可以把它理解为代码 程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 (1)什么是多线程, 多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。 (2)使用线程的好处有以下几点: 使用线程可以把占据长时间的程序中的任务放到后台去处理 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能加快 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。 第三章 系统设计 3.1系统的主要目标 本程序主要实现了: TCP扫描功能; UDP扫描功能; 12 能对单个指定的主机进行扫描或扫描指定网段内的主机; 能扫描特定的部分端口号或对指定的端口段内的端口进行逐个扫描; 3.2开发环境及工具 测试平台:Windows XP Professional 使用软件:Microsoft Visual Studio 2008 开发语言:C++ 3.3功能模块与系统结构 作为端口扫描程序,首先需要完成的功能就是对于系统操作系统的服务端口进行扫描,返回扫描结果。对于端口的扫描,包括对于本机系统服务端口,局域网内目标机系统,以及远程IP的系统服务端口进行扫描。 有些时候,用户并不需要去扫描整个系统的所有端口,因为这样的话不仅会浪费大量的时间,而且可能导致难以找到自己需要了解的端口的扫描结果。所以,对于选择性地对端口进行扫描也非常重要。这当然也是扫描程序需要实现的功能之一。 用户在等待扫描的时候,往往希望知道它的工作进度。这样用户可以更好地控制自己的操作。站在用户的角度思考,设置进度是程序需要完成的,这样就能知道程序扫描的进度。 系统必须提供的服务是功能需求的基本,本着站在用户角度思考的原则,做出如上叙述需求,从简列举如下: 扫描功能; 地址选择功能; 端口选择功能; 进度显示功能; 程序流程图端口扫描程序功能模块图,如图3.1所示。 13 端口扫描 操作 显示 设设设开进结 置置置始度果 地协端扫显显 址 议 口 描 示 示 图3.1功能模块图 程序运行流程,如图3.2所示。 14 图3.2程序运行流程 第四章 系统实现 4.1 程序的主要数据结构 4.1.1数据包首部结构 (1) 以太帧首部 15 (2) IP首部 (3) TCP首部 (4) UDP首部 (5) TCP包结构 16 (6) TCP伪首部 4.1.2网卡信息数据结构 4.1.3传递给线程的参数的数据结构 (1) TCP 扫描线程的参数 (2) UDP扫描线程的参数 17 (3) 传递给回函数的参数的数据结构 4.2 核心算法的设计 4.2.1 TCP校验和的计算 TCP校验和的计算方法比较特殊,需要构造一个TCP伪首部,并将伪首部拼合在协议头 和数据部分前面,进行同一的校验和计算,得出最终的校验和。伪首部结构如图4.1所示: 源IP地址 目的IP地址 协议号 长度 0 图4.1伪首部结构 TCP校验和的计算方法如下: 18 在上面的函数中,CheckSum为传统的校验和计算方法。函数先分别计算两块 数据的校验和,并拼接校验和,然后对拼接后的校验和进行计算得到最后结果。 4.2.2 Winpcap 过滤原则 在用Winpcap捕获数据时,设置严格的过滤规则会大大提高捕获的效率。在此以TCP SYN扫描为例,说明设置Winpcap的方法。 sprintf(strFilter,"tcp and (tcp[tcpflags] & (tcp-syn|tcp-rst) != 0) and ((ip[12]*%u + ip[13]*%u + ip[14]*%u + ip[15]) >= %u) and ((ip[12]*%u + ip[13]*%u + ip[14]*%u + ip[15]) <= %u)", 0x1000000, 0x10000, 0x100, ThreadParament->dwBeginIp, 0x1000000, 0x10000, 0x100, ThreadParament->dwEndIp); 利用上述规则,可让Winpcap仅捕获Tcp中Syn或Rst为1、并且Ip地址在DwBeingIp 与 DwEndIp之间的数据包。 对于TCP的其他扫描,都可以使用上述方法提升效率。 4.3端口扫描流程 4.3.1 端口扫描的总流程 端口扫描的总流程,如图4.2所示。 19 图4.2端口扫描的总流程 4.3.2 TCP扫描流程 TCP扫描流程如图4.3所示。 20 图4.3TCP扫描流程 4.3.3 UDP扫描流程 UDP扫描流程,如图4.4所示。 21 图4.4 UDP扫描线程 22 4.4调试分析 4.4.1 编译后选择网卡界面 用户可以选择本地的网卡进行扫描,界面如图4.5所示。 图4.5选择网卡界面 4.4.2 选择设备后的开始界面 选择设备后的开始界面,如图4.6所示。 图4.6开始界面 23 4.4.3 TCP扫描 4.4.3.1 Connect 扫描 设置完扫描的Ip和端口范围后,选择"Connect Scan",点击"TCP扫描",就可以用Connect 扫描方式扫描指定范围内的端口,扫描结果如图4.7所示。 图4.7Connect扫描 4.4.3.2 XMAS 扫描 设置完扫描的Ip和端口范围后,选择"XMAS Scan",点击"TCP扫描",就可以用XMAS 扫描方式扫描指定范围内的端口,扫描结果如图4.8所示。 图4.8XMAS扫描 24 4.4.3.3 SYN 扫描 设置完扫描的Ip和端口范围后,选择"SYN Scan",点击"TCP扫描",就可以用SYN扫描方式扫描指定范围内的端口,扫描结果如图4.9所示。 图5 图4.9SYN扫描 4.4.3.4 ACK扫描 设置完扫描的Ip和端口范围后,选择"ACK Scan",点击"TCP扫描",就可以用ACK扫描方式扫描指定范围内的端口,扫描结果如图4.10所示。 图4.10:ACK扫描 25 4.4.3.5 FIN扫描 设置完扫描的Ip和端口范围后,选择"FIN Scan",点击"TCP扫描",就可以用FIN扫描方式扫描指定范围内的端口,扫描结果如图4.11所示。 图4.11FIN扫描 4.4.3.6 NULL扫描 设置完扫描的Ip和端口范围后,选择"NULL Scan",点击"TCP扫描",就可以用NULL扫描方式扫描指定范围内的端口,扫描结果如图4.12所示。 图4.12NULL扫描 26 4.4.4 UDP扫描 设置完扫描的Ip地址和端口范围后,再设置"Time Out Value"、"Time For One Port(ms)"、 .13所示。 "Time Wait Between 2 Packets(ms)",点击"UDP 扫描",扫描结果如图4 图4. 13UDP扫描 4.4.5 子系统功能测试 如果起始IP(端口号)值大于末尾IP(端口号)会出现“参数设置有误”,如图4.14所 示。 图4.14参数设置错误 当输入错误的端口号时即端口号输入的端口号大于65535时,提示错误信息“请检查开 27 始端口”或“请检查截止端口”,如图4.15所示。 图4.15输入错误的端口号时 28 第五章 总结 端口扫描是综合扫描器最基础的功能,也是黑客攻击的基本步骤,因此,掌握端口扫描的常用技术和防范措施对维护系统安全有重要作用。端口扫描不仅可以得知系统哪些端口开 放,还可以根据系统的响应信息得知目标系统的相关信息。由于不同系统网络协议栈的实现 细节有差别,对不同的系统得到的扫描结果可能不同,这在秘密扫描中体现的较为明显。对端口扫描的预防多由防火墙完成,因此掌握防火墙的原理对于维护系统安全很有帮助。 本文分析了端口扫描技术原理和 Winpcap 库, 并详细介绍了该扫描器的设计思路和实现方法。可以解析任意格式的主机地址(点式、域名或者带有掩码的地址),而且可以设置接收或者发送数据包的适配器接口。经过多次试验测试,扫描器在局域网中工作稳定,但是对于不是很稳定的广域网上的主机进行扫描有时不能扫描出某些打开的端口。接下来的工作将针对这些不足进行更深一步的研究,以实现更加高效的端口扫描器。 29 参考文献 [1] 谢希仁. 计算计网络(第5版) [M]. 北京: 电子工业出版社, 2008 [2] 武装.网络端口扫描及对策研究[J].电子技术应用,2004 [3] 李健,张国印,顾国昌,张万松.网络扫描技术实现及其在网络安全中的应用[J].计算机应 用研究,2004 [4] 洪宏,张玉清,胡予濮,戴祖锋.网络安全扫描技术研究[J].计算机工程,2004 [5] 杨成卫.“端口侦听”与“端口扫描”研究[J].警察技术,2006 [6] 丁常福, 方敏, 徐亮. 端口扫描技术及防御分析[J]. 微机发展, 2003 [7] 唐小明, 梁锦华等. 网络端口扫描及其防御技术研究[J]. 计算机工程与设计, 2002 [8] 王灏, 王换招. 端口扫描与反扫描技术[J]. 微机发展, 2001 [9] 李晓辉, 张西红. 网络端口扫描与漏洞检测的研究[J]. 军械工程学院学报, 2003 [10] 肖微. 端口扫描技术的原理及应用 [J]. 网络安全技术与应用, 2006 [11] 基于 Windows2000 的端口扫描系统设计和实现[J]. 计算机工程与科学, 2002 [12] 蔡启先. TCP SYN 端口扫描的研究[J]. 广西工学院学报, 2002 [13] 刘成志. 基于端口扫描的安全漏洞检测系统的设计与实现[J]. 2005 [14] 石利平. 基于 TCP 协议的端口扫描技术[J]. 电脑开发与应用, 2011 [15] 程巍, 章磊, 高传善. 隐蔽端口扫描的原理及防御方法[J]. 计算机应用与软件, 2004 [16] 张伟, 蒋念平. 端口扫描方法的原理, 实现和防御[J]. 电脑编程技巧与维护, 2004 [17] 罗军东, 周峰. 端口扫描技术研究[J]. 软件导刊, 2006 30 致谢 本文是在XX老师的热情关心和指导下完成的。她认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。她无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高,这对我以后的工作和学习都是一种巨大的帮助。由于我对于毕业论文写作知识不熟悉,开始写时遇到了很大的困难,是侯春燕老师给我安排了进度,督促我按时完成毕业设计,还经常通过邮件的方式提醒我该按时提交什么文档和程序,而且在论文的修改上也给予了我很多的帮助和指导,并且在设计过程中及时帮助我解决一些问题,在此真诚的感谢候老师的耐心辅导和关心。 同时我要感谢周围的同学,在遇到问题时他及时的给予我帮助,平时经常进行相互交流,对遇到的问题进行相互探讨,这不但解决了很多问题而且加深了我对知识的理解,拓宽了我的知识面,使我学到更多的知识,并且发现很多自己的不足之处,在这里我由衷的感谢他们。 31
本文档为【端口扫描程序的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_977556
暂无简介~
格式:doc
大小:380KB
软件:Word
页数:40
分类:生活休闲
上传时间:2017-09-28
浏览量:73