实验三 网络安全编程实验

上传人:ldj****22 文档编号:40466364 上传时间:2018-05-26 格式:DOC 页数:5 大小:80.50KB
返回 下载 相关 举报
实验三 网络安全编程实验_第1页
第1页 / 共5页
实验三 网络安全编程实验_第2页
第2页 / 共5页
实验三 网络安全编程实验_第3页
第3页 / 共5页
实验三 网络安全编程实验_第4页
第4页 / 共5页
实验三 网络安全编程实验_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验三 网络安全编程实验》由会员分享,可在线阅读,更多相关《实验三 网络安全编程实验(5页珍藏版)》请在金锄头文库上搜索。

1、实验三实验三 网络安全编程实验网络安全编程实验2.1 实验目的实验目的1、进一步理解网络安全基本原理;2、熟悉网络安全软件开发的步骤、方法;3、掌握端口扫描技术原理及方法;4、熟悉网络编程方法。2.2 实验学时实验学时2 学时。2.3 实验性质实验性质设计性实验。2.4 实验原理实验原理一个开放的网络端口就是一条与计算机进行通信的信道,对网络端口的扫描可以得到目标计算机开放的服务程序、运行的系统版本等重要信息,从而为下一步入侵做好准备。对网络端口的扫描可以通过执行手工命令实现,但一般效率较低。较好的选择是通过网络扫描器来实现。在介绍网络扫描器实现细节之前,首先简单回顾一下TCP/IP的三次握手

2、协议和一些基本知识。端口是TCP/IP协议中所制定的,TCP和UDP使用的端口号在065535范围之内,其中1024以下的端口保留给常用的网络服务。例如,FTP服务使用21端口,Telnet服务使用23端口,SMTP服务使用25端口,等等。TCP/IP协议通过套接字(socket)建立起两台计算机之间的网络连接。IP地址:端口被称作套接字,两台计算机通过套接字中不同的端口号可以区别同一台计算机上开启的不同的TCP和UDP连接进程。两台已经建立网络连接的计算机的套接字互相对应,标识着源地址和目的地址,这样网络上传输数据就可以通过套接字找到彼此通信的进程。由此可见,端口和服务进程一一对应,通过扫描

3、开放的端口,就可以判断出计算机中正在运行的服务进程。一个TCP数据包包括一个TCP头,后面是选项和数据,其具体结构如图3.1所示。图3.1 TCP数据包报头结构一个TCP数据包报头包含6个标志位,它们的意义分别为:SYN:标志位用来建立连接,让连接双方同步序列号。如果SYN1而ACK0,则表示该数据包为连接请求;如果SYN1而ACK1,则表示接受连接。FIN:表示发送端已经没有数据要求传输了,希望释放连接。RST:用来复位一个连接。RST标志位的数据包称为复位包。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。URG:紧急数据标志。如果它为1,表

4、示本数据包中包含紧急数据。此时紧急数据指针有效。ACK:确认标志位。如果为1,表示包中的确认号有效。否则,包中的确认号无效。PSH:如果置位,接收端应尽快把数据传送给应用层。TCP的连接建立过程又称为TCP三次握手。首先,发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;然后,接收方主机在收到这个请求后向发送方主机回复一个同步/确认(SYN/ACK)应答;最后,发送方主机收到此包后再向接收方主机发送一个确认(ACK),此时TCP连接成功建立。大部分TCP/IP实现遵循以下原则:(1)当一个SYN或者FIN数据包到达一个关闭的端口时,TCP丢弃数据包同时发送一个RST数据包。(2)当一

5、个RST数据包到达一个监听端口时,RST数据包被丢弃。(3)当一个RST数据包到达一个关闭的端口时,RST数据包被丢弃。(4)当一个包含ACK的数据包到达一个监听端口时,数据包被丢弃,同时发送一个RST数据包。(5)当一个SYN位关闭的数据包到达一个监听端口时,数据包被丢弃。(6)当一个SYN数据包到达一个监听端口时,正常的三次握手继续,回答一个SYN /ACK数据包。(7)当一个FIN数据包到达一个监听端口时,数据包被丢弃。“FIN行为”(关闭的端口返回RST,监听端口丢弃包)在URG和PSH标志位置位时同样要发生。所有的URG、PSH和FIN,或者没有任何标记的TCP数据包都会引起“FIN

6、行为”。通过上面知识的介绍,就可以构造出一些扫描计算机端口的方法。下面我们将介绍几种常用的扫描方式:(1)全TCP连接扫描比特 0比特 15 比特 16比特 31 源端口(16)目的端口(16) 序列号(32) 确认号(32)TCP 偏移量 (4)保留 (6)标志 (6)窗口 (16) 紧急 (16)校验和(16)选项(0 或 32) 数据(可变)全TCP连接是TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目的主机指定端口建立正常连接。连接由系统调用connect() 开始。对于每一个监听端口,connect() 会获得成功,否则返回1,表示端口不可访问。由于通常情况下,这不需要什么特权

