网络工程教研室著2009 年4月
1
《计算机网络安全与管理》上机实验教案
实验要求:
1. 实验项目名称。 2. 实验目的。
3. 实验内容:上机过程中的实验步骤。 4. 算法:实验过程中所涉及程序的算法。5. 源程序。 6. 运行结果。 7. 结果的分析。 8. 实验总结。
2
目 录
《计算机网络安全》上机实验教案 ...................... 1 实验1 使用网络监听工具 实验2 实现加解密程序
实验3 端口扫描技术原理与实践 实验4 电子欺骗技术
实验5 防火墙原理及其基本配置 实验6 缓冲区溢出
实验7 入侵检测原理与Snort 的使用 实验8 PGP的原理与使用
实验9 实现基于挑战—响应的身份认证
实验10 操作系统安全配置 ........................... 64 附录1:一个简单的sniffer程序的实现 附录2:实验7入侵检测原理 附录3:实验8 PGP 使用参考 主要参考资料
3
4 9 14 18 33 40 55 62 63
73 78 91 99
实验1 使用网络监听工具
实验目的:
1. 了解Sniffer的工作原理。 2. 掌握Sniffer的使用。
3. 学会在Windows平台下使用Sniffer。 4. 会写一个简单的sniffer程序 实验设备与实验环境:(6人/组)(2课时) 1.实验设备
已连入局域网的计算机。 2.实验软件
WindowsNT/2000/XP ,Sniffer软件。 实验内容:
1.使用Sniffer抓包
步骤一:进入Sniffer主界面,抓包之前设置要抓取的数据包的类型。选择主菜单“Capture”下的“Define Filter”(抓包过滤器)菜单,在出现“Define Filter”窗口中,选择“Address”选项卡。 窗口中需要修改两个地方:在Address下拉列表中,选择抓包的类型是IP,在Station1下面输入本机的IP地址,在与之对应的Station2下面输入另一台主机IP地址。设置完毕后,点击该窗口的Advanced选项卡,拖动滚动条找到IP项,将IP和ICMP选中,将TCP和UDP选中,再把TCP下面的FTP和Telnet两个选项选中。
步骤二:选择菜单栏Capture下Start菜单项,启动抓包以后,在主机的DOS窗口中Ping目标主机,等Ping指令执行完毕后,点击工具栏上的停止并分析按钮,在出现的窗口选择Decode选项卡,可以看到数据包在两台计算机间的传递过程, Sniffer将Ping的数据包成功获取了。 2.分析TCP三次握手
抓包后可以看到数据包在两台计算机间的传递过程,根据此过程分析TCP的三次握手。 3. 写一个简单的sniffer程序 1)把网卡置于混杂模式。 2)捕捉数据包。 3)分析数据包。
附录:一个简单的sniffer程序的实现 1. 把网卡置于混杂模式。
4
2. 捕获数据包。 3.分析数据包。 #include \
#define INTERFACE \
int Open_Raw_Socket(void);
int Set_Promisc(char *interface, intsock); int main() {
int sock, bytes_recieved, fromlen; char buffer[65535]; struct sockaddr_in from; struct ip *ip;
struct tcp *tcp;
sock = Open_Raw_Socket();
Set_Promisc(INTERFACE, sock); //捕获数据包 while(1) {
fromlen = sizeof from;
//接收数据,冰把接收到的数据放入buffer中
bytes_recieved = recvfrom(sock, buffer, sizeofbuffer, 0, (struct sockaddr *)&from, &fromlen); printf(\printf(\
//分析数据包并强行转化为我们定义的IP结构 ip = (struct ip *)buffer;
//判断在网络层中是否使用的是TCP协议 if(ip->ip_protocol == 6) {
printf(\ printf(\
//tcp信息包从整个IP/TCP包 从下面地址处开始,然后对应结构把你所需要的信息输出 tcp = (struct tcp *)(buffer +(4*ip->ip_length));
printf(\ printf(\ } } }
int Open_Raw_Socket() { int sock;
if((sock = socket(AF_INET, SOCK_RAW, IPPROTO_TCP)) < 0){
perror(\ exit(0);
5