中南大学网络安全课外实验报告嗅探与欺骗.docx
《中南大学网络安全课外实验报告嗅探与欺骗.docx》由会员分享,可在线阅读,更多相关《中南大学网络安全课外实验报告嗅探与欺骗.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中南大学 CENTRAL SOUTH UNIVERSITY SEED PROJECT 实验报告 目录 一、 实验原理. 1 二、 实验器材. 1 三、 实验步骤及运行结果. 1 Task1编写嗅探程序. 1 Task2包欺骗. 3 Task3:综合使用. 4 四、 附件. 4 Task1 . 5 Task2 . 13 Task3 . 17 II Sniffing_Spoofing 一、实验原理 Sniffing就是一种能将本地网卡状态设成混杂状态的模式,当网卡处于这 种“混杂”方式时,该网卡具备“广播地址”,它对遇到的每一个帧都产生一个硬件 中断以便提醒操作系统处理流经该物理媒体上的每一个报文
2、包。(绝大多数的网卡具 备置成混杂模式的能力) 一般来说,sniffing和poofing会联合起来使用。当攻击者嗅探到关键信息时, 通常会使用poofing技术来构造数据包来劫持会话或者去获取更多信息,通常会造成 很大的危害。Poofing技术就是攻击者自己构造数据包的ip/tcp数据包帧头部数据来 达到自己的目的。 本次实验就是基于以上原理,在linux下模拟整个过程。 二、实验器材 1Ubuntu12.04。 2Wireshark等常用捕包工具。 三、实验步骤及运行结果 Task1编写嗅探程序 嗅探程序可以很容易地使用 pcap 库。利用 PCAP,嗅探器的任务变得在 pcap 库调用一
3、系列简单的程序。在序列结束时,数据包将被放置在缓冲区中,以进一步处 理,只要它们被捕获。所有的数据包捕获的细节由pcap库处理。Tim Carstens写了一 个教程如何使用pcap库写的嗅探程序。 1:深入理解并可以编写嗅探程序。 2:编写过滤器。请为您的嗅探程序捕捉每个写过滤表达式如下。在你的实验 1 报告,你需要包括screendumps显示应用这些过滤器的结果。 捕获ICMP数据包。 捕获TCP数据包有一个目的端口范围从端口10 - 100。 运行结果如下: 在程序中预设捕获 10 个数据包,当捕获数据包之后会将数据包进行处理,会下 2 显示数据包的类型,还有数据包的源 ip 和目的
4、ip,源端口和目的端口,当有数据时 还会显示数据。 对于任务一的2,主要是修改filter中的过滤条件,要实现只捕获ICMP类型的数 据包,只需要将char filter_exp = ip中的ip改为ICMP,然后要捕获端口在10-100 之间的tcp数据包,同理,将这条语句中的条件改为tcp and dst portrange 10-100即 可。 Task2包欺骗 在正常的情况下,当一个用户发送一个数据包时,操作系统通常不允许用户设 置所有的在协议头字段(如TCP,UDP,和IP报头)。操作系统将大部分的领域,而 只允许用户设置几个字段,如目标 IP 地址、目标端口号等。但是当用户有有 r
5、oot 权 限,他们可以在数据包标头设置为任意字段。这就是所谓的包欺骗,它可以通过原始 套接字完成。 原始套接字给程序员的数据包结构的绝对控制,允许程序员构建任何任意的数 据包,包括设置头字段和有效载荷。使用原始套接字是相当简单的,它包括四个步骤: (1)创建一个原始套接字,(2)设置套接字选项,(3)构建数据包,和(4)通过原 始套接字发送数据包。有许多在线教程,可以教你如何使用原始套接字在C编程。我 们已经把一些教程与实验室的网页联系起来了。请阅读它们,并学习如何写一个 spoonfing程序包。我们展示了一个简单的的程序。 运行结果如下: 3 可以看到成功向193.123.123.11的
6、80端口发送了伪造的的源IP为127.1.1.1且端 口的234的数据包,这就实现包欺骗的过程。 Task3:综合使用 在这个任务中,你将嗅探和欺骗技术实现连接,并实现程序。你需要在同一局 域网两虚拟机。从VMA ping 另一个VM的 IP,这将产生一个ICMP回送请求报文。 如果X是活着的,ping程序将收到一个回音答复,并打印出响应。你嗅探到数据包然 后伪造程序运行在虚拟机B、监控网络数据包嗅探。每当它看到ICMP回送请求,不 管目标 IP 地址是什么,你的程序应该立即发出回声应答数据包欺骗技术的使用。因 此,考虑到机器 X 是否是活的,这个程序将总是收到一个回复,这表明 X 是活的。
7、你要写这样一个程序,包括在你显示你的程序的工作报告 screendumps。请在你的报 告中附上代码。 四、附件 4 Task1 #define APP_NAME #define APP_DESC sniffex Sniffer example using libpcap #define APP_COPYRIGHT Copyright (c) 2005 The Tcpdump Group #define APP_DISCLAIMER THERE IS ABSOLUTELY NO WARRANTY FOR THIS PROGRAM. #include #include #include #inc
8、lude #include #include #include #include #include #include /* default snap length (maximum bytes per packet to capture) */ #define SNAP_LEN 1518 /* ethernet headers are always exactly 14 bytes 1 */ #define SIZE_ETHERNET 14 /* Ethernet addresses are 6 bytes */ 6 #define ETHER_ADDR_LEN /* Ethernet hea
9、der */ struct sniff_ethernet u_char ether_dhostETHER_ADDR_LEN; /* destination host address */ u_char ether_shostETHER_ADDR_LEN; /* source host address */ u_short ether_type; /* IP? ARP? RARP? etc */ ; /* IP header */ struct sniff_ip u_char ip_vhl; /* version 2 */ 5 u_char ip_tos; /* type of service
10、*/ u_short ip_len; /* total length */ u_short ip_id; /* identification */ u_short ip_off; /* fragment offset field */ #define IP_RF 0x8000 /* reserved fragment flag */ #define IP_DF 0x4000 /* dont fragment flag */ #define IP_MF 0x2000 /* more fragments flag */ #define IP_OFFMASK 0x1fff /* mask for f
11、ragmenting bits */ u_char ip_ttl; /* time to live */ u_char ip_p; /* protocol */ u_short ip_sum; /* checksum */ struct in_addr ip_src,ip_dst; /* source and dest address */ ; #define IP_HL(ip) (ip)-ip_vhl) & 0x0f) /*与15与运算*/ #define IP_V(ip) (ip)-ip_vhl) 4)/*ip_vhl的各二进位全部右移4位*/ /* TCP header */ typed
12、ef u_int tcp_seq; struct sniff_tcp u_short th_sport; /* source port */ u_short th_dport; /* destination port */ tcp_seq th_seq; /* sequence number */ tcp_seq th_ack; /* acknowledgement number */ u_char th_offx2; /* data offset, rsvd */ #define TH_OFF(th) (th)-th_offx2 & 0xf0) 4) u_char th_flags; #de
13、fine TH_FIN 0x01 #define TH_SYN 0x02 #define TH_RST 0x04 #define TH_PUSH 0x08 #define TH_ACK 0x10 #define TH_URG 0x20 #define TH_ECE 0x40 #define TH_CWR 0x80 #define (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR) 6 TH_FLAGS u_short th_win; /* window */ u_short th_sum; /* checksum */ u_short th_u
14、rp; /* urgent pointer */ ; void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet); void print_payload(const u_char *payload, int len); void print_hex_ascii_line(const u_char *payload, int len, int offset); void print_app_banner(void); void print_app_usage(void); void /
15、*输出相关信息*/ print_app_banner(void) printf(%s - %sn, APP_NAME, APP_DESC); printf(%sn, APP_COPYRIGHT); printf(%sn, APP_DISCLAIMER); printf(n); return; void print_app_usage(void) printf(Usage: %s interfacen, APP_NAME); printf(n); printf(Options:n); printf( interface Listen on for packets.n); printf(n); r
16、eturn; void 7 print_hex_ascii_line(const u_char *payload, int len, int offset) int i; int gap; const u_char *ch; printf(%05d , offset); ch = payload; for(i = 0; i len; i+) printf(%02x , *ch); ch+; /* print extra space after 8th byte for visual aid */ if (i = 7) printf( ); /* print space to handle li
17、ne less than 8 bytes */ if (len 8) printf( ); if (len 16) gap = 16 - len; for (i = 0; i gap; i+) printf( ); printf( ); ch = payload; for(i = 0; i len; i+) if (isprint(*ch) printf(%c, *ch); else printf(.); ch+; printf(n); return; void print_payload(const u_char *payload, int len) 8 int len_rem = len;
18、 /* number of bytes per line */ int line_width = 16; int line_len; int offset = 0; /* zero-based offset counter */ const u_char *ch = payload; if (len = 0) return; if (len = line_width) print_hex_ascii_line(ch, len, offset); return; for ( ; ) /* compute current line length */ line_len = line_width %
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 网络安全 课外 实验 报告 欺骗
限制150内