首页 > 技术文章 > OSI模型及其对应下的安全问题

epheseren 2021-10-24 22:54 原文

OSI模型及其对应下的安全问题

首先,要想了解OSI参考模型下,各层的漏洞。我们先来认识OSI参考模型

image-20211024173408520

因为每层模型都有其对应的格式和规则,也就是协议。而协议的指定也是有漏洞的。就像一直流传的一句话:“没有永久安全的系统,只有没被尚未发现的漏洞”。所以,要先熟悉各层对应的机理和协议。才能更好的把握每层可能出现的漏洞。

 

应用层攻击

针对应用程序的设计漏洞进行的

逻辑漏洞是由于应用程序逻辑实现中的缺陷导致的,因此应用程序逻辑不是预期的逻辑。这种漏洞模式取决于应用程序的设计和业务逻辑。

商业应用程序中没有针对应用程序逻辑漏洞的特定且通用的模式。在这项研究中,引入了一种名为FINAD的方法,该方法使用活动流图(AFG)来检测应用程序逻辑漏洞,以发现已实现的应用程序与其设计之间的不兼容性。

在这项工作中,AFG首次由活动图(AD)和控制流程图(CFG)组成。对不同常见类型的应用程序逻辑漏洞的研究表明,可以通过对AFG进行静态分析来检测到大多数此类漏洞。FINAD方法独立于语言,并且可以用于任何编程语言的漏洞检测,前提是AD可用,并且可以创建程序的CFG。FINAD for PHP语言的实现显示了其在CVE漏洞数据库中检测已知逻辑漏洞的有效性。

对应用协议漏洞的攻击

SSL 漏洞 ("Heartbleed 漏洞")

SSL标准包括“心跳”选项,该选项为SSL连接一端的计算机提供了一种方法来再次检查线路的另一端是否仍然有人。 此功能很有用,因为某些Internet路由器在空闲时间过长时会断开连接。 简而言之,心跳协议的工作方式如下:

心跳消息分为三个部分:请求确认,简短的随机选择消息(在这种情况下为“banana”)以及该消息中的字符数。 只需假定服务器确认已收到请求,然后将消息鹦鹉化。

Heartbleed***利用了服务器过于信任这一事实。 当有人告诉它消息包含6个字符时,服务器会自动发送回6个字符作为响应。 恶意用户可以利用服务器的轻信:

DNS攻击

DNS 劫持和在途攻击。这些攻击可将网站的入站流量重定向到伪造的站点,从而收集敏感的用户信息并使企业承担主要责任。

防御 DNS 威胁

采用 DNSSEC 协议

此签名过程类似于人们用笔签署法律文件;此人签署别人无法创建的唯一签名,并且法院专家能够查看该签名并验证文件是否由该人签署的。这些数字签名可确保数据未被篡改。

DNSSEC 在 DNS 的所有层中实施分层数字签名策略。例如,在 “google.com”查找中,根 DNS 服务器将为 .COM 域名服务器签写一个密钥,然后 .COM 域名服务器将为 google.com 的权威性域名服务器签写一个密钥。

钓鱼攻击

通过伪造合法的 Web 站点来试图欺骗 Web 用户以盗取私人信 息。

通常情况下,没有疑心的用户会收到一封听上去很紧急的(并且看起来真实的)电子邮件,告诉他们现在xxxx出现了问题,必 须要立即解决以免帐户中止。

电子邮件中将包括一个 URL,指向一个外观跟实际站点一模一样的 Web 站点。复制合法的电子邮件与 Web 站点很容易,但是随后会更改所谓的后台,也就是接收被收集的数据的目标系统。

该电子邮件提示用户登录到站点并确认一些帐户信息。黑客会接收用户提供的数据,如登录名、密码、信用卡号或社会保险号。

缓冲区溢出

http协议未对请求头部做字节大小限制,导致可以提交大量数据因此可能导致恶意代码被执行。

CSRF

Web应用对某些请求未对来源做验证,导致登录用户的浏览器执行黑客伪造的HTTP请求,并且应用程序认为是受害者发起的合法请求的请求。黑客利用CSRF攻击可以执行一些越权操作如添加后台管理员、删除文章等。

对应用数据的攻击

SQL注入

Web应用未对用户提交的数据做过滤或者转义,导致后端数据库服务器执行了黑客提交的sql语句。黑客利用sql注入攻击可进行拖库、植入webshell,进而入侵服务器。

XSS跨站

Web应用未对用户提交的数据做过滤或者转义,导致黑客提交的javascript代码被浏览器执行。黑客利用xss跨站攻击,可以构造恶意蠕虫、劫持网站cookie、获取键盘记录、植入恶意挖矿js代码。

命令注入

