访问控制漏洞即应用程序允许攻击者执行或者访问某种攻击者不具备相应权限的功能或资源。
常见的访问控制可以分为垂直访问控制、水平访问控制及多阶段访问控制 (上下文相关访问控制),与其相应的访问控制漏洞为也垂直越权漏洞(普通用户可以访问或执行只有管理员才具有权限访问或执行的资源或功能),水平越权漏洞(某一用户可以访问或执行另一个用户才有权限访问或执行的资源或功能)及多阶段越权漏洞(某个操作可能需要多个步骤,比如银行转账,攻击者可能跳过前面步骤直接执行最后的步骤)
访问控制攻击类型与防御策略
具体攻击类型介绍:
概念:暴力破解攻击是指攻击者通过系统的组合所有可能性(例如登录时用的账户名.密码),尝试所有的可能性破解用户的账户名.密码等敏感信息,攻击者会经常使用自动化脚本组合出正确的用户名和密码。
暴力破解可分为纯粹式暴力破解和字典式暴力破解,一般暴力破解工具都会同时实现这两种暴力破解方式。
常见形式:
字典攻击是攻击者使用一个攻击者认为可能会用在口令中的单词字典,攻击者试图重现这种口令选择的方法,从输入字典中抽出单词并且使用各种变形规则对输入的单词进行处理,用经过变形后的单词进一步匹配目标口令。对于一个成功的字典攻击它需要最原始的单词成为攻击者的输入字典,并且攻击者对字典使用正确的字处理规则。
1.目标口令的创建规则并不是攻击者猜测的容易受到攻击的规则。比如一些网站、系统推荐的随机口令
2.攻击者输入的字典不够全面不包含目标口令中的基本单词
3.攻击者使用变形规则并没有包含目标口令所使用的规则
概念:彩虹表攻击只是批处理字典攻击的一种具体实现,它的主要特点是“以时间换空间”意思是查表时间变长了,但所需存储空间减少了。一般获取了密码数据后,hacker通常要么穷举密码后将哈希值比对,但耗时长,要么提前生成可能密码与哈希串的对照表并存储后查询但占用空间大。而彩虹表作为一种破解哈希算法的技术,是跨平台的密码破解器。其原理是组合了暴力法和查表法,并在这两者之中取得一个折中,用我们可以承受的时间和存储空间进行破解。
可以自己编程生成彩虹表,也可以使用RainbowCrack或Cain等软件来生成。彩虹表的生成时间与字符集的大小、哈希链的长度成正比,如下图中“7位密码、全部字符集.哈希链长度为2万”的彩虹表大小为32G,本地生成大约需要332天,而从网上下载只需要2个小时左右,主流的彩虹表的大小普遍在100G以上,想要自己生成是几乎不可能的事,因此建议直接从网上下载。
是指在要输入密码时,临时按照设定的长度、选定的字符集生成用于测试的密码。
纯粹式暴力破解就好像是地毯式搜索,如果密码在设定的密码集内那么一定是可以找出来的字典暴力破解,就是将出现频率最高的密码保存到文件中,这文件就是字典,暴破时就使用字典中的这些密码去猜解。字典式暴力破解较纯粹式暴力破解,使用了较小的命中率损失节省了较多的时间。
狭义上,彩虹表一般是指以“hash值:原始值”为行组成的文件,如下图所示。彩虹表攻击是指,拿着获取到的hash值通过查询彩虹表找出其原始值的攻击方式。
暴力破解和彩虹表攻击宽泛来说都属于口令破解,但他们使用的场景完全是不一样的.
暴力破解:完全不知道密码----通过系统提供的认证接口不断认证----获取原始口令----处于进入系统前;
彩虹表攻击:已知密码hash值----通过自己的工具及彩虹表不断查找----获取原始口令----处于进入系统后
设计安全的验证码(安全的流程+复杂而又可用的图形)在前端生成验证码后端能验证验证码的情况下,对验证码有效期和次数进行限制是非常有必要的,在当前的安全环境下,简单的图形已经无法保证安全了,所以我们需要设计出复杂而又可用的图形;
对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定两小时,验证码用完后销毁,这个在上面提到过,能有效防止暴力破解,还有验证码的复杂程度;
必要的情况下,使用双因素认证token是在后端代码中的一组随机生成数,在每次登陆时,会有一组隐藏的随机数加在登录账号和密码上进行验证,从而增强安全性。
最有效的方法就是“加盐”即在密码的特定位置插入特定的字符串,这个特定字符串就是“盐”加盐后的密码经过哈希加密得到的哈希串与加盐前的哈希串完全不同,黑客用彩虹表得到的密码根本就不是真正的密码。即使黑客知道了“盐”的内容、加盐的位置,还需要对H函数和R函数进行修改彩虹表也需要重新生成,因此加盐能大大增加利用彩虹表攻击的难度。
概念:网络欺骗就是通过欺骗使入侵者相信信息系统是有价值的、有可利用漏洞的并且具有一些可攻击窃取的资源(资源是伪造的或者不重要的),将入侵者引向这些错误的资源。增加入侵者的工作量、复杂度、不确定性,使入侵者不知道自己是否有效或成功。而且,它允许防护者跟踪入侵者的行为,并在入侵者之前修补系统的安全漏洞。
常见形式:
ARP(地址解析协议)是在仅知道主机的IP地址时确定其物理地址的一种协议。因为IPV4和以太网的广泛使用。其主要是将IP地址翻译为以太网的MAC地址。但也能在ATM(异步传输)和FDDI(光纤分布式数据接口)IP网络中使用。局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输,计算机是根据MAC地址来识别一台机器。区域内A要向主机B发送报文,会查询本地的ARP缓存表,找到B的ip地址对应的MAC的地址后进行数据的传输。如果没有找到B的ip对应的MAC地址,A会广播一条ARP请求报文(携带主机B的IP地址),网上的所有主机都会收到ARP请求,但只有主机B在识别自己的IP地址并向A发送一个ARP响应报文。其中包含B的MAC地址,A接收到B的应答后会更新自己ARP缓存。然后在使用这个MAC地址发送数据。ARP欺骗主要分为单向欺骗和双向欺骗。
IP地址欺骗是指再行动产生的IP数据包为伪造的源P地址,为了冒充其他的系统或者发件人的身份。这是一种入侵的攻击形式。入侵者使用一台电脑上网,借用另一台机器的IP地址,从而冒充另外一台机器和服务器打交道。IP欺骗的实质就是伪造IP,就是让一台计算机扮演另外一台计算机,利用主机之间的信任关系来达到欺骗的目的。如果两台计算机之间的信任关系是基于IP地址建立的,那么就可以使用rlogin命令登录到该主机上,不需要通过任何口令的验证,这就是IP欺骗最根本的理论依据。
IP欺骗的过程如下:先选定目标主机,且其信任模式已被发现,并找到一台被目标主机信任的主机。一旦发现被信任的主机,为了实现伪装,会使其丧失工作能力。因为在攻击者要代替被信任主机过程中要确保真正被信任的主机不能接收任何有效的网络数据,否则就会被拆穿。在被信任主机丧失工作能力以后伪装成为被信任主机,同时建立起与目标主机基于地址验证的应用连接。如果成功可以用一些简单的命令来方式后门,从而进行非授权的操作。
冒充域名服务器,把要查询的IP地址设置成为攻击者的IP地址,用户上网就是能看见攻击者的主页而不是想要查看的网站主页了,这就是DNS欺骗的基本原理,DNS欺骗并不是真正的"黑掉”了对方的网站,只是冒名顶替、招摇撞骗罢了。
电子邮件欺骗:电子邮件欺骗(email spoofing)就是伪造电子邮件头,导致信息看起来是源于某个人或某个地址,而实际上不是真正的源地址。垃圾邮件的发布者通常使用欺骗和恳求的方式尝试让收件人打开邮件,并尽最大可能让收件人回复。
WEB欺骗是一种电子信息欺骗,攻击者在其中创造了整个web世界的一个令人信服但是完全错误的拷贝。错误的web看起来是十分逼真,拥有相同的网页和链接。然而,攻击者控制者错误的web站点,这样受攻击者浏览器和和web之间的所有网络信息就完全被攻击者截获,其工作原理就是一个过滤器。
概念:网络欺骗是黑客经常使用的一种攻击方式,也是一中隐蔽性较高的网络攻击方式。这里以网络钓鱼为例,来介绍攻击过程和防御措施。
钓鱼攻击采用多种技术,使一封电子邮件信息或网页的显示同其运行表现出欺骗性差异。以下为些常见的攻击技术:
概念:普通的黑客攻击,一般来说,普通的黑客攻击采用的还是比较传统的方式,最开始是信息采集,就是搜集关于你或者你的公司一切信息,如人员信息了,邮箱服务器后缀名等等。这些都可以运用一些自动化的扫描工具能够搜集完成,完成之后会有一台专门存储这些信息的服务器来记录信息,并且能够和团队的其他人实现信息的分享。下一步就是扫面所有相关系统的漏洞,以便于以后利用。找到漏洞之后再进行下一步的渗透。
这是传统的渗透攻击,那么社会工程学攻击是什么样的呢?比方说,你的电脑系统铜墙铁壁非常完美,所有的漏洞都已打好补丁,没有任何漏洞可以被利用,你肯定以为这样的系统是绝对的安全,完全可以防止黑客的入侵。但是,这时有一个技术就产生了,就是的社会工程学攻击。
概念:嗅探器(sniffer)是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种技术。它工作在网络的底层,把网络传输的全部数据记录下来。 嗅探器可以帮助网络管理员查找网络 漏洞和检测网络性能.嗅探器可以分析网络的流量,以便找出所关心的网络中潜在的问题。
在以太网中 |
尽量在网络中使用交换机和路由器 对在网络中传输的数据进行加密 划分VLAN(虚拟局域网) 布置入侵检测系统(IDS、入侵防御系统IPS)、网络防墙等安全设备强化安全策略,加强员工安全培训和管理工作. 在内部关键位置布置防火墙和IDS,防止来自内部的嗅探 |
在无线局域网中 |
禁止SSID广播 对数据进行加密 使用MAC地址过滤,强制访问控制使用定向天线 采取屏蔽无线信号方法,将超出使用范围的无线信号屏蔽 使用无线嗅探软件实时监控无线局域网中无线访问点(AP)和无线客户连入情况 |
概念:生日攻击是利用概率论中的生日问题,找到冲突的Hash值,伪造报文,使身份验证算法失效
场景假设:
假设要对一个合同文件进行签名,然后把合同文件和签名一起发送给接收者。签名的方法:计算文件的哈希值(m位),然后使用A的私钥对这个哈希值进行加密。接收者使用A的公钥进行解密,然后比较哈希值,这样他就能确认: 接收到的合同文件是A发送的 (因为:可以使用A的公钥对加密的哈希值进行解密)合同文件未被修改过 (因为:解密的哈希值与合同文件的哈希值相同)攻击者B想要伪造份假合同文件,然后发送给接收者,并使接收者仍然相信: 接收到的合同文件是A发送的 (要求:必须能用A的公钥对加密的哈希值进行解密)合同文件未被修改过 (要求:解密的哈希值与合同文件的哈希值相同)。
1.使用安全的哈希算法:安全的哈希算法生成的哈希值有足够多的位数。这样,攻击者在寻找两个具有相同哈希值的文件时就会非常困难
2.加盐:在为文件签名之前,先向文件添加一个随机值,然后计算哈希值,再将文件、签名和随机值一起发送给接收者。这样,攻击者必须找出具有特定哈希值的伪造文件,这非常困难。
3.改动文件:在为文件签名之前,对文件做少许改动。这样,攻击者必须找出具有特定哈希值的伪造文件,这非常困难。