孙建平 男 千里目安全实验室团队成员 专注Web漏洞挖掘研究与病毒分析,擅长二进制、逆向技术、渗透技术,经常出没于大型客户应急响应现场 |
关注微信,掌握千里目安全实验室最新技术动态
你的系统与安全的距离有多远?
前些年斯诺登叔叔爆出了棱镜门(注:2013年6月,前中情局(CIA)职员爱德华·斯诺顿曝光美国某公司的“棱镜”项目,该项目为秘密项目,过去6年间,美国某公司和联邦调查局通过进入微软、谷歌、苹果、雅虎等九大网络巨头的服务器,监控美国公民的电子邮件、聊天记录、视频及照片等秘密资料。),原来米帝利用信息安全技术大肆进行网络监听与控制,有木有?
曾几何时起,我们的信息各种被泄露,各种被诈骗,各种骚扰电话,有木有?
再后来,Hacking Team 巨量数据遭泄露,猛然发现原来还有这么多利用信息安全技术提供攻击服务的公司,而且竟然连这样对安全了如指掌的黑客公司都被连窝端起,有木有?
不禁扪心自问,我的系统与安全的距离有多远?
杀手一:NDay漏洞 NDay漏洞就是已经爆出的公开漏洞,比如赫赫有名的微软 MS08-067漏洞,2012 年爆发的影响较大的 Struts2框架漏洞。虽然漏洞已经爆出相当长时间,但由于多种原因,很多系统中并没有对漏洞进行修复。若没有安全运维人员对这些系统漏洞进行跟踪和修复,或者开发人员持续使用老旧软件版本等,导致系统存在NDay 漏洞,则系统可被利用工具轻易攻破:
宝宝表示,这漏洞都2年了还没修复……
图为专业的漏洞利用工具
现实中我们使用部署的软件很多,每种常用软件都有很多已知漏洞,而且漏洞还在随着时间不停的涌现,实际上被NDay 攻击的风险无处不在。
经过杀手一的洗礼,很多人认为修补了漏洞并及时更新所有软件至最新版本就可以保证安全,事实如此么?
杀手二:弱密码与社工库
很多 SSH、远程桌面等远控服务以及CMS 等管理后台采用弱密码或未修改默认密码,攻击者可轻松进行猜解或暴力破解来获取系统的控制权限:
来看看上述的弱密码是啥:
除弱密码外,由于社工库的存在,攻击者可以通过社工库中的密码进行撞库攻击,获取系统用户的邮箱等账号的密码,并通过登录受害用户的邮箱,更改或重置其他资产信息(如需要邮箱验证的忘记密码);攻击者甚至可能通过社工库直接获取系统的密码信息。如下为利用撞库技术获取12306 的账号密码等信息,同理可用于获取其他信息系统的密码信息:
好了,你告诉我你会保证加强和定期更新所有数十个甚至上百个密码,但如果你要防止整个公司的系统和人员被弱密码和社工库攻击呢,以你的才能你又让公司所有人可以保证和你做的一样好,但即使这样你的系统就安全了么?
杀手三:社工钓鱼
攻击者利用电子邮箱等信息交流系统,伪造正常邮件发送恶意邮件,当受害者打开并点击邮件中的附件,攻击者便撕开进攻的缺口。2016 年初,利用社工钓鱼的 Locky 勒索软件在国内横行肆虐:
天才的你又花大力气培训提高了所有人的安全意识,并制定了复杂的流程来保障避免遭受这种社工钓鱼,最重要的是你保障了所有人严格执行这些流程,终于可以松口气了?
杀手四:0Day漏洞 0day漏洞,是过去没有被发现和修复的漏洞,其中很多是可以影响最新版本软件的漏洞。一般拥有挖掘及利用0Day 漏洞能力的都是拥有较高水平的攻击者。几乎所有较复杂的软件系统都会存在漏洞,只是有些尚未被发现而已,从微软十几年来每个月都坚持更新修补N 多个漏洞的情况来看,漏洞根本修补不完,而不断引发漏洞的根本原因在于软件不停的增加功能。整个互联网上,每天都会爆出大量的针对各种系统的0Day 漏洞。当然也有很多 APT 组织利用手中的 0Day 进行 APT 攻击。
每次流行软件0Day 漏洞的曝出,都是一种灾难,如下图是 2016 年 4 月 26 日 Struts2 漏洞刚爆发时的情况,众多重量级公司受影响:
假设你的系统部署了大量的防御0Day 漏洞的防护软件,先不说是否可以防御所有 0Day,这些防护软件就一定牢不可破么?
杀手五:攻防对抗
我们更新了软件,进行安全管理控制了弱密码并减轻了社工库的威胁,培养了安全意识降低了社工钓鱼攻击的可能性,部署了防御软件针对部分0Day 漏洞,是否就安全了呢?答案是否定的:
微软的EMET 是一款防止缓冲区漏洞利用的安全工具,微软增强减灾体验工具(EMET)能为 Windows 平台和应用程序(包括第三方应用程序)提供最新的安全方案和技术,比如随机地址空间分配(ASLR)、数据执行保护 (DEP),让用户免受未修复漏洞的影响并保护用户不受攻击,而不管这些漏洞是已知的还是未知的。
安全人员发现该工具存在安全漏洞,攻击者可利用该漏洞远程关闭该工具,从而让保护失效。
也许安全工具或设备修复了安全问题,或者你又部署了新的防御机制…… 但攻击者会研究突破已有的防御机制或者寻找别的更容易的攻击方式……
杀手六:攻防对抗 ……
杀手N:攻防对抗 针对攻击部署防御,针对防御寻找突破的攻击方法,于是就进入了如军备竞赛般的死循环……来用伪程序代码描述一下 线程1: While(有攻击或绕过) { 部署或增强防御(); } 线程2: While(有攻击需求) { 绕过突破防御或寻找新的薄弱点(); 获取核心资产(); }
攻击者可以通过各种途径,多种方法针对某一信息系统进行攻击,系统的安全程度取决于最短的一块“木板”。
攻防是一个对抗的过程,道高一尺魔高一丈,任何防御都有可能被攻击者研究突破,没有绝对的安全,只有相对的安全。相对的安全是指提高攻击门槛,使攻击所要付出的成本远高于守护资产对于攻击者的价值,那么你的系统就算“安全”了。
看了上述文章,你有什么感受?审视现状,你的系统与安全的距离有多远?欢迎跟帖!
|