您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第九讲网络安全(二)-PowerPointPresen
网络与信息安全网络安全(二)潘爱民,北京大学计算机研究所内容截获网络上的数据包监听数据包的技术LibpcapWinPcap入侵检测技术网络监听在一个共享式网络,可以听取所有的流量是一把双刃剑管理员可以用来监听网络的流量情况开发网络应用的程序员可以监视程序的网络情况黑客可以用来刺探网络情报目前有大量商业的、免费的监听工具,俗称嗅探器(sniffer)以太网络的工作原理载波侦听/冲突检测(CSMA/CD,carriersensemultipleaccesswithcollisiondetection)技术载波侦听:是指在网络中的每个站点都具有同等的权利,在传输自己的数据时,首先监听信道是否空闲如果空闲,就传输自己的数据如果信道被占用,就等待信道空闲而冲突检测则是为了防止发生两个站点同时监测到网络没有被使用时而产生冲突以太网采用了CSMA/CD技术,由于使用了广播机制,所以,所有与网络连接的工作站都可以看到网络上传递的数据以太网卡的工作模式网卡的MAC地址(48位)通过ARP来解析MAC与IP地址的转换用ipconfig/ifconfig可以查看MAC地址正常情况下,网卡应该只接收这样的包MAC地址与自己相匹配的数据帧广播包网卡完成收发数据包的工作,两种接收模式混杂模式:不管数据帧中的目的地址是否与自己的地址匹配,都接收下来非混杂模式:只接收目的地址相匹配的数据帧,以及广播数据包(和组播数据包)为了监听网络上的流量,必须设置为混杂模式共享网络和交换网络共享式网络通过网络的所有数据包发往每一个主机最常见的是通过HUB连接起来的子网交换式网络通过交换机连接网络由交换机构造一个“MAC地址-端口”映射表发送包的时候,只发到特定的端口上共享式网络示意图应用程序抓包的技术UNIX系统提供了标准的API支持PacketsocketBPFWindows平台上通过驱动程序来获取数据包驱动程序WinPcapPacketsocket设置混杂模式用ioctl()函数可以设置打开一个packetsocketpacket_socket=socket(PF_PACKET,intsocket_type,intprotocol);以前的做法,socket(PF_INET,SOCK_PACKET,protocol)不同的UNIX或者Linux版本可能会有不同的函数调用,本质上打开一个socket(或者通过open打开一个设备)通过ioctl()或者setsockopt()设置为混杂模式BPF(BerkeleyPacketFilter)BSD抓包法BPF是一个核心态的组件,也是一个过滤器NetworkTap接收所有的数据包KernelBuffer,保存过滤器送过来的数据包Userbuffer,用户态上的数据包缓冲区Libpcap(一个抓包工具库)支持BPFLibpcap是用户态的一个抓包工具Libpcap几乎是系统无关的BPF是一种比较理想的抓包方案在核心态,所以效率比较高,但是,只有少数OS支持(主要是一些BSD操作系统)BPF和libpcap关于libpcap用户态下的packetcapture系统独立的接口,C语言接口目前最新为0.7版本广泛应用于:网络统计软件入侵检测系统网络调试支持过滤机制,BPFLibpcap介绍为捕获数据包做准备的几个函数char*pcap_lookupdev(char*errbuf);返回一个指向网络设备的指针,这个指针下面用到pcap_t*pcap_open_live(char*device,intsnaplen,intpromisc,intto_ms,char*ebuf);用来获取一个packetcapturedescriptor;snaplen指定了抓取数据包的最大长度pcap_dumper_t*pcap_dump_open(pcap_t*p,char*fname);打开一个savefile文件,用于dumppcap_t*pcap_open_offline(char*fname,char*ebuf);打开一个savefile,从中读取数据包Libpcap:dump文件格式文件头:structpcap_file_header{bpf_u_int32magic;//0xa1b2c3d4u_shortversion_major;u_shortversion_minor;bpf_int32thiszone;bpf_u_int32sigfigs;bpf_u_int32snaplen;bpf_u_int32linktype;};然后是每一个包的包头和数据structpcap_pkthdr{structtimevalts;bpf_u_int32caplen;bpf_u_int32len;};其中数据部分的长度为caplenLibpcap:设置filter设置过滤器用到的函数intpcap_lookupnet(char*device,bpf_u_int32*netp,bpf_u_int32*maskp,char*errbuf)获得与网络设备相关的网络号和掩码intpcap_compile(pcap_t*p,structbpf_program*fp,char*str,intoptimize,bpf_u_int32netmask)把字符串str编译成一个过滤器程序intpcap_setfilter(pcap_t*p,structbpf_program*fp)设置一个过滤器Libpcap:捕获数据捕获数据用到的两个函数intpcap_dispatch(pcap_t*p,intcnt,pcap_handlercallback,u_char*user)intpcap_loop(pcap_t*p,intcnt,pcap_handlercallback,u_char*user)参数含义:cnt指定了捕获数据包的最大数目pcap_handler是一个回调函数二者区别在于pcap_loop不会因为read操作超时而返回。另一个函数:voidpcap_dump(u_char*user,structpcap_pkthdr*h,u_char*sp)把数据包写到一个由pcap_dump_open()打开的文件中Windows平台下的抓包技术内核本身没有提供标准的接口通过增加一个驱动程序或者网络组件来访问内核网卡驱动提供的数据包在Windows不同操作系统平台下有所不同不同sniffer采用的技术不同WinPcap是一个重要的抓包工具,它是libpcap的Windows版本Windows2000下抓包组件示意图WinPcapWinPcap包括三个部分第一个模块NPF(NetgroupPacketFilter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译第三个模块Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。packet.dll和Wpcap.dllpacket.dll直接映射了内核的调用Wpcap.dll提供了更加友好、功能更加强大的函数调用WinPcap和NPFWindows的网络结构NDIS(NetworkDriverInterfaceSpecification,网络驱动接口规范)描述了网络驱动与底层网卡之间的接口规范,以及它与上层协议之间的规范NPF作为一个核心驱动程序而提供的WinPcap的优势提供了一套标准的抓包接口与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具除了与libpcap兼容的功能之外,还有充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持支持内核态的统计模式提供了发送数据包的能力用WinPcap开发自己的snifferWindows平台下一些sniffer工具Buttsniffer简单,不需要安装,可以在WindowsNT下运行,适合于后台运作NetMonWindows2000自带(MicrosoftSMS也带)友好的图形界面,分析功能强NetXRay界面友好,统计分析功能强,过滤器功能基于WinPcap的工具WinDumpAnalyzerUNIX/Linux平台下的一些sniffer工具dsnifflinux_snifferSnorttcpdumpsniffit……与sniffer有关的两项技术检测处于混杂模式的节点如何在交换网络上实现sniffer检测处于混杂模式的节点网卡和操作系统对于是否处于混杂模式会有一些不同的行为,利用这些特征可以判断一个机器是否运行在混杂模式下一些检测手段根据操作系统的特征Linux内核的特性:正常情况下,只处理本机MAC地址或者以太广播地址的包。在混杂模式下,许多版本的Linux内核只检查数据包中的IP地址以确定是否送到IP堆栈。因此,可以构造无效以太地址而IP地址有效的ICMPECHO请求,看机器是否返回应答包(混杂模式),或忽略(非混杂模式)。Windows9x/NT:在混杂模式下,检查一个包是否为以太广播包时,只看MAC地址前八位是否为0xff。根据网络和主机的性能根据响应时间:向本地网络发送大量的伪造数据包,然后,看目标主机的响应时间,首先要测得一个响应时间基准和平均值L0pht的AntiSniff产品,参考它的技术文档在交换式网络上监听数据包ARP重定向技术,一种中间人攻击ABGW1B打开IP转发功能2B发送假冒的arp包给A,声称自己是GW的IP地址3A给外部发送数据,首先发给B4B再转发给GW做法:利用dsniff中的arpredirect工具发送数据包——Libnet利用Libnet构造数据包并发送出去关于Libnet支持多种操作系统平台提供了50多个CAPI函数,功能涵盖内存管理(分配和释放)函数地址解析函数各种协议类型的数据包构造函数数据包发送函数(IP层和链路层)一些辅助函数,如产生随机数、错误报告等使用Libnet的基本过程数据包内存初始化网络接口初始化构造所需的数据包计算数据包的校验和发送数据包关闭网络接口释放数据包内存libnet_init_packet(…);libnet_open_raw_sock(…);libnet_build_ip(…);libnet_build_tcp(…);libnet_do_checksum(…);libnet_write_ip(…);libnet_close_raw_sock(…);libnet_destroy_packet(…);可适应网络安全模型网络安全是相对的,没有绝对的安全P2DR安全模型以安全策略为核心安全策略(policy)防护(protecttion)网络安全新定义及时的检测和处理时间PtDtRt新定义:PtDt+RtP2DR安全模型这是一个动态模型以安全策略为核心基于时间的模型可以量化可以计算P2DR安全的核心问题——检测检测是静态防护转化为动态的关键检测是动态响应的依据检测是落实/强制执行安全策略的有力工具IDS:IntrusionDetectionSystem入侵检测系统介绍入侵检测系统分类入侵检测系统用到的一些技术入侵检测系统的研究和发展IDS的用途攻击工具攻击命令攻击机制目标网络网络漏洞目标系统系统漏洞攻击者漏洞扫描评估加固攻击过程实时入侵检测入侵检测系统的实现过程信息收集,来源:网络流量系统日志文件系统目录和文件的异常变化程序执行中的异常行为信息分析模式匹配统计分析完整性分析,往往用于事后分析入侵检测系统的通用模型数据源模式匹配器系统轮廓分析引擎数据库入侵模式库异常检测器响应和恢复机制入侵检测系统的种类基于主机安全
本文标题:第九讲网络安全(二)-PowerPointPresen
链接地址:https://www.777doc.com/doc-1267574 .html