Presentation is loading. Please wait.

Presentation is loading. Please wait.

潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse 网络与信息安全 网络安全 (二) 潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse.

Similar presentations


Presentation on theme: "潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse 网络与信息安全 网络安全 (二) 潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse."— Presentation transcript:

1 潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse
网络与信息安全 网络安全 (二) 潘爱民,北京大学计算机研究所

2 内容 截获网络上的数据包 监听数据包的技术 Libpcap WinPcap 入侵检测技术

3 网络监听 在一个共享式网络,可以听取所有的流量 是一把双刃剑 目前有大量商业的、免费的监听工具,俗称嗅探器(sniffer)
管理员可以用来监听网络的流量情况 开发网络应用的程序员可以监视程序的网络情况 黑客可以用来刺探网络情报 目前有大量商业的、免费的监听工具,俗称嗅探器(sniffer)

4 以太网络的工作原理 载波侦听/冲突检测(CSMA/CD, carrier sense multiple access with collision detection)技术 载波侦听:是指在网络中的每个站点都具有同等的权利,在传输自己的数据时,首先监听信道是否空闲 如果空闲,就传输自己的数据 如果信道被占用,就等待信道空闲 而冲突检测则是为了防止发生两个站点同时监测到网络没有被使用时而产生冲突 以太网采用了CSMA/CD技术,由于使用了广播机制,所以,所有与网络连接的工作站都可以看到网络上传递的数据

5 以太网卡的工作模式 网卡的MAC地址(48位) 正常情况下,网卡应该只接收这样的包 网卡完成收发数据包的工作,两种接收模式
通过ARP来解析MAC与IP地址的转换 用ipconfig/ifconfig可以查看MAC地址 正常情况下,网卡应该只接收这样的包 MAC地址与自己相匹配的数据帧 广播包 网卡完成收发数据包的工作,两种接收模式 混杂模式:不管数据帧中的目的地址是否与自己的地址匹配,都接收下来 非混杂模式:只接收目的地址相匹配的数据帧,以及广播数据包(和组播数据包) 为了监听网络上的流量,必须设置为混杂模式

6 共享网络和交换网络 共享式网络 交换式网络 通过网络的所有数据包发往每一个主机 最常见的是通过HUB连接起来的子网 通过交换机连接网络
由交换机构造一个“MAC地址-端口”映射表 发送包的时候,只发到特定的端口上

7 共享式网络示意图

8 应用程序抓包的技术 UNIX系统提供了标准的API支持 Windows平台上通过驱动程序来获取数据包 Packet socket BPF
WinPcap

9 Packet socket 设置混杂模式 打开一个packet socket 不同的UNIX或者Linux版本可能会有不同的函数调用,本质上
用ioctl()函数可以设置 打开一个packet socket packet_socket = socket(PF_PACKET, int socket_type, int protocol); 以前的做法, socket(PF_INET, SOCK_PACKET, protocol) 不同的UNIX或者Linux版本可能会有不同的函数调用,本质上 打开一个socket(或者通过open打开一个设备) 通过ioctl()或者setsockopt()设置为混杂模式

10 BPF(Berkeley Packet Filter)
BSD抓包法 BPF是一个核心态的组件,也是一个过滤器 Network Tap接收所有的数据包 Kernel Buffer,保存过滤器送过来的数据包 User buffer,用户态上的数据包缓冲区 Libpcap(一个抓包工具库)支持BPF Libpcap是用户态的一个抓包工具 Libpcap几乎是系统无关的 BPF是一种比较理想的抓包方案 在核心态,所以效率比较高, 但是,只有少数OS支持(主要是一些BSD操作系统)

11 BPF和libpcap

12 关于libpcap 用户态下的packet capture 系统独立的接口,C语言接口 目前最新为0.7版本 广泛应用于:
网络统计软件 入侵检测系统 网络调试 支持过滤机制,BPF

13 Libpcap介绍 为捕获数据包做准备的几个函数
char *pcap_lookupdev(char *errbuf); 返回一个指向网络设备的指针,这个指针下面用到 pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf); 用来获取一个packet capture descriptor;snaplen指定了抓取数据包的最大长度 pcap_dumper_t *pcap_dump_open(pcap_t *p, char *fname); 打开一个savefile文件,用于dump pcap_t *pcap_open_offline(char *fname, char *ebuf); 打开一个savefile,从中读取数据包

