1、网络端口扫描技术原理分析与实现作 者:李利均摘要随着计算机在现代社会的广泛应用,计算机网络在人们工作和生活的各个领域占有越来越重要的地位。由于网络规模的迅速扩张和计算机系统的日益复杂,新的系统漏洞层出不穷。如何保证网络的安全运行已经成为一个亟待解决的问题。网络扫描技术是当前网络安全评估的重要组成部分,通过对网络的扫描,能够及时了解网络的运行状况及其存在的弱点,从而帮助网络管理员充分的了解网络的实际情况,并制定合适的安全策略,最终达到改善网络状况,增强网络安全系数的目的。同时,网络扫描技术也常为入侵者所利用,通过扫描远程主机或网络,能够探测攻击目标的软硬件配置信息,为制订攻击策略做准备。本文详细
2、研究了计算机端口扫描技术的优缺点,并采用多线程技术结合TCP全连接扫描实现了基于C语言和Windows Socket编程的网络端口扫描程序。程序模拟入侵者对目标主机的多线程入侵扫描,快速、及时、准确地检测出目标主机的端口状态,为网络系统管理员评测系统安全性提供数据支持。关键词:多线程;TCP全连接;同步;Winsock;TCP/IPAbstractWith the wide range of applications of the computer in modern society, the computer network plays a more and more important r
3、ole in peoples working and living. Due to the rapid expansion of the network size and the increasing complexity of the computer systems, an endless stream of new vulnerabilities will be found. How to ensure the safe operation of the network has become an issue. Network scanning technology is an impo
4、rtant component of the current network security assessment. By scanning the network to keep abreast of the operation of the network and its weaknesses, thereby helping network administrators to fully understand the actual situation of the network and to develop appropriate security policy, and ultim
5、ately achieve the purpose of improving the network conditions, and enhancing the network security coefficient. At the same time, network scanning technology is also often used by intruders. By scanning the remote host or network, intruders can detect the hardware and software configuration informati
6、on of the target. Thereby formulate the strategies to prepare attack.In this paper, I give a detailed study of the advantages and disadvantages of computer port scanning technology, and use the multi-threading technology and TCP connect scanning technology to achieve a network port scanner which is
7、based on the C programming language and Windows Socket. The procedure simulate the invaders on the target hosts invasion of multi-threaded scanning, rapidly, timely and accurately detect the computer port status of the target host in order to provide data to the network system administrator to evalu
8、ate the security coefficient of system.Key words: multi-threaded; TCP connect; synchronization; Winsock; TCP / IPI第1章 绪论11.1网络安全背景11.1.1网络安全问题来源11.1.2端口扫描技术对于网络攻击的作用21.1.3网络端口扫描对策31.2国内外相关领域的发展动态31.3论文的主要工作以及组织安排51.3.1论文的主要工作51.3.2论文的结构安排5第2章 论文涉及的相关技术的分析62.1 TCP/IP协议62.1.1 TCP/IP协议分层62.1.2 TCP协议与TC
9、P连接的建立82.2 windows socket简介102.2.1 基本概念102.2.2 Winsock的编程特点112.2.3 Winsock 2.0常用的函数12第3章 当前端口扫描技术分析133.1端口扫描原理133.1.1端口简介133.1.2端口扫描原理143.2 常见端口扫描技术153.2.1 TCP connect 扫描153.2.2 TCP SYN 扫描153.2.3 秘密扫描153.2.4其它扫描技术173.3端口扫描技术小结与多线程技术的引入183.3.1常用端口扫描技术优缺点的比较183.3.2多线程技术简介193.2.3 线程的同步19第4章 多线程TCP全连接扫描
10、的实现224.1程序功能简介224.2端口扫描线程的同步244.3程序设计流程分析25第5章 设计总结28参考文献29翻译原文资料30译文37致谢43第1章 绪论1.1网络安全背景随着信息化进程的深入和网络的迅速发展,个人乃至社会对计算机网络的依赖达到了空前的程度。计算机网络的普及在带给人们以全新的生活、工作方式的同时,其开放性和自由性使得存储于网络之中的私密信息有被窃取、篡改的可能。计算机网络的脆弱性也使得其成为许多别有用心者的攻击目标。因此,网络安全已经成为影响个人隐私、财产的安全、国家安全、社会稳定的重大问题。在利用互联网的过程中,无论是在论坛上发贴,还是收发电子邮件都避免不了要进行注册
11、。现在许多校友录、同学录类型的网站都要求实名制注册,这在约束注册者的网络行为的同时,也带来了信息泄露的潜在风险。发生于2006年的“铜须门”事件,使得“人肉搜索”于公民的个人隐私权的矛盾浮出水面。频繁的网络游戏盗号事件令游戏运营商和网络游戏玩家们苦恼不已。据有关资料显示,黑客经济的年产值已经超过了2.38亿元人民币,造成的损失则超过76亿元。有的“盗号组织”甚至形成了以“制造病毒传播病毒盗窃账户信息第三方平台销赃洗钱”为环节的一条完整黑色产业链。2008年的“熊猫烧香”事件在带给网民以惨重的经济损失的同时也使人们认识到网络安全的重要性。互联网的隐蔽与便利使境内外各种敌对组织和敌对分子开始利用这
12、一工具向我国进行反动渗透。他们利用各种论坛发布歪理谣言,煽动民族矛盾;通过电子邮件进行秘密联络;招募有计算机特长的人员进行非法入侵,窃取情报,破坏系统。而网络设备相对于常规武器更加廉价,更加容易获取,这使得恐怖组织越来越重视这种不对称武器的利用。综上所述,计算机网络信息安全对于国家安全、社会稳定的重要性是不容置疑的。在未来的国防领域,网络信息战必将扮演重要角色。提高网络信息安全水平,培养大量的信息安全技术人才是在未来的信息战中取得不对称优势的关键所在。1.1.1网络安全问题来源计算机网络的安全问题来源于多个方面,在计算机发展历史的早期,人们更加关注的是功能的全面和便捷,而安全并不是首要考虑的问
13、题。随着互联网络的普及,计算机早已不再是科学家、学者们的专利,互联网的大规模应用使得大量的安全隐患逐渐暴露出来。网络安全的脆弱性主要源于:(1)Internet所用底层TCP/IP网络协议存在安全隐患,该协议本身的安全问题极大地影响到上层应用的安全。 (2)应用软件的安全漏洞(如存在溢出漏洞)成为系统安全的短板。据X-Force2008年中IT安全趋势统计报告显示,在2008年的前六个月,大约78%针对浏览器的攻击目标是浏览器插件。(3)搜索引擎的强大功能使很多网络用户可以轻易、快速地获得攻击网络的方法和手段。 据X-Force2008年中IT安全趋势统计报告显示,94%针对浏览器的攻击发生在
14、漏洞公布的24小时内。人们在这段时间内无法获取官方的补丁,绝大多数用户甚至不知道自己的系统出于危险之中。(4)网络安全法规的缺失使犯罪者有机可乘。由于我国的网络安全法规尚不完善,缺乏可操作性,而且许多受害者出于各种考虑并未报案,这使一部分犯罪者有侥幸心理从而助长了犯罪。网络的攻击与防御是永恒的猫鼠游戏,攻击与防御的技术都在不断的对抗中得以升华。随着网络规模的快速扩张、网络应用逐渐渗透到个人生活、社会活动以及国家安全的各个领域。出于各种目的,对网络系统进行侦查、渗透、破坏的活动将呈现出迅速增长的趋势。提早采取措施,提高信息安全技术水平,是在下一轮网络攻击时减少损失的最佳策略。1.1.2端口扫描技
15、术对于网络攻击的作用入侵者在入侵计算机系统的过程中大致会经历以下的步骤:1.搜集目标信息(利用各种扫描器如流光,NMAP,ISS,SATAN等).2.查找系统已知漏洞,构造攻击方案(通过安全邮件列表、讨论组的消息等发布)。3获得普通用户权限(利用口令破解,嗅探,伪装)。4.提升权限,获得超级用户权限(缓冲区溢出,符号连接,root的木马)。5.清除入侵痕迹(删除系统日志中关于入侵者的信息,如:入侵者在破解密码时反复的尝试,会在日志中留下大量的连接失败的信息)。6.设置后门,为下一次进入系统提供方便。7.作为跳板攻击另一目标。收集目标站点的各种信息是一次成功的网络攻击的前奏。入侵者会通过各种途径
16、获取系统的相关配置信息,如目标系统的软硬件平台类型,提供的服务与应用及其安全性的强弱,目标系统的安全策略等等。攻击者通过手工探测和扫描软件对目标进行彻底分析,尽可能收集目标系统的相关信息,最后分析得到目标系统可能存在的可利用的漏洞。这些分析结果包括:操作系统类型,操作系统的版本,运行的应用服务,应用服务的版本,网络拓扑结构以及网络设备类型。这些信息对于入侵者制定下一步攻击策略是至关重要的。1.1.3网络端口扫描对策网络端口扫描一方面可供管理员了解网络安全状况、发现安全漏洞。另一方面,也是入侵者进行攻击的前奏。入侵者常常利用网络扫描来探测目标主机的软硬件配置信息,结合已知的漏洞,确定攻击策略。因
17、此,对于远程非法扫描,应该能及早发现、及时阻断。这对于保护系统关键信息免于泄露,预防网络攻击有重大意义。 (1)在配置主机系统时,除了必须提供的服务端口外,关闭所有网络服务端口.例如,对于一台HTTP服务器,只需要对外开放80端口.其他的像FTP、TELNET等网络服务均可以全部关闭。有的主机甚至关闭了ICMP协议的回复报文,造成直接ping该主机时不通。这样,可以在一定程度上避免主机被攻击者发现。(2)对于一些不需要为公众所周知的网络服务,可以更改默认端口。例如,某些只为特定的用户提供的服务,服务端口可以不用默认端口。这样普通用户就无法使用该网络服务。同样,攻击者也无法通过一般途径来攻击这些
18、网络服务。扫描的目的是为了获取信息,所以, 针对端口扫描的防御方法就是加强信息隐蔽,杜绝不必要信息的外泄。(3)在防火墙或路由器上采用更严格的过滤规则,阻止大部分扫描数据报文进人系统。例如,WINDOWS自带的防火墙通过设置就可以禁止了ICMP协议的回复报文,这样,直接ping该主机时不通。这可以躲过一些通过ICMP协议的回复报文来判断主机是否存活的主机扫描系统的检测。(4)利用端口检测技术对外来的数据包进行审核。在捕获一个外部数据包后,记录、分析它的源地址、目的地址及目的端口。对访问同一主机的多个端口或多个目标主机的活动将被判定为非法扫描。在检测到非法的网络扫描之后,可以采取一定的措施,如拒
19、绝该地址的访问,甚至在必要时可以对入侵者实施反向追踪。1.2国内外相关领域的发展动态网络端口扫描是网络扫描的组成部分。网络扫描主要包括端口扫描和主机信息探测两部分:端口扫描是通过向远程或本地主机发送探测数据包,获取主机的响应,并根据反馈的数据包,进行解包和分析,从而获取主机的端口开放情况;主机信息探测主要包括基本信息探测和操作系统探测,基本信息探测是针对主机上的服务软件的类型进行探测,操作系统探测是通过向远程或本地主机发送封装的特定的数据包,运行不同类型以及不同版本号操作系统的主机将有不同的反馈数据包返回,建立相应的决策树,可以判定目标的操作系统类型和版本号。在实际应用中,网络扫描主要用来搜集
20、网络信息,能够帮助我们发现目标主机的弱点和漏洞,并能根据扫描结果,改进网络安全,防范入侵者的攻击。进行网络扫描的工具被称为网络扫描器。一个完备的网络扫描器通常具备以下功能:(1)发现活动主机(或网络);(2)对于活动主机,能够发现其开放的端口及提供的服务;(3)对于活动主机,能够较为准确地探测到该机器上运行的操作系统类型和版本号以及服务软件的特征;(4)通过对系统和服务的测试,能够发现系统存在的安全漏洞。网络扫描器一直是网络安全的研究热点,国内外的一些网络安全研究人员已经在这个领域取得了一定的研究成果。随着端口扫描技术的快速发展,不断有新的扫描技术和扫描工具出现,扫描工具已经成为维护网络安全的
21、重要工具。常用的扫描工具有很多,许多以自由软件的形式存在,用户可以从INTERNET上自由获取。许多优秀的扫描软件以自由软件的形式发布。国外较著名的有Nmap, Jakal, Strobe等扫描软件,国内也有X-scan,流光等。这些扫描器一般都能综合运用各种扫描方式对主机端口开放情况、提供服务情以及操作系统类型和版本号进行探测,甚至可以对一些开放的端口进行密码猜测并尝试登录。Nmap(Network Mapper )是一种网络探测安全审计工具,遵循GNU通用公共许可证GPL (GeneralPublicLicense),可从 www.insecure.org/nmap站点上免费下载。它既可以
22、对大型网络进行快速扫描也可以针对单台主机进行扫描。通过使用TCP协议栈指纹,可以准确地判断出目标主机的操作系统类型,而且其能够在大多数操作系统上运行。通过使用Nmap,安全管理员可以发现自己网站的漏洞,并逐步完善自己的系统。X-scan是一种由国内网络安全人士创作的优秀扫描工具。它采用多线程方式对指定IP地址段(或单机)进行安全检测,提供了图形界面和命令两种操作方式,扫描包括远程操作系统类型及版本,标准端口状态及主机状态、主机漏洞等在内各种信息,还提出了一些相应的描述、利用程序和解决方案。 1.3论文的主要工作以及组织安排1.3.1论文的主要工作随着计算机网络技术的迅猛发展,人们在工作生活中对
23、网络的依赖度越来越高。网络安全的重要性日渐凸显。端口扫描技术是网络攻防的一种重要技术,它可以及时发现网络存在的问题。在目前的端口扫描技术中,存在着不同的方式,而各种方式的效率和侧重点各有不同。本论文结合目前网络安全的现状,对端口扫描技术进行了系统学习和研究。最后,在现有TCP全连接扫描技术的基础上,结合多线程技术实现了基于多线程的TCP全连接扫描,极大地提高了端口扫描的效率。1.3.2论文的结构安排第1章绪论 介绍了网络安全的背景,端口扫描技术在网络攻击中的作用,并对现有的端口扫描程序进行了介绍。第2章介绍了本文涉及的相关理论背景,包括TCP/IP协议模型和Winsock编程的特点。第3章阐述
24、了网络端口扫描的相关概念和理论,主要介绍了端口扫描的原理,并对现有的端口扫描技术的优缺点进行了分析与比较。在此基础上,引入了多线程技术,并阐明了实现多线程TCP扫描的意义。第4章对多线程TCP扫描的过程进行了具体实现。并给出了程序涉及的相关理论,如:TCP连接、扫描线程同步方法的阐述;程序的流程介绍等。第5章对该程序的不足进行总结,提出新的展望和工作。最后进行全文的总结。第2章 论文涉及的相关技术的分析2.1 TCP/IP协议TCP/IP(Transmission Control Protocol/Internet Protocol) 协议由底层的IP协议和TCP协议组成,是当今网络的基本组成
25、协议。在网络中,运行着各种型号的计算机,不同的计算机上,可能运行着不同的操作系统;同时,各种不同的局域网中也存在不同的网络结构和传输规则。要使处于不同的网络结构和传输规则的网络中并且有着不同的操作系统的主机之间互相通信,就必须有一个相关的协议,形成一个统一的标准。TCP/IP协议就是这样的协议。TCP/IP协议模型有别于OSI的七层参考模型。传统的开放式系统互连参考模型(OSI/RS),是一种通信协议的7层抽象的参考模型。 这7层是:物理层、数据链路层、网路层、传输层、会话层、表示层和应用层。其中每一层执行某一特定任务。而TCP/IP通讯协议采用了4层结构,每一层都利用它的下一层所提供的接口来
26、完成自己的需求。2.1.1 TCP/IP协议分层网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。计算机网络协议采用层次结构有以下好处:1. 各层之间是互相独立的。2. 灵活性好。3. 由于结构上分割开,各层可以采用各自最合适的技术来实现。 4. 易于实现和维护。5. 能促使标准化工作。图2-1和图2-2为TCP/IP协议族的四个层次,以及各层上的协议类型。应用层(Telnet, FTP和SMTP)传输层(TCP和UDP)网络层(IP,ICMP和IGMP)链路层(设备驱动程序及接口)图2-1 TCP/IP协议族的四个层次ApplicationApplicationApplicati
27、onTCPUDPICMPIGMPIPARP硬件接口RARP物理媒介应用层传输层网路层 链路层图2-2 TCP/IP协议族中不同层次的协议( 1 )链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。( 2 )网络层:有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IF协议(网际协议),ICMP协议(Internet控制报文协议),以及IGMP协议(Internet组管理协议)。( 3 )传输层:主要为两台主机上的应用程序提供端到端的通信。在
28、TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途。( 4 )应用层负责处理特定的应用程序细节。
29、几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:Telnet远程登录。FTP文件传输协议。SMTP简单邮件传送协议。SNMP简单网络管理协议。2.1.2 TCP协议与TCP连接的建立计算机需要安装TCP协议来提供可靠的、面向连接的通信服务。TCP协议被称作一种端对端协议。每一条 TCP 连接有两个端点。TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)。端口号拼接到(concatenated with) IP 地址即构成了套接字。当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连
30、接、发送和接收数据以及终止连接。TCP协议利用超时重传技术和拥塞控制机制,向应用程序提供可靠的通信连接。TCP数据包包括一个TCP首部和数据部分,TCP数据报首部格式如图2-3所示。源端口目的端口序号确认号4位数据偏移6位保留URG ACK PSHRST SYN FIN窗口校验和紧急指针选项(长度可变)填充图2-3 TCP数据报首部格式一个TCP头包含6个标志位,它们的意义分别为:SYN:让连接双方同步序列号。FIN:FIN=1时,表示发送端己经没有数据要求传输了,希望释放连接。RST:用来复位一个连接。URG:为紧急数据标志。ACK:为确认标志位。PSH:如果置位,接收方应尽快把数据传送给应
31、用进程。TCP是一个面向连接的可靠传输协议,面向连接表示两个应用端在利用TCP传送数据前必须先建立TCP连接。连接建立的过程(通常称作三次握手)可用图2-4来表示。主机1 主机2SYN SYN/ACKACK图2-4 TCP连接过程2.2 windows socket简介2.2.1 基本概念TCP/IP网络通信协议是Internet的基础协议。Internet是在UNIX上发展起来的,在UNIX上有很多成熟的编程接口,其中最通用的就是Socket接口。在20世纪80年代初,美国政府的高级研究工程机构为加州大学Berkeley分校提供资金,委托其在UNIX操作系统下实现通信协议TCP/IP的开发接
32、口。他们的工作成果就是Socket,一般将其称为“套接字”。为了适应Windows下的TCP/IP通信组件的开发,人们开发了一套类似于UNIX下Socket的编程接口,称为Windows Socket或称Winsock。目前,Winsock己经正式被集成到了Windows系统中,同时包括了16位和32位接口。而Winsock的开发工具也可以在Borland C+, Visual C+这些C编译器中找到,主要由Winsock.h头文件和动态链接库winsock.dll组成,目前最新的版本是Winsock 2.2.利用Socket进行通信,有两种主要方式:第一种是面向连接的流方式。顾名思义,在这种
33、方式下,两个通信的应用程序之间先建立一种连接链路。一台计算机要想和另一台计算机进行数据传输,必须首先获得一条链路,数据才能被正确接收和发送。这种方式大多采用TCP协议。第二种叫做无连接的数据报文方式,这时两台计算机好像把数据放在信封里,通过网络寄给对方,信在传送的过程中有可能会残缺不全,而且后发出的信也可能先收到,它对应的是UDP协议。流方式的特点是通信可靠,对数据有校验和重发机制,通常用来做数据文件传输如FTP, Telnet等;数据报文方式由于取消了重发校验机制,能够达到较高的通信速率,可以用于对数据可靠性要求不高的通信,如实时语音、语音传送和广播消息等。Windows Socket规范提
34、供给应用程序开发者一套简单的API.让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows Socket也定义了一个二进制接口(ABI),以此来保证应用Windows Socket API的应用程序能够在任何网络软件供应商的符合Windows Socket协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套Windows Socket规范的网络软件,我们称之为Windows Socket兼容的。一个网络软件供应商必须百分之百地实现Windows Socket规范才能做到与Windows So
35、cket兼容。任何能够与Windows Socket兼容实现协同工作的应用程序就被认为是具有Windows Socket接口。我们称这种应用程序为Windows Socket应用程序。Windows Socket规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows Socket实现都支持流套接字和数据报套接字。应用程序调用Windows Socket的API实现相互之间的通讯。Windows Socket又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图2-5所示。应用程序1应用程序2
36、网络编程界面,如Windows Socket网络通讯协议服务界面,如TCP/IP协议操作系统,如windows物理通讯介质图2-5应用程序与windows socket的关系2.2.2 Winsock的编程特点在网络通信中,由于网络拥挤或一次发送的数据量过大等原因,经常会发生交换的数据在短时间内不能传送完,收发数据的函数因此不能及时返回的现象,这种现象叫阻塞。Winsock对有可能阻塞的函数提供了两种处理方式阻塞和非阻塞方式。在阻塞方式下,收发数据的函数在被调用后一直要到传送完毕或者出错才能返回;当网络操作传送完成后,由Winsock给应用程序发送一个信息,通知操作完成,此时可以根据发送的消息
37、传出的参数判断操作是否正常。比如你调用send函数发送一定的数据,在系统内部send做的工作其实只是把数据传输到TCP/IP协议栈的输出缓冲区。它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你传过来的数据的话,对于阻塞模式的socket send函数将不返回,直到系统缓冲区有足够的空间把你要发送的数据Copy过去以后才返回。在非阻塞方式下,如果不能立刻得到结果,该函数不会阻塞当前线程,而会立刻返回。例如,在上面提到的例子里,send会立即返回错误代码:WSAEWOULDDBLOCK。我们应尽量使用非阻塞方式,因为在阻塞方式下,用户可能会因为长时间的
38、等待而失去耐心而关闭应用程序的主窗口,这样进行网络操作的函数从Winsock的动态链接库中返回时,主程序己经中内存中删除,可能会造成内存的异常。2.2.3 Winsock 2.0常用的函数Winsock在常见的Windows平台上有两个主要的版本,即Winsock1和Winsock2。从Windows 95、WinNT4开始,系统就内置了Winsock1.1,后来到了Windows98之后,它内置的Winsock DLL更新为Winsock2.2。Winsock2.2对Socket进行了很多扩充与改进,包括名字解析、异步处理等。本文在最后调用Winsock 2.2实现了一个多线程TCP全连接扫
39、描程序。Winsock2向下兼容以前的版本Winsock1,这使得以前的程序在Winsock2情况下能够继续使用,提高了程序的重复使用效率。Windows Socket以DLL形式提供,为了完成一系列初始化操作,每一个使用Windows Socket的应用程序都必须利用WSAStartup( )函数载入Winsock DLL,如果载入失败,WSAStartup( )将返回SOCKET_ERROR,这个错误就是WSANOTINITIALISED。每一个使用Windows Socket的应用程序都必须进行WSAStartup( )函数调用,并只有在成功地完成调用之后才能使用Socket。另外,还有
40、一个函数叫WSACleanup( ),在程序结束时,调用了多少次WSAStartup( ),就应相应的调用多少次的WSACleanup( ),以保证Winsock DLL从内存中被卸载。创建一个Socket的函数原型为SOCKET socket( int af, int type, int protocol ),而bind( )则创建Socket指定的通信对象。在通信结束时,通过closesocket( )关闭socket。第3章 当前端口扫描技术分析3.1端口扫描原理3.1.1端口简介在由TCP/IP协议实现的互联网络中,两台主机间通信可以通过IP地址来相互识别。但是,现在的计算机系统是多任
41、务(进程)的,而真正在通信的实际上是存在于两台主机上的两个进程。这就需要一个标识来区分收发数据的进程。端口机制的引入就解决了不同主机的进程间的相互识别。端口按端口号可分为3大类:1.熟知端口(well-know port):从0到1023,由IANA(Internet Assigned Numbers Authority,因特网赋号管理局)分配。它们紧密绑定(binding)于一些服务。例如:80端口实际上总是HTTP通讯。这些端口绑定的服务往往是约定俗成的,而且通常是一些系统进程。所以,一旦入侵者利用了这些端口,就可能逐步获得最高权限,从而控制整个系统。需要注意的是,TCP/IP传输层的TC
42、P和UDP两个协议是两个完全独立的软件模块,因此它们的端口地址空间是独立的,两者并不冲突。2.登记端口(Registered Ports):从1024到49151。这些端口并非固定的捆绑于某一服务,而是松散地绑定于一些服务。即操作系统将这些端口动态的分配给各个进程,同一进程两次分配有可能分配到不同的端口。程序也可以不使用系统分配的动态端口,而使用自己制定的端口,如:QQ客户端的4000端口,木马冰河的7626 端口等都是固定而出名的。3.动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1
43、024起分配动态端口。但是,有的程序会利用这些很少被使用的高地址端口如:如木马网络公牛使用的234444端口,而木马BO2000使用的则是54320端口。根据提供服务类型的不同,端口可分为两种,一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式: 面向连接服务和无连接服务。面向连接服务要经过三个阶段:数据传输前先建立连接,连接建立后再传输数据,数据传送完后释放连接。面向连接服务,可确保数据传送的次序和传输的可靠性。这种方式大多采用TCP协议。另外一种是无连接服务,它只有传输数据阶段,消除了除数据通信外的其它开销。只要发送实体是活跃的,无须接收实体也是活跃的。它的优点是灵
44、活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。这种无应答的方式大多采用UDP协议(如QQ)。在TCPIP协议中,端口是传输层的内容,是面向连接的。表3-1和表3-2分别给出了常见的TCP和UDP端口。表3-1常见TCP 端口服务端口解释HTTP80超文本传输协议,提供网页(WEB)服务FTP21文件传输协议SMTP25简单邮件传输协议POP3110邮件接收协议TELNET23远程登录协议表3-2 常见UDP端口服务端口解释DNS53域名解析服务OICQ8000/4000服务器使用8000端口OICQ软件使用4000端口3.1.2端口扫描原理一个端口就是
45、一个潜在的通信通道,而对于入侵者则是一个入侵通道。端口扫描通过尝试与目标主机某些端口建立连接,如果目标主机该端口有回复则说明该端口开放,即为“活动端口”。再根据“活动端口”绑定的服务,通过测试这些服务,发现漏洞。通过端口扫描,可以搜集到关于目标主机的各种有用的信息,从而制定入侵策略。3.2 常见端口扫描技术3.2.1 TCP connect 扫描这是最基本的扫描,利用操作系统提供的connect( )系统调用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect( )就能成功。否则,这个端口就是不开放的,即没有提供服务。优点:稳定可靠,不需要特殊的权限。系统中的任
46、何用户都有权利使用这个调用。另一个好处就是速度快。如果对每个目标端口以线性的方式,使用单独的connect( )调用,那么将会花费相当长的时间.但是,通过采用多线程技术同时打开多个套接字,结合使用非阻塞I/O允许设置一个低的时间用尽周期,以观察多个套接字,可以进一步加速扫描。缺点:扫描方式不隐蔽,服务器日志会记录下大量密集的连接和错误记录,并容易被防火墙发现和屏蔽。目标计算机的日志文件会显示一连串的连接和连接出错的服务消息,并且能很快的使它关闭。3.2.2 TCP SYN 扫描TCP通信双方是使用3次握手来建立TCP连接。申请建立连接的客户端需要发送一个SYN数据报文给服务端,服务端则会回复A
47、CK数据报文。TCP SYN扫描(半开放扫描)就是利用3次握手的弱点来实现的。通过向远程主机的端口发送一个请求连接的SYN数据报文,如果没有收到目标主机的SYN/ACK确认报文,而是RST数据报文,就说明远程主机的这个端口没有打开。而如果收到远程主机的SYN/ACK应答,则说明远程主机端口开放。在收到远程主机SYN/ACK后,不再做ACK应答,这样3次握手并没有完成,正常的TCP连接无法建立,因此这个扫描信息不会被记入系统日志,不会在目标主机的日志上留下记录。优点:隐蔽性好,没有建立完整的TCP连接,不会在目标主机的日志上留下记录。缺点:但是要创建SYN数据报文需要root权限。3.2.3 秘密扫描端口扫描容易被在端口处监听的服务记录到日记中,这些服务监听到一个没有任何数据的连接,就记录一个错误。半开放扫描现在已经不是一种秘密,很多防火墙和路由器都有了相应的措施.这些防火墙和路由器会对一些指定的端口进行监视,将对这些端口的连接请求全部进行记录。秘密扫描能躲避IDS、防火墙、包过滤器和日志的审计,从而获取目标端口的开放或关闭的信息。由于没有TCP三次握手的任何部分所以无法被记录下来,比半连接
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100