前言
如火如荼的攻防演习终于在一阵欢呼声中结束了,大家在各自朋友圈中发的最多的应该就是“明年江湖再见”,“大家辛苦了”,甚至乎某步的倒计时结束也发满了朋友圈,不管是攻方还是守方,这段时间也确实不容易;鄙人针对今年的攻防演习提出一些属于自己个人的想法,针对防护的关键性要素进行一些粗浅的分析和探讨。由于篇幅有限,本篇仅讨论钓鱼邮件攻防免疫的做法。
今年的网络攻防演习有了一定的变化,这也跟这两年成长起来的攻防演习有关,慢慢地大家都重视了,那势必要开始堆叠各种厂商的设备,里三层,外三层不说,但之前吃过的亏今年总不至于再犯吧?去年怎么说呢?成就了蜜罐的威名,尤其是反制蜜罐,各种各样的蜜罐成堆地出现,好事也是坏事,这个后面再说。而原本很多没有WAF的,没有防火墙的估摸着今年应该能申请到预算并快速上马了,这也给攻击队造成了非常大的困扰。毕竟,没有吃过猪肉总见过猪跑吧,边界的防护能力应该是较之前有了巨大的提升。直接从外网突破口突破进来的不是没有,但数量已经相当稀少了,反倒是钓鱼样本的报告数量大幅增加,各种五花八门的钓鱼攻击层出不穷,卖丑的,卖乖的,卖通知的,卖新闻的,有些文案实在是令人惊艳不止,拍案惊奇。尤其是在攻防演练期间,在如此高的安全意识的前提下,依然有很多公司员工被钓鱼成功,你还真不得不佩服这些文案的可塑性。而采用了本文所提供的钓鱼疫苗免疫方法,可以有效遏制钓鱼邮件的猖狂,保护主机安全。
主体EXE免疫
经过简单的调研,钓鱼邮件的攻击技法其实却略显拙劣,简单的把exe套一层压缩包就莽过来了,而恰恰这种最基础的最原始的最简单的攻击手法依然还有人很轻易地中招,这也确实是不可思议的地方所在。我们抛开在攻防演练期间所特别强调和申明的安全意识以及如何正确的审查钓鱼邮件,这365天的时间里,对钓鱼邮件的防范应该是一条红线,两手准备。什么是一条红线?员工正确的网络安全意识就是红线,这个需要不厌其烦的提醒,强调才能有针对性的帮助。什么是两手准备?第一手准备,针对钓鱼邮件的防范之前也提到过很多次,从边界上做好防范,从SPF,DKIM,DMARC来解决一部分钓鱼邮件的危机,这里我就不展开来讲,这个属于邮件管理员需做到的事情。
看看今年的攻击样本,大部分都是EXE样本,插入了各种各样的后门代码,究其原理,就是对攻击方来说简单好用,用户不小心点击了就会被一击而破。此次我们讨论的要点就是针对于此。
邮件威胁防护的总体思路(该段引至360 MeshFire Team)
钓鱼邮件攻击的威胁检测主要立足于建立一套针对邮件威胁场景的安全运营流程,对外部投递的电子邮件进行威胁检测和有效拦截。首先,通过在邮件网络入口部署邮件网关型产品,通过定义规则对已知钓鱼邮件进行过滤,包括纯粹通过社工手段收集账号密码的场景或已知可查杀的恶意附件样本都依靠邮件网关规则和特征进行拦截;对已经绕过邮件网关检测规则和样本查杀的威胁检测,结合威胁情报技术和沙箱技术,主要针对终端漏洞利用型钓鱼邮件的攻击检测。
邮件威胁检测的理论依据
威胁检测的方法主要是结合威胁情报技术和沙箱技术,威胁情报源往往来源于全球网络环境,而内网中的终端病毒查杀和邮件网关中的样本查杀特征往往有本地杀软的局限性,基于威胁情报的检测机制往往能够超前于杀毒软件特征检测,对于威胁情报未能命中的入侵过程,则可通过沙箱行为检测,在及时发现基于Nday或0day漏洞的攻击方式,又能够产生新的威胁情报,补充到现有的防护策略当中。基于这种静态结合动态的威胁检测分析模型,可以准确提炼入侵事件,还原攻击的每个阶段,提取攻击特征,在攻击实施前切断其传播路径,从而达到保护目标的目的。
邮件威胁绕过检测的思路
威胁检测依然是基于静态和动态分析进行检测,攻击队在进一步的提升免杀效果外,导致针对静态的病毒库定义检测效果非常有限;而针对动态分析或者行为分析的则非常依赖于沙盒的健壮性,攻击队的反沙箱,反调试在攻防演练期间因为时间关系做得并不会非常复杂。但在实际的攻防世界中,某些攻击程序已经做到了非常复杂的攻击手法。为了规避静态和动态检测,钓鱼邮件中的附件往往采用了压缩包加密的方法,在压缩包进行简单密码加密就可以比较轻松地绕过大部分静态以及动态的检测。
今年的攻击中大量使用了由Cobalt Strike添置的EXE附件,因为攻击队发现域前置和CDN隐藏C2的手法异常好用,所以开始变得肆无忌惮。而实际上这种攻击手法的防治是非常简单却有效的,尤其是针对这种EXE附件,基本100%进行免疫。而其实这也不是什么新技术,新方法,但却依然是目前非常有效的防范措施和手法,我称之为邮件疫苗。
何为邮件疫苗?当你收到一封邮件且带附件的时候,你的正常做法是什么?除了审阅邮件内容外,我们往往会双击打开这个邮件中的附件并查看附件文件名,攻击队在对附件进行恶意处理的时候,会采取诸如长文件名,或双扩展名等方法,从而遮掩住该附件为EXE可执行文件,看上去一切挺完美的,用户没注意确实也挺容易中招的,然后,压缩文件有个特性,双击执行的时候,会将压缩包里面的内容解压到一个临时文件夹,这一个流程就可以被我们利用来进行钓鱼邮件中附件的防范。
划重点:对于域内机器,我们可以简单的通过GPO来推送软件限制策略来达到禁止压缩包内可执行文件执行的目的,如下图所示:(如何使用GPO我就不再详述了)
对于非域机器,则需要通过注册表加载,千万别小看这些看似没啥用的机器,比如某个小办公室用的,仓库用的,使用VPN拨入公司网络的,等等,这些不受重视的机器往往中招的机会更大,他们在攻防演练中也是特别需要关注的点。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\safer\codeidentifiers\0\Paths\{XXXX} 以及HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\Windows\safer\codeidentifiers\0\Paths\{XXXX}
使用GPO添加各种解压缩软件的临时执行路径,这里就不再重复具体的步骤,管理员应该一看就懂了。经测试,将国内主流的各种解压缩软件做了一个梳理,如下为标准压缩软件的临时路径,包括系统自带的Windows解压,7zip,WinRAR, WinZip,好压,360压缩,快压等,其他可自行补充:
路径: %localAppData%\Temp\*.zip\*.exe
安全级别: 不允许
描述: 阻止电子邮件附件中压缩文件中的可执行文件落地执行
路径: %localAppData%\Temp\7z*\*.exe
安全级别: 不允许
描述: 阻止电子邮件附件中压缩文件中的可执行文件落地执行
路径: %localAppData%\Temp\Rar*\*.exe
安全级别: 不允许
描述: 阻止电子邮件附件中压缩文件中的可执行文件落地执行
路径: %localAppData%\Temp\wz*\*.exe
安全级别: 不允许
描述: 阻止电子邮件附件中压缩文件中的可执行文件落地执行
路径: %localAppData%\Temp\360zip*\*\*.exe
安全级别: 不允许
描述: 阻止电子邮件附件中压缩文件中的可执行文件落地执行
路径: %localAppData%\Temp\HZ*\*.exe
安全级别: 不允许
描述: 阻止电子邮件附件中压缩文件中的可执行文件落地执行
路径: %localAppData%\Temp\KuaiZip\*\*.exe
安全级别: 不允许
描述: 阻止电子邮件附件中压缩文件中的可执行文件落地执行
路径: %localAppData%\Temp\k52*\*.exe
安全级别: 不允许
描述: 阻止电子邮件附件中压缩文件中的可执行文件落地执行
经过设置后,双击运行附件中的压缩包中的EXE可执行程序已经不再现实。同理,可针对.SCR, .BAT等其他可执行文件做同样的处理,即可起到免疫的效果。当然,用户会发现进行正常的安装操作也会受到限制,解决问题的方法很容易,指导用户手动将该附件保存到本地,然后右键解压缩到本地文件夹后,再执行就可以了。
极端情况下,甚至可以再添加一些其他路径,比如C:\Users\Public\*.exe,比如%LocalAppData%,%AppData%\*.exe或者%AppData%\*\*.exe等,但这种限制在某些机器上会造成实际使用上的问题,需要结合本地情况进行考量和调整。
解决了EXE等可执行文件的猖狂,不再局限于或依赖于本地的反病毒引擎的命中率,因此钓鱼邮件中招的几率将大幅度下降,而这种方法也不仅仅是针对钓鱼邮件,针对很多恶意程序,勒索程序均有奇效,属于小技巧大帮助的疫苗方法。
副本宏免疫
其次,钓鱼邮件中常见的第二种类型是附件中的宏文件,有些应用程序或者某些用户需要使用基于Office文档的宏进行文档操作,然后钓鱼邮件,尤其是境外恶黑势力特别喜欢使用钓鱼邮件来携带自运行的宏,沙盒的对抗早就提升了一个另外的维度,很多自动沙盒已经不能正确解析携带加密锁的宏文件,从而需要依靠终端进程防护来进行对抗。但是EDR确实有点小贵,并不是所有的终端都能顺利启用EDR的防护,那么在这种情况下,我们又如何能保证万无一失的进行钓鱼邮件免疫呢?这点其实很难,但很难不是因为技术做不到,而是因为这个方法并不能对所有公司都启用,因为有的公司确实很依赖于宏的存在,那么这种情况下就不能考虑使用激进的手段来禁用宏。
正常情况下,宏的设置可以在“文件”-》“选项”-》“信任中心”-》“宏设置”,
但是用户可能会去修改该选项,导致宏的运行,为了不将这个“重担”交给用户,我们可以考虑采用GPO组策略来实现。从Office2016开始,微软开始支持对宏进行策略管理,需要去下载一个插件:https://www.microsoft.com/en-us/download/details.aspx?id=49030
按照提示解压到管理组策略的机器路径下:%SystemRoot%\PolicyDefinitions即可适用GPO来进行管理。
首先我们考虑的是要将来自于公网的Office文档中的宏给禁止掉,该选项也仅支持Office2016以上的版本。启用”Block macros from running in Office files from the Internet”,这意味着你仍然可以适用来自内部的未经数字签名的宏,当然,启用后,即使是已经数字签名的宏只要其来自于Internet,那么也将无法运行。(启用数字签名的宏何其稀少,就算有,可能也是伪造的签名)这个选项可以保证钓鱼邮件中的宏是无法执行的,基本解决我们大部分的问题。不仅仅是钓鱼邮件,Office依据AES数据(Attachment Execution Service)中添加的区域信息进行识别,因此,来自于Outlook,IE浏览器或其他工具下载到的宏文档均不可执行。
启用BLOCK模式后,默认情况下,Office程序应该会在保护模式下预览,如果你坚持点击了“启用编辑”,那么这些来自于Internet区域的钓鱼邮件附件中的文档宏将不能被执行。
当然,你也可以通过GPO设定一些例外,或者用户机器上面设定一些例外,这些设置将对某些特殊用户,比如财务用户或经常使用宏的用户允许执行某个路径下面的宏文件,从而达到一举两得的目的。
此外,你也可以通过组策略进行设置和调整全局参数。
甚至于,在攻防演练的最激烈的情况下,采取更加激进的措施,“全局禁用宏”也未尝不是一种有效的手段。
信息泄露
钓鱼邮件中还有一些其他的攻击手法,主要以钓鱼链接为主,针对伪造某某系统密码过期提示或者迁移提示等等,其目的均是诱导用户去提交相关资料或者直接针对密码进行提交,这种手段在目前也是不时出现,但自从启用了双因素因子认证后,这种攻击手法的成功率已经很小了,个人觉得排除特殊情况外,没有什么特别需要再进一步防御的可能。毕竟防御是需要成本的。
总结
以上手段其实并不复杂,可操作性也非常之强,却能很好的对钓鱼邮件进行免疫,很期望在以后的攻防演练对抗中能出现一些更高级的攻击手法和技巧,当然也有部分大佬低调地指出攻防演练“虚假的结束”或者“虚假的安全”,也对也不对,不管你公司最终有没有出局,网络安全应该是一个常态化运营的事情,而不是提前通知你某某时间某某地点开始,这不过就是各种设备商的一次饕餮狂欢的开始。时刻做好网络安全的运维才是重中之重。毕竟,演练只是演练,怎么样防范真实攻击避免掩耳盗铃才是我们安全人员切实的工作和责任。