14 Libpcap:dump文件格式 文件头: 然后是每一个包的包头和数据 struct pcap_pkthdr {
struct pcap_file_header { bpf_u_int32 magic; // 0xa1b2c3d4 u_short version_major; u_short version_minor; bpf_int32 thiszone; bpf_u_int32 sigfigs; bpf_u_int32 snaplen; bpf_u_int32 linktype; }; 然后是每一个包的包头和数据 struct pcap_pkthdr { struct timeval ts; bpf_u_int32 caplen; bpf_u_int32 len; }; 其中数据部分的长度为caplen

15 Libpcap: 设置filter 设置过滤器用到的函数
int pcap_lookupnet(char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp, char *errbuf)  获得与网络设备相关的网络号和掩码 int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask) 把字符串str编译成一个过滤器程序 int pcap_setfilter(pcap_t *p, struct bpf_program *fp) 设置一个过滤器

16 Libpcap: 捕获数据 捕获数据用到的两个函数
int pcap_dispatch(pcap_t *p, int cnt, pcap_handler callback, u_char *user)   int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)   参数含义: cnt指定了捕获数据包的最大数目 pcap_handler是一个回调函数 二者区别在于pcap_loop不会因为read操作超时而返回。 另一个函数:void pcap_dump(u_char *user, struct pcap_pkthdr *h, u_char *sp)  把数据包写到一个由pcap_dump_open()打开的文件中

17 Windows平台下的抓包技术 内核本身没有提供标准的接口 通过增加一个驱动程序或者网络组件来访问内核网卡驱动提供的数据包
不同sniffer采用的技术不同 WinPcap是一个重要的抓包工具,它是libpcap的Windows版本

18 Windows 2000下抓包组件示意图

19 WinPcap WinPcap包括三个部分 packet.dll和Wpcap.dll
第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码 第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译 第三个模块 Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。 packet.dll和Wpcap.dll packet.dll直接映射了内核的调用 Wpcap.dll提供了更加友好、功能更加强大的函数调用

20 WinPcap和NPF

21 Windows的网络结构 NDIS(Network Driver Interface Specification,网络驱动接口规范)描述了网络驱动与底层网卡之间的接口规范,以及它与上层协议之间的规范 NPF作为一个核心驱动程序而提供的

22 WinPcap的优势 提供了一套标准的抓包接口 除了与libpcap兼容的功能之外,还有
与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来 便于开发各种网络分析工具 除了与libpcap兼容的功能之外,还有 充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持 支持内核态的统计模式 提供了发送数据包的能力

23 用WinPcap开发自己的sniffer

24 Windows平台下一些sniffer工具
Buttsniffer 简单,不需要安装,可以在Windows NT下运行,适合于后台运作 NetMon Windows 2000自带(Microsoft SMS也带) 友好的图形界面,分析功能强 NetXRay 界面友好,统计分析功能强,过滤器功能 基于WinPcap的工具 WinDump Analyzer

25 UNIX/Linux平台下的一些sniffer工具
dsniff linux_sniffer Snort tcpdump sniffit ……

26 与sniffer有关的两项技术 检测处于混杂模式的节点 如何在交换网络上实现sniffer

27 检测处于混杂模式的节点 网卡和操作系统对于是否处于混杂模式会有一些不同的行为,利用这些特征可以判断一个机器是否运行在混杂模式下 一些检测手段
根据操作系统的特征 Linux内核的特性:正常情况下,只处理本机MAC地址或者以太广播地址的包。在混杂模式下,许多版本的Linux内核只检查 数据包中的IP地址以确定是否送到IP堆栈。因此,可以构造无效以太地址而IP地址有效的ICMP ECHO请求,看机器是否返回应答包(混杂模式),或忽略(非混杂模式)。 Windows 9x/NT:在混杂模式下,检查一个包是否为以太广播包时,只看MAC地址前八位是否为0xff。 根据网络和主机的性能 根据响应时间:向本地网络发送大量的伪造数据包,然后,看目标主机的响应时间,首先要测得一个响应时间基准和平均值 L0pht的AntiSniff产品,参考它的技术文档

28 在交换式网络上监听数据包 ARP重定向技术,一种中间人攻击 1 B打开IP转发功能 A B
2 B发送假冒的arp包给A,声称自己是GW的IP地址 3 A给外部发送数据,首先发给B 4 B再转发给GW GW 做法:利用dsniff中的arpredirect工具

29 发送数据包——Libnet 利用Libnet构造数据包并发送出去 关于Libnet 支持多种操作系统平台
提供了50多个C API函数,功能涵盖 内存管理(分配和释放)函数 地址解析函数 各种协议类型的数据包构造函数 数据包发送函数(IP层和链路层) 一些辅助函数,如产生随机数、错误报告等

30 使用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(…);

