同一事物在不同个体的认知差异下,结果可能截然相反,比如一辆汽车,车主认为带上上车门并按下报警器就已经安全上锁,但对于专业的盗窃犯而言,这些停放的一辆辆汽车,好比一个个等待打开的盲盒,车中的贵重物品一旦被发现,将随时面临被盗走的风险,正犹如0day漏洞相对于多重防护的业务系统。 根据Ponemon Institute的数据统计显示,80%的成功入侵都与0day有直接或间接关系。
此类攻击通常将0day与多态蠕虫病毒、特洛伊木马或其它恶意传播工具整合,蓄意发起大规模恶意攻击,攻在暗守在明,以致于每次安全人员仍在聚焦于分析新样本,修复新漏洞之际,与之关联的新变种或新形势的攻击武器已悄然投放市场,并大范围搜寻与狩猎新的攻击目标,致使当前网络世界威胁事件层出不穷,难以根除。
0day漏洞成为黑客眼中的“绝杀武器”
众所周知,恶意软件是一种旨在感染计算机以执行各种恶意操作的软件。如常见的病毒、间谍软件、蠕虫和特洛伊木马等,其造成的危害包括但又不限于数据被篡改或删除、机密数据泄露、设备被远程操控监听、资金被盗等,但绝大多数传统的恶意软件能够被现有的特征签名检测机制捕获且拦截。 而“高级威胁”是一种更加隐蔽和复杂的恶意攻击手段。它能够轻松绕过基于签名的传统安全防御机制,通过0day漏洞利用、无文件攻击、内存攻击、缓冲区溢出攻击等近期危害性极强的新型攻击方式,对目标实行渗透和潜入,以达到攻击目的。
在网络攻防博弈过程中,0day漏洞因具备极强的危害性,以及极高的成功渗透率,而备受攻击者青睐,通过利用0day漏洞可成功入侵系统并执行有效载荷,而当载荷为具备感染性和自传播的恶意软件时,其破坏力更是惊人,无论是曾经波及全球且造成严重影响的suxnet、wannacry,还是今年4月影响较广的英国铁路遭受勒索攻击,以及chrome v8引擎远程代码执行漏洞,都是值得警醒与反思的痛苦教训。
0day漏洞被利用的过程
近年来,各大安全厂商的产品开始将动静态程序分析、代码审计、逆向工程和模糊测试等多种技术,应用于0day漏洞的检测场景,但却依然收效甚微,其主要原因还是由于0day强的隐蔽性以及短时间内爆发的危害性。当0day漏洞被应用于网络杀伤链(Cyber kill chain)时,攻击者通常会先利用0day漏洞突破外围防线渗入内网,之后再尝试暴力破解或权限提权等手段,获得系统的绝对控制权,进而实施持久化攻击。 通常攻击者利用0day攻击目标,会涉及以下步骤:
- 挖掘漏洞:寻找程序代码中的漏洞;
- 识别漏洞:发现漏洞,并编写恶意代码,与0day漏洞整合,验证可行性;
- 收集信息:尽可能多的收集目标信息;
- 执行渗透:利用攻击武器对目标发起攻击,潜入其内部网络;
- 远程控制:获取内部重要主机的控制权限,并在内部横向移动;
- 长期潜伏:攻击者在控制的主机中植入后门,监听信息,盗取数据。
传统安全策略的无效性
0day漏洞在发现时,存在数天甚至数周等待补丁发布和修复的窗口期,而且也无法精确溯源出刚发现的0day,在当前的系统和网络中是否已被利用过,或已通过0day成功渗入的后门正潜伏在内部网络的某处系统中,所以长期以来缺少及时有效的安全防护手段,从根本上解决此类问题。不过,当前主流的安全产品也提供出几种应对0day的解决方案,但各有其优劣势,比如:
- 补丁管理:基于已知的漏洞库,提供官方补丁程序修补漏洞。但在0day被发现前,并不能提供对应补丁,并且根据google的zero团队研究发现,在一部分已修复的0day漏洞中,仅需要在原0day漏洞中进行简单修改,就可作为新的0day使用,可见补丁方案仅能解决已发现的漏洞问题,但并不能解决0day漏洞。
- 基于签名的检测:较多传统的防病毒和威胁检测系统使用签名验证机制,对已知的恶意软件进行指纹识别。但对于利用0day的高级威胁恶意样本,网络安全研究人员无法及时获取和分发变种后的恶意软件签名。
- 基于流量的检测:基于对日志的统计进行分析,找到记录中异常行为的蛛丝马迹,并及时予以跟踪。但实际过程中,统计的数据越详细和精准,则对系统的活动影响就越严重,而且常规活动是动态更新的,这就导致系统需要提供更多的性能用于日志记录工作。
内存保护的解决方案
内存保护是控制计算机内存访问权限的一种方式,其目的是防止进程访问尚未分配给它的内存,可以防止进程中的错误或恶意软件影响其它进程或操作系统本身。内存保护技术可检测或拦截恶意软件有效负载的执行,如未经授权或企图通过利用逻辑漏洞获得系统控制权的指令。还可以保护对特定内存区域的所有访问、写访问或执行该区域内容的尝试。
1. 通过细粒度的监控内存读、写、执行行为,可实时检测内存中存在堆喷射、堆栈溢出、内存数据覆盖等异常行为,结合拦截模块进行漏洞防御;
2. 由于0day漏洞在调用内存数据的时候,易使用内存篡改技术发起攻击,绕过传统终端防护机制。内存保护技术能够结合操作行为进行上下文关联分析,监控应用对业务相关内存数据的多读、挂钩、篡改等行为,及时拦截恶意代码对内存数据的攻击,确保用户核心业务应用的运行时安全;
3. 在内存级别监控应用进程和指令,识别更多的应用行为,并将其实现可视化展示,使内存数据信息更直观易于管理,系统收集终端上的各种安全状态信息。 利用内存保护技术,通过监控CPU指令并结合上下文分析,可以监控系统、程序的各种行为动作,另外通过内存虚拟化等技术可以监控内存的读、写、执行行为,然后结合关联行为分析模块,有效防御各种高级威胁。
0day理论上是未知漏洞,但利用漏洞的攻击和请求方式其实还是有迹可循,rasp通过分析上下文请求,进行函数级识别拦截,是一种不错的解决方案。悬镜的saas版免费,插了一些节点,跑着还行。