Web应用未对用户提交的数据做过滤或者转义,导致服务器端执行了黑客提交的命令。黑客利用登入注入攻击,可以对服务器植入后门、直接反弹shell入侵服务器。

木马后门

Web应用未对用户提交的数据做过滤或者转义,导致木马代码执行。黑客利用木马后门攻击,可以入侵服务器。

对应用操作系统平台的攻击等

操作系统不同,底层实现的原理不同,所采用的漏洞利用也不同

应用权限的访问控制被攻破

目录遍历

Web应用对相关目录未做访问权限控制,并且未对用户提交的数据做过滤或者转义,导致服务器敏感文件泄露。黑客利用目录遍历攻击,可获取服务器的配置文件,进而入侵服务器。

本地文件包含

Web应用对相关目录未做访问权限控制,并且未对用户提交的数据做过滤或者转义,导致服务器敏感文件泄露。黑客利用本地文件包含漏洞,可以获取服务器敏感文件、植入webshell入侵服务器。

远程文件包含

Web应用未对用户提交的文件名做过滤或者转义,导致引入远程的恶意文件。黑客利用远程文件包含漏洞,可以加载远程的恶意文件,导致恶意代码执行、获取服务器的权限。

身份认证和会话管理被攻破

cookie伪造方法

1.跳过浏览器,直接对通讯数据改写。 2.修改浏览器,让浏览器从本地可以读写任意域名Cookie 3.使用签名脚本,让浏览器从本地可以读写任意域名Cookie 4.欺骗浏览器,让浏览器获得假的域名

预防方法

1.不要在公共场合登录自己重要的用户名和密码。 2.cookie+ip等信息加密。 3.cookie+ip+动态。

会话劫持

是一种结合了嗅探和欺骗在内的攻击方法。在一次正常的通信中,攻击者作为第三者参与其中或对数据进行修改。从而干涉两台机器之间的数据传输,例如监听敏感数据、替换数据等。由于攻击者已经介入其中,他能轻易知道双方传输的数据内容,还能根据自己的意愿去左右它。这个“中转站”可以是逻辑上的,也可以是物理上的,关键在于它能否获取到通信双方的数据。

跨站点的执行代码漏洞

在一个服务器下,部署了多个网站,而没有进行权限的隔离。当其中一个站点被攻击者攻破时,从而使得攻击者能横向攻击其他站点。

弹出漏洞

在主流网络浏览器Internet Explorer(IE)、Mozilla/Mozilla Firefox、Opera、Safari、Konqueror中发现的安全漏洞(英文),攻击者可“抢占”著名可靠网站的弹出式窗口,在窗口中显示第三方网站的网页(内容)。

要想“成功地”突破此安全漏洞进行攻击,必须把用户引诱到攻击者的网站。也就是说,(1)首先,在用户的浏览器里显示攻击者的网页;然后(2)在别的浏览器窗口显示可靠网站的网页。在这种状态下,一旦用户信赖的网站上显示了弹出式窗口,(3)就能够在此窗口中显示(并非可靠网站的网页)攻击者指向的网页(右图为Secunia公开的流程图,点击放大)。 如果恶意利用此安全漏洞,攻击者就能进行网络欺诈。比如“在弹出式窗口中显示链接到攻击者网站上的假冒窗口,让用户输入个人信息”

错误处理不当

对于服务器及程序错误处理,没能使用模糊方式,而是使用测试时的正常报错,导致攻击者可以利用报错信息对目标进行漏洞利用

不安全存储

不仅局限于没有对密码等需要保护的字段进行加密之外,还包括加密算法太弱,很容易就可以破解。

如:弱口令,加密算法太弱

首先,对于需要保护的字段一定不能直接存储或输出,需要使用加密算法等。

防御

对于已经使用加密算法的字段,一定要注意尽量使用强一些的加密算法,伪随机数等过于简单的算法,也会对网站的安全造成巨大威胁。

高级爬虫

爬虫自动化程度较高可以识别setcookie等简单的爬虫防护方式。

常规爬虫

爬虫自动化程度较低,可以利用一些简单的防护算法识别,如setcookie的方式。

不安全配置管理等

防范手段:

针对服务器的访问控制权限进行严格划分分配,防止管理员权限过大,可以采用基于角色的访问控制策略,保证用户的最小特权化。对服务器系统及时修补补丁,保证信息系统的一个安全状态,并对系统内用户行为和安全事件进行审计记录。

 

表示层

针对表示层的攻击主要是针对格式翻译和数据处理来进行的,攻击方式有Unicode攻击和计算溢出攻击。

防范手段:在系统设计层面,应考虑拥有足够充足的缓冲区,保证数据不会溢出被修改、覆盖。严格而控制服务器上文件和文件夹的权限,对登录用户和后台管理人员的权限进行合理的分配,防止服务器文件和文件夹被非法利用。

会话层