31 可适应网络安全模型 网络安全是相对的,没有绝对的安全 P2DR安全模型 以安全策略为核心 安全 策略 (policy)
防护 (protecttion) (detection) (response)

32 网络安全新定义 及时的检测和处理 Pt Dt Rt 时间 新定义:Pt > Dt + Rt

33 P2DR安全模型 这是一个动态模型 基于时间的模型 P2DR安全的核心问题——检测 以安全策略为核心 可以量化 可以计算
检测是静态防护转化为动态的关键 检测是动态响应的依据 检测是落实/强制执行安全策略的有力工具

34 IDS: Intrusion Detection System
入侵检测系统介绍 入侵检测系统分类 入侵检测系统用到的一些技术 入侵检测系统的研究和发展

35 IDS的用途 实时 漏洞扫描 入侵 评估 检测 加固 攻击机制 目标系统 攻击工具 系统漏洞 攻击命令 攻击过程 网络漏洞 目标网络 攻击者
所有的黑客攻击都由这样的要素: 攻击的主体——攻击者 攻击的客体——我们的系统和网络,系统和网络存在的漏洞为攻击者提供了攻击的客观条件 再有就是攻击的过程 反黑技术: 针对系统和网络漏洞——研究漏洞扫描、评估技术,帮助加固系统的安全性 针对黑客攻击的过程——研究实时入侵检测系统,及时对黑客的入侵给予阻止、防范甚至反击。 对攻击者的惩罚,主要由法律和专政机关解决。 目标网络 攻击者

36 入侵检测系统的实现过程 信息收集,来源: 信息分析 网络流量 系统日志文件 系统目录和文件的异常变化 程序执行中的异常行为 模式匹配
统计分析 完整性分析,往往用于事后分析

37 入侵检测系统的通用模型 数据源 模式匹配器 系统轮廓分析引擎 数据库 入侵模式库 异常检测器 响应和恢复机制

38 入侵检测系统的种类 基于主机 基于网络 基于内核 基于应用 安全操作系统必须具备一定的审计功能,并记录相应的安全性日志
IDS可以放在防火墙或者网关的后面,以网络嗅探器的形式捕获所有的对内对外的数据包 基于内核 从操作系统的内核接收数据,比如LIDS 基于应用 从正在运行的应用程序中收集数据

39 IDS的技术 异常检测(anomaly detection) 误用检测(misuse detection) 也称为基于行为的检测
首先建立起用户的正常使用模式,即知识库 标识出不符合正常模式的行为活动 误用检测(misuse detection) 也称为基于特征的检测 建立起已知攻击的知识库 判别当前行为活动是否符合已知的攻击模式

40 异常检测 比较符合安全的概念,但是实现难度较大 常用技术 正常模式的知识库难以建立 难以明确划分正常模式和异常模式 统计方法 预测模式
神经网络

41 误用检测 目前研究工作比较多,并且已经进入实用 常用技术 建立起已有攻击的模式特征库 难点在于:如何做到动态更新,自适应
基于简单规则的模式匹配技术 基于专家系统的检测技术 基于状态转换分析的检测技术 基于神经网络检测技术 其他技术,如数据挖掘、模糊数学等

42 IDS的两个指标 漏报率 误报率(false alarm rate) 指攻击事件没有被IDS检测到 把正常事件识别为攻击并报警
误报率与检出率成正比例关系 检出率(detection rate) % 100% 误报率

43 基于网络的IDS系统 收集网络流量数据 利用某些识别技术 利用sniff技术
基于模式匹配的专家系统 基于异常行为分析的检测手段

44 一个轻量的网络IDS: snort 是一个基于简单模式匹配的IDS 源码开放,跨平台(C语言编写,可移植性好)
利用libpcap作为捕获数据包的工具 特点 设计原则:性能、简单、灵活 包含三个子系统:网络包的解析器、检测引擎、日志和报警子系统 内置了一套插件子系统,作为系统扩展的手段 模式特征链——规则链 命令行方式运行,也可以用作一个sniffer工具

45 网络数据包解析 结合网络协议栈的结构来设计 Snort支持链路层和TCP/IP的协议定义 每一层上的数据包都对应一个函数
按照协议层次的顺序依次调用就可以得到各个层上的数据包头 从链路层,到传输层,直到应用层 在解析的过程中,性能非常关键,在每一层传递过程中,只传递指针,不传实际的数据 支持链路层:以太网、令牌网、FDDI

46 Snort规则链处理过程 二维链表结构 匹配过程 首先匹配到适当的Chain Header 然后,匹配到适当的Chain Option
最后,满足条件的第一个规则指示相应的动作

