H2003031282_牟楠轲_基于半打开的端口扫描技术的实现.doc
【精品】VC++基于半打开的端口扫描技术及其实现(源代码+论文)
收藏
资源目录
压缩包内文档预览:(预览前20页/共26页)
编号:1639462
类型:共享资源
大小:78.92KB
格式:RAR
上传时间:2017-08-30
上传人:机****料
认证信息
个人认证
高**(实名认证)
河南
IP属地:河南
50
积分
- 关 键 词:
-
精品
vc
基于
半打
端口扫描
技术
及其
实现
源代码
论文
- 资源描述:
-
【精品】VC++基于半打开的端口扫描技术及其实现(源代码+论文),精品,vc,基于,半打,端口扫描,技术,及其,实现,源代码,论文
- 内容简介:
-
分类号: U D C: 007) 5861 级:公 开 编 号: 2003031282 成 都 信 息 工 程 学 院 学 位 论 文 基于 半打开 的端口扫描技术 的 实现 论文作者姓名: 牟楠轲 申请学位专业: 计算机科学与技术 申请学位类别: 工学 学士 指导教师姓名(职称): 张金全(讲师 ) 论文提交日期: 2007 年 6 月 9 日 基于半打开 的端口扫描技术 的 实现 摘 要 随着互联网的飞速发展 ,网络入侵行为日益严重,网络安全 日益成为人们关注的焦 点。 端口扫描技术 是网络安全扫描技术的重要技术之一 。 对目 标系统进行端 口 扫描 ,是网络系统入侵者进入目 标系统的第一步 。 本 文对端口扫描技术的原理和应用进行了阐述 , 并 设计 了一个简单的基于 口扫描系统 。在论文中 介绍了半打开扫描 中 的 术 ,分析 了 这种扫描技术实现的原理和特点 。 实际设计中 采用 了 扫描安全性和可行性较好的 术 来实现端口扫描 , 并 实现了 端口 列表 自定义 ,扫描结果存储等 几大 模块化 功能。 最后 结合当前的实 际 情况 对端口扫描的未来发展 方向 提 出了 一点 个人 的看法。 关键词 : 网络安全;端口扫描; 测 of a of is of of on is of of a on YN of In it YN a to of At a of of 录 论文总页数 : 22 页 1 引言 . 1 口扫描概述 . 1 口扫描技术 的国内外研究现状 . 1 口扫描原理 . 1 口扫描技术概要 . 2 术详解 . 3 探测原理 . 3 探测 . 4 组时延 . 4 口扫描实现方法 . 4 2 需求分析 . 4 口扫描器的总体要求 . 4 计背景 . 4 户特点 . 4 件开发及运行环境 . 5 口扫描器 的需求分析 . 5 3 端口扫描器的实现 . 5 能模块简介 . 5 序实现流程 . 6 测的实现 . 6 口扫描功能模块 . 15 口选择模块 . 15 标 取模块 . 16 止扫描 . 17 描结果存储模块 . 17 4 测试环境及结果 . 18 件环境 . 18 件环境 . 18 试结果 . 18 5 端口扫描技术的发展方向和趋势 . 19 结 论 . 19 参考文献 . 20 致 谢 . 21 声 明 . 22 第 1 页 共 22 页 1 引言 口扫描概述 网络安全探测在网络安全中起着主动防御的作用,占有非常重要的地位。网络安全探测的所有功能都是建立在端口扫描的基础上,所以对端口扫描技术的研究有着非常重要的现实意义。 每一个网络主机都 相当于一个 “房间 ”,黑客能否进入 “房间 ”,取决于是否发现了打开的 “门窗 ”。也就是说,能否入侵网络主机,或者网络主机是否安全,关键在于能否查出网络主机的系统信息。而端口是主机与外界通讯交流的数据出入口,即是 “门窗 ”。端口分为硬件端口和软件端口,所谓硬件端口又称为接口,包括: 口、串行端口、并行端口等。软件端口一般指网络中面向连接服务 (无连接服务 (通讯协议的端口。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。通过端口扫描,发现系统的 安全漏洞。它使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种手段。 口 扫描技术的国内外研究现状 网络的安全状况取决于网络中最薄弱的环节,任何疏忽都可能引入不安全的因素,最有效的方法是定期对网络系统进行安全性分析,及时发现并修正存在的脆弱性,保证系统的安全。 国外安全扫描技术的历史可以追溯到 20 世纪 90 年代,当时因特网刚刚起步,但是在过去的十多年内,扫描技术飞速发展,迄今为止,其扫描技术己经非常完善,但是在全面性、隐蔽性和智能性上还有待提高。而安全扫描器从最初专门为 统而 编写的一些只有简单功能的小程序发展到现在,己经出现了可以运行在多个操作系统平台上的、具有复杂功能的系统程序。 国内的扫描技术是在国外扫描器基础上发展起来的。其中有些专门从事安全技术的公司包括绿盟科技、启明星辰等等。这些公司的扫描器以硬件为主,其特点是执行速度快,不像软件一样受到安装主机系统性能的限制。 然而对于更多的基于主机的端口扫描器而言,简单、实用、可靠才是它们的长处。 口扫描原理 端口扫描通常指用同一个信息对目标主机的所有需要扫描的端口进行发送探测数据包即扫描,然后,根据返回端口的状态来分析目标主机 端口是否打开,是否可用。端口扫描通过与目标主机的 P 端口建立连接并请求某些服务,记录目标主机的应答,收集目标主机相关信息,从而发现目标主机某些内在的 第 2 页 共 22 页 安全弱点,并且确定该端口什么服务正在进行并获取该服务的信息。端口扫描也可以通过捕获本地主机或服务器的流入流出 据包来监视本地主机的运行情况,它仅能对接收到的数据进行分析,帮助我们发现目标主机的某些内在的弱点,而不会提供进入一个系统的详细步骤。 口扫描技术概要 端口扫描途径主要是扫描器。扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描 器可以不留痕迹的发现远程服务器的各种 口的分配及提供的服务和它们的软件版本 。 这就能让我们间接的或直观的了解到远程主机所存在的安全问题。 扫描器通过选用远程 P 不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息。扫描器有三项功能:发现一个主机或网络的能力;一旦发现一台主机,有发现什么服务正运行在这台主机上的能力;通过测试这些服务,发现漏洞的能力。 为了理解扫描以及它的工作原理,首先应对 报头包含一个序列号和一些起着 特殊作用的标记位。这里仅提到其中的四个标记位: 步 ), 认 ), 位 )和 成 )。它们四个的作用与这里讨论的主题密切相关。 当系统间建立连接和释放连接时,就会用到所谓的握手机制。本文中所提到的连接均指的是发生在两个 址间,有一定的端口号的连接。 它的工作原理大致如下:握手的第一步,一台计算机首先请求和另外一台计算机建立连接,它通过发送一个 求来完成,也即前面提到的 记位置位。两台计算机间每条信息都有一个由发送方产生的序列号,序列号的使用 使 得双方知道他们之间是同步的 ,而且还可以起到丢失信息时或接收顺序错误时发送警告信息的作用。 握手的第二步,接收到 求的计算机响应发送来的序列号,它会将记位置位,同时它也提供自己的序列号。到现在为止,发起连接建立请求的计算机认为连接已经建立起来,然而对方却并不这样认为,对方还要等到它自己的序列号有了应答后才能确认连接建立起来。因此现在的状态称为 “半连接 ”。如果发起连接请求的计 算机不对收到的序列号做 出应答,那么这个连接就永远也建立不起来,而正因为没有建立连接,所以系统也不会对这次连接做任何记录。 握手的第三步,发起连接请求 的计算机对收到的序列号作出应答,这样,两台计算机之间的连接才算建立起来。 两台计算机释放连接时的情况与此类似:当一台计算机说没有更多的数据 第 3 页 共 22 页 需要发送了,它发送一个 号 (将 记位置位 )通知另一端,接收到 可能没发送完,但它会对此作出应答,而当它真正完成所有需要发送的数据后,它会再发送一个自己的 号,等对方对此作出应答后,连接才彻底解除。 术详解 探测原理 高效的探测方法需要解决 3 个问题 : (1)用几个包判断主机和端口状态 ; (2)占用双方的资 源少 ; (3)准确的分组时延计算方法。如果不建立完整的 接 ,直接用 来检测 用服务端口的状态 , 会有效地提高探测效率和准确性。对于问题 (1)和 (2), 可以借鉴 口扫描技术 , 发送特殊 解决。对于问题 (3), 可以在仿照 方式在 些字段或选项中嵌入时间戳来解决。 口扫描技术通过发送一些特殊的 判断目标主机和端口状态。端口扫描通过扫描目标主机的大量端口 , 发现系统的漏洞。而服务器的地址和端口一般都是公开的 , 如果只探测服务器的工作端口 , 不用探测其余的端口 ,可以向工作 端口发送特殊的 , 根据返回包判断目标状态。绝大多数P 协议栈的实现遵循以下原则 : (1)当一个 者 据包到达一个关闭的端口 , 弃数据包同时发送一个 据包。 (2)当一个包含 数据包到达一个监听端口时 , 数据包被丢弃 , 同时发送一个 据包。 (3)当一个 据包到达一个监听端口时 , 正常的三阶段握手继续 , 回答一个 据包。 (4)当一个 据包到达一个监听端口时 , 数据包被丢弃。 “为 ”(关闭的端口返回 监听端口丢弃包 ), 在 志位置位时同样要发生。所有的 或者没有任何标记的 据包都会引起 “。一般 口扫描根据以上方式的发包收包来判断主机与端口状态。因为 不能直接探测监听端口 , 所以通常选择使用 或 探测监听端口。一些防火墙出于安全的考虑 , 将发现和拦截 测包 ,但不会拦截 。通过网络上别人的一些测试和实验发现 , 对 发布的 60 个 理服务器进行探测。其中 , 97%的服务器对 有应答 ,只有 53%的服务器对 有应答。实验发现 对 无应答的主机对任何都无应答。无论服务器有什么样的安全处理规则 , 根据方式 (1)(2), 所以选择 作为探测包。 第 4 页 共 22 页 探测 第一步 : 客户端向服务器的工作端口发送 服务器返回 或 。如果客户端收到 则可以肯定服务器活动和端口开启。收到 , 则说明服务器活动但端口关闭 , 客户端不用执行第二步。如果超时无应答 , 则认为包丢失。 第二步 : 因为不需要建立正常的 接 , 所以对应答 的服务器发送 , 保证服务器端关闭半连接 。因为只有少量报文对端口探测 , 不会引起安全系统的报警。使用 探测 , 可以检测服务器和端口的状态、分组时延、丢包率 , 又可以穿透防火墙 , 符合网络对安全的要求。 组时延 假如用定时器来计算分组往返的时间 , 大量的定时器会造成资源极大消耗。虽然 议规定了时间戳选项 (类型 8), 用该选项中嵌入时间戳 , 服务器返回包的选项部分含有发送的时间戳。然而 , 在具体 P 协议实现中 , 有些P 协议栈会忽略该选项 , 或者选项值置 0, 无法得到往返时间。如果能像 就可以像 各字段不能保证往返数据一致。可以考虑用一种变通的方式嵌入时间戳。对于客户机发送的 文 , 设序号 x, 则服务主机返回报文的确认序号等于 x+1。利用发送序号和确认序号的关系来传递时间戳。设置 的发送序号为时间戳 , 收到的 或 的确认序号减 1 即可得到发送包的时间戳。用收到包的时间减去发送时间戳即得到分组时延。 口扫描实现 方法 本文通过对基于 半打开 的端口扫描技术的实现来介绍了现在一些主流的端口扫描技术,通过对程序的开发加深了对端口扫描技术的认识。经过对端口扫描技术的了解和认识,本文采用隐蔽性较好基于主机的 探技术来实现。 2 需求分析 口扫描器的总体要求 计背景 该端口扫描器是面向普通用户使用,以期成为一个普通用户用来检测端口网络主机端口并有效地保护自己。在采用 探方式进行扫描的基础上成为一个基于 半打开 的实用、简单、方便的端口扫描工具 。 户特点 由于该端口扫描系统是一个基于 半打开 的端口扫描器,其面向的是普通的对于端口扫描有需求的用户,因此需要提供一个简洁、方便、高效的界面和功 第 5 页 共 22 页 能。 件开发及运行环境 系统开发工具 : + 口扫描器的需求分析 端口扫描器的一般需求 : (1)隐蔽性需求 作为扫描的一方来说,端口扫描除了要能扫 出 目标主机的端口信息以外,还需要能有一定的隐蔽性,以最大的可能不在目标主机留下访问信息。如果仍然采用基于 的扫描则将很容易被目标主机记录,因此从隐蔽性上考虑 打开扫描或者 描会是很好的选择。 (2)端口选择需求 当我们在使用扫描软件对目标主机进行扫描的时候,有的时候是有目的性地扫描目标主机的某一个端口,然而在大部分时候却需要扫描批量端口或者是一些重要的指定端口。这个时候需要 端口扫描系统具有自定义端口列表的功能。 (3)扫描结果存储需求 在进行完一次端口扫描之后,需要对结果进行保存。无论是攻击还是检测,端口扫描器是需要与其他的一些工具配合到一起使用的,所以要求端口扫描器一定要具有存储结果的功能,以将扫描得到的目标主机端口信息保存下来。 3 端口扫描器的 实现 能模块简介 所完成的 端口扫描器的界面如图 1 所示,相关功能介绍如下: 图 1 端口扫描器功能界面 目标 围 选择 模块 : 选择起始 结束 确定目标 范围。 第 6 页 共 22 页 端口范围选择 模块 : 自定义起始端口和结束端口以确定扫描范围。 扫描结果存储 模块 : 自定义扫描结果的显示方式,或将扫描结果保存下来。 自定义默认端口列表 模块 : 对默认的重要端口进行添加或删除以更符合扫描需要。 序实现流程 程序实现的流程如图 2 所示: 图 2 程序实现流程图 主函数首先创建一个侦听线程以准备获得返回信息。 然后调用 P 写入 表中, 接着读取要扫描的 端口,判断是否是本地是则调用函数 本地 端口发起连接并 获得扫描结果;如果不是本地 调用 数对远程 送 ,并通过创建的套接字到从系统中返回的 信息 ,分析数据 后得到扫描结果。最后将扫描的结果插入结果树中排序并可保存为文本文件。 测 的实现 定义了一个线程体 用其他的函数来实现端口扫描 。 (1) 是 否 填充本地 表 读取 端口 保存扫描结果 开始 函数 本地 获得扫描结果 结束 获得扫描结果 保存扫描结果 结束 第 7 页 共 22 页 * (; /为 配空间 *( (=0) , /创建一个嗅包的线程,分析接收到 的包。 = 创建侦听线程失败 !); 00); / 程初始化完毕 . ,()*); / 设置显示扫描进度条的大小 / ,接受返回的数据包 * 0; ; k=1; 在对 围是否符合规则进行判断以后,将端口列表中的端口信息循环读入到 ,为即将开始的扫描做准备。 (2)扫描程序在开始的时候 将 的 比 , 判断待扫描的 否是本地 因为在程序中对目标 本地 扫描方式是不一样的, 第 9 页 共 22 页 所以需要在这里作出一个判断。 i=0; ; ; ; = n); /大多数扫描技术要发送原始套接字包来进行探测。因为只有原始套接字支持对 头的设置,即构造 据包。同时,原始套接字也支持发送和接收 据包。这样,原始套接字接口实际上成为网络层向上提供的 接口 。 & /设置 非阻塞 if( /等待错误信息 n); 在 P 中 , 程序使用原始套接字构造和发送 。 P 协议栈中不会记录该连接请求 , 所以对于服务器端返回的 , P 协议栈会自动发送 不用在程序中实 现 测的第二步。 )&; /发送 /在发送完 以后立即关闭 接,因为程序无法直接收到返回的信息,返回的数据是到达系统核心,然后通过嗅探抓包的方式 获得目标主机返回信息。 ; 第 11 页 共 22 页 (4)接着调用 数对本地 行扫描,由于对本地 描的时候不 需要考虑到扫描的安全性,即不用担心扫描的时候被主机 留下扫描记录。另外一方面,对本地主机扫描的时候就不需要从监听的网卡上抓取返回的包 ,直接设置等待连接成功后的信息既方便又快速 。 所以在扫描本地主机的时候不用发送 。 0; 56=0;/设置缓冲变量 *省略部分代码 * =,w; /设置 非阻塞 & if( n); /套接字连接,以对本地 口进行扫描 )&; 在向本地 起建立连接后,设置 , &r, &w, 0, &待接受数据和 同步函数 。 如果连接 不 成功则将返回 错误 信息, 连接成功则将收到的数据插入结果树中。 & (0) /连接成功后返回连接信息 第 12 页 共 22 页 *省略部分代码 * /连接成功则将收到的数据插入结果树中 ; (5)原始套接字包发送完后,就可以接收目标主机的回应。当发送原始套接字包时 (如 据包 ),操作系统核心并不知道,也没有此数据发送或者连接建立的记录。因此,当远端主机回应时,系统核心就把这些包都全部丢掉,从而到达不了应 用程序上。所以,程序中不能简单地使用接收函数来接收这些数据包。要达到接收数据包的目的,必须采用嗅探,接收所有通过的数据包,然后进行筛选,留下符合需要的。为此可以表示接收所有的数据。通过设置原始套接字的 I/0 控制命令,便可以调用 收返回的数据包 , 分析是不是扫描程序返回的 。 /定义套接字 连接应用程序和监听的本地网卡 0; 500; ( *省略部分代码 * = n); 构造 , 最好 选用较大的端口号作为发送端口 , 以免和应用程序正在使用的端口发生冲突。 在这里我们选用的是 8288。 另外在构造 的时候 , 第 13 页 共 22 页 还 添加 了 项 保证 接请求被接受。 288); /设置接收的端口为 8288 /监听所有的本地址 /对 定本机 端口 ,当系统收到目标的返回信息时,便可以通过 到应用程序当中 。 ()&; if(; 程序使用两次判断来过滤 。 首先判断 部 , 要求目的地址是本机、协议号是 议。然后再判断 要求目的端口等于选用端口号 , 控制标志位为 为监听套接字会接收到所有的 , 要保证能尽快处理分组 ,如图 4 所示 。 图 4 返回 的接收及过滤 设置 括延时和数据大小等信息, 以 接收所有的数据包 。在收到返回信息的时候 接受并分析数据包是否为应用程序返回的信息。 ()&; 1; 0; /设置 一个套接口的模式 ,接受所有数据 & 0, & *省略部分代码 * 56=0; /接收数据包 第 14 页 共 22 页 0,(& if( /分析数据包 )这里从接受到的数据中分离出 头 接着又从 头中继续分离出源地址 判断源地址是否在起始 结束 范围内 和是否为远程开放端口返回的数据包。 if( =& = 0 & 0 *省略部分代码 * (6)在扫描完成以后,使用函数 结果插入到 结果树中 在结果树中进行排序, 使得结果按照选择的方式展开或合拢。 = 第 15 页 共 22 页 , 口扫描 功能模块 口 选择模块 选择 从 端口范围或默认端口列表中 获取待扫描的端口 , 首先通过消息传递函数 判断是否得到了 选取 端口范围的消息,如果是,则获取起始端口和结束端口的数据并判断起始端口是否不大于结束端口;如果没有传来消息,则尝试 调用 自定义端口列表树中得到当前所选择 的默认端口 并从端口列表树中继续获得下一个 端口 。 ; 这里通过 得选取端口范围的消息, 然后就判断端口范围是否符合规则,即起始端口不应该大于结束端口。 起始端口 不应该大于 结束端口 !); ) 址 不能为空 !); *省略部分代码 * 址 不能为空 !); 最后 使用 环来 判 断 于 回提示信息 起始 须 以使界面上的按钮有效 ,可以重新开始扫描。 描结果存储模块 通过使用 数 ,在得到 保存结果的消息后首先判断结果地址树是否为空,如果有扫描结果 则创建一个标准文件对话 框 以准备存储扫描结果 。 在 创建成功 以后将扫描结果列表树上的数据 写入到文本框中以存储本次扫描的结果。 如果程序仍然处于扫描状态中,将不能保存结果。通过全局变量判断程序是否处于扫描状态, 如果没有则创建一个命为“ 文本文件来保存扫描结果。 := 失败 , 还在扫描,请等待停止后再保存 !); 0; pR+4,0,4); ; /创建标准文件对话框 ,用 来显示创建的对话框 当打开文件的时候属性设置为写入, 并将得到的扫描结果保存到创建的文本文件当中。 w); = 第 18 页 共 22 页 写入失败 !); 描结果如下
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
2:不支持迅雷下载,请使用浏览器下载
3:不支持QQ浏览器下载,请用其他浏览器
4:下载后的文档和图纸-无水印
5:文档经过压缩,下载后原文更清晰
|