针对会话层的攻击主要是利用或者窃取合法用户的cookie和session,然后冒用或者利用合法用户的身份,以达到非法授权访问的目的,其主要攻击目标为攻击cookie和token,常见的攻击方式有XSS(跨站脚本攻击)和CSRF(跨站请求伪造)。

防范手段:针对会话层的攻击防范,主要是针对用户登录的cookie信息进行利用或盗取。为减少并防止该类攻击事件的发生。首先是应当在用户登录时,可采用双因子的认证方式,确认用户信息,并在cookice设置中启动httponle属性,并在代码层面添加随机产生的token认证,认证用户数据包信息,防止用户身份认证信息被窃取并盗用。

传输层

针对传输层的攻击主要是利用TCP/UDP协议进行攻击,而利用TCP协议攻击主要是利用TCP协议的三次握手机制,向目标主机或者服务器发送大量连接请求但是不对其进行响应,使得占用大量目标服务器主机资源,造成瘫痪的攻击方式,常见的攻击方式由Flooding洪泛攻击、ACK flooding洪范攻击等,而利用UDP的攻击主要是利用流量攻击,使用UDP的不可靠性,大量发送数据包,造成目标拒绝服务的目的,常见的攻击方式有UDP flooding洪泛攻击。

防范手段:在这里也可以通过部署抗DDOS防御系统进行防护,并扩大带宽,对数据包进行筛选、防护。

网络层来看

针对网络层的攻击也是目前互联网上常见的几种主要的攻击方式,如Smurf攻击(通过将回复地址设置为受害网络的广播地址,使用数据包淹没目标主机)、ICMP路由欺骗攻击、IP分片攻击、ping of death(死亡之ping)、IP欺骗伪造攻击,其通性都是通过制造大量的无用数据包,对目标服务器或者主机发动攻击,使得目标对外拒绝服务,可以理解为DDOS或者是类DDOS攻击。

防范手段:可以通过扩大带宽并部署DDOS防御系统来防御拒绝攻击,对于攻击发生过的IP和确认安全的IP,可以通过设置防火墙上IP白名单和黑名单对通信主机的地址进行限制、绑定,防止欺骗行为的发生。

细分:

Syn-flood

利用TCP建立连接时3次握手的“漏洞”,通过原始套接字发送源地址虚假的SYN报文,使目标主机永远无法完成3次握手,占满了系统的协议栈队列,资源得不到释放,进而拒绝服务,是互联网中最主要的DDOS攻击形式之一。

网上有一些加固的方法,例如调整内核参数的方法,可以减少等待及重试,加速资源释放,在小流量syn-flood的情况下可以缓解,但流量稍大时完全不抵用。防御syn-flood的常见方法有:syn proxy、syn cookies、首包(第一次请求的syn包)丢弃等。

ACK-flood

对于虚假的ACK包,目标设备会直接回复RST包丢弃连接,所以伤害值远不如syn-flood。DDOS的一种原始方式。

UDP-flood

使用原始套接字伪造大量虚假源地址的UDP包,目前以DNS协议为主。

ICMP-flood

Ping洪水,比较古老的方式。

数据链路层

针对数据链路层的攻击常见的是对基于mac地址的伪装欺骗,在数据链路层有两个重要的协议ARP(地址解析协议)和RARP协议(反向地址解析协议),常见的攻击方式就是ARP欺骗(ARP伪装),其攻击原理为攻击者利用自己伪造的mac地址来告诉被攻击者自己是对方想要访问的身份,显而易见这个身份是攻击者自己伪造的,从而欺骗被攻击者将数据流量转发到自己伪造的身份地址上,进而获取数据,达到欺骗的目的。

防范手段:对于系统和通信网络中关键的设备进行ARP地址绑定,可以在Windows中输入arp-s gate-way-ip gate-way-mac固化ARP表,也可以通过安装ARP防护软件-ARPGuard,对ARP信息进行防护。

物理层

针对其网络硬件和基础设施来进行物理破坏或者是强行改变路由器,比如说要去攻击一个公司,就把他们公司的网线剪掉,让他们无法访问外网。

防范手段:保护物理线路的可靠性,对于物理设备的接入采用双线、双设备接入,保证物理线路和物理设备的可靠性,并处于监管的状态。

文章借鉴来源:

  1. https://www.x-mol.com/paper/1288185784577998848/t

  2. https://blog.51cto.com/u_14857544/2634158

  3. https://blog.csdn.net/quiet_girl/article/details/50608959

  4. https://zhuanlan.zhihu.com/p/27292715

  5. https://kamisec.github.io/2017/06/OWASP-top-10-%E5%A4%B1%E6%95%88%E7%9A%84%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81%E5%92%8C%E4%BC%9A%E8%AF%9D%E7%AE%A1%E7%90%86/

推荐阅读