大家好,我是ABC_123。在上篇文章《记一次国护零失分的防守经验总结(上篇)》中,给大家分享了一些在国护防守中能够减少失分、实施简单而又能快速奏效的方法。本期参考之前的防守零失分的案例,继续探讨并分享其它的一些好用的方法。目前分享的是一些蓝队防守的关键点,随着总结的深入,这些点会慢慢形成面,最后会形成一个蓝队防守的体系。
注:****“希潭实验室”公众号作为自媒体,会一直保持中立原则,未与任何公司绑定,在文章中也不会评论任何厂商的安全设备的好坏,所以关于设备的选择需要大家自己斟酌,适合自己的就是最好的。
**注:**本公众号最近开启了留言功能,大家对文章内容有什么疑问,可以在留言里写上自己的经验和看法,一起讨论集思广益,我看后都会回复。
这段文字也是对上一篇文章的一些防守方法进行补充,在一些紧急情况会收到奇效,需要依据自己的实际情况加以改善,这里我还是补充一下吧。
主机外联全面封禁:目前的Java应用的反序列化漏洞,为了绕过各种限制通常需要反向连接RMI服务端,因此封禁主机外连可以切断0day漏洞的利用路径,解决部分0day漏洞的攻击。比如说当年的核弹级别的Log4j2等0day漏洞,就需要出网才能利用,大面积整改漏洞需要研发测试,可能耗费一个月的时间,那么限制出网会是一个非常好的策略。如果部分业务确实有出网需求,那么可以加上白名单访问控制策略。
异构WAF设备串联部署:这里的WAF异构,并不是说非得两个WAF进行串联,如果目标业务流量很大,或者WAF型号就是不兼容当前企业的业务流量,使用防火墙自带的WAF结合另一家WAF也是可行的。总体来讲就是为了降低攻击队直接用0day打穿单层WAF设备的可能性。
**内网邮箱防钓鱼策略:**这里不考虑那种极端情况下,我们当时零失分主防的单位就是这样做的,演习期间连钓鱼邮件都没收到,只收到过钓鱼电话。这种策略可以迫使攻击队一看钓鱼无果,转而去打其它目标,找其它防守薄弱的防守单位进行攻击。
参与的防守单位结合已经采购的防护设备、监控设备,可以对流量特征、样本特征进行告警,这些安全设备可以对攻击队员常用的红队工具的指纹进行识别和拦截,从而抵挡很大一部分攻击行为。ABC_123在这里给出一个初步的总结,大家视情况自己丰富规则:
**1、漏洞测试工具的指纹信息:**主要包括Burpsuite的证书或者流量特征、Fiddler的证书或者流量特征、Burpsuite的替代品Yakit、抓包工具Charles的证书或者流量特征。这些代理抓包工具都是红队人员人手一份的,对这些指纹信息进行告警会极大增加红队人员的测试难度。
**2、常见的dnslog域名:**攻击队员在探测一些Java反序列化漏洞、一些0day漏洞的时候,通常会用dnslog方法进行测试。这些dnslog域名包括dnslog.cn、ceye.io、burpcollaborator.net、awvsscan119.autoverify.cn等等,一旦在流量设备中发现有这些dnslog域名的访问,需要立马告警进行处理,运气好的话,还很容易抓到0day漏洞。
**注:**对于Fastjson反序列化漏洞,dnslog能出不一定代表其存在漏洞,因为很多较新的fastjson版本,本身就支持dnslog解析;但是如果tcp端口能出,那就100%存在漏洞了。
**3、常见的C2特征:**常用C2包括CobaltStrike远控流量特征、Metasploit的meterpreter的流量特征。根据以往的报告,有些红队人员喜欢使用meterpreter功能去横向打内网,效果也不错。
**4、代理工具特征:**攻击者在外围打点成功之后,通常会想办法架设内网代理,使用包括reGeorg、Ngrok、NPS、Frp等正向、反向socks5代理工具,这些工具的流量特征样本特征都应该入库,一旦安全设备有告警要及时处理。最好能够自己分析自己定制一些防护规则,因为这些工具都是开源的,对于中高级水平的红队人员来讲,做免杀或者去掉其流量特征都是可以做到的。
**5、恶意的User-Agent指纹:**这些指纹信息包括python-requests/2.24.0、Java/1.8.0_181、Go-http-client/1.1、Apache-HttpClient/4.5.13 (Java/1.8.0_251)等,这些都是红队工具常见的User-Agent指纹信息,应该重点监控重点排查,下面这张图给出了正常浏览器的一些指纹信息及解释说明。
攻击者一旦外网打点成功或者钓鱼成功,意味着边界防护已经被突破,内网横向即将开始。很多公司的红队人员都有自己专门定做的内网横向自动化工具,一般是基于go语言或者rust语言编写。
笔者见过高水平的红队人员内网横向的小工具,自动化程度已经相当高,而且运行之后删除自身,完全在内存中,可以自动化扫内网的Mssql的1433弱口令、Mysql的3306弱口令、SMB的弱口令或者MS17-010漏洞、1099的RMI反序列化等等,会自动收集域信息并打下域控,并且最后出具一份加密的内网横向报告;很多红队人员会使用fscan这样的开源的高效的内网横向工具,随着fscan原创作者多年来的不断更新,已经相当成熟,成为红队人员快速攻打内网得分的神器。
所以封堵内网横向的自动化,成为当前的一个难点。经过总结发现,攻击者的内网横向的自动化,无论如何都绕不开扫描和利用常见的高危默认端口,基本上就是常见的445(SMB)、135(WMI)、1099(RMI)、3306(Mysql)、1433(SQLServer)、1521(Oracle)、3389(RDP)、22(SSH)、21(FTP)、6379(Redis)、5432(Postgres)、7001(Weblogic)、27017(MongoDB)、5985(WinRM HTTP)、5986(WinRM HTTPS)等等。
当时想到的策略就是内网高危端口的随机化,比如Redis的端口由6379改为6380、6390、16379、26379,Mysql的3306端口改为13308到13310之间、RDP的3389端口改为23388、33389等等;对于SMB的445端口、WMI的135端口难以更改的情况,那么就视情况利用操作系统自带的防火墙策略屏蔽掉。
**优点:**在国护大考的前夕,邀请不同攻击队实战检验的时候,发现这种策略可以极大拖慢攻击队员的内网横向速度,迫使其进行全端口探测扫描,这样的扫描行为动静非常大,非常容易触发内网的各种安全设备的告警,极大地增加了攻击行为暴露的可能性。
我这里说的伪造指纹信息是双向的,一方面要将Weblogic、Tomcat、SSH等的指纹进行伪造,攻击者会通过指纹去匹配自己的0day武器库,所以隐藏指纹和版本信息,可以一定程度阻挡攻击队员对目标漏洞的识别;另一方面还要想办法把核心的应用系统伪造成honeypot之类的蜜罐指纹,由于攻击队员特别怕被反制或者溯源,所以遇到honeypot等蜜罐指纹,很多情况下会放弃进攻。
**伪造指纹需要根据具体情况定制化展开:1、**对于404页面、500页面,Tomcat的可以伪造成IIS的错误页面;**2、**IIS的404页面可以伪装成Weblogic或者Springboot的页面特征;**3、**Linux的22端口的指纹信息可以添加honeypot蜜罐关键字;**4、**Weblogic、Tomcat、Nginx等中间件的指纹信息,可以通过修改配置文件的方式,重点将版本号去掉,将一些特殊关键字剔除或者进行伪装;**5、**对于一些OA系统、报表系统、CMS系统,可以将一些系统的图标、css路径、png图片图形进行修改,防止被攻击队员轻易识别。
总结以往的经验,ABC_123发现在国护“大考”前期的准备工作中,防守单位都会把精力放在阻止0day攻击和网络钓鱼攻击上,而对于公众号、小程序及手机APP的防护往往不够重视,这些资产防护相对薄弱。随着近几年攻防比赛规则的演变,关于数据安全的数据分越来越得到重视,对于一些0day漏洞储备不是很强的队伍,会把很多精力放在对于这些资产的nday漏洞、逻辑漏洞的挖掘上。
他们通常会使用burpsuite、yakit、fiddler等抓包改包工具,修改一些请求参数,重点挖掘一些逻辑漏洞、越权漏洞、订单遍历漏洞、用户id遍历漏洞等,**非常容易导致几百万、上千万用户数据泄露,而这些逻辑漏洞、越权漏洞常见的WAF设备都是没办法防御的,**因为它在设备看来就是正常流量。这些小程序资产也经常会出现一些SQL注入漏洞、Fastjson反序列化漏洞、Log4j2反序列化漏洞等,在近几年的报告中,经常会发生将小程序逆向、将手机APP逆向并反编译Java代码,找到了阿里云AK/SK硬编码的问题,导致云服务器被拿下一大片的情况。
**总结:**公众号、小程序、手机APP程序虽然基本上不会导致目标单位出局或者内网被完全打穿,但是在数据安全日益重视的前提下,其逻辑漏洞会导致数据分方面失分非常严重,如果上百万、上千万数据泄露,那其危害也相当于靶标被攻破了。
在以往的攻防比赛中,一些厂商的VPN设备被发现存在0day漏洞的情况,任意加账号漏洞及不太稳定的多个远程溢出漏洞使VPN设备沦陷,导致一大批重点防守单位被打穿。这些核弹级别的POC在过去好多年,居然没有一个被公开过,网上流传的几个poc都是假的。所以老旧资产的VPN设备一定要及时下线,对于曾经被VPN设备漏洞打穿的防守单位,攻击队员可能会遗留一些VPN的sqlite数据库,里面的账号密码虽然是加密的,但是经过代码审计和逆向工程,还是可以解密的,所以这就要求要VPN设备的用户的密码重置,防止攻击队员复用之前的VPN密码。
此外,对于VPN设备的防护,可以通过设置异常登录时间的告警规则,增强对异常访问行为的监控。可以监测其用户登录VPN的时间点,比如说有些VPN账号密码在半夜、凌晨登录,并且访问多个内网的业务系统,对这样的行为进行告警,第一时间下线VPN,然后进行应急处置。
1. 后续有时间会整理一些高危端口的列表、dnslog威胁域名的列表,旨在为大家提供更具体的防御指南和参考,敬请期待。
2. 大家有什么好的蓝队防守思路,欢迎在下方留言讨论。
公众号专注于网络安全技术分享,包括安全咨询、APT事件分析、红队攻防、蓝队分析、渗透测试、代码审计等,每周一篇,99%原创,敬请关注。
Contact me: 0day123abc#gmail.com
(replace # with @)