7、,所以几乎所有的用户(包括多用户环境下)都可以通过connect() 来实现全连接扫描。这种扫描方法很容易检测出来(在日志文件中会有大量密集的连接和错误记录)。Courtney, Gabriel和TCP Wrapper监测程序通常用来进行监测。另外,TCP Wrapper可以对连接请求进行控制,所以它可以用来阻止来自不明主机的全连接扫描。(2)TCP SYN扫描在这种技术中,扫描主机向目标主机的选择端口发送SYN数据包。如果应答是RST,那么说明端口是关闭的;如果应答中包含SYN和ACK,说明目标端口处于监听状态。由于在SYN扫描时,全连接尚未建立,所以这种技术通常被称为半打开扫描。SYN扫描

8、的优点在于即使日志中对扫描有所记录,但是尝试进行连接的记录也要比全扫描少得多。缺点是在大部分操作系统下,发送端主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者授权用户访问专门的系统调用。(3)秘密扫描技术由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽得多。另外,FIN数据包能够通过只监测SYN的包过滤器。秘密扫描技术使用FIN数据包来探听端口。当一个FIN数据包到达一个关闭的端口,数据包会被丢掉,并且返回一个RST数据包。否则,当一个FIN数据包到达一个打开的端口,数据包只是简单地丢掉(不返回RST)。Xmas和N

9、ull扫描是秘密扫描的两个变种。Xmas扫描打开FIN、URG和PSH标记,而Null扫描关闭所有标记。这些组合的目的是为了通过所谓的FIN标记监测器的过滤。秘密扫描通常适用于UNIX目标主机,除了少量的应当丢弃数据包却发送RST信号的操作系统(包括CISCO、BSDI、HP/UX、MVS和IRIX)。在Windows 95/NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。跟SYN扫描类似,秘密扫描也需要自己构造IP包。(4)间接扫描这种扫描方式利用了ICMP协议的功能,如果向目标主机发送一个协议项存在错误的IP数据包,则可以根据反馈的ICMP错误报文来判断目标主机所使

10、用的服务。(5)ICMP扫描这种方法利用了UDP协议,当向目标主机的一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PROT_UNREACHABLE错误,这样就会发现关闭的端口。当然,还有一些其他的扫描方法没有在这里介绍,例如:代理扫描、认证扫描等。为了使大家更加清楚地了解扫描原理和扫描过程,下面动手编写一个简单的扫描程序,该程序基于TCP connects() 扫描原理,向目标主机的指定端口请求建立TCP连接。如果目标主机端口是打开的,则通过三次握手,connect() 返回成功。此时立刻断开连接,转向下一个端口。如果目标主机端口是关闭的,则connect() 返回1,也转向下一

11、个端口。扫描器程序的核心部分如下:/* 端口扫描器源代码 */* PortScanner.cpp/*#include #include #include int main(int argc, char *argv) int mysocket;int pcount0;struct sockaddr_in my_addr;WSADATA wsaData;WORD wVersionRequestedMAKEWORD(1,1);if(argc n“, argv0);exit(1);if (WSAStartup(wVersionRequested, exit(l);for(int i1; i atoi(

12、argv2); i+)if(mysocketsocket(AF_INET, SOCK_STREAM,0)INVALID_SOCKET)printf(“Socket Error“);exit(1);my_addr.sin_familyAF_INET;my_addr.sin_porthtons(i);my_addr.sin_addr.s_addrinet_addr(argv1);if(connect(mysocket,(struct sockaddr * ) elsepeount+;printf(“Port %d- openn“, i);printf(“%d ports open on host-

13、 %sn“, pcount, argv1);closesocket(mysocket);WSACleanup();return 0;类似地,大家可以自己编写基于不同原理的扫描器,实现更丰富的扫描功能。扫描往往是入侵的第一步,所以,如何有效地屏蔽计算机的端口,保护自身计算机的安全,已经成为计算机管理人员首要考虑的问题。端口扫描器是黑客常用的工具,目前的扫描工具有很多种。2.5 实验内容实验内容1原理分析 通过课上教员讲解、学员课下学习讨论,分析、理解端口扫描技术,熟悉端口扫描过程。2编程实现 利用所熟悉的编程工具,对端口扫描进行程序设计与实现。2.6 实现环境实现环境运行Windows或Linux操作系统的PC机,具有gcc(Linux)、VC(windows)等C语言的编译环境。2.7 实验要求实验要求本实验编程要求学员独立完成,要求学员熟悉 C 或 C+编程语言,并最终将编写的程序在局域网进行验证。2.8 实验建议实验建议1.强调在实验中学员自学能力和自主创新能力的培养。2.强调在实验中学员进行分工合作,并适当地进行角色互换。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号