安全现状
表单劫持攻击
Formjacking 是网络攻击者窃取信用卡信息和个人信息最高效的手段之一。
攻击者将恶意JavaScript代码植入电子商务网站,当消费者在购物表格中输入银行信息并选择支付时,恶意软件将会收集消费者所有信息,包含信用卡信息、用户姓名和邮件地址等。
攻击者可能会使用盗窃来的个人信息进行其它网络购买支付,还有可能将泄露的信息抛售给暗网上的其他网络罪犯。
挖矿攻击
攻击者在目标系统中秘密地安装加密货币挖矿软件。该软件一般只消耗CPU算力和电力来处理加密货币交易,攻击者以此赚取佣金,佣金一般是匿名地加密门罗币。
供应链攻击
修改软件下载源头的软件代码,植入恶意代码,并诱导用户下载使用是这种攻击的主要特征。
例如利用用户讨厌苹果官网下载Xcode缓慢的情绪,诱导大家从百度网盘中下载修改版的Xcode,最终导致恶意程序逐步扩散开来。
离地攻击
离地攻击(living-off-the-land)二进制文件,简称为“LoLBins“。LoLBin是操作系统提供的二进制文件,通常用于合法目的,但也有可能被恶意行为者滥用。有一些默认存在的系统二进制文件可能会存在一些“副作用”,从而导致攻击者利用这些系统文件来隐藏他们的恶意活动。
一旦攻击者的恶意代码能与本地程序进行交互,那么攻击者就有可能利用系统的原生工具进行下一步攻击,包括下载附带的其它恶意代码、启动程序、执行脚本、窃取数据、横向扩展、维持访问等。
因为这些工具都是系统自带的、受信任的,所以反恶意软件技术也很难侦测和限制
MaaS
除了黄赌毒等传统的非法商品外,地下黑市还出现了包括黑客服务和恶意软件开发在内的新型服务:恶意软件即服务(Malware-as-a-Service,MaaS )。
网络犯罪分子通过地下黑客论坛浏览”商品“,同时使用匿名通讯工具进行在线交流,最后使用加密数字货币进行匿名交易,整个流程可以做到完全隐匿。即使是不具备任何技术经验的小白也可以使用购买来的工具轻易发动攻击。
RaaS
RaaS(ransomware-as-a-service,勒索软件即服务)
勒索软件是感染受害者的机器并阻止或加密他们的文件的恶意代码,黑客通过其来要求受害用户支付赎金。当勒索软件安装在受害者机器上时,它会搜索并定位敏感文件和数据,包括财务数据,数据库和个人文件。开发勒索软件的目的是为了让受害者的机器无法使用。用户只有两种选择:一是在没有获取原始文件的保证的情况下支付赎金,二是将 PC 从互联网断开。
勒索软件即服务是恶意软件销售商及其客户的盈利模式,使用这种方法的恶意软件销售商可以获取新的感染媒介,并有可能通过传统方法(如电子邮件垃圾邮件或受损网站)接触到他们无法达到的新受害者。RaaS 客户可以通过 Ransomware-as-a-Service 门户轻松获取勒索软件,只需配置一些功能并将恶意软件分发给不知情的受害者即可。
社会工程学
2002年,Kevin Mitnick 《The Art of Deception》首次提出社会工程学。
社会工程学是指,通过自然的、社会的和制度上的途径,利用人的心理弱点(如本能反应、好奇心、信任、贪婪)以及规则制度上的漏洞,在攻击者和被攻击者之间建立起信任关系,获得有价值的信息,最终可以通过未经授权的路径访问经过授权才能访问的资源。
网络安全态势
- 卫星联网、车联网、飞机联网等等,网络的融合使安全已经全面贯通,安全问题也得以延申
- ”云“的发展将带来新的安全问题
- ”量子“的发展。新理论和技术会对安全带来质的影响
- 国家及军事级网络对抗将成为安全发展重点
- 网络安全已经往”认知“层面发展,”人“已经成为安全目标
- 多国已经成立网络战部队,将战场扩展到虚拟空间。未来人类战争也许是网络空间的较量
- AI被滥用造成安全问题。攻击者使用AI伪造他人字迹、声音、视频等,完全做到以假乱真。
网络安全概述
资产保护
资源分类
- 物理资源:具有物理形态的资产
- 知识资源:以电子的形式存在,可以是任何信息的形式,在组织的事务处理中起一定的作用
- 时间资源:时间也是资源,甚至是一个组织最有价值的资源
- 信誉资源:消费者和股票持有者对一个组织的可信度
造成损失
- 即时的损失。如ISP的在线服务中断带来经济上的损失
- 长期的恢复所需花费:从攻击或失效到恢复正常需要的花费
网络安全保障模型
- PDRR安全模型-策略即安全
- P2DR安全模型-时间即安全
- PDCA安全模型-管理即安全
网络攻击类型及分类
从安全属性来看,攻击类型可分为4类:阻断攻击、截取攻击、篡改攻击、伪造攻击
- 阻断攻击:破坏系统资产,使之无法服务用户,是一种针对可用性的攻击。如破坏硬盘,切断通信线路等
- 截取攻击:使非授权者可以访问资产,是一种针对机密性的攻击。如通过窃听获取网上数据等
- 篡改攻击:非授权者不仅可以访问资产,还能修改信息,是一种针对完整性的攻击。如修改网上正在传送的报文内容
- 伪造攻击:非授权者在系统中插入伪造的信息,是一种针对真实性的攻击。如插入伪造的报文
从攻击方式来看,攻击类型可以分为被动攻击和主动攻击
- 被动攻击:目的是获取正在传输的信息。检测困难,但可以阻止。一般强调的是阻止而不是检测。
- 主动攻击:难以阻止,因而只能采取检测的方法,并从破坏中恢复。
网络安全服务
针对不同攻击需要的安全服务:
- 机密性服务:提供信息的包密
- 完整性服务:提供信息的正确性
- 可用性服务:提供的信息是可用的
- 可审性服务:本身不针对攻击提供保护,需要与其它服务结合
机密性防护
- 文件机密性
- 信息传输机密性
- 通信流机密性
完整性防护
- 文件完整性
- 信息传输完整性
可用性防护
- 后备:对重要信息复制一更拷贝,并将其存储在安全的地方
- 在线恢复
- 灾难恢复:针对大的灾难来保护系统
可审性防护
- 身份标识与身份鉴别
- 身份认证技术
- 身份认证协议
- 审计功能
Kerberos鉴别
Kerberos鉴别是一种使用对称密钥加密算法来实现 通过可信第三方密钥分发中心(KDC)的身份认证系统。
Kerberos 系统非常适合在一个物理网络并不安全的环境下使 用,它的安全性经过了实践的考验。
网络安全评估
安全评估准则
- 可信计算机系统评估准则(TCSEC)
- 信息技术安全评估准则(ITSEC)
- 信息安全技术通用评估准则(CC)
- 我国信息安全评估准则
网络安全评估方式
- 风险评估
- 生存性评估
- 网络安全态势评估
- 网络攻击效果评估
- 安全测评
- 信息安全工程能力评估
- 信息系统审计
风险评估常用方法
- 基于知识的分析方法
- 基于模型的分析方法
- 定量分析
- 定性分析
风险评估工具
- 调查问卷
- 检查列表
- 人员访谈
- 漏洞扫描器
- 渗透测试
- 自动化风险评估工具
风险评估基本过程
生存性评估典型方法
评估方式比较
网络安全标准
网络安全标准化组织
- ISO:国际标准化组织(International Organization for Standardization)
- IEC:国际电工委员会(International Electro-technical Commission)
- ITU:国际电信联盟(International Telecommunication Union)
- IETF:互联网工程任务组(IETF,The Internet Engineering Task Force),成立于1985年 底,其主要任务是负责互联网相关技 术规范的研发和制定。
网络安全标准分类
网络攻击
DNS威胁与防范
DNS概述
域名系统(Domain Name System,DNS)负责在域名和IP地址间进行转换。网络上的机器是使用ip地址唯一标识的,要访问某一台主机,我们就输入其ip地址。但是人们为了方便记忆,发明了DNS,使得网站站长可以使用一个“别名”来唯一标识其网站,让用户更方便记住。如www.baidu.com.要使的别名能正确工作,就得配置好DNS.
因特网得域名系统被设计成为一个联机分布式数据库系统,并采用客户服务器方式运行。由于DNS是分布式系统,即使单个计算机出现故障,也不会妨碍整个系统得运行。
DNS使用的大多数名字都可以在本地解析,仅有少量解析需要在因特网上通信,因此效率很高
域名系统采用层次树状结构的命名方法,任何一个连接到因特网的主机或路由器都有一个唯一的层次结构的名字,即域名(Domain Name)。域还可以继续划分为子域,域名结构由若干分量组成,各分量之间用点隔开
如:三级域名.二级域名.顶级域名
域名资源记录
域名资源记录是一个五元组,可以用以下格式表示: Domain_name Time_to_live Class Type Value
其中:
- Domain_name: 指出这条记录适用于哪个域名;
- Time_to_live: 用来表明记录的生存周期,也就是说多可以缓存该记录多长时间(缓存机制);
- Class: 一般总是IN;
- Type: 记录的类型; 5.Value: 记录的值,如果是A记录,则value是一个IPv4地址。
域名资源类型
DNS常用命令
- ipconfig/all:查看网络配置情况,包括DNS服务器IP
- ipconfig/flushdns:刷新DNS缓存
- ipconfig/displaydns:查看DNS缓存
- Nslookup:查看DNS解析结果
DNS工作流程
查询方式
递归查询:一般客户机和服务器之间是递归查询,DNS服务器如果未能在本地找到相应的信息,就代替用户向其它服务器进行查询,这时它是代替用户扮演了解析器(resolver)的角色,直到最后把结果找到,也可能根本没有结果,那就返回错误,并返回给用户为止
迭代查询:一般服务器之间属于反复查询。DNS服务器返回的要么是本地存在的结果信息,要么是一个错误码,告诉查询者你要的信息这里没有,然后再返回一个可能会有查询结果的DNS服务器地址,让查询者到那里去查一查。
DNS协议
DNS协议工作在应用层,既可以使用TCP也可以使用UDP,其端口为53。
DNS主从服务器之间使用TCP协议
客户端与DNS服务器之间使用UDP协议
DNS报文格式
- 会话标识:ID标识,用于区分DNS应答报文是哪一个请求的响应
- 标志位:查询方式,如查询or应答,标准查询or逆向查询等等
- questions:查询问题区域节的数量
- Answer RRs:回答区域的数量
- Authority RRs:授权区域的数量
-
Additional RRs:附加区域的数量
-
Queries区域:
长度不固定,一般不使用填充字节。一般是待查询的域名;若是反向查询,则为IP
查询类型
查询类:通常为1,表明是Internet数据
-
资源记录(RR)区域(包括回答区域、授权区域和附加区域)
域名:格式和Queries区域查询名字字段一样
查询类型:同Queries
查询类:对于Internet,总是1
生存时间:以秒为单位,表示资源记录生命周期
资源数据:是一个可变长字段,表示按照查询段的要求返回的相关资源记录的数据
DNS安全威胁
DNS应答包被客户端接受需要满足以下5个条件:
- 应答包question域和请求包域的域名信息一致
- 应答包的Transaction ID和请求包中的Transaction ID一致
- 应答包的源IP地址与请求包的目的地址一致
- 应答包的目的地址和端口与请求包的源IP地址和端口一致
- 第一个到达的符合以上四个条件的应答包
从以上5个条件可以看出,DNS协议存在很多漏洞。DNS的安全漏洞主要体现在以下3个方面:
- DNS报文只使用序列号来进行有效性鉴别,序列号由客户端程序设置并由服务器返回结果,客户端程序通过它来确定响应与查询是否匹配,这就引入了序列号攻击的危险
- 从协议定义上看,在DNS应答报文中可以附加信息,该信息可以和所请求的信息没有直接关系,这样,攻击者就可以在应答中随意添加某些信息,如:指示某域的权威域名服务器的域名及IP,导致在被影响的域名服务器上查询该域的请求都会被转向攻击者所指定的域名服务器上去,从而对网络的完整性构成威胁
- DNS的缓存机制,当一个客户端/DNS服务器收到有关域名和IP的映射信息时,它会将该信息存放在缓存中。当再次遇到对此域名的查询请求时就直接使用缓存中的结果而无需重新查询。可以通过
ipconfig/displaydns
命令查看本地DNS缓存信息
DNS欺骗攻击
DNS欺骗攻击流程
测试环境:攻击者可以监听到Client与Server之间的通信
如下图所示第2个数据包是攻击者(172.16.0.110)伪装成(172.16.0.3)返回的虚假应答包,由于它是第一个到达的符合条件的数据包,所以会被(172.16.0.2)接受。 当(172.16.0.2)通过域名hhz.242.net去访问主机时,会被错误的引导到(172.16.0.110)
DNS下毒攻击
DNS下毒攻击流程
测试环境:攻击者可以监听到DNS服务器之间的通信
下图中第三个数据包是攻击者(172.16.0.5)伪装成服务器(172.16.0.2)发送 的应答包,这样就可以把虚假信息:1.242.com对应的IP地址为222.128.5.182 放入服务器(172.16.0.4)的缓存中
下毒结果验证:172.16.0.5再次向DNS服务器172.16.0.4查询 1.242.com的信息,可以看到DNS服务器没有向172.16.0.2查询, 而是直接给出了应答,这说明它的缓存中存在1.242.com的信息, 通过抓包分析,下毒攻击是成功的。此类攻击时一般会将TTL值设 成较长的时间
DNS拒绝服务攻击
黑客向运行BIND的设备发送特定的DNS数据包请求,BIND就会自动关闭。攻击者只能使BIND停止提供域名解析服务而不能在服务器上执行任何命令
造成的危害:域名无法解析,用户无法访问互联网
DNS安全防范
应对DNS服务器面临的安全隐患主要依据以下两个准则:
- 选择安全的没有缺陷的BIND版本
- DNS服务器配置正确可靠
BIND安全配置
-
隔离DNS服务器
DNS服务器上不应该再运行其它服务,尤其是允许普通用户登录,减小攻击者利用其它服务漏洞攻击DNS服务器的概率
-
为BIND创建chroot
chroot是指更改某个进程所能看到的根目录,即将某进程限制在指定的目录中,保证该进程只能对该目录及其子目录有所动作,从而保证整个服务器的安全。
-
隐藏BIND版本号
通过发送特殊的DNS查询包,DNS服务器会返回其版本信息。
通常软件的Bug信息是和特定版本相关的,因此版本号是黑客寻求的最有价值的信息。隐藏BIND版本号只需要修改配置文件/etc/name.conf,在options部分添加version声明,将BIND版本号覆盖即可:
options{ version “I will not tell you”; };
-
请求限制
DNS服务器响应任何人的任何请求是不安全的,修改BIND的配置文件/etc/named.conf,添加相应内容限制DNS服务器的服务范围
-
限制区传送
默认情况下BIND的区传送是全部开放的,如果没有限制,DNS服务器允许任何人进行区传送,那么网络架构中的主机名,主机ip地址表、路由器名及路由IP表,甚至包括各主机所在的位置和硬件信息等情况很容易被入侵者得到。因此需要对区传送进行必要的限制
-
关闭动态更新
在RFC2136中提出DNS动态更新,使得DNS客户端ip地址或名称出现更改时,可以利用DNS服务器注册和动态更新其资源记录。 虽然DNS动态更新规定了怎样的系统才允许更新一台DNS服务器中的 记录,但是DNS仍然可能受到威胁,比如攻击者利用IP欺骗,伪装成 DNS服务器信任的主机对系统进行更新或者删减、增加、修改资源记录。
DNS其它加固措施
-
事务签名(TSIG)技术
利用公钥机制为区域资料进行数字事物签章的动作,保证 每次传输的source record 具有可验证性与不可否认性
-
DNSSEC
DNSSEC主要依靠公钥技术对包含在DNS中的信息创建密 码签名。密码签名通过计算一个哈希值来提供DNS中数据 的完整性,并将该哈希值封装进行保护。私钥用来封装哈 希值,公钥把哈希值解密出来,通过解密出的哈希值就可 以判断数据的完整性。
-
配置DNS Flood Detector
DNS Flood Detector是针对DNS服务器的Flood攻 击的检测工具,用于侦测恶意的使用DNS的查询功 能。它会监控向服务器查询名称解析的数量,分成 守护进程(daemon)和后台(bindsnap)模式。 守护进程模式会发出警示(/var/log/message)。Bindsnap模式可以得到接近实时的查询状态。
ARP攻击
网卡工作模式
- 广播(Broadcast)模式,可以接收局域网内目的地址为广播地址(全1地址)的所有数据报
- 多播(Multicast)模式,可以接收目的地址为多播地址的所有数据报
- 直接(Directory)模式,也就是单播(Unicast)模式,只接收目的地址为本机MAC地址的所有数据报
- 混杂(Promiscuous)模式,能够接收通过网卡的所有数据报
ARP协议
地址解析协议,即 ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP 协议。
报文格式
- 硬件类型:如以太网(0x0001)、分组无线网。
- 协议类型:如网际协议(IP)(0x0800)、IPv6(0x86DD)。
- 硬件地址长度:每种硬件地址的字节长度,一般为6(以太网)。
- 协议地址长度:每种协议地址的字节长度,一般为4(IPv4)。
- 操作码:1为ARP请求,2为ARP应答,3为RARP请求,4为RARP应答。
- 源硬件地址:n个字节,n由硬件地址长度得到,一般为发送方MAC地址。
- 源协议地址:m个字节,m由协议地址长度得到,一般为发送方IP地址。
- 目标硬件地址:n个字节,n由硬件地址长度得到,一般为目标MAC地址。
- 目标协议地址:m个字节,m由协议地址长度得到,一般为目标IP地址。
基本功能
在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
另外,当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)
工作流程
在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的,如下表所示
以主机A(192.168.38.10)向主机B(192.168.38.11)发送数据为例:
- 当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到就知道目标MAC地址为(00-BB-00-62-C2-02),直接把目标MAC地址写入帧里面发送就可
- 如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播(ARP request),目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.38.11的MAC地址是什么?”
- 网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应(ARP response):“192.168.38.11的MAC地址是00-BB-00-62-C2-02”,此回应以单播方式。这样,主机A就知道主机B的MAC地址,它就可以向主机B发送信息。同时它还更新自己的ARP高速缓存(ARP cache),下次再向主机B发送信息时,直接从ARP缓存表里查找就可
ARP缓存表采用老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可减少缓存表的长度,加快查询速度
ARP攻击技术
发送大量虚假MAC地址数据报
- 交换机虽然可以维护一张端口-MAC的地址表,但是由于交换机内存有限,地址映射表的大小就有限
- 如果主机C发送大量虚假MAC地址的数据报,快速填满地址映射表。交换机在地址映射表被填满后,就会像HUB一样以广播方式处理数据报
- 这种方法不适合采用静态地址映射表的交换机,而且也不是所有交换机都采用这种转发处理方式
ARP欺骗
ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网上上多译为**ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网上上特定计算机或所有计算机无法正常连线
ARP欺骗的运作原理是由攻击者发送假的ARP数据包到网上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此攻击者可将这些流量另行转送到真正的网关(被动式数据包嗅探,passive sniffing)或是篡改后再转送(中间人攻击,man-in-the-middle attack)。攻击者亦可将ARP数据包导到不存在的MAC地址以达到阻断服务攻击的效果,例如netcut软件
注意:攻击者在监听过程中,需要不断地向主机A和主机B发送伪造的ARP应答包,因为如果没有更新信息,ARP映射项会自动删除
修改本地MAC地址
通过修改本地MAC地址为目标主机MAC地址来实现嗅探。 把主机C的MAC地址修改为目标主机B的MAC地址,交换机会将 MACB和端口c对应起来
在以后收到目的地址为MACB的数据报后,交换机会将包从端口 c发送出去。这样就达到了监听的目的
但同样地,这种方法只适用于动态生成地址映射表的交换机, 并且没有采用其它策略
ARP攻击溯源
方法一:捕包分析
在网络内任意一台主机上运行抓包软件,捕获所有到达本机的数据包。 如果发现有某个IP不断发送ARP Request请求包,那么这台电脑一般就是攻击源
原理:ARP攻击行为方式主要有两种,一是欺骗网关,二是欺骗网内的所有主机。最终的结果是,在网关的ARP缓存表中,网内所有活动主机 的MAC地址均为中毒主机的MAC地址;网内所有主机的ARP缓存表中, 网关的MAC地址也成为中毒主机的MAC地址。前者保证了从网关到网内主机的数据包被发到中毒主机,后者相反,使得主机发往网关的数据包均发送到中毒主机。
方法二:使用arp-a命令
任意选两台不能上网的主机,在DoS命令 窗口下运行arp-a命令。如果在结果中,两台电脑除了网关的IP, MAC地址对应项,都包含了192.168.0.186的这个IP,则可以断定 192.168.0.186这台主机就是攻击源
原理:一般情况下,网内的主机只和网关通信。正常情况下,一台主机的ARP缓存中应该只有网关的MAC地址。如果有其他主机 的MAC地址,说明本地主机和这台主机最后有过数据通信发生。 如果某台主机(例如上面的192.168.0.186)既不是网关也不是服务器,但和网内的其他主机都有通信活动,且此时又是ARP攻击发作时期,那么攻击源也就是它了
方法三:使用tracert命令
在任意一台受影响的主机上,在 DoS命令窗口下运行如下命令:tracert 61.135.179.148
假定设置的缺省网关为10.8.6.1,在跟踪一个外网地址时, 第一跳却是10.8.6.186,那么,10.8.6.186就是攻击源
原理:中毒主机在受影响主机和网关之间,扮演了“中间人” 的角色。所有本应该到达网关的数据包,由于错误的MAC 地址,均被发到了中毒主机。此时,中毒主机越俎代庖,起 了缺省网关的作用
ARP攻击防御办法
方法一:减少过期时间
加快过期时间,并不能避免攻击,但是使得攻击更加困难,带来的影响是在网络中会大量的出现 ARP 请求和回复,请不要在繁忙的网络上使用
方法二:建立静态ARP表
这是一种很有效的方法,而且对系统影响不大。缺点是破坏了动态 ARP 协议。可以建立如下的文件:
test.nsfocus.com 08:00:20:ba:a1:f2
user. nsfocus.com 08:00:20:ee:de:1f
使用arp –f filename
加载进去,这样的ARP映射将不会过期和被新的ARP数据刷新,除非使用arp –d
才能删除。但是一旦合法主机的网卡硬件地址改变,就必须手工刷新这个arp文件。这个方法不适合于经常变动的网络环境
方法三:禁止ARP
可以通过ipconfig interface –arp
完全禁止ARP,这样, 网卡不会发送ARP和接收ARP包。但是使用前提是使用静态的ARP表,如果不在ARP表中的计算机 ,将不能通信
这个方法不适用于大多数网络环境,因为这增加了网络管理的成本。但是对小规模的安全网络来说, 还是有效可行的
拒绝服务攻击
基本概念
拒绝服务攻击,英文名称是Denial of Service,简称DOS,即拒绝服务,造成其攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击
带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽, 最后导致合法的用户请求无法通过
连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求
典型的拒绝服务攻击
- Ping of Death
- Teardrop
- Land
- Syn Flood
- Smurf
- HTTP Flood
- CC
Ping of Death
- A ping of death is a type of attack on a computer system that involves sending a malformed or otherwise malicious ping to a computer.
- 早期的操作系统处理ICMP分组时,只开辟64KB缓冲区用来存放收到的数据包
- 攻击者故意在ICMP Echo数据包(Ping包)之后附加非常多的冗余信息,使数据包的尺寸超过65535个字节的上限
- 接收方对这种数据包进行处理时就会出现内存分配错误,导致TCP/IP堆栈溢出,从而引起系统崩溃,挂起或重启
死亡之ping是如何工作的呢?首先是因为以太网长度有限,IP包片段被分片。当一个IP包的长度超过以太网帧的最大尺寸(以太网头部和尾部除外)时,包就会被分片,作为多个帧来发送。接收端的机器提取各个分片,并重组为一个完整的IP包。在正常情况下,IP头包含整个IP包的长度。当一个IP包被分片以后,头只包含各个分片的长度。分片并不包含整个IP包的长度信息,因此IP包一旦被分片,重组后的整个IP包的总长度只有在所在分片都接受完毕之后才能确定。
在IP协议规范中规定了一个IP包的最大尺寸,而大多数的包处理程序又假设包的长度超过这个最大尺寸这种情况是不会出现的。因此,包的重组代码所分配的内存区域也最大不超过这个最大尺寸。这样,超大的包一旦出现,包当中的额外数据就会被写入其他正常区域。这很容易导致系统进入非稳定状态,是一种典型的缓存溢出(Buffer Overflow)攻击。在防火墙一级对这种攻击进行检测是相当难的,因为每个分片包看起来都很正常。
预防死亡之ping的最好方法是对操作系统打补丁,使内核将不再对超过规定长度的包进行重组
Teardrpop
Teardrop攻击是一种畸形报文攻击。是基于UDP的病态分片数据包的攻击方法,其工作原理是向被攻击者发送多个分片的IP包(IP分片数据包中包括该分片数据包属于哪个数据包以及在数据包中的位置等信息),某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象(假设数据包中第二片IP包的 偏移量小于第一片结束的位移,而且算上第二片IP包的Data, 也未超过第一片的尾部,这就是重叠现象)
检测方法
对接收到的分片数据包进行分析,计算数据包的片偏移量(Offset)是否有误。
反攻击方法:添加系统补丁程序,丢弃收到的病态分片数据包并对这种攻击进行审计。尽可能采用最新的操作系统,或者在防火墙上设置分段重组功能,由防火墙先接收到同一原包中的所有拆分数据包,然后完成重组工作,而不是直接转发。因为防火墙上可以设置当出现重叠字段时所采用的规则
Land攻击
LAND攻击(局域网拒绝服务攻击,英语:Local Area Network Denial attack,缩写:LAND attack),是拒绝服务攻击(DoS攻击)的一种。利用特殊的TCP封包传送至目标主机,使其因无法判别而宕机或被迫重新启动
攻击原理是:用一个特别构造的SYN包,它的源地址和目标地址都被设置成某一个服务器地址。此举将导致接受服务器向它自己的地址发送SYN一ACK消息,结果这个地址又发回 ACK消息并创建一个空连接。被攻击的服务器每接收一个这 样的连接都将保留,直到超时
防范
大多数防火墙都能拦截类似的攻击包,以保护系统。部分操作系统通过发布安全补丁修复了这一漏洞。另外,路由器应同时配置上行与下行筛选器,屏蔽所有源地址与目标地址相同的数据包
SYN洪水
原理
- 每个机器都需要为半开连接分配一定的资源
- 这种半开连接的数量是有限制
- 攻击方利用TCP连接三次握手过程,打开大量的半开TCP连接(第三次不握手)
- 目标机器不能进一步接受TCP连接。机器就不再接受进来的连接请求
攻击细节
- 连接请求是正常的,但是,源IP地址往往是伪造的,并且是一台不可达的机器的IP地址,否则,被伪造地址的机器会重置这些半开连接
- 一般,半开连接超时之后,会自动被清除,所以,攻击者的系统发出SYN包的速度要比目标机器清除半开连接的速度要快
- 任何连接到Internet上并提供基于TCP的网络服务,都有可能成为攻击的目标
- 这样的攻击很难跟踪,因为源地址往往不可信,而且不在线
检测
检测SYN攻击非常方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击
攻击防范
SYN攻击不能完全被阻止,我们所做的是尽可能的减轻SYN攻击的危害,除非将TCP协议重新设计
- 过滤网关防护
- 网关超时设置
- SYN网关
- SYN代理
- 调整tcp/ip协议栈
- SynAttackProtect机制
- SYN cookies技术
- 增加最大半连接数
- 缩短超时时间
Smurf
攻击者向一个具有大量主机和因特网连接的网络的广播地址发送一个欺骗性Ping分组(echo 请求),这个目标网络被称为反弹站点,而欺骗性Ping分组的源地址就是攻击者希望攻击的目标地址。
最终导致该网络的所有主机都对此ICMP应答请求做出答复,第三方崩溃
这种攻击的前提是,路由器接收到这个发送给IP广播地址(如206.121.73.255)的分组后,会认为这就是广播分组,并且把以太网广播地址FF:FF:FF:FF:FF:FF:映射过来。这样路由器因因特网上接收到该分组,会对本地网段中的所有主机进行广播
防御
挫败一个Smurf攻击的最简单的方法就是对边界路由器的应答(echo reply)信息包进行过滤,然后丢弃他们,使网络避免被湮没
HTTP洪水
-
这类攻击会占用大量的HTTP进程,从而耗费大量的系统资源。最终会导致系统因不堪重负而崩溃掉
-
以典型的HTTP GET FLOOD攻击为例。
HTTP GET FLOOD是针对应用服务器上的某个文件,对其进行快速的反复的重复读取操作,从而造成服务器的资源减少直至崩溃
HTTP GET FLOOD针对的不仅仅是WEB服务器,还有数据库服务器。大量的HTTP请求产生了大量的数据库查询,可以在几秒之内使数据库停止响应,系统负载升高,最终导致服务器宕机
CC攻击
CC(ChallengeCollapsar,挑战黑洞)攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。攻击者使用代理机制,利用众多广泛可用的免费代理服务器发动DDoS攻击。许多免费代理服务器支持匿名模式,这使追踪变得非常困难
CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃
CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止
如何防御
对于CC攻击.其防御必须采用多种方法,而这些方法本质上也是在提高服务器的并发能力
- 服务器垂直扩展和水平扩容
- 数据缓存(内存级别,不要用文件)
- 页面静态化
- 用户级别的调用频率限制
- IP限制
慢速DDoS攻击
Slow headers:Web应用在处理HTTP请求之前都要先接收完所有的HTTP头部,因为HTTP头部中包含了一些Web应用可能用到的重要的信息。而HTTP协议规定,HTTP Request以\r\n\r\n
(0d0a0d0a)结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送\r\n\r\n
会如何?攻击者利用这点,发起一个HTTP请求,一直不停的发送HTTP头部,消耗服务器的连接和内存资源。抓包数据可见,攻击客户端与服务器建立TCP连接后,每30秒才向服务器发送一个HTTP头部,而Web服务器再没接收到2个连续的\r\n时,会认为客户端没有发送完头部,而持续的等待客户端发送数据。如果攻击者使用多线程或者傀儡机来做同样的操作,服务器的Web容器很快就被攻击者占满了TCP连接而不再接受新的请求
Slow body:攻击者发送一个HTTP POST请求,该请求的Content-Length值很大,使得Web服务器或代理认为客户端要发送很大的数据。服务器会保持连接准备接收数据,但攻击客户端每次只发送很少量的数据,使该连接一直保持存活,消耗服务器的连接和内存资源。抓包数据可见,攻击客户端与服务器建立TCP连接后,发送了完整的HTTP头部,POST方法带有较大的Content-Length,然后每10s发送一次随机的参数。服务器因为没有接收到相应Content-Length的body,而持续的等待客户端发送数据
Slow read:客户端与服务器建立连接并发送了一个HTTP请求,客户端发送完整的请求给服务器端,然后一直保持这个连接,以很低的速度读取Response,比如很长一段时间客户端不读取任何数据,通过发送Zero Window到服务器,让服务器误以为客户端很忙,直到连接快超时前才读取一个字节,以消耗服务器的连接和内存资源。抓包数据可见,客户端把数据发给服务器后,服务器发送响应时,收到了客户端的Zero Window提示(表示自己没有缓冲区用于接收数据),服务器不得不持续的向客户端发出ZeroWindowProbe包,询问客户端是否可以接收数据
DoS检测
分类
按检测模式分类
- 基于误用的DDoS检测
- 基于异常的DDoS检测
- 基于混合模式DDoS检测
按算法部署位置分类
- 源端检测
- 中间网络检测
- 目的端检测
- SDN下的DoS检测
基于误用的DDoS检测
基于误用的DDoS攻击检测是指事先收集已有DDoS攻击的各种特征, 然后将当前网络中数据包的特征和各种攻击特征相互比较,如果 特征匹配则发现DDoS攻击
基于误用方法依赖于攻击特征的选取, 一般用于检测利用漏洞型 的DDoS攻击。
基于异常的DDoS检测
基于异常的DDoS攻击检测是指通过监视系统审计记录上系统使用的异常情况,可以检测出违反安全的事件。目前,大多数的DDoS攻击检测都属于异常检测
基于异常的DDoS检测取决于检测模型的建立,不同的模型对应着不同的检测方式,主要包括统计检测、模式预测、人工智能检测、机器学习检测四种方法
基于混合模式DDoS检测
混合模式DDoS攻击检测是将误用DDoS攻击检测和异常DDoS攻击检测两种方式混合使用
通常使用数据挖掘的方法, 由异常检测发现攻击, 从发现的攻击中摘录特征放入误用模式特征库中, 再利用误用检测的方法来检测DDoS攻击。但实际效果根据具体情况的不同也有差异
源端检测
源端DDoS攻击检测指的是将检测算法布置在发出攻击数据包的主机所处网络的边界路由器上
将DDoS攻击检测系统部署在源端,可以使得攻击数据流在进入网络之前被阻止
中间网络检测
中间网络DDoS攻击检测是指将攻击检测算法部署在整个网络上,包括路由器、交换机或其它网络设备
通常是在核心路由器上部署分布式的DDoS防御系统
目的端检测
目的端DDoS攻击检测是指将攻击检测算法部署在被攻击的主机和相关网络设备上。目前应用最多的攻击检测都是在目的端进行的
DDoS攻击检测方法的分析
基于数据挖掘的DDoS检测技术
利用数据挖掘算法中的关联算法和聚类算法分步处理数据, 能够自动地、实时地、有效地检测DoS攻击
低速率拒绝服务
低速率拒绝服务攻击(low-rate denial-of-service,简称LDoS)是近年来提出的一类新型攻击,其不同于传统洪(flood)泛式DoS攻击,主要是利用端系统或网络中常见的自适应机制所存在的安全漏洞,通过低速率周期性攻击流,以更高的攻击效率对受害者进行破坏且不易被发现
特点
- 攻击目标是各种自适应机制,攻击引起的反应和调整是合法的
- 攻击流量与许多真实的数据流特征类似,隐蔽性好
- 攻击成本低,一个单一的攻击源就可以发动一次攻击,需要发送的数据远小于泛洪式DoS攻击
检测
- 特征检测
- 异常检测
- 小波变换分析:离散小波变换
- 频谱分析:傅里叶变换、功率谱分析
- 统计分析:统计模型、马尔可夫模型
- 信息度量分析:信息熵、广义熵、信息距离
- 小信号分析:小信号检测理论,特征估值矩阵
SQL注入
SQL注入攻击简介
SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL
SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。如Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取对数据库的信息以及提权,发生SQL注入攻击
SQL攻击示例
ASP/SQL注入
结果是由于or 1=1
的永真语句和 --
注释的存在,使得攻击者可以不需要提供正确的用户名密码就能登陆系统
PHP/MySQL注入
SQL注入攻击原理
本质
把用户输入的数据当作代码执行
关键
- 用户能够控制输入
- 原本程序要执行的代码,拼接了用户输入的数据
SQL盲注
所谓盲注即在服务器没有错误回显提示的情况下完成SQL注入攻击
简单盲注
基于时间的盲注
当简单的盲注不起作用时,可以使用另一个盲注技巧:Timing Attack
MySQL中的benchmark()
函数用于测试函数性能。benchmark(count, expr)
表示将表达式expr执行count次
攻击者正是利用该函数,使一个函数执行若干次以增加响应时间。通过响应时间长短的变化判断注入语句是否成功执行
SQL常见攻击技巧
SQL命令执行
SQL攻击存储过程
存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户调用存储过程并传递参数来执行它
SQL其它方式
编码问题
sql column truncation
SQL注入基本流程
寻找注入点
注意
信息采集
在判断出注入点之后就可以进行一些基本的信息采集:
- 数据库类型(SQL Server,Access,MySQL等)
- 当前数据库名
- 所有数据库名
- 数据库用户
- 数据库中的表名及表中字段名
- ……
数据库类型
一般ASP最常搭配的数据库是Access和SQLServer,网上超过99%的网站都是其中之一
判断的方法有很多,如:
-
根据数据库语句注释符的不同
MS SQL使用
--
、Access使用#
-
根据系统变量判断
-
根据系统表的不同判断
版本号
其它信息
还可以通过一些工具来进行信息采集,如Pangolin
权限判断
攻击系统
SQL注入攻击工具
- Paros
- Pangolin
- 啊D注入工具
- sqlmap
SQL注入攻击防范
从两方面入手:
服务器安全
- IIS服务器的安全配置
- MySQL的安全配置
- SQL Server的安全配置
- 数据库加密
代码安全
- ASP代码安全
- PHP代码安全
MySQL的安全配置
- 最小权力法则(只拥有必要的权限)
- 用户账号安全法则(禁用默认的root管理员账号,新建一个复杂的用户名和密码管理数据库)
- 内容加密(存储时加密,检索时解密)
- 存储过程控制(用户无权通过SQL语句来实现对系统命令的调用)
- 及时更新MySQL的最新补丁
SQL Server的安全配置
-
用户设置(权限分配)
用于程序连接的用户不应该使用服务器角色组,而应使用数据库用户角色组
默认的系统管理员级别的用户名SA不能随便设置,因为该权限一旦被SQL注入攻击者取得后就有可能调用系统 的扩展存储命令,如xp_cmdshell 等来获取系统的最高权限,并对系统造成严重的威胁。其最好的防范方法是只赋予数据库读、 写权限
除此之外,SQL Server 应该精确的设置对数据库每一个表的各项操作权限
-
文件设置
对通过特定文件连接数据库的方式最好加密此文件,以防止恶意用户修改连接文件做到绕过认证的目的,同样加密文件也是一种有效的被动保护方式,即使攻击者盗取文件,也无法正常获得真实内容
-
系统设置
利用网络辅助设备,关闭TCP1433/UDP1434 端口对外的连 接,防止其他非开放形式的数据库注入攻击。同样如其他网络设备一样应及时给SQL Server 打上最新补丁
PHP代码安全
- 设置“register_globals”为“off”
该选项来设置启用/禁止PHP 为用户输入创建全局变量,设置为“off”表示:如果用户提交表单变量“a”,PHP 不会创建“&a”, 而只会创建“HTTP GET/POST VARS[‘a’]”
-
设置“magic_quotes_gpc”为“on”
该选项是可以将一些输入的特殊字符自动转义
-
设置“safe_mode”为“on”
打开这个选项会增加几条限制:限制指定命令可以执行、限制指定函数可以使用、基于脚本所有权和目标文件所有权的文件访问限制、禁止文件上传功能
-
设置“open_basedir”为“off”
它可以禁止指定文件目录之外的文件操作,有效解决include()函数攻击
-
设置“display_errors”为“off”
此时是禁止把错误信息显示在网页上,因为这些语句中可能会返回应用程序中的有关变量名、数据库用户名、表结构信息等。 恶意用户有可能利用其中获取的有关信息进行注入攻击。也可以设置此选项为“on”,但是要修改脚本返回的错误信息,使其发 生错误时只显示一种信息
-
设置“allow_url_fopen”为“off”
这个设置可以禁止远程文件功能
-
intval()函数
如果输入整形的变量,只需要利用此函数可解决问题,系统会在执行查询之前处理变量。如:
mysql_query("select * from users where userid = “.intval($id)."
-
addslashes()函数
此函数与magic_quotes_gpc功能一样,将一些输入的特殊字符自动转义。它与magic_quotes_gpc设置与否无冲突。如:
mysql_query(“select * from users where username = “.addslashes($username).”)
-
传输数据加密
如
username = md5($HTTP_POST_VARS[“username”])
-
限制输入长度与类型
在用户提交表单时设置长度限制,可有效阻止注入的猜测语句
ASP代码安全
- 源代码泄露缺陷(备份文件的保护等)
目前有很多编译软件在修改源代码后回自动生成备份文件,用户提交 URL来获得这些文件就可以轻易的查看ASP 源代码,攻击者通过分析其内部运行机理来进行攻击。所以开发人员应该尽量避免使用这种编译软件,或及时删除备份文件
-
禁止返回错误提示语句
在SQL Server 的安全配置中已经提到过,需要关闭错误提示选项或通过编写脚本语言来更改错误信息内容,最终的目的是不让攻击者在错误提示中获取任何有用信息
-
禁止直接存放敏感文件 这与上节分析的数据库加密系统进行数据加密不同,有些用户的登陆信息存放在Session的Cookie中,可以利用简单的MD5()加密函数对存放的信息加密,避免用户信息的泄露
SQL注入防御方法
-
找到所有的SQL注入漏洞并修复
例如使用
mysql_real_escape_string(string, conn)
函数将string中的特定字符转义但是光这样是不够的
-
使用预编译语句
防御sql注入的最佳方式就是使用预编译语句,绑定变量
变量用?表示,攻击者无法改变SQL结构,即使攻击者输入类似于
tom' or '1'=1
的字符串,也只会被当作username查询 -
使用存储过程
使用安全的存储过程。但需要注意的是,存储过程也可能会有注入问题,需尽量避免在存储过程中使用动态的SQL语句。如果无法避免,则应该严格执行输入过滤
-
检查数据类型
检查输入的数据类型可以很大程度上对抗sql注入。例如限制用户输入只能是int
-
使用安全编码字符
-
使用安全函数
恶意代码
恶意代码概念
恶意代码是指一切旨在破坏计算机或网络资源的可用性、机密性和完整性的程序
2010年CNCERT发布的《网络安全属于解释》:恶意代码是指在未经授权的情况下,在信息系统中安装、执行并达到不正当目的的程序
现在还没有一个针对恶意代码的统一分类标准,但一般分为
- 病毒(Virus)
- 蠕虫(Worm)
- 木马(Trojan)
- 黑客工具(Hacktool)
- 风险软件(RiskWare)
- 灰色软件(GrayWare)
- 垃圾软件(JunkFile)
- 测试文件(TestFile)
等八类
病毒
定义
广义定义一:计算机病毒是一种人为制造的、能够进行自我复制的、具有对计算机资源的破坏作用的一组程序或指令的集合
广义定义二:能够引起计算机故障,破坏计算机数据的程序都统称计算机病毒
特征
- 可执行性:即程序性,计算机病毒是一段代码(可执行程序)
- 传染性:病毒具有把自身复制到其它程序的能力
- 隐蔽性:计算机病毒具有隐蔽能力,其传染过程也有隐蔽能力
- 潜伏性:计算机病毒往往在感染系统后,首先进入潜伏期,等待触发时机
- 可触发性:计算机病毒在触发条件满足时会自动从潜伏期进入活动阶段
- 破坏性:计算机病毒大都具有破坏性,如占用系统资源、破坏数据等
- 寄生性:计算机病毒嵌入到宿主程序中,依赖于宿主程序而生存
- 衍生性:计算机病毒可以衍生出与原版本不同的变种
- 诱骗性:有些病毒通过一些特殊的方式,诱骗用户触发、激活病毒
生命周期
- 开发期:即病毒的编写调试期
- 传染期:即病毒的发布期,通过各种途径传播病毒
- 潜伏期:病毒休眠或隐藏
- 发作期:即表现期,即病毒的表现形式或破坏能力
- 发现期:病毒被检测、发现、隔离并被通报研究
- 消化期:反病毒技术人员修改软件来检测和消除病毒
- 消亡期:由于用户的防护,病毒难以生存和传播
病毒发展简史
- 1949年计算机之父冯诺依曼提出“一部事实上足够复杂的机器能够复制自身”
- 20世纪60年代初,贝尔实验室里core war的游戏
- 1981年,15岁的Richard Skrenta 编写了第一个真正意义上的计算机病毒——Elk Cloner
- 1983年11月3日,Frederick Cohen博士首次提出计算机病毒的概念
- 1986年底,病毒Brain开始流行
- 1987年出现了能够自我加解密的病毒——Cascade、Stoned病毒和PingPong病毒等
- 1987年12月,第一个广泛破坏的计算机蠕虫Christmas Tree EXEC开始流行,瘫痪了数个国际计算机网络
- 1988年11月2日Robert Tappan Morris 把自己写的蠕虫程序传入互联网,12小时内莫里斯蠕虫使得超过6200台采用Unix操作系统的SUN工作站和VAX小型机瘫痪或半瘫痪
- 1989年出现了Yankee病毒、Eddie病毒、Frodo病毒等病毒家族
- 1993、1994年采用密码技术、编写技巧高超的隐蔽型病毒和多态性病毒相继出现
- 1995年8月9日在美国首次发现专门攻击word文件的宏病毒——Concept
- 1997年2月,第一个Linux环境下的病毒Bliss出现;4月第一个使用FTP进行传播的Homer病毒出现
- 1998年6月,CIH病毒被发现。这一年还出现了Back Orifice、Netbus等
- 1999年,通过邮件进行病毒传播开始成为病毒传播的主要途径,而宏病毒仍然是最流行的病毒
- 2000年被称作VBScript病毒/蠕虫之年。大量使用脚本技术的病毒出现
- 2001年,灰鸽子
- 2003年,SQL Slammer,也被称为蓝宝石病毒;Worm.Blaster,也被称为冲击波病毒
- 2004年,震荡波病毒
- 2006-2007年,熊猫烧香
- 2007年,磁碟机病毒和机器狗病毒
- 2009-2010年,震网病毒,这是首个旨在破坏真实世界而非网络世界的计算机病毒
- 2010-2014年,火焰病毒Flame,代码量是震网病毒的20倍,极为复杂
计算机病毒的通用命名规则
- 按病毒发作的时间命名:如黑色星期五
- 按病毒发作症状命名:如小球病毒、火炬病毒
- 按病毒的字节长度命名:如“黑色星期五”被命名为“1813病毒”
- 按病毒自身包含的标志命名:如“DiskKiller病毒“就因其自称为”DiskKiller“
- 按病毒发现地命名:如”黑色星期五“又称”Jurusalem(耶路撒冷)病毒”
计算机病毒命名的国际惯例
每个反病毒公司的命名规则都不太一样,但大体都是采取一个统一的命名方式来命名的,一般为:
**<病毒前缀>.<病毒名>.<病毒后缀>**病毒后缀>病毒名>病毒前缀>
- 病毒前缀:是指每一个病毒的种类。比如常见的前缀Trojan表示木马,Worm表示蠕虫
- 病毒名:一个病毒的名称及家族特性
- 病毒后缀:一个病毒的变种特性,是用来差别具体某个家族病毒的某个变体的
常见的病毒前缀
- 系统病毒:前缀为W2K、PE、WNT、W32、W95等。这些病毒一般可以感染Windows的
*.exe
和*.dll
文件,并通过这些文件进行流传 - 蠕虫病毒:前缀为Worm,通过网络或系统漏洞进行流传
- 木马病毒:前缀为Trojan
- 黑客病毒:前缀为Hack
- 脚本病毒:前缀是Script、VBS、JS等
- 宏病毒:前缀是Macro、Word、Word97、Excel、Excel97等
- 后门病毒:前缀是Backdoor
- 病毒种植程序病毒:前缀是Drop,从体内释放出一个或几个新的病毒到系统目录下,由释放出来的新病毒产生破坏
- 损坏性程序病毒:前缀是Harm
- 玩笑病毒:前缀是Joke
- 捆绑机病毒:前缀是Binder
- 其它前缀:Dos、Exploit、Hacktool等
计算机病毒的结构组成
病毒一般包含3大模块:引导模块、感染模块和表现(破坏)模块
计算机病毒的传播途径
- 通过不可移动的计算机硬件设备:如硬盘
- 通过移动存储设备:如磁带、移动硬盘、U盘
- 通过有线网络系统:包括Email、Web、BBS、Ftp、即时通信等
- 通过无线通信系统:如攻击和利用WAP服务器、网关、蓝牙等
病毒的感染对象
感染对象主要有两种:一种是寄生在磁盘引导扇区;另一种是寄生在可执行文件中。另外,宏病毒、脚本病毒比较特殊,是在用户使用Office或浏览器的时候获取执行权;还有一些蠕虫只寄生在内存中而不感染引导扇区和文件
病毒感染过程
一般分为三步:
- 当宿主程序运行时,获取控制权
- 寻找感染的突破口
- 将病毒代码放入新的宿主程序
病毒感染机理
- 引导型病毒传染机理:利用在开机引导时窃取中断控制权,并在计算机运行过程中监视软盘读写时机,乘机完成对软盘的引导区感染,被感染的软盘又会传染给其它计算机
- 文件型病毒传染机理:执行被感染的可执行文件后,病毒进驻内存,监视系统运行,并查找可能被感染的文件进行感染
- 混合感染:既感染引导扇区又感染文件
- 交叉感染:一个宿主程序上感染多种病毒,这类感染的消毒处理比较麻烦
文件型病毒的感染方式
-
寄生感染
-
无入口点感染
-
滋生感染
-
链式感染
-
OBJ、LIB和源码感染
木马
定义
木马程序一般由客户端和服务端组成:
-
服务端是黑客植入到目标机器的独立的木马模块,等待接收客户端的各种命令操作
-
客户端是控制端,被使用木马的黑客操控,享有服务端各种操作的最大权限
木马和病毒的区别
- 病毒依附于其它文件或程序并自我复制,在运行指定的程序时被激活运行
- 木马通常是把自己伪装成一个有用的程序,一般来说不具有自我复制能力
- 病毒具有破坏性和传染性,木马则是以偷盗为主,窃取机密信息
木马的发展史
- 第一代木马:功能较为单一,主要以破坏文件和窃取密码为主
- 第二代木马:功能较为完善,可以实现文件控制、信息窃取、攻击后门等
- 第三代木马:在信息传递方面有较大突破,反弹端口、ICMP协议传输等
- 第四代木马:在进程隐藏方面有重大突破。DLL注入型木马经常使用一些常见的系统服务进程作为寄主进程,从而增强其隐蔽性
- 第五代木马:与蠕虫、病毒相结合,具有更大的危害性。如2006年的熊猫烧香
蠕虫
定义
可以独立运行,并且自动复制自身并传播到另一台主机
病毒与蠕虫的区别
网络蠕虫的功能结构
主题功能主要由5个模块构成,主要完成攻击传播的过程:
- 探索模块:功能是寻找下一台要感染的机器,可以采用一系列的扫描算法
- 攻击模块:功能是利用攻击目标上存在的漏洞,从被感染的机器到攻击目标上建立传输通道
- 传输模块:很多蠕虫在获得系统权限后利用tftp系统程序,完成蠕虫副本在不同机器之间传递的功能,从而有效减小了自身的大小
- 信息搜集模块:充分利用本机上搜集到的信息来确定新的攻击目标,搜集到的信息可以单独使用或被传送到集中的地点,信息包括网络信息、本机信息、系统信息、邮件列表等
- 繁殖模块:功能是建立自身的多个副本,包括实体副本的建立和进程副本的建立,在同一台机器上主要是提高传染效率,增加判断避免重复感染
未来蠕虫可能出现的模块:
- 通信模块:使蠕虫间、蠕虫与黑客间进行交流,这是未来蠕虫发展的重点
- 隐藏模块:包括文件形态的各个实体组成部分的隐藏、变形、加密,以及进程空间的隐藏,包括内核一级的修改工作。该模块可以大大提高蠕虫的生存能力
- 破坏模块:摧毁或破坏被感染的计算机,破坏网络正常运行,对指定目标做某种方式的攻击,或在被感染计算机上留下后门
- 控制模块:功能是调整蠕虫行为,更新其它模块,控制被感染机器。可能是未来蠕虫发展的重点
网络蠕虫扫描策略
- 选择性随机扫描:所选的目标地址按照一定算法随机生成。具有算法简单、实现容易的特点;但容易引起网络阻塞,且隐蔽性差
- 顺序扫描:被感染主机上网络蠕虫会随机选择一个C类网络地址进行传播
- 基于目标列表的扫描:网络蠕虫在寻找受感染的目标之前预先生成一份可能易受感染的目标列表,然后对该列表进行攻击尝试和传播
- 基于路由的扫描:网络蠕虫根据网络中的路由信息,对IP地址空间进行选择性扫描
- 基于DNS扫描:网络蠕虫从DNS服务器获取IP地址来建立目标地址库
网络蠕虫传播途径
网络蠕虫一般通过以下几种方式进行传播:
- Email:比较普遍
- FTP:比较少见
- HTTP:很常见。利用Microsoft IIS或Apache服务器漏洞进行传播
- NetBios:利用打开的局域网共享资源进行传播
- RPC:通过Microsoft Windows操作系统中的远程过程调用(Remote Procedure Call)服务中的漏洞进行传播
- 数据库:利用网络上的数据库进行传播
病毒、蠕虫和木马的比较
恶意代码技术
启动
1.通过注册表启动
Windows的注册表(Registry)是一个庞大的数据库,存储软硬件的有关配置和状态等信息
2.通过启动项启动
3.通过任务计划启动
任务计划服务让用户指定系统在一个特定的时间、特定的日期或者 特定事件发生时(计算机启动时、登录时)执行特定的程序。用户可 以通过“添加任务计划”向导或者代码来添加自己的任务计划。 Windows提供了六个有关任务计划的API函数
- 增加任务计划NetScheduleJobAdd()
- 删除任务计划NetScheduleJobDel()
- 枚举特定主机上的所有任务计划NetScheduleJobEnum()
- 获取特定主机上的任务计划信息NetScheduleJobGetInfo()
- 获得任务计划服务的帐户名称GetNetScheduleAccountInformation()
- 设置任务计划服务的帐户和密码SetNetScheduleAccountInformation()
4.通过配置文件启动
- 一些批处理文件往往会在启动Windows时自动加载运行,这些地方也往往是木马的实现自动加载的地方
- 还有一些如System.ini和Win.ini文件也会被木马利用
5.通过文件关联启动
所谓文件关联,就是指规定某种格式的文件用哪个程序打开。
在注册表的HKEY_CLASSES_ROOT主键下,可以看到许多扩展名。所有的文件类型都必须在这里注册,才是系统识别的文件类型
6.通过伪装成服务来启动
主要属性有四个:DisplayName显示名称、ImagePath执行文件路径、Start启动类型和Type服务类型
Start启动类型:
Type服务类型:
原理:木马将自己注册为一个服务程序,设置对应的服务启动类型为0x00、0x01或0x02,就可以实现自启动了
7.通过其它特定程序启动
-
寄生在特定程序中:即木马和正常程序捆绑。用户运行植入木马的“正常程序”时,木马程序先获得控制权启动运行
-
代替其它程序启动:有些程序是自动运行的如磁盘清理程序(cleanmgr.exe),通过覆盖这些文件系统就可以自动运行木马而不需要修改其它配置;或者利用system32比Windows目录优先的特点,放置一个与Windows目录中相同文件名的程序在system32中,例如将木马程序改名为notepad.exe,放入system32中,这样在执行记事本程序时就会首先执行木马程序
-
映射劫持方法:将原本的映射关系A->A改为A->B。这样当用户输入命令A时,实际上执行的是命令B。
修改映射关系的注册表键值为
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
,在该主键下添加子键,子键名称为要修改的程序名称(包含后缀名),子键的键值数据为代替程序的完整路径 -
通过API HOOK技术启动
8.通过驱动启动
9.通过自动运行功能启动
10.通过浏览器启动
隐藏
隐藏方式
- 任务栏隐藏:使程序不出现在任务栏
- 进程隐藏:躲避任务管理器等进程管理工具
- 端口隐藏:躲避嗅探工具,使用户无法发现隐蔽的网络通信
- 通信隐藏:进行通信时,将目标端口设定为常用的80、21等端口,可以躲避防火墙的过滤
- 加载方式隐藏:通过各类脚本允许木马,修改设备驱动程序或修改动态链接库来加载木马
进程隐藏技术
-
伪隐藏:是指木马进程仍然存在,只不过是消失在进程的列表里
-
真隐藏:让木马进程彻底消失,不以一个进程或服务的方式工作。
基本原理是将木马核心代码以线程、DLL等方式插入到远程进程中,由于远程进程是合法的用户程序,用户又很难发现被插入的部分,从而达到木马隐藏的目的
文件隐藏技术
通信隐藏技术
通信隐藏是在用户毫无感知的情况下完成木马客户端与服务器端的数据交互
早期是是使用简单的TCP连接方式,后来出现了端口反弹技术、ICMP型木马技术等隐蔽通信技术
传播
网络蠕虫传播模型
- 蠕虫传播数学建模是分析网络蠕虫高速传播并阻断的重要方法。通过对模型的分析,可以更好地理解网络蠕虫的传播特性,预测其发展趋势,采取防御网络蠕虫措施
- 一个完整的网络蠕虫传播模型包括传播规则的指定和网络拓扑结构的选择
- 因此在初期研究中,传播模型如基本的传染病模型及对SIR模型的改进模型等都是基于规则网络的
- 近年来大量的研究表明,真实世界的复杂网络既具有小世界效应,又具有无尺度特性。因此2000年以后,网络蠕虫传播模型的研究重点已经转移到基于复杂网络的网络模型上
传染病模型
SI模型
SIS模型
SIR模型
无尺度网络模型
恶意代码分析
见“恶意代码分析”课件
网络扫描
网络安全扫描概述
网络安全扫描简介
网络安全扫描技术是一类重要的网络安全技术,基于Internet远程检测目标网络或本地主机安全性脆弱点
通过对网络的扫描,系统管理员可以发现所维护的Web服务器的各种TCP/IP端口的分配、开放的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞
网络安全扫描步骤
-
发现目标主机或网络
这一阶段就是通过发送不同类型的ICMP或者TCP\UDP请求,从多个方面检测目标主机是否存活。在这一阶段使用的技术通常称作ping扫射(Ping Sweep),包括以下:
-
端口扫描
端口扫描就是要取得目标主机开放的端口和服务信息,从而为下一步的“漏洞检测”做准备。端口扫描时最基本的网络安全扫描技术,基本流程为:
通常由端口获取服务类型是根据RFC1700直接推断的:
但这还不够,因为Web服务不一定开在80/tcp端口,端口号可能采用动态分配方法等
-
操作系统探测
许多安全漏洞都是和操作系统紧密相关,只有精确地判断出目标主机的操作系统及版本才能针对地对其进行攻击或安全评估
-
漏洞检测
- 直接测试:使用针对漏洞特点设计的脚本或程序检测漏洞
- 推断:不利用系统漏洞而判断漏洞存在。间接寻找漏洞存在的证据
- 带凭证的测试:赋予测试进程目标系统的角色,能够检查出更多的漏洞
网络安全扫描技术
端口扫描技术
原理
向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应,通过分析响应来判断服务端口是打开还是关闭,即可得知端口提供的服务或信息。
分类
- 全连接扫描
- 半连接扫描
- 秘密扫描
全连接扫描
包括:
-
TCP connect()扫描
利用操作系统的connect()系统调用,与每一个目标计算机的端口进行连接,如果端口处于监听状态,那么connect就能成功,否则该端口是关闭的
优点:扫描迅速;准确且不需要任何权限;可以同时打开多个套接字加速扫描
缺点:不隐蔽,服务器日志会记录大量密集的连接和错误记录;易被目标主机防火墙法发觉而被过滤掉
-
TCP 反向ident扫描
ident协议允许(RFC1413)看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的
半连接扫描
也叫间接扫描,是指端口扫描没有完成一个完整的TCP连接(只完成了前两次握手,在第3步的时候中断本次连接)。包括:
-
TCP SYN 扫描
向目标特定端口发送一个SYN报文,根据目标主机返回的数据包,只要辨别报文是SYN+ACK还是RST,就能知道目标的相应端口是处于监听还是关闭状态
优点:速度快;效率高;不会在目标计算机上留下记录,比较隐蔽
缺点:通常情况下要有root权限才能建立自己的SYN数据包
-
IP ID头dumb扫描
秘密扫描
秘密扫描是一种不被审计工具所检测的扫描技术,现有的秘密扫描主要有:
-
TCP FIN 扫描
关闭的端口会用适当的RST来回复FIN数据包,打开的端口会忽略FIN包
缺点:有的系统(特别是Windows),无论端口是打开还是关闭都会响应一个RST包,所以FIN扫描通常只工作在基于UNIX的TCP/IP协议栈上
-
TCP ACK 扫描
-
TCP NULL 扫描
NULL扫描向目标发送一个所有标志位都置为0的报文,根据RFC793规定,如果目标的相应端口是关闭的话,应该会收到一个RST数据包,否则就不会收到来自目标的任何回应
优点:隐蔽性好
缺点:通常适用于UNIX目标主机,而Windows系统不支持
-
TCP XMAS 扫描
XMAS扫描向目标发送一个URG/PSH/FIN的报文,根据RFC793规定,如果目标的相应端口是关闭的话,应该会收到一个RST数据包,否则就不会收到来自目标的任何回应
优点:隐蔽性好
缺点:通常适用于UNIX目标主机,而Windows系统不支持
-
TCP 分段扫描
并不直接发送TCP探测数据包,而是将数据包分成两个较小的IP段,这样就将一个TCP头分成好几个数据包,从而包过滤器很难探测到
优点:隐蔽性好,可穿越防火墙
缺点:可能被丢弃;某些程序在处理这些小数据包时会出现异常
其它扫描
-
FTP反弹扫描
利用FTP协议支持代理FTP连接的特点,可以通过一个代理的FTP服务器来扫描TCP端口,即能在防火墙后连接一个FTP服务器,然后扫描端口
优点:难以跟踪;可穿越防火墙
缺点:速度慢;有的FTP服务器会关闭代理功能
-
UDP ICMP 端口不可达扫描
扫描主机发送UDP数据包给目标主机的UDP端口,等待目标端口的端口不可达的ICMP信息
若这个ICMP信息及时收到,则表明目标端口处于关闭状态;若超时也未能接收到端口不可达ICMP信息,则表明目标端口可能处于监听状态
漏洞扫描技术
漏洞扫描技术主要分为以下两种:
- 基于网络系统漏洞库的漏洞扫描
- 基于模拟攻击的漏洞扫描
基于网络系统漏洞库的漏洞扫描
这类漏洞扫描大致包括:CGI漏洞扫描、POP3漏洞扫描、FTP漏洞扫描、HTTP漏洞扫描等
这些漏洞扫描基于漏洞库,将扫描结果与漏洞库相关数据比较得到漏洞信息
漏洞库的匹配方法:通过采用基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员对网络系统安全配置的实际经验,可以形成一套标准的网络系统漏洞库,然后在此基础上构成相应的匹配规则,由扫描程序自动进行漏洞扫描工作
基于模拟攻击的漏洞扫描
主要包括:Unicode遍历目录漏洞探测、FTP弱势密码探测、OPENreply邮件转发漏洞探测等
这些扫描通过使用插件(功能模块技术)进行模拟攻击,测试出目标主机的漏洞信息
插件是由脚本语言编写的子程序,扫描程序可以通过调用它来执行漏洞扫描,检测出系统中存在的一个或多个漏洞。添加新的插件就可以使漏洞扫描软件增加新的功能,扫描出更多的漏洞
操作系统探测技术
分为主动探测和被动探测:
主动探测:
-
标识攫(jue)取
用户通过客户端程序访问服务器,在和服务器正常的交互过程中根据服务器返回的提示或一些正常的操作来判别操作系统类别
从目标主机上得到一个二进制可执行文件,再对它进行分析,也可以得到操作系统的某些信息
优点:实现简单;可通过诸如telnet、www、ftp、smtp等服务暴露操作系统;由于是正常的交互过程,因此不会受到防火墙的干扰及被IDS系统察觉
缺点:通常以手工方式进行,效率低;有可能被网络管理员通过修改或关闭提示信息所蒙蔽;目标机器有可能并不提示有关标识信息的服务
-
网络协议栈特征探测
被动探测:
-
基于TCP/IP协议栈的被动指纹探测技术
-
基于应用层协议的被动探测技术
网络协议安全
对于底层的网络协议来说,对于安全的考虑有着先天的不足,部分网络协议具有严重的安全漏洞;
由于先天的不足,一些协议上的漏洞是无法通过修改来弥补的
TCP协议的缺陷
TCP(Transmission Control Protocol,传输控制协议)在建立连接时所采用的三次握手机制提供了比其它协议更安全的措施,但攻击者还是可以通过发送伪造的数据包来迷惑目标主机,以达到攻击效果:
- TCP SYN Flood攻击
- WinNuke攻击
- TCP序列号预测攻击
IP协议的缺陷
IP(Internet Protocol,网际协议)协议是其它协议的基础,可以说是TCP/IP协议族中最核心的协议,主要威胁有:
- IP地址欺骗
- Land攻击
- IP碎片攻击
ARP协议的缺陷
ARP(Address Resolution Protocol,地址解析协议)是一种将IP地址解析成局域网硬件所使用的媒体访问控制地址(MAC)的协议
缺陷有:
- 有可能一个非法节点获取本网络的权限后,发布虚假的ARP报文使所有的通信都转向它,以达到窃取数据的目的
- 当计算机接收到ARP应答数据包时,会对本地的ARP缓存进行更新,将包中的IP和MAC地址对存储在ARP缓存中。这一特点直接造成了ARP欺骗攻击实施的可能性
- 直接向Windows主机发送大量无关的ARP数据包,会导致系统耗尽资源而停止,如果向广播地址发送ARP请求时,可能导致整个局域网停止响应
UDP协议的缺陷
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的协议,而且它不需要用任何程序建立连接来传输数据
缺陷:
- 当受害者系统接收到一个UDP数据包时,它会确定目的端口正在等待中的应用程序,当它发现该端口中并不存在正在等待的应用程序时,就会产生一个目的端口无法连接的ICMP数据包发送给源地址。而当攻击者向目标系统发送足够多的UDP数据包时,就有可能发生UDP洪水攻击,受害系统就会瘫痪
ICMP协议的缺陷
ICMP(Internet Control Message Protocol,因特网控制报文协议)协议用于差错控制和拥塞控制
缺陷:
- ICMP重定向
- 淹没攻击
RIP协议的缺陷
RIP(Routing Information Protocol,路由信息协议)是动态发现合适的因特网路径的协议,它是运行TCP/IP的基础,因此也常容易受到攻击
缺陷:
- IP松散源路径选项(Loose Source Route)允许IP数据包自己指定通往目的主机的路径,攻击者可以由此越过防火墙而攻击其后的一个原本不可达的主机
- 伪造的RIP路由信息很容易欺骗主机或路由器,造成路由错乱或改向
其它协议的缺陷
- SMTP(简单邮件传输协议)由于过于信任的原则,缺少确认电子邮件发送者身份的全面手段,最容易受到电子邮件炸弹或廉价邮件(Spam)的DoS攻击
- FTP(文件传输协议)由于其代理服务特性,形成FTP反弹漏洞;可能形成控制连接是可信任的,而数据连接却不是;口令是以明文形式在网络中传送的
- DNS(Domain Name Server)主要负责将域名转化成网络可识别的IP地址,主要漏洞为:没有提供认证机制;由于超高速缓存映射表的刷新问题,容易造成DNS欺骗或拒绝服务攻击
TCP/IP协议族的安全性改进
网络层的安全性改进
- 对纯文本的数据包进行加密处理
- 将其封装在外层的IP报头里,再在网络中路由选择
- 到达目标主机后,拆开外层的IP报头后再对报文进行解密处理
传输层的安全改进
Netscape通信公司制定了建立在可靠的传输服务基础上的安全套阶层协议(SSL),该协议主要包含SSL记录协议和SSL握手协议
缺点:基于UDP的通信很难在传输层上建立安全机制
应用层的安全性改进
网络层和传输层安全协议提高了主机或进程之间的数据通道安全性,却不能区分在同一通道上传输的一个具体文件的安全性要求
如果要区分一个具体文件的不同安全性需求,必须借助于应用层的安全协议,如:
一个电子邮件系统可能需要对信件的个别段落实施数字签名,底层协议一般不知道信件的段落结构,从而不知道该对哪一部分进行签名,只有应用层是唯一能够提供这种安全服务的层次
安全漏洞概述
在计算机安全领域,安全漏洞通常又称作脆弱性(vulnerability),一般认为,漏洞是指硬件、软件或策略上存在的安全缺陷,从而使得攻击者能够在未经授权的情况下访问、控制系统
安全漏洞存在的原因
- Internet协议在最初设计时并没有考虑安全方面的需求
- 使用没有安全保证的信任策略
- Internet上传送的很多数据都是没有加密的明文
- Internet上高速膨胀的应用类型和服务
- 系统程序和应用程序是网络服务能够实现的必要基础,而其安全漏洞的产生几乎是不可避免地
- 网络技术管理人员由于本身技术能力地限制或疏忽等原因,对网络设定存在不当,增加了一些本来可以避免地漏洞
安全漏洞的来源
- 软件或协议设计时地瑕疵
- 软件或协议实现中地弱点
- 软件本身地瑕疵
- 系统和网络的错误配置
公开的漏洞信息
漏洞本身不会对系统造成损坏,而只是为入侵者侵入系统提供了可能。但是,并不是知道漏洞的人越少系统就越安全
比较权威的漏洞信息资源:
- BugTraq漏洞数据库
- ICAT漏洞数据库
- CERT/CC漏洞信息数据库
- X-Force数据库
安全漏洞发现与防御
漏洞发现
漏洞发现就是对计算机信息系统进行检查,发现其中可被黑客利用的漏洞
漏洞发现技术分为两种:
基于主机的发现技术
- 这种技术是对操作系统的各种配置权限、补丁等方面进行检测,以发现主机潜在的安全漏洞
- 主要从系统的文件、目录和设备文件的权限,重要文件的内容、格式、权限和重要的系统二进制文件的校验等方面进行检测
基于网络的发现技术
- 这种技术是利用了一系列的脚本对远端系统进行攻击,然后对远端系统的响应结果进行分析;可以发现远端不同平台的一系列漏洞
- 检测范围包括所有的网络设备
漏洞防御
漏洞防御就是在漏洞发现的基础上,采取各种技术对漏洞进行防御,达到保护系统的目的。漏洞防御技术主要有:
基于源码的防御技术
漏洞产生的根源在于编写程序的机制,防御漏洞首先应该确保程序代码的正确性和安全性,避免程序中有不检查变量、缓冲区大小边界等情况存在
主要有:
-
安全编写源码
安全的共享库技术;边界检查
-
源码审计
静态测试;动态测试
基于操作系统的防御技术
-
底层系统自我保护
SEH校验机制;GS安全编译选项;DEP技术;ASLR技术
-
系统安全管理
管理好Administrator账号;关闭不用的端口和共享服务;及时安装补丁
-
主动防御
漏洞信息发布机制
漏洞信息的发布应该做好以下几个方面:
-
实时性:快
-
检索粒度:细
-
发布方式
需要漏洞信息的用户大致分为3类:普通用户、特殊群体和使用漏洞库的厂商。针对这3种不同需求提供3中发布方式:网页浏览;邮件;数据库
防火墙
防火墙概述
防火墙发展史
- 第一代:包过滤防火墙。1985年Cisco的IOS软件公司研制
- 第二代:电路级网关防火墙。1989-1990,AT&T贝尔实验室提出的基于电路中继的结构
- 第三代:应用层网关防火墙。20世纪90年代初,贝尔实验室
- 第四代:动态包过滤防火墙。1991-1994
- 第五代:尚未有统一的说法。观点一:1996年的内核代理结构;观点二:1998年NAI公司的自适应代理技术
防火墙概念
什么是防火墙
- 现实中的防火墙是用来防止火从大厦的一部分传播到另一部分
- IT领域的防火墙是位于两个(或多个)网络间实施网间访问控制的一组组件的集合
防火墙满足以下条件:
- 所有进出被保护网络的通信必须通过防火墙
- 所有通过防火墙的通信必须经过安全策略的过滤或者防火墙的授权
- 防火墙自身应对渗透免疫
一个典型的防火墙使用形态
为什么需要防火墙
-
保护内部不受来自Internet的攻击
内部网特点:
- 组成结构复杂
- 各节点通常自主管理
- 信任边界复杂,缺乏有效管理
- 有显著的内外区别
- 机构有整体的安全需求
- 最薄弱环节原则
-
为了创建安全域
-
为了增强机构安全策略
防火墙实现层次
防火墙功能
防火墙访问控制方法
- 服务控制:确定可以访问的服务类型
- 方向控制:确定特定的服务请求可以发起并允许通过防火墙
- 用户控制:不同的用户具有不同服务访问的权限
- 行为控制:控制怎样使用特定服务。如过滤垃圾邮件
防火墙的局限性
- 使用不便认为防火墙给人虚假的安全感
- 对用户不安全透明可能带来传输延迟瓶颈及单点失效
- 无法做到绝对的安全
- 不能防范恶意的内部人员侵入
- 不能防范不通过它的连接
- 不能防范全新的威胁
- 不能有效地防范数据驱动式的攻击
- 当使用端-端加密时其作用会受到很大的限制
防火墙分类
防火墙技术
网络地址翻译
定义
地址翻译NAT(Network Address Translation)就是将一个IP地址用另一个IP地址代替。主要用在两个方面:
- 网络管理员希望隐藏内部网络的IP地址。这样互联网上的主机就无法判断内部网络的情况
- 内部网络的IP地址是无效的IP地址。这种情况主要是因为现在的IP地址不够用,要申请到足够多的合法IP地址很难,因此需要翻译IP地址
网络地址转换就是在防火墙上装一个合法的IP地址集,然后当内部某一用户要访问Internet时,防火墙动态地从地址集中选一个未分配的地址分配给该用户;同时,对于内部的某些服务器如Web服务器,网络地址转换器允许为其分配一个固定的合法地址(公网IP)
NAT的三种类型
- 静态NAT:内部网络每个主机都永久映射成外部合法的地址
- NAT池:在外部网络中定义了一系列合法地址,采用了动态分配的方法映射到内部网络
- 端口NAT(PNAT):把内部地址映射到外部网络的一个IP地址的不同端口上
包过滤防火墙
-
包过滤防火墙对所接收的每个数据包都做允许、拒绝的决定
-
防火墙审查每个数据报以便确定其是否与某一条包过滤规则匹配
-
过滤规则基于可以提供给IP转发过程的包头信息
-
分为静态包过滤和动态包过滤两类
动态包过滤对外出数据包的身份做一个标记,对相同连接的进入的数据包也被允许通过。也就是说,它跟踪一个连接,而不仅是捕获单个数据包头中的信息
判断依据
优缺点
电路级网关
- 是一个通用代理服务器,工作于OSI互联网模型的会话层或是TCP/IP协议的TCP层
- 适用于多个协议,但不能识别在同一个协议上运行的不同应用,当然也就不需要对不同的应用设置不同的代理模块。但这种代理需要对客户端做适当修改
- 它接收客户端的连接请求,代理客户端完成网络连接,建立起一个回路,对数据包起转发作用,数据包被提交给用户的应用层来处理
- 通过电路级网关传递的数据似乎起源于防火墙,隐藏了被保护网络的信息
实现方式
- 拓扑结构同应用程序网关相同:接收客户端连接请求代理客户端完成网络连接;在客户和服务器间中转数据;通用性强
- 简单重定向:根据客户的地址及所请求端口将该连接重定向到指定的服务器及端口上;对客户端应用完全透明
- 在转发前同客户端交换连接信息:需对客户端应用做适当修改
优缺点
应用层网关
应用网关防火墙(AGF,Application Gateway Firewall),又称代理防火墙或简称应用网关
应用网关在应用层处理信息;AGF可以支持多个应用如Email,Web,DNS,Telnet,FTP等
工作过程
首先它对该用户的身份进行验证
若为合法用户,则把请求转发给真正的某个内部网络的主机,同时监控用户的操作,拒绝不合法的访问
当内部网络向外部网络申请服务时,代理服务器的工作过程刚好相反
优缺点
状态检查包过滤
状态检测防火墙是在动态包过滤防火墙的基础上,增加了状态检测机制而形成的。具有连接的跟踪能力
以TCP协议为例:所谓的状态检测机制关注的主要问题不再仅是SYN和ACK标志位,或者是 源端口和目的端口,还包括了序号、窗口大小等其它TCP协议信息
原理
优缺点
优点:
- 具备动态包过滤的所有优点,同时具有更高的安全性
缺点:
- 检测的层次仅限于网络层与传输层,无法对应用层内容进行检测,从而无法抵抗应用层的攻击
- 性能比动态包过滤稍差。因为检测更多的内容
防火墙体系架构
双重宿主主机体系结构
双重宿主主机体系结构至少有两个网络接口:
- 它位于内部网络和外部网络之间,这样的主机可以充当与这些接口相连的网络之间的路由器,它能从一个网络接收到IP数据包并将之转发到另一网络
- 双重宿主主机的防火墙体系结构禁止这种发送功能,完全阻止了内外网络之间的IP通信
两个网络之间的通信可春通过应用层数据共享和应用层代理服务的方法来实现。一般情况下采用代理服务的方法
特点
- 安全至关重要(唯一通道),其用户口令控制安全是关键
- 必须支持很多用户的访问(中转站),其性能非常重要
缺点
双重宿主主机是隔开内外网络的唯一屏障,一旦它被入侵,内部网络便向入侵者敞开大门
屏蔽主机体系结构
- 屏蔽主机体系结构由防火墙和内部网络的堡垒主机承担安全责任。一般这种防火墙比较简单,可能就是一个简单的路由器
- 典型构成:包过滤路由器+堡垒主机
- 包过滤路由器配置在内部网络和外部网络之间,保证外部系统对内部网络的操作只能经过堡垒主机
- 堡垒主机配置在内部网络上,是外部网络主机连接到内部网主机的桥梁,它需要拥有高等级的安全
屏蔽路由器可按如下规则之一进行配置:
- 允许内部主机为了某些服务请求与外部网上的主机建立直接连接(即允许那些经过过滤的服务)
- 不允许所有来自外部主机的直接连接
优缺点
安全性高,双重保护:实现了网络层安全(包过滤)和应用层安全(代理服务)
过滤路由器能否正确配置是安全与否的关键。如果路由器被损坏,堡垒主机将被穿过,整个网络对入侵者是开放的
屏蔽子网体系结构
屏蔽子网体系结构在本质上与屏蔽主机体系结构一样,但增加了额外的一层保护体系——周边网络
堡垒主机位于周边网络上,周边网络和内部网络被内部路由器分开
原因:堡垒主机是用户网络上最容易被入侵的机器。通过在周边网络上隔离堡垒主机,能减少堡垒主机被入侵的影响
周边网络
周边网络是一个防护层,在其上可放置一些信息服务器,它们是牺牲主机,可能会受到攻击,因此又被称为非军事区(DMZ)
周边网络的作用:即使堡垒主机被入侵者控制,它仍可消除对内部网络的侦听
堡垒主机
- 堡垒主机位于周边网络,是整个防御体系的核心
- 堡垒主机可被认为是应用层网关,可以运行各种代理服务程序
- 对于出站服务不一定要求所有的服务经过堡垒主机代理,但对于入站服务应要求所有服务都通过堡垒主机
外部路由器
作用:保护周边网络和内部网络不受外部网络的侵犯
它把入站的数据包路由到堡垒主机;
它还可以防止部分IP欺骗,可分辨出数据包是否真正来自周边网络,而内部路由器不可
内部路由器
作用:保护内部网络不受外部网络和周边网络的侵害,执行大部分过滤工作
外部路由器一般与内部路由器应用相同的规则
优点
- 入侵者需突破3个不同的设备才能入侵内部网络
- 只对外通告DMZ区的网络,保证内部网络不可见
- 内部网络用户通过堡垒主机或代理服务器访问外部网络
iptables
定义
iptables是与Linux内核继承的IP信息包过滤系统,是一种功能强大的工具,由两个组件netfilter和iptables组成
netfilter组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则
表
主要的规则表有4个,分别是:
- mangle表:主要用来修改数据包
- filter表:专门过滤包
- nat表:网络地址转换
- raw表:主要用作数据跟踪处理
链
链是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。iptables从链中第一条规 则开始依次检查,看该数据包是否满足规则所定义的条件
主要的规则链有五个分别为:
- INPUT——进来的数据包应用此规则 链中的策略
- OUTPUT——外出的数据包应用此规则链中的策略
- FORWARD——转发数据包时应用此规则链中的策略
- PREROUTING— —对数据包作路由选择前应用此链中的规则
- POSTROUTING——对数据包作路由选择后应用此链中的规则
使用
网络隔离技术
物理隔离技术
定义
物理隔离的指导思想与防火墙截然不同:防火墙的思路是在保障互联互通的前提下,尽可能安全,而物理隔离的思路是在保证必须安全的前提下,尽可能互联互通
物理隔离技术实质就是一种将内外网络从物理上断开, 但保持逻辑连接的信息安全技术。这里,物理断开表示任何时候内外网络都不存在连通的物理连接,逻辑连接表示能进行适度的数据交换。“物理隔离”是指内部网不直接通过有线或无线等任何手段连接到公共网,从而使内部网络和外部公共网络在物理上处于隔离状态的一种物理安全技术
安全要求
- 在物理传导上使内外网络隔断,确保外部网不能通过网络连接而侵入内部网。同时防止内部网信息通过网络连接泄露到外部网
- 在物理辐射上隔断内部网与外部网,确保内部网信息不会通过电磁辐射等方式泄露到外部网
- 在物理存储上隔断两个物理网络环境,对于断电后会遗失信息的部件,如内存、处理器等暂存部件,要在网络转换时做清除处理,防止残留信息泄露;对于断电非遗失性设备如磁带机、硬盘等存储设备,内部网与外部网信息要分开存储
实现原理
物理隔离实现的原理主要包括以下两类:
-
数据二极管技术
这是一种在物理断开的网络之间进行单向桥接的专用安全技术。 这种单向桥接技术是通过单工的连接完成的。这种连接只在数据源计算机具有一个数据发送源,在数据目标计算机上具有一个数据接收器。 这种设计也被人们称为对外部“完全不信任”设计
-
存储池交换技术
这也是一种桥接隔离网络之间连接的专用安全技术。这种技术使用一个可交换方向的电子存储池。存储池每次只能与内外网络的一方相连。通过内外网络向存储池拷贝数据块和存储池的摆动完成数据传输
这种技术实际上是一种数据镜像技术。这种技术在实现内外网络数据交换的同时,保持了内外网络的物理断开
一个典型的物理隔离方案
网络隔离技术分类
-
第一代隔离技术:完全的隔离
此方法使得网络处于信息孤岛状态,做到了完全的物理隔离,需要至少两 套网络和系统,更重要的是信息交流的不便和成本的提高,这样给维护和使用带来了极大的不便
-
第二代隔离技术:硬件卡隔离
在客户端增加一块硬件卡,客户端硬盘或其他存储设备首先连接到该卡,然后再转接到主板上,通过该卡能控制客户端硬盘或其他存储设备。而在选择不同的硬盘时,同时选择了该卡上不同的网络接口,连接到不同的网络。
相比之下,单硬盘隔离卡更为先进,其实现原理是将原计算机的单个硬盘从物理层上分割为公共和安全两个分区,安装两套操作系统,从而实现内外网的安全隔离。用户可以根据自己的需要在不同的网络环境(内网或外网)中自由切换,操作时感受不到任何区别。但是,不管哪种隔离卡技术,仍然需要网络布线为双网线结构,这样势必存在着较大的安全隐患
-
第三代隔离技术:数据转播隔离
利用转播系统分时复制文件的途径来实现隔离,切换时间非常之久,甚至 需要手工完成,不仅明显地减缓了访问速度,更不支持常见的网络应用,失去了网络存在的意义
-
第四代隔离技术:空气开关隔离
它是通过使用单刀双掷开关,使得内外部网络分时访问临时缓存器来完成数据交换的。但在安全和性能上存在许多问题
-
第五代隔离技术:安全通道隔离,又称为网闸技术
此技术通过专用通信硬件和专有安全协议等安全机制,来实现内外部网络 的隔离和数据交换,不仅解决了以前隔离技术存在的问题,并有效地把内外部网络隔离开来,而且高效地实现了内外网数据的安全交换,透明支持多种网络应用,成为当前隔离技术的发展方向
网络隔离技术应用
-
客户端的物理隔离
-
集线器级的物理隔离
集线器级的物理隔离产品需要与客户端的物理隔离产品结合起来应用,可 以在客户端的内外双网的布线上使用一条网络线来通过远端切换器连接内外双网,实现一台工作站连接内外两个网络的目的,并在网络布线上避免了客户端计算机要用两条网络线连接网络
-
服务器端的物理隔离
服务器端的物理隔离技术是一种崭新的高级隔离技术,现在国外的产品已 经应用,它通过复杂的软硬件技术实现了在服务器端的数据过滤和传输任务。 第四、第五代物理隔离技术都是基于服务器的产品
入侵检测技术IDS
入侵检测概述
定义
IDS,Instrusion Detection System,入侵检测系统
入侵检测是从计算机网络或计算机系统中的若干关键点搜集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和遭到袭击的迹象的一种机制
是一种主动保护自己的网络和系统免遭非法攻击的网络安全技术
为什么需要IDS
主要有两点:
- 入侵很容易
- 入侵教程随处可见
- 各种工具唾手可得
- 防火墙不能保证绝对的安全
- 网络边界的设备
- 自身可以被攻破
- 对某些攻击保护很弱
- 不是所有的威胁都来自防火墙外部
网络入侵主要流程
- 目标探测和信息收集
- 自身隐藏
- 利用漏洞侵入主机
- 稳固和扩大战果
- 清除日志
入侵检测的功能
-
监控、分析用户和系统活动
入侵检测任务的前提条件
-
发现入侵企图或异常现象
入侵检测系统的核心功能
-
记录、报警和响应
-
审计系统的配置和弱点、评估关键系统和数据文件的完整性
入侵检测的分类
根据不同的方式可以有多种不同的分类方法:
根据原始数据的来源分类:
- 基于主机的入侵检测系统:监控粒度更细、配置灵活、可用于加密的以及交换的环境
- 基于网络的入侵检测系统:视野更宽、隐蔽性好、攻击者不易转移证据
根据检测原理分类:
- 异常入侵检测:根据异常行为和使用计算机资源的情况检测出来的入侵
- 误用入侵检测:利用已知系统和应用软件的弱点攻击模式来检测入侵
根据体系结构分类:
- 集中式:多个分布于不同主机上的审计程序,一个入侵检测服务器
- 等级式:定义了若干个分等级的监控区域,每个IDS负责一个区域,然后将当地的分析结果传送给上一级IDS
- 协作式:将中央检测服务器的任务分配给多个基于主机的IDS,这些IDS不分等级,各司其职,负责监控当地主机的某些活动
根据工作方式分类:
- 离线检测:非实时工作系统,在事件发生后分析审计事件,从中检查入侵事件
- 在线检测:对网络数据包或主机的审计事件进行实时分析,可以快速反应,保护系统的安全;但系统规模较大时难以保证实时性
入侵检测结构
基于主机系统结构
定义
HIDS:Host-Based IDS
检测的目标主要是主机系统和系统本地用户。检测原理是根据主机的审计数据和系统的日志发现可疑事件,检测系统可以运行在被检测的主机或单独的主机上
优缺点
基于网络系统结构
定义
NIDS:Network-Based IDS
根据网络流量、协议分析、单台或多台主机的审计数据检测入侵
优缺点
基于分布式系统的结构
传统的集中式IDS的基本模型是在网络的不同网段放置多个探测器收集当前网络状态的信息,然后将这些信息传送到中央控制台进行处理分析
分布式结构采用了本地主体处理本地事件,中央主体负责整体分析的模式
集中式IDS的缺陷
分布式IDS的优点
入侵检测技术
异常检测技术
思想:任何人的行为都有一定的规律,而入侵会引起用户或系统行为的异常
异常检测模型
Anomaly Detection:首先总结正常操作应该具有的特征(用户轮廓),当用户活动与正常行为有重大偏离时即被认为是入侵
检测原理
- 正常行为的特征轮廓
- 检查系统的运行情况
- 是否偏离预设的门限
优点
- 可以检测未知的入侵
- 可以检测冒用他人账号的行为
- 具有自适应、自学习功能
- 不需要系统先验知识
缺点
- 漏报、误报率高:入侵者可以逐渐改变自己的行为模式来逃避检测;合法用户正常行为的突然改变也会造成误报
- 统计算法的计算量庞大,效率低
- 统计点的选取和参考库的建立比较困难
误用检测技术
思想:主要是通过某种方式预先定义入侵行为,然后监视系统,从中找出符合预先定义规则的入侵行为
误用信号需要对入侵的特征、环境、次序以及完成入侵的事件相互间的关系进行描述
优点
- 算法简单
- 系统开销小
- 准确率高
- 效率高
缺点
- 被动:只能检测出已知攻击、新类型的攻击会对系统造成很大威胁
- 模式库的建立和维护难:模式库要不断更新,知识依赖于硬件平台、操作系统和系统中运行的应用程序等
其它检测技术
- 完整性分析
- 计算机免疫技术
- 数据融合
- 遗传算法
- 模糊证据理论
- 基于数据挖掘的检测方法
入侵检测部署
检测器部署位置:
-
放在边界防火墙之内
-
放在边界防火墙之外
-
放在主要的网络中枢
监控大量的网络数据,可提高检测黑客攻击的可能性
-
放在一些安全级别需求高的子网
对非常重要的系统和资源的入侵检测
入侵检测实例
snort
- 典型的误用检测技术
- 需要准确理解攻击模式并撰写检测规则
- 无法应对未知攻击,造成漏报
- 检测效率高、准确率高
- 攻击规则更新要求高,好在攻击方式变化不剧烈
实例一:DoS检测——Land
编写规则:
alert ip $HOME_NET any -> $HOME_NET any (msg:“DoS Land attack”; flags:S; flow:stateless classtype:attempted-dos; sid:6001; rev:1;sameip)
实例二:TCP NULL扫描
编写规则:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:“SCAN NULL”;flags:0; flow:from_client;classtype:attempted-recon; sid:6002; rev:1;)
实例三:SQL注入漏洞
编写规则:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:“SQL Injection found”; flow:from_client,established; content:“’%20and%201=1#”; classtype: web-application-attack; sid:6003; rev:1;)
KDD Cup
KDD Cup is the annual Data Mining and Knowledge Discovery competition organized by ACM Special Interest Group on Knowledge Discovery and Data Mining, the leading professional organization of data miners. Year to year archives including datasets, instructions, and winners are available for most years.
虚拟专用网VPN
TCP/IP不同层次的安全机制
- 链路层:PPTP、L2F、L2TP
- 网络层:IPSec
- 传输层:SSL
- 应用层:SHTTP、S/MIME、SET
上述协议能够提供以下安全服务:
- 身份认证
- 通信数据的保密性保护
- 通信数据的完整性保护
VPN概念
定义
VPN:virtual private network,虚拟专用网,是指依靠ISP或其它NSP在公用网络基础设施之上构建的专用的数据通信网络,这里所指的公用网络有多种,包括IP网络、帧中继网络和ATM网络
IETF对基于IP的VPN定义:使用IP机制仿真出一个私有的广域网
VPN特点
- 封闭的用户群
- 安全性高
- 服务质量保证
实现要求
- 支持数据分组的透明传输
- 支持安全功能
- 提供服务质量保证
VPN技术
隧道技术
-
隧道是在公共通信网络上构建的一条数据路径,可以提供与专用通信线路等同的连接特性
-
隧道使用隧道协议来封装数据。一种协议X的数据报被封装在协议Y中,可以实现协议X在公共网络的透明传输。
这里的协议X称作被封装协议,协议Y称作封装协议。隧道的一般封装格式为(协议Y(隧道头(协议X)))
隧道协议
隧道的定义:实质上是一种封装,将一种协议(协议X)封装在另一种协议(协议Y)中传输,从而实现协议X对公用传输网络(采用协议Y)的透明性
隧道协议内包括以下三种协议:
- 乘客协议(Passenger Protocol)
- 封装协议(Encapsulating Protocol)
- 运载协议(Carrier Protocol)
密钥管理
VPN技术的开放性预示着必须采取各种公开密码算法,这样算法的安全强度不能仅依赖于算法本身,只能依靠密钥的机密性。大规模部署VPN,也离不开自动密钥管理协议的支持
VPN系统中常用的几种密钥管理协议包括:IKE协议、SKIP协议、Kerberos协议
VPN分类
按VPN业务类型划分:
- Intranet VPN(内部公文流转)
- Access VPN(远程拨号VPN)
- Extranet VPN(各分支机构互联)
按VPN发起主体划分:
- 客户发起,也称为基于客户的VPN
- 服务器发起,也称为客户透明方式或基于网络的VPN
按隧道协议层次划分:
- 二层隧道协议:L2F/L2TP、PPTP
- 三层隧道协议:GRE(通用路由封装协议)、IPSec
- 介于二、三层间的隧道协议:MPLS
- 基于SOCKS V5 的VPN
此外,根据VPN实现方式的不同,还可进一步分为软件实现和硬件实现等
VPN应用类型
根据网络类型的差异,一般可以把VPN分为Client-LAN和LAN-LAN两种类型
-
Client-LAN类型的VPN也称为Acess VPN,即远程访问方式的VPN
它提供了一种安全的远程访问手段,例如,出差在外的员工、有远程办公需要的分支机构,都可以利用这种类型的VPN,实现安全的对企业内部网络资源进行远程访问。它又分为基于internet远程访问的VPN和基于intranet远程访问的VPN
-
采用LAN-LAN类型的VPN,可以利用基本的internet和intranet网络建立起全球范围内物理的连接,再利用VPN的隧道协议实现安全保密需要,就可以满足公司总部与分支机构以及合作企业间的安全网络连接。这种类型的VPN通常采用IPSec协议建立加密传输数据隧道。LAN-LAN类型的VPN,当用来构建内联网时称为Intranet VPN,用于企业和合作企业进行网络互联时称为Extranet VPN
VPN功能
数据机密性保护
数据完整性保护
数据源身份认证
重放攻击保护
链路层安全
PPTP
PPTP(Point to Point TunnelingProtocol,点对点通道协议)
PPTP 提供PPTP客户机和PPTP服务器之间的加密通信
- PPTP 客户机是指运行了该协议的PC机
- PPTP 服务器是指运行该协议的服务器
PPTP 可看作是PPP 协议的一种扩展,提供了一种在Internet 上建立多协议的安全虚拟专用网(VPN) 的通信方式。远端用户能够透过任何支持PPTP的ISP 访问公司的专用网络
PPTP由微软公司设计,用于将PPP分组通过IP网络封装传输
数据封装
通过PPTP,客户可采用拨号方式接入公共IP网络Internet:
- 客户按常规方式拨号到ISP接入服务器(NAS),建立PPP连接
- 然后,客户进行二次拨号建立到PPTP服务器的连接,该连接称为PPTP 隧道, 实质上是基于IP 协议上的另一个PPP 连接, 其中的IP包可以封装多种协议数据,包括TCP/IP、IPX和 NetBEUI
- 对于直接连到Internet 上的客户则不需要第一重PPP的拨号连接,可以直接与PPTP 服务器建立虚拟通道
- PPTP 只支持IP 作为传输协议
- PPTP 采用了基于RSA 公司RC4 的数据加密方法, 保证了虚拟连接通道的安全性
L2TP
L2TP协议结构
数据封装
特点
- 它综合了第二层转发协议(L2F)和PPTP两种协议各自的优点
- 协议的额外开销较少
L2TP与PPTP不同点
L2F
网络层安全
IPSec
定义
IPSec,即IP层安全协议,是由Internet组织IETF的IPSec工作组制定的IP网络层安全标准。它通过对IP报文的封装以实现TCP/IP网络上数据的安全传送
IPSec体系结构
IPSec协议框架
AH协议
传输模式下的AH认证工作原理
隧道模式下的AH认证工作原理
ESP协议
传输模式下的ESP工作原理
隧道模式下的ESP工作原理
AH+ESP组合IPSec协议
AH\ESP协议分工
IPSec传输模式
IPSec隧道模式
安全联盟数据库(SADB)
安全策略数据库(SPD)
- SP是一个描述规则,定义了对什么样的数据流实施什么样的安全处理,至于安全处理需要的参数在SP 指向的一个结构SA(安全联盟)中存储
- SP描述:对本地子网和远程网关后的子网间的 Telnet通信流,实施ESP通道保护,采用3DES加密算法和HMAC-SHA1验证算法
- 系统中的安全策略组成了SPD,每个记录就是一条SP, 定义类似上例中的描述规则,一般分为应用IPSec 处理、绕过、丢弃
- 从通信数据包中,可以提取关键信息填充到一个称 为“选择符”的结构中去,包括目标IP、源IP、传输层协议、源和目标端口等等。然后利用选择符去 搜索SPD,找到描述了该通信流的SP
IPSec流程——数据包输出处理
IPSec流程——数据包输入处理
IKE
IKE基本情况
定义
IKE: Internet Key Exchange,互联网密钥交换
功能
- 用IPSec保护数据包,必须首先建立一个IPSec的安全联盟,这个安全联盟可以手工建立,也可以动态由特定进程来创建。这个特定的进程就是Internet Key Exchange, 即IKE。IKE的用途就是在IPSec通信双方之间通过协商建立起共享安全参数及验证过的密钥,也就是建立安全联 盟
- IKE协议是Oakley和SKEME协议的混合,在由ISAKMP规定的一个框架内运作,可以为多种需要安全服务的协议进行策略磋商和密钥建立,比如SNMPv3,OSPFv2,IPSec等
IKE交换格式
密钥交换包格式(ISAKMP)
第一阶段交换
阶段一交换(phase1 exchange):在“阶段一”周期里,两个IKE实体建立一个安全的,经验证的信道进行后续通信,要建立这样的安全信道, 双方会建立一对ISAKMP安全联盟。阶段一交换可以用身份保护模式(也叫主模式)或野蛮模式来实现,而这两种模式也仅用于阶段一中
主模式交换
主模式交换提供了身份保护机制,经过三个步骤,共交换了六条消息。三个步骤分别是策略协商交换、Diffie Hellman共享值、nonce交换以及身份验证交换
野蛮模式交换
野蛮模式交换也分为三个步骤,但只交换三条消息:头两条消息协商策略,交换Diffie Hellman公开值必需的辅助数据以及身份信息;第二条消息认证响应方;第三条消息认证发起方,并为发起方提供在场的证据
主模式和野蛮模式
第一阶段的主要任务是建立IKE SA,为后面的交换提供一个安全通信信道。使用主模式交换和野蛮模式交换。这两种模式都可以建立SA,两者的区别在于野蛮模式只用到主模式一半的消息,因此野蛮模式的协商能力受到限制的,而且它不提供身份保护
但是野蛮模式可以有一些特殊用途,比如远程访问等。另外如果发起者已经知道响应者的策略,利用野蛮模式可以快速的建立 IKE SA。主模式和野蛮模式都允许4中不同的验证方法:(1)预共享密钥(2)DSS数字签名(3)RSA数字签名(4)交换加密
阶段一协商流程简图
阶段一身份保护模式
Diffie-Hellman密钥交换
野蛮模式交换状态转换图
阶段一工作原理
第二阶段交换
阶段二交换(phase2 exchange):“阶段二”周期里,IKE实体会在阶段一建立起来的安全信道中,为某种进程协商和产生需要的密钥材料和安全参数,在VPN实现中,就是建立IPSec安全联盟。快速模式交换可用来实现阶段二交换并且仅用于此阶段中
阶段二快速模式
阶段二工作原理
传输层安全
SSL基本情况
历史
SSL:Secure Socket Layer,安全套接字层。1994年由Netscape开发,专门用于保护Web通讯
-
1.0,不成熟
-
2.0,基本上解决了Web通讯的安全问题
同时,Microsoft公司发布了PCT(Private Communication Technology),并在IE中支持
-
3.0,1996年发布,增加了一些算法,修改了一些缺陷
-
TLS 1.0(Transport Layer Security,也被称作SSL 3.1),1997年IETF发布了Draft,同时,Microsoft宣布放弃PCT,与Netscape一起支持TLS 1.0
-
1999年,发布RFC 2246(The TLS Pcotocol v1.0)
设计目标
- 为两个通讯个体之间提供保密性和完整性(身份认证)
- 互操作性、可扩展性、相对效率
- 为上层协议提供安全性
SSL协议体系
SSL被设计用来使用TCP提供一个可靠的端到端安全服务
协议分为两层:
- 底层:SSL记录协议
- 上层:SSL握手协议、SSL密码变化协议、SSL警告协议
SSL记录协议
建立在可靠的传输协议(如TCP)之上,为更高层提供基本安全服务,特别是HTTP。
它提供连接安全性,有两个特点:
- 保密性,使用了对称加密算法
- 完整性,使用HMAC算法
SSL连接
- 一个连接是一个提供一种合适类型服务的传输(OSI分层的定义)
- SSL连接是点对点的关系
- 连接是暂时的,每一个连接和一个会话关联
SSL会话
- 一个SSL会话是在客户与服务器之间的一个关联。会话由Handshake Protocol创建,会话定义了一组可供多个连接共享的加密安全参数
- 会话用以避免为每一个连接提供新的安全参数所需昂贵的谈判代价
SSL记录层协议
记录层数据封装过程
SSL高层协议
SSL密钥交换
协议整体情况
各阶段交互
简化交互过程
会话密钥生成
应用安全——PGP
PGP概述
PGP功能列表
PGP操作
PGP所使用的符号
- Ks:常规加密中的会话密钥
- KRa:公开密钥系统中用户A的私有密钥
- KUa:公开密钥系统中用户A的公开密钥
- EP:公开密钥加密
- DP:公开密钥解密
- EC:常规加密
- DC:常规解密
- H:散列函数
-
:串接操作(并置) - Z:使用ZIP算法进行压缩
- R64:基数为64的ASCII格式转换
PGP操作描述
功能:身份认证
身份认证说明
保密性与认证
保密性说明
保密与认证的结合
电子邮件的兼容性
PGP消息的传输与接收
PGP消息的一般格式
PGP密钥管理
加密密钥和密钥环
PGP使用四种类型的密钥:
- 一次性会话传统密钥
- 公钥
- 私钥
- 基于口令短语的传统密钥
PGP对密钥的需求:
-
会话密钥:需要一种生成不可预知的会话密钥的方法,PGP使用了一种复杂的随机密钥生成算法(一定的真随机性)
-
公钥和私钥
需要某种手段来标识具体的密钥;一个用户拥有多个公钥/私钥对;密钥更新管理
-
私钥如何保存
密钥标识符和钥匙环
-
一个用户有多个公钥/私钥对时,接收者如何知道发送者是使用哪个公钥来加密会话密钥的?
- 将公钥与消息一起传送
- 将一个标识符与一个公钥关联,对一个用户来说唯一。即用户ID和密钥ID标识一个密钥
-
定义KeyID,包括64个有效位(PGP采用公钥的低64位作为KeyID)
-
对于PGP数字签名,KeyID也很必须。用哪个公钥来验证签名?
-
钥匙环。KeyID对PGP非常关键
- PGP消息中包括两个KeyID,分别提供包密与认证功能
- 需要一种系统化的方法存储和组织这些密钥以保证有效使用这些密钥
-
PGP密钥管理方案
用户机器上有一对数据结构:
私钥环:存储本节点拥有的公钥/私钥对
公钥环:存储本节点所知道的其他用户的公钥
PGP私钥环
- 信息:时间戳、KeyID、公钥、私钥、UserID
- UserID:通常是用户的邮件地址,可以重名
- 私钥如何保存
- 用户选择一个口令短语用于加密私钥
- 当系统用RSA生成一个新的公钥/私钥对时,要求用户输入口令短语。对该短语使用SHA-1生成一个160位的散列码后,销毁该短语
- 系统用其中128位作为密钥,用CAST-128加密私钥,然后销毁这个散列码,并将加密后的私钥存储到私钥环中
- 当用户要访问私钥环中的私钥时,必须提供口令短语。PGP将取出加密后的私钥,生成散列码,解密私钥
PGP公钥环
- 信息:时间戳、KeyID、公钥、对所有者信任度、用户ID、密钥合法度、签名、对签名者信任度
- UserID:公钥的拥有者。多个UserID可以对应一个公钥
- 公钥环可以用UserID或KeyID索引
公钥环和私钥环结构
邮件数据处理
PGP发送方处理消息的过程
- 签名
- 从私钥环中得到私钥,利用userid作为索引
- PGP提示输入口令短语,恢复私钥
- 构造签名部分
- 加密
- PGP产生一个会话密钥,并加密信息
- PGP用接收者userid从公钥环中获取公钥
- 构造消息的会话密钥部分
PGP接收方处理消息的过程
- 解密消息
- PGP用消息的会话密钥部分中的KeyID作为索引,从私钥环中获取私钥
- PGP提示输入口令短语,恢复私钥
- PGP恢复会话密钥,并解密消息
- 验证消息
- PGP用消息的签名部分中的KeyID作为索引,从公钥中获取发送者的公钥
- PGP恢复被传输过来的消息摘要
- PGP对于接收到的消息做摘要,并与上一步的结果作比较
公钥管理
由于PGP重在广泛地在正式或非正式环境下地应用,所以它没有建立严格地公钥管理模式
一旦用户私钥泄露,存在两种危险:
- 别人可以伪造用户地签名
- 其他人发送给用户地保密信件可被别人读取
保证公钥环上公钥的正确性
- 物理上得到B的公钥。可靠,但有一定局限性
- 通过电话验证公钥
- 从双方都信任的个体D处获得B的公钥
- 从一个信任的CA中心得到B的公钥
PGP公钥信任模型
PGP信任模型示例
PGP公钥的注销
- 公钥注销功能的必要性:密钥暴露或定时更新
- 通常的注销途径是由私钥主人签发的一个密钥注销证书
- 私钥主人应尽可能越广越快散播这个证书,以使得潜在的有关人员更新他们的公钥环
- 注意:对手也可以发出这个证书,然而这将导致他自己也被否决。因此,这样比起恶意使用偷来的私钥来看,似乎会减少漏洞
PGP证书管理软件
PGP用法
用法一
用法二
用法三
社会工程学
终于到最后一章了,我可要累死了!
社会工程学概述
基本概念
社会工程学攻击与传统攻击的区别
- 利用人的弱点
- 关键:建立信任关系
- 攻击行为无法通过技术措施进行防范
- 通常是一个许多步骤组合在一起的攻击行为
发展史
传统的社会工程学
网络中的社会工程学
电信诈骗
社会工程学形式
-
Phishing
攻击者利用欺骗性的电子邮件和伪造的Web站点等渠道来进行网络诈骗活动,目的往往是骗取用户私人信息
-
Dumpster diving
垃圾搜寻指的是通过查看个人或企业的垃圾信箱发现有价值的私人信息或企业信息
-
Shoulder surfing
肩窥指的是通过直接观察的方法获取信息。如偷看屏幕或者键盘
-
Waterholing
水坑式攻击是指黑客通过分析被攻击者的网络活动规律,寻找被攻击者经常访问的网络的弱点,先攻下该网站并植入攻击代码,等待被攻击者来访问时实施攻击
-
Advanced Persistent Threat
高级持续性威胁是指组织(特别是政府)或者小团体利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式
-
Reverse Social Engineering
反向社会工程学攻击是指在攻击者和攻击目标已经建立了联系的基础上,攻击者创造一个攻击目标需要获取帮助的情景,并且通过帮助攻击目标获取所需的敏感信息
-
Baiting
诱饵是将恶意软件感染的存储介质放在其原本所在的位置,诱导目标发现并使用
高级持续性威胁(APT)
社会工程学模型
六个阶段
阶段一:确定攻击对象
阶段二:收集信息
阶段三:攻击准备
阶段四:建立信任关系
阶段五:利用信任关系
阶段六:维护对象情绪
社会工程学经典案例
希拉里邮件门
京东内鬼泄露用户信息
高考考生徐玉玉案
社会工程学诱因
社会工程学常用的心理弱点
- 同情心
- 好奇心
- 贪婪
- 从众心理
- 权威性
- 本能反应
- 信任关系
人格弱点
定义
人格:是构成一个人的思想、情感以及行为的特有模式,这个独特模式包含了一个人区别于他人的稳定而统一的心理品质
人格具有独特性、稳定性、统合性、功能性
人格的成分
- 气质:心理活动的强度、速度、灵活性与指向性等方面的一种稳定的心理特征,即脾气、秉性
- 性格:个体对社会、自己和他人的一种心理倾向,包括对事物的评价、好恶和趋避等
- 自我调控:自我认知、自我体验、自我控制
五大人格理论
研究表明:外倾性、宜人性和开放性的人格相对于其他人格来说更容易回复钓鱼邮件
人格成因
-
生物遗传因素
-
社会文化因素
每个人都处在特定的社会文化环境中,文化对人格的影响极为重要。社会文化塑造了社会成员的人格特征,使其成员的人格结构朝着相似的方向发展,这种相似性具有维系社会稳定的功能,又使得每个人能稳固地“嵌入”整个文化形态里
社会文化对人格具有塑造功能,还表现在不同文化的民族有其固有的民族性格。例如中华民族是一个勤劳勇敢的民族,这里的“勤劳勇敢”的品质便是中华民族共有的人格特征。不同的国家和地区有具体的文化特征,比如不同的语言、不同的道德理想、不同的价值观念、不同的生活方式。这些都会在人的性格上打上不同的烙印
-
家庭环境因素
-
早期童年因素
-
学校教育因素
学校教育对人的性格的形成,特别是人对社会、事业、人的看法和态度的形成,对人的世界观、人生观、道德理想、奋斗目标的确立,具有重要的意义。学校对人的影响不同于家庭和一般社会环境,不是偶然的、零碎的,而是系统、有目的、有计划地进行的,学校的文化知识、思想品质、行为规范的教育对学生良好个性的培养都有至关重要的影响,这些影响主要来自课堂教学、课外活动、班集体的风貌、师生关系与同学关系等
-
自然物理因素
生态环境、气候条件、空间拥挤程度等这些物理因素都会影响到人格的形成与发展。比如气温会提高某些人格特征的出现频率,如热天会使人烦躁不安等。但自然环境对人格不起决定性的作用。在不同物理环境中,人可以表现不同的行为特点
除了上述这些因素以外,年龄也会对一个人的个性产生影响,不同的年龄段,个性都会有明显的区别,这与人的思想发展、知识面扩大、经验的丰富有关。总之,一个人的个性是在各种内外因素的影响下形成和发展变化的
-
自我调控因素
情绪
定义
情绪是指人对客观事物的态度体验以及相应的行为反应,具有较大的情境性、激动性和暂时性
情绪是人格系统的核心动力,会影响人的思维、语言等过程
良好的情绪调节有利于身心健康
影响与操作
权威
从众
说服
恐惧
社会工程学攻击
信息收集
信息收集的主要方式:
- 搜索引擎
- 个人信息泄露
- 网络攻击(植入木马等)
- 打电话
- 直接上门
- 利用社工库、社工字典等
- 利用辅助安全问题
电话诱导
电话诱导的形式五花八门:
网络钓鱼
邮件钓鱼
社交网络钓鱼
鱼叉式钓鱼
定义
鱼叉式钓鱼邮件(Spear Phishing)是近年来新兴的一种网络钓鱼方式。它针对特定的个人或组织进行的网络钓鱼攻击,通过伪装成目标信任的发件人,并精心构造邮件内容来对目标发起攻击
有研究表明,多数鱼叉式钓鱼邮件攻击者都是先设法获取到目标的信任关系及兴趣爱好,并根据其信任关系和兴趣爱好捏造相关的虚假邮件内容,有针对性的进行网络钓鱼。因此,鱼叉式钓鱼邮件具有很高的成功率,造成的财产或精神损失也更加巨大
特点
- 针对性:攻击者设法获取目标特性(信任关系、兴趣爱好等),针对性地进行钓鱼邮件攻击
- 高成功率:由于符合目标特性,往往能取得被攻击者地信任,从而获得很高地钓鱼攻击成功率
- 高危害性:鱼叉式钓鱼邮件一般以获取巨额财产、商业机密甚至国家机密为目的,具有高危害性
鱼叉式钓鱼的成本与收益
社会工程学防御
人员安全工程
保护个人信息资料不外泄
- 查看注册网站是否提供了对个人隐私信息的保护功能,是否具有一定的安全防护措施
- 尽量不要使用真实的信息
- 提高注册过程中使用密码的复杂度
时刻提高警惕,不要轻信网络中所看到的信息
保持理性思维
不要随意丢弃废物
- 日常生活中很多垃圾包含用户的敏感信息,如发票、取款机凭条、快递单等,在丢弃废物时一定要小心谨慎(破坏信息后再丢)
钓鱼网站检测与防御
基于黑名单、白名单形式的钓鱼网站检测
主要是维护一个已经出现的钓鱼网站的黑名单和确定是正常网址的白名单。每次要访问某个网址时,通过对比名单上的网址,可以知道这个网址的可以程度
基于网站特征的启发式钓鱼网站检测
基于页面特征、URL特征等自身特征进行机器学习,从而得到检测钓鱼网站的系统
钓鱼邮件检测
目前的钓鱼邮件主要是基于邮件特征的启发式检测方式。特征包括:邮件文本特征、URL链接特征以及情感特征等,均能达到较为理想的效果
基于邮件特征的启发式检测:
28号开始,到1号,5天搞完,又得马上投入下一科,谁叫你平时不去上课呢!
参考资料
- 课件:https://pan.baidu.com/s/1nzT_S8a0EZI5mgY_xTp7FA
- https://zh.wikipedia.org/wiki/%E5%9C%B0%E5%9D%80%E8%A7%A3%E6%9E%90%E5%8D%8F%E8%AE%AE
- https://baike.baidu.com/item/%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1%E6%94%BB%E5%87%BB
- https://baike.baidu.com/item/%E6%AD%BB%E4%BA%A1%E4%B9%8BPing
- https://baike.baidu.com/item/Teardrop%E6%94%BB%E5%87%BB
- https://zh.wikipedia.org/wiki/LAND%E6%94%BB%E5%87%BB
- https://baike.baidu.com/item/SYN%E6%94%BB%E5%87%BB/14762413
- https://baike.baidu.com/item/Smurf%E6%94%BB%E5%87%BB/9112141
- https://baike.baidu.com/item/cc%E6%94%BB%E5%87%BB
- https://zhyjc6.github.io/posts/2019/11/07/%E6%85%A2%E9%80%9FDDoS%E6%94%BB%E5%87%BB.html
- https://baike.baidu.com/item/%E4%BD%8E%E9%80%9F%E7%8E%87%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1%E6%94%BB%E5%87%BB
- https://baike.baidu.com/item/SQL%E6%B3%A8%E5%85%A5
- https://baike.baidu.com/item/%E7%97%85%E6%AF%92%E7%A7%8D%E6%A4%8D%E7%A8%8B%E5%BA%8F%E7%97%85%E6%AF%92
- https://baike.baidu.com/item/%E4%BA%BA%E6%A0%BC/2114241