安阳师范学院安阳师范学院本科学生毕业论文简单的端口扫描器实现作者李港系(院)人文管理学院专业计算机科学与技术年级2013级专升本学号13495100001指导教师宋老师论文成绩日期2015年5月安阳师范学院诚信承诺书郑重承诺:所呈交的论文是作者个人在导师指导下进行的研究工作及取得的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。与作者一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。作者签名:日期:导师签名:日期:院长签名:日期:论文使用授权说明本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。保密论文在解密后遵守此规定。作者签名:导师签名:日期:安阳师范学院第1页目录1引言......................................................................22端口扫描概述..............................................................23端口扫描相关知识..........................................................23.1端口的基本概念......................................................23.2常见端口介绍........................................................33.3端口扫描器功能简介..................................................33.4常用端口扫描技术....................................................33.4.1TCPconnect()扫描.............................................33.4.2TCPSYN扫描...................................................43.4.3TCPFIN扫描...................................................43.4.4IP段扫描......................................................43.4.5TCP反向ident扫描.............................................43.4.6FTP返回攻击...................................................44实验流程和运行流程........................................................44.1实现流程............................................................44.2程序中主要的函数....................................................74.3主流程图............................................................85总结.....................................................................105.1提出问题...........................................................105.2解决问题...........................................................105.3心得体会...........................................................106致谢.....................................................................11参考文献...................................................................11安阳师范学院第2页简单的端口扫描器实现李涛(安阳师范学院人文管理学院,河南安阳455002)摘要:本设计通过端口扫描器的研究来提高对计算机安全的认识。利用TCPconnect扫描原理,扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机该端口有回复,则说明该端口开放。利用多线程技术实现了对一目标IP进行设定数目的端口扫描,计算机端口扫描技术就是这种主动防御策略实现的重要技术手段。该端口扫描器采用c++语言开发,在VC6.0编译环境下通过测试。关键词:端口扫描器;IP段扫描;信息安全1引言扫描器是网络信息收集的一种方法之一,从功能上可化分为漏洞扫描器和端口扫描器。理解客户机-服务器与端口扫描之间的工作原理,完成对目标主机端口扫描功能的实现,即发现目标主机开启的端口信息。可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。2端口扫描概述对于毕业设计建设,首先应考虑选择一个实验平台,考虑到windows操作系统在pc机上的垄断地位,再加上microsoft提供的办公软件、数据软件的通用性,使得现有的信息系统大都建立在windows操作系统基础上,而且,现有的信息安全攻击操作系统或漏洞威胁,大多数是针对windows操作系统[1],因此,我们选择windows系统作为实现平台。本毕业论文的目标是设计并实现一个简单的端口扫描器,它通过与目标主机TCP/IP端口建立连接并请求某些服务,记录目标主机的应答,分析目标主机相关信息,从而发现目标主机某些内在的安全弱点。扫描器通常分两类:漏洞扫描器和端口扫描器。端口扫描器用来扫描目标机开放的服务端口以及端口相关信息[2],漏洞扫描器检查目标中可能包含的大量已知的漏洞,如果发现潜在的漏洞可能性,就报告给扫描者。网络漏洞端口扫描器对目标系统进行检测时,首先探测目标系统的存活主机,对存活主机进行端口扫描,确定系统开放的端口,然后扫描器对开放的端口进行网络服务类型的识别,确定其提供的网络服务。漏洞扫描器根据目标系统的操作系统平台和提供的网络服务,调用漏洞资料库中已知的各种漏洞进行逐一检测,通过对探测响应数据包的分析判断是否存在漏洞。在分析总结目前现有的扫描软件,掌握扫描器的原理基础上,首先设计、实现一种端口扫描程序,存储扫描结果。3端口扫描相关知识3.1端口的基本概念我们这里所说的端口,不是计算机硬件的i/o端口,而是软件形式上的概念。服务器可以向外提供多种服务,比如,一台服务器可以同时是web服务器,也可以是ftp服务器,同时,它也可以是邮件服务器。为什么一台服务器可以同时提供那么多的服务呢?其中一安阳师范学院第3页个很主要的方面,就是各种服务采用不同的端口分别提供不同的服务。根据提供服务类型的不同,端口分为两种,一种是tcp端口,一种是udp端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用tcp协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用udp协议。对应这两种协议服务提供的端口,也就分为tcp端口和udp端口。那么,如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了那些服务。计算机信息网络的发展加速了信息化时代的进程,但是随着社会网络化程度的增加,对计算机网络的依赖也越来越大,网络安全问题也日益明显[3],端口扫描技术是发现安全问题的重要手段之一。一个端口就是一个潜在的通信通道,也就是一个入侵通道。网络安全从其本质来讲就是网络上信息安全[4],它涉及的领域相当广泛,这是因为目前的公用通信网络中存在着各式各样的安全漏洞和威胁。对目标计算机进行端口扫描,能得到许多有用的信息。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息,从而发现目标机的某些内在的弱点。3.2常见端口介绍端口是一个16bit的地址,用端口号进行标识不同作用的端口。端口一般分为两类。熟知端口号:范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP服务,就是所说的邮件服务。80端口分配给HTTP服务,135端口分配给RPC服务等等。动态端口号:动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如8080端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。3.3端口扫描器功能简介端口分为源端口和目的端口,源端口是本机打开的,目的端口是在和本机通信的另一台计算机的端口。端口是由计算机的通信协议TCP/IP协议定义的。其中规定,用IP地址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用IP端口来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向A端口就可以实现通信了。可见,端口与进程是一一对应的,如果某个进程正在等待连接,称之为该进程正在监听,那么就会出现与它相对应的端口。由此可见,通过扫描端口,便可以判断出目标计算机有哪些通信进程正在等待连接。服务器上所开放的端口就是潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描[5],能得到许多有用的信息,进行端口扫描的方法很多,可以是手工进行扫描、也可以用端口扫描软件进行。扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法可以搜集到很多关于目标主机的各种有用的信息,例如远程系统是否支持匿名登陆、是否存在可写的FTP目录、是否开放TELNET服务和HTTPD服务等。3.4常用端口扫描技术3.4.1TCPconnect()扫描这是最基本的TCP扫描,操作系统提供的connect()系统调用可以用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,安阳师范学院第4页这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。优点:稳定可靠,不需要特殊的权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度快。如果对每个目标端口以线性的方式,使用单独的connects调用,那么将花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。缺点是扫描方式不隐蔽。3.4.2TCPSYN扫描TCPSYN扫描是使用最为广泛的扫描方式,其原理就是向待扫描端口发送SYN数据包,如果能够收到SYN+ACK数据包,则代表此端口开放,如收到RST数据包,则证明此端口关闭,如未收到任何数据包,且确定该主机存在,则证明该端口被防火墙等安全设备过滤。由于SY