红队到底是做什么的?
在红队中,您需要仿真、模拟或以其他方式扮演某个、某组入侵者或理论上的假想敌。这些活动通常以单独的演习或练习的形式出现,其目的是训练蓝队,蓝队由负责各种防御工事的小组或个人组成。并且,这种对抗可以在任何层面上开展,从应用程序的安全性到主动防御设施,等等。
此外,红队的组织形式或类型也随不同的公司而异。例如,有的公司中,红队的部分职责是由某个人“兼任”的,除此之外,他们还要负责其他攻击性的安全任务,如渗透测试或漏洞评估等。而有些公司的红队,成员之间具有明确的分工,各司其职,以便集中精力进行安全事件的检测和响应。
无论如何,只要红队的能力与蓝队的能力能够很好地匹配即可,任何形式都不重要。
安全攻击的生命周期
首先,重要的是要了解攻击的生命周期,又称网络攻击链,或简称攻击链。这个大纲定义了入侵者完成攻击所需的所有步骤。大多数红队的业务工作都是按照这些步骤上完成的,由于这些步骤都是服务于一个特定的目标的,通常称为“有针对性的行动”。
红队的技能选择及其与角色的相关性
攻击性思维
随着安全行业的发展,世界上所有的“管道胶带和泡泡糖”都开始浮出水面。大多数系统的设计目标,只是为了完成指定的任务。你的工作将是把这些系统拆开,并考察其黏糊糊的内部结构。
这是一种能让你克服所有困难的技巧。
示例:你必须学会用弹簧片开锁,而不是用钥匙。
技能培养:CTF、wargames或渗透测试实验都是锻炼攻击性思维的好方法,比如PicoCTF和Hack The Box。寻找在本地会议上现场演示的CTF的小组。这里真正的关键是始终质疑假设。
渗透测试
在渗透测试的旗帜下,隐藏着许多可以被归类为漏洞评估的东西,但是为了便于讨论,让我们在这里将其描述为在网络或主机上搜索已知漏洞的过程。
虽然这不是红队的只要职责,但是你还要在这个方面保持敏锐。在对抗过程中利用已知的漏洞发动进攻是培训蓝队事件响应分析人员的好方法。
示例:扫描无需身份验证的MongoDB实例以泄露有价值的数据。
技能培养:熟悉现有的自动漏洞扫描程序,如Nessus或OpenVAS。像攻击性思维一样,CTF、wargames或渗透测试实验也非常适合用于培养这一技能。
漏洞研究
没有强制性要求,但作为红队队员,如果自身具备挖掘0-day漏洞的能力的话,自然是极好的。该技能可以用于利用第三方或内部开发的应用程序中的未知漏洞。
这与渗透测试有许多重叠之处,但关键区别在于,0-day漏洞挖掘过程非常耗时,并且从检测和响应安全事件的角度来看,可能无法有效提高蓝队在这方面的应对能力。
示例:您的团队会发现某个内部应用程序存在漏洞的风险很大。在此之后,通过研究发现了一个可利用的漏洞,并编写一个概念验证工具,这样,您的团队就可以利用该工具来实现代码执行攻击了。
技能培养:关于应用程序漏洞利用的文章或书籍有很多,如Security Sift站点上的 https://www.securitysift.com/windows-exploit-development-part-1-basics/,或者Dafydd Stuttard和Marcus Pinto撰写的“https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470”一书。
软件开发
红队要想成功,关键在于其软件开发能力,这一点再强调也不为过。顶级的红队几乎无法与标准应用产品团队区分开来;他们也会采用正规的开发方法,使用版本控制和发布软件,设置路线图,使用CI/CD技术,编写测试用例,等等。如果在不知情的情况下,大多数红队看上去就是开发团队。
您将发现,自己需要使用多种语言来编写代码,这具体取决于您打算使用的平台和对抗技术,此外,还必须与其他人合作编程。
这方面,最重要的是要了解最小可行产品(MVP)原则。要让代码运行起来,要编写相应的文档。如果它在将来成为了一个重要的工具,那么,可以在将来投入更多的事件来改进它。
示例:您的操作人员需要一种方法来搜索主机中的敏感文件。为了提供相应的支持,可以编写一个Python脚本,列出所有可能的私钥和电子表格。
技能培养:对于普通的编程书籍,在这方面可能需要进行相应的改进,但也有很多书专注于编程语言的攻击性使用,例如Justin Seitz编写的“ Black Hat Python: Python Programming for Hackers and Pentesters”一书。
基础设施
为了让红队发挥最大作用,最好将建立和维护C2基础设施的繁琐事宜交由其他人处理。
对于基础设施来说,可靠性和可还原性是非常重要的特性。使用基础设施自动化和配置管理工具,不仅可以实现快速迭代,同时也能节约花费在终端上的时间。
基础设施即代码应该是红队的梦想,这样一来,就不用每天都抽出一个小团队来管理整个基础设施了。
示例:您的反向代理应该被配置为抵御“好事的”分析师,并且该功能应该从存储库或容器中自动部署。
技能培养:尝试使用免费试用的AWS资源以及相应的自动化工具,如 CloudFormation和OpsWorks来建立一个基于云的网络实验室。此外,建议阅读@bluscreenofjeff撰写的Red Team Infrastructure Wiki ,了解专门红色团队进行优化的相关流程。
网络和系统
在基础设施的设计和实现过程中,一定要搞清楚主机和网络相关的所有细节——可靠性和安全性都在细节中。这一点怎么强调也不为过。
这些系统可以是公共云或私有云托管、ESXi上的虚拟机、物理或虚拟网络。它们通常会面临黑客千奇百怪的攻击,所以,我们一定要确保红队可以毫不费力地模拟攻击者的工作方式。同时,您还需要对命令行非常熟悉。
此外,熟悉这些主题也有助于您在目标环境中完成操作。
示例:获得目标主机访问权限后,第一步通常是列出正在运行的进程。
技能培养:这些技能可以通过常规方法养成,但需要多加练习,如设置反向代理、防火墙、身份验证等。此外,还可以在实验室中搭建诸如Empire之类的后续利用框架,并探索其各种功能。
逆向工程
逆向工程是分析某些对象的过程,目的是弄清楚其工作原理。
逆向分析可以用来分析在野恶意软件(这通常称为恶意软件分析),旨在掌握其功能,以及攻击者是如何使用它们的。我们可以从很多地方找到恶意软件样本进行逆向练习,但一定要倍加小心。
此外,我们还可以逆向分析来了解目标应用程序的运行方式,以便找出相应的漏洞利用代码。
示例:假设您要使用不常见的COM对象来执行代码。您需要批量分析Windows COM对象,以找到含有启动进程所需的导入函数的对象。
技能培养:您可以通过阅读Chris Eagle撰写的“The IDA Pro Book”一书,来学习如何使用IDA Pro,或者阅读@malwareunicorn撰写的Reverse Engineering Malware 101。
社会工程学
入侵者发动网络攻击时,第一步通常是发送网络钓鱼电子邮件,因此,了解人们在哪方面容易上当受骗是非常重要的。
社会工程在攻击过程中的应用非常广泛,例如佯装掉在地上的USB设备,水坑攻击等。
应用社会工程是红队实际工作中的一部分,旨在欺骗毫无戒心的用户。当然,忽悠人只是可选的一个步骤。此外,也可以跳过网络钓鱼,直接使用已有的访问权限,或故意给队员留下针对特定主机的远程访问权限,以减少操作时间。
这种测试不同于测量和训练最终用户安全意识的网络钓鱼评估。
示例:客户要求您针对公司高管创建一个令人信服的鲸钓工具,以测试其防范意识。
技能培养:检查您的垃圾邮件文件夹中的网络钓鱼样本,并掌握@HackingDave提供的Social Engineer Toolkit的使用方法。
物理安全
一些红队的工作范围甚至包括物理安全。这个测试可能非常简单,例如悄悄的进入某个场所,然后在指定的地方留下一个投递箱。这虽然是一个有趣的话题,但许多公司还没有引起足够的重视。
示例:总部大厅中的网络插孔位于内部LAN上,您需要演示针对它们的攻击。
技能培养:开锁,安全系统绕过技术,徽章破解(badge hacking)和诈骗游戏(confidence games)等,都是不错的训练方法。
威胁情报
红队需要来自多个威胁情报源的战术情报,从而为战术桶中的入侵者仿真提供丰富的素材。此外,我们还可以为工具和文档添加新的功能,以便可以搜索特定入侵者的相关资料,如博客文章等。
威胁情报还可以确定入侵者的动机,以及在称为入侵追踪( threat actor tracking)的过程中识别攻击者的行为模式。红队可以使用这些信息来设计对抗演习相关背景。
威胁情报也可以来自安全研究人员等更为温和的来源。他们的工作不仅可以预测入侵者的战术,甚至可以影响他们的行为。
示例:您知道特定的入侵者会在获得持久性访问权限时发送启用宏的恶意Office文档来利用WMI订阅,因此您可以设计POC来复现该行为。
技能培养:查看大量关于恶意软件分析和入侵者跟踪技术的相关文章和报告。
安全事件的检测和响应
蓝队将成为您的主要客户和对手。他们是安全检测和响应方面的专家。红队需要能够预测蓝队的能力,并在工作过程中充分利用这些知识。
学习公司的防御机制能够让红队成员比其他攻击性安全从业者更有价值。
示例:您知道蓝队会监视与Powershell相关的日志,因此,当您设计利用Poweshell漏洞的工具时,您可以调用版本为2的Poweshell,而不是最新版本的Poweshell。
技能培养:在您的实验室网络上搭建Security Onion,以及基于主机的监控工具,如sysmon或auditd。在实验室进行相关作业时要密切关注它们。你会慢慢发现,你也能从蓝队的角度思考问题了。此外,还可以经常阅读介绍如何有效预防和检测入侵方法的相关文章。
技术写作
清楚地描述纯技术方面问题并能兼顾广大受众的感受是一件具有挑战性的事情,但其重要性不容小觑。作为顾问,技术写作对于向客户提供有价值的报告至关重要。
老天保佑,希望你需要做的报告越少越好。
同样重要的是,为红队使用的工具和流程编写文档。这方面的信息非常多,维持态势感知的唯一方法就是编写详细的文档,并且不断更新文档。
在制定规划时,大多数团队都计划递交相关的提案,详细说明特定红队活动的风险和回报,以供管理层批准。
示例:对于您的行动提案,您需要向利益相关方保证,您可以安全和负责地完成相关活动,并给出具体的活动成果,当然,必须以书面形式给出。
技能培养:培养这种技能非常具有挑战性,我们建议学习技术写作的正式课程,例如Coursera提供的相关课程。此外,也可以撰写您擅长领域方面的问这,并请一些有经验的熟人做您的审稿人。
培训与汇报
所有上述技能都建立在实现红队教学目标的能力之上的。
您应该能够通过红队工作报告向主要蓝队利益相关者提供简短的介绍(汇报),注意陈述相关的事件链。清晰地、一致地、不带苛刻的评判地完成这件事,不仅是红队向更大的组织展示其价值的正确方式,也是与蓝队保持积极关系的正确姿势。
您还应该能够组织与红队相关的各种知识,并在个人或团体培训环境中提供这些知识。这样,不仅可以分享您对相关主题的理解,同时,听众还可以实时提问,这样,他们就不用通过观察您的工作来间接学习相关的知识。
示例:假设公司蓝队在分析Windows中的备用数据流的利用方法时遇到问题。这时,你可以将自己对ADS的了解,以及入侵者常用的战术,作成一个简短的汇报,来讲给蓝队分析师听。
技能培养:找机会向别人介绍自己熟悉的主题,例如写博客文章,或讲解给对安全感兴趣的朋友。如果您希望提高自己的公开演讲技能,我们向您推荐Toastmasters,或者在本地小型会议上发表演讲。
红队之路源码配套工具下载链接:
链接:https://pan.quark.cn/s/43807e4e18cd