|腾讯蓝军 深夜饮酒 & leonc

编者按:蓝军(Blue Team)的价值是站在攻击者的位置从实战角度协助防守方发现问题,避免防守方在进行安全建设时以自我为中心纸上谈兵,所谓以攻促防是也。蓝军的实战经验很重要,本文即是腾讯蓝军团队两位经常参与各类红蓝对抗赛事成员的经验之谈,欢迎与大家探讨。

近年来各种大规模的红蓝对抗赛事方兴未艾,攻防实战受到了更多的重视。红队和蓝队的打法逐渐提升并趋于成熟,已不再是单方面的攻击与防御,而演变为攻防博弈和几乎不限手法的对抗演习。与传统的渗透测试相比,这种高强度的红蓝对抗有着明显不同,甚至较量的不仅仅是技法,而包括战术打法、心态与体力的考验。

溯源与反溯源

溯源让演习得以攻守互换,是防守方的重要工作之一。演习攻击方并不能毫无顾忌的肆意输出,首先需要考虑的是隐藏自身,这也让演习更加贴近于真实的攻击行动。这里讨论的溯源并不只是停留在分析攻击手法和定位来源IP上,更进一步需要关联到真实的行为人,所以攻击方使用匿名资源变得非常必要:

VPN、匿名代理

纯净的渗透环境、虚拟机

匿名邮箱、手机号、VPS等

纯净的移动设备、无线设备等

实名的资源变得不太可靠,这并不是夸张,防守方通过各种途径可以反查到攻击者的踪迹,甚至动用“社工”等攻击手段,包括不限于博客、实名认证的社交账号、手机号、服务器等等。在攻防基础设施相对完善的前提下,很多溯源与反溯源的对抗会下沉到细节层面,比如攻击队员通过社交工具传递目标可疑URL时,如果误点击通过系统默认的浏览器打开,则可能会被JSONP蜜罐捕获社交账号或者被抓到真实出口IP。当然这也对防守方的溯源分析能力是一个考验,从海量攻击数据中提取出有效的关键信息。现在大量的蜜罐等主动防御手段起到了不错的效果,需要注意的是蜜罐本身安全措施也需要隔离得当,避免造成安全隐患。

作为应对,攻击方必须使用纯净的专用渗透环境进行攻击,完全与日常工作环境区分开来,并做测试环境的定期还原。在识别蜜罐之后,可以通过投喂大量脏数据,甚至伪造一个反向蜜罐,诱导防守方进入并误导溯源或者消耗防守方的精力,这也是防守方需要甄别和解决的问题,在演习行动的过程中,溯源与反溯源的故事一直在继续。

数据储备

圈定时间的演习对抗跟真实世界的攻击还是有一定区别的,防守方有相对充足的时间提前修筑防御工事,比如收敛外网的入口、关闭不重要的业务网站、限制关键系统的访问来源、降低安全设备拦截阈值等,甚至不惜降低用户体验以提升安全性。而攻击方由于演习前目标未知,在战时状态下再临时进行信息搜集和扫描探测效果必然会有一定折扣,并且很容易被拦截和封禁,往往很难定位到关键的资产。

此时,全网数据和被动信息搜集就会变得非常有价值,比如DNS历史解析记录、Whois历史信息、历史端口开放情况、网络流量信息等等,这些数据可以帮助你:

找出网站真实IP,挖掘相邻网段、绕过安全设备

判断目标是否为蜜罐

定位内网IP和系统

定位关键的应用系统

另外对于集团型目标,企业关系错综复杂,企业信息的数据储备则有助于快速定位关键目标,如天眼查、企查查、备案信息等。对于集团来说,不同领域的控股子公司,以及他们的孙公司往往差异很大,与目标系统不一定网络可通。通过控股关系,可以优先筛选出一批离目标系统较近的资产列表。另外通过采购公告、版权声明、专利、软件著作权、知识产权列表,也可能可以直接定位到目标系统的研发单位,特别是对一些有自己IT支撑单位的目标集团。

0day储备

大规模演习项目时间紧、任务重、人力有限,效率非常重要。常规突破手段无法完全满足需求,在对目标组织结构没有详细了解的情况下,正面硬刚的路径会很长,光是突破边界、摸清内网状态,判断是否连通靶标就需要花费较长时间。此时攻击关键的基础设施:邮件系统、OA系统、VPN系统、企业知识库、域控、集中管控等系统的价值则非常大。一个有效的0day则可以节省数天时间,至少可以直接获得一个外网的有效突破口,起到事半功倍的效果。譬如拿到OA系统可以摸清目标集团的组织架构,定位靶标系统位置,邮箱和VPN则更不用多说,从今年陆续曝出的0day数量也略见一斑。