47 Snort: 日志和报警子系统 当匹配到特定的规则之后,检测引擎会触发相应的动作 日志记录动作,三种格式:
解码之后的二进制数据包 文本形式的IP结构 Tcpdump格式 如果考虑性能的话,应选择tcpdump格式,或者关闭logging功能 报警动作,包括 Syslog 记录到alert文本文件中 发送WinPopup消息

48 关于snort的规则 Snort的规则比较简单 规则与性能的关系 现有大量的规则可供利用 规则结构:
规则头: alert tcp ! /24 any -> /24 any 规则选项: (flags: SF; msg: “SYN-FIN Scan”;) 针对已经发现的攻击类型,都可以编写出适当的规则来 规则与性能的关系 先后的顺序 Content option的讲究 许多cgi攻击和缓冲区溢出攻击都需要content option 现有大量的规则可供利用

49 Snort规则示例 Option类型 规则示例

50 关于snort 开放性 作为商业IDS的有机补充 Snort的部署 发展 源码开放,最新规则库的开放 特别是对于最新攻击模式的知识共享
数据库的支持 互操作性,规则库的标准化 二进制插件的支持 预处理器模块:TCP流重组、统计分析,等 ……

51 异常检测的网络IDS 基于规则和特征匹配的NIDS的缺点 异常检测的NIDS可以有一定的自适应能力 对于新的攻击不能正确识别
人工提取特征,把攻击转换成规则,加入到规则库中 异常检测的NIDS可以有一定的自适应能力 利用网络系统的已知流量模式进行学习,把正常流量模式的知识学习到IDS中 当出现新的攻击时,根据异常行为来识别 并且,对于新的攻击以及异常的模式可以反馈到IDS系统中

52 人工神经网络(ANN)用于异常检测 ANN有比较好的非线性分析能力 一定程度上可以代替统计检测技术 通过历史数据学习用户的典型特征 难点:
采集好的学习样本并量化表达 如何获得自适应? 两个简单例子 MLP网络用于入侵检测 CMAC用于拒绝服务检测

53 MLP网络用于入侵检测 可以认为是误用检测,但是它对未知攻击有一定的适应能力 网络描述 实验情况 多层感知器结构,四层全连接 9个输入
2个输出 实验情况 利用网络工具采集数据,包含正常网络行为和模拟攻击行为 需要足够的样本用于学习,并且其中包含模拟攻击样本

54 MLP网络结构 Sigmoid函数 N1 w w N2 w O1 O2 N9

55 MLP网络 9个输入 Protocol ID Source Port Destination Port Source Address
Destination Address ICMP Type ICMP Code Raw Data Raw Data Length 2个输入 (0.0,1.0)表示没有攻击 (1.0,0.0)表示有攻击 神经元函数 sigmoid:1/(1+exp(-x))

56 MLP网络的结果分析 实验室学习的结果比较好 只是说明了ANN用于ID的潜在的能力 误差的均方非常小 能够识别出样本中所有的攻击行为
考虑其他的网络结构 考虑动态的自适应能力

57 CMAC网络用于自动对抗拒绝服务 CMAC(Cerebellar Model Articulation Controller) 网络模型
1975年Albus提出 主要用于控制领域 网络模型 三层前向网络 优势 具有聚类的作用 容易获得自适应能力

58 CMAC模型 N1 w N2 O 随机散列 环境参数

59 CMAC用于检测DOS攻击 CMAC的输入和输出 CMAC的学习和自适应调整 环境反馈s,范围[0.0, 1.0]
0.0表示系统已经停止,拒绝服务 1.0表示系统正常 输出O,范围[0.0, 1.0] 0.0表示没有攻击 1.0表示攻击 接受正常数据时,输出非常小 CMAC的学习和自适应调整 学习 wi+1 = wi + b(Od - Oa) wi+1 = wi + b((1-s) - Oa) wi+1 = wi + (1-s)((1-s) - Oa)

60 CMAC对于拒绝服务的模拟结果分析 学习速度快 On-line学习攻击模式 能够精确地识别以前碰到过的攻击模式
对于同类型的攻击,具有较好的适应性 在训练了ping flood之后,识别UDP packet storm攻击的错误为2.2% 对状态的分析能力 如果一种网络行为模式在初始时候被识别的概率为75%,随着系统状态的进一步退化,同样的行为模式被识别的概率应该增加 系统的反馈用来增强识别攻击的可能性

61 基于主机的IDS系统 信息收集 系统日志 系统状态信息 特点:OS相关 常用的分析技术 统计分析 状态转移分析 关联分析 ……