对于防守方来说,从行为检测上看,其实0day并没有那么可怕,即使遭遇0day攻击,主机上的对抗也会回到基本面上,比如:Webshell、恶意命令、反弹Shell、端口扫描、黑客工具、端口转发、提权、C2通信等等,这里就要求防守方超越IoC和传统黑特征的束缚,不依赖对特定漏洞利用的先验知识,而全面基于行为数据进行建模,从而拥有发现和识别通过未知漏洞突破的恶意活动检测能力。对于完善的纵深防御体系来说,抓住端点上的蛛丝马迹,可能在攻击者尝试执行探测命令时就可以告警了,甚至可以用蜜罐捕获0day。攻击队的0day利用也需要深思熟虑,识别绕过蜜罐,并尽量趋向于合法操作,比如添加账号,而不是执行黑命令或者直接反弹Shell。

工具储备

工欲善其事必先利其器,对于攻击队来说,需要将所使用的到的工具进行免杀处理。C2载荷常见的处理方式包括域前置、ShellcodeLoader、加壳,也包括合法的软件签名等等,除了对木马进行免杀之外,渗透过程中也尽量不直接使用公开的工具,至少重新编译或者消除已知的文件特征,否则防守方通过最简单的IoC匹配就能成功告警。

一个典型场景:当挖掘到一个潜在的上传漏洞,并且花费时间绕过了WAF,结果上传了一个一句话木马,很可能会直接触发主机层面的Webshell文件告警,导致功亏一篑。内网渗透中的端口转发、扫描、密码抓取等工具也是同理。当然也看到目前渗透工具广泛的使用了无文件的攻击方式,如进程注入、从内存加载.Net程序集、向Java Servlet容器中动态注册字节码等等,显著提升了恶意工具执行的隐蔽性。另外,一些工程化的工具,比如邮件内容批量分析、通讯录提取等等,也会提升相当效率,节省宝贵时间。

相对应的从防守角度来说,无论是C2通信、横向移动、扫描,即使绕过端点检测系统,流量中也难免会留下蛛丝马迹,并且无文件的程序最终也会执行命令,所以除了静态文件检测外,还可以尝试通过RASP、流量取证分析、行为数据流等方式从多个维度发现潜在的攻击行为

弱口令与字典

横亘在攻击者与目标企业内部资源之间的非常直接的因素就是账号,当不必要的业务都下线关站之后,一个可以进入在线业务系统的账号变得非常珍贵,比如域账号、WiFi账号、邮箱账号、员工OA账号、管理后台账号等等。除了考验攻击队的信息搜集能力之外,各种字典的合理性和命中率就可以在攻击队之间拉开一定的差距,常见的字典比如:用户名字典、针对性的密码字典、网站目录字典、参数字典等等。一个好字典发挥的作用很可能超出预期,哪怕是边界网络设备的弱口令,也可能会打开直达内网的通路。

爆破账号时如果可以对用户名、密码分开爆破是最好的,在通过各种途径获取到一批用户后,可以以密码为维度进行密码喷射爆破。对于Web系统来说,可能会遇到验证码增加爆破成本和难度,这里可以调用打码平台的API,传统图片验证码的识别率已经相当高了。

对于防守方来说,需要建模检测广度优先的密码喷射爆破行为及账号异常登录行为。另外可以将验证码升级为更加智能的下一代行为验证码,增加人机设备识别、滑动验证码等措施来有效防止爆破。

分工配合

大规模红蓝对抗有逐渐类军事化对抗的趋势,全局上要求攻击方具有更组织化的分工与合作,像社工钓鱼、近源渗透、无线入侵等入口也需要提前安排部署。大体上人员技能可以分为:

信息搜集、数据分析

外网渗透

内网渗透、域渗透

逆向分析

钓鱼社工

近源渗透

漏洞利用、0day挖掘

报告编写

其他的技能点还包括安全设备绕过、数据库利用、网络设备利用、木马免杀、持久化、工具与协同平台支持等等。对于项目来说,报告编写往往是展现成果最直接的环节,报告的细节、侧重点需要尽可能贴近项目要求或者比赛规则,是比较繁杂而不可或缺的工作。

作为防守方,为了应对全方位的攻击手法,除了常规防御外,加派安保人员防范近源渗透也不失为防御体系的一环。

以上是笔者一些粗浅的观察,仅当抛砖引玉。攻击和防守的博弈需要靠技术和经验,同时也是个体力活。言知之易,行之难,如何在有限时间内达成目标?合理的分工协同与工作节奏非常重要,攻防过程中需要保持良好的心态与清晰的思路,沉着冷静避免失误。道阻且长,行则将至,攻防双方均需砥砺前行。

声明:本文来自腾讯安全应急响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。