62 STAT STAT: A state transition analysis tool for intrusion detection S1
由美国加州大学Santa Barbaba分校开发 从初始状态到入侵状态的转移过程 用有限状态机来表示入侵过程 初始状态指入侵发生之前的状态 入侵状态指入侵发生之后系统所处的状态 系统状态通常用系统属性或者用户权限来描述 用户的行为和动作导致系统状态的转变 S1 S2 S3 Assertions Assertions Assertions

63 STAT的优缺点 优点: 缺点: 状态转移图提供了一种针对入侵渗透模式的直观的、高层次的、与审计记录无关的表示方法
用状态转移法,可以描述出构成特定攻击模式的特征行为序列 状态转移图给出了保证攻击成功的特征行为的最小子集,从而使得检测系统可以适应相同入侵模式的不同表现形式 可使攻击行为在到达入侵状态之前就被检测到,从而采取措施阻止攻击行为 可以检测协同攻击和慢速攻击 缺点: 状态(assertions)和特征行为需要手工编码 Assertions和特征用于表达复杂细致的入侵模式时可能无法表达 STAT只是一个框架,需要具体的实现或者与其他系统协同工作 STAT的速度相对比较慢

64 STAT——USTAT USTAT:用于UNIX系统的STAT实现 包括四部分 预处理器:对数据进行过滤,并转换为与系统日志文件无关的格式
知识库:包括状态描述库和规则库。规则库用于存放已知攻击类型所对应的状态转移规则;状态描述库存放系统在遭受不同类型攻击下所出现的状态 推理引擎:根据预处理器给出的信息和状态描述库中定义的系统状态,判断状态的变化并更新状态信息。一旦发现可疑的安全威胁,通知决策引擎 决策引擎:将安全事件通知管理员,或者采取预先定义的自动响应措施

65 基于STAT的IDS USTAT NSTAT NetSTAT WinSTAT WebSTAT AlertSTAT
基于主机的IDS,分析Windows NT的事件日志 WebSTAT 基于应用的IDS,用Apache Web Server的日志作为输入 AlertSTAT 是一个高层的入侵关联器,以其他检测器的报警作为输入,以便检测出高层次、多步骤的攻击

66 IDS的部署和结构 入侵检测系统的管理和部署 基于Agent的IDS系统 多种IDS的协作 管理平台和sensor
Purdue大学研制了一种被称为AAFID(Autonomous agents for intrusion detection)的IDS模型 SRI的EMERALD(Event Monitoring Enabling Response to Anomalous Live Disturbances)

67 商业IDS例子: ISS RealSecure结构
RealSecure OS Sensor RealSecure Console RealSecure Network Sensor RealSecure Server Sensor

68 IDS的困难 异常检测技术仍然需要研究和发展 NIDS的部署 应用系统的多样性 IPSec等一些加密或者隧道协议 …… 交换式网络的普及
有些交换机提供了“把多个端口或者VLAN镜像到单个端口”的能力,用于捕获数据包 应用系统的多样性 需要统一的规范交换信息 IPSec等一些加密或者隧道协议 ……

69 IDS与响应和恢复技术 IDS属于检测的环节,一旦检测到入侵或者攻击,必须尽快地做出响应,以保证信息系统的安全
对于一个企业而言,IDS与DRP(Disaster Recovery Planning)需要一起来制订和实施 DRP包括 业务影响分析(BIA, Business Impact Analysis) 数据必须定期备份 信息系统的根本目的是提供便利的服务 灾难评估 明确责任人

70 IDS的研究与发展 IDS自身的发展 IDS与其他学科 IDS之间的互操作 基于异常检测的技术 分布式IDS系统 引入生物学免疫系统的概念
与其他防护系统的集成 IDS与其他学科 IDS与模式识别、人工智能 IDS与数据挖掘 IDS与神经网络 IDS与…… IDS之间的互操作 CIDF: 由美国加州大学Davis分校提出的框架,试图规范一种通用的语言格式和编码方式来表示IDS组件边界传递的数据 IDEF: IETF IDWG提出的草案,规范了部分术语的使用,用XML来描述消息格式。

71 参考资料 书 文章 Web站点 戴英侠等,系统安全与入侵检测,清华大学出版社,2002
Fulvio Risso and Loris Degioanni, An Architecture for High Performance Network Analysis Web站点 UNIX/Linux Programmer’s Manual WinPcap, Libnet, STAT, Snort,


Download ppt "潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse 网络与信息安全 网络安全 (二) 潘爱民,北京大学计算机研究所 http://www.icst.pku.edu.cn/InfoSecCourse."

Similar presentations


Ads by Google