专栏首页信安之路红蓝对抗技术怎么学,学什么?

红蓝对抗技术怎么学,学什么?

红蓝对抗是最近很火的一个词,也是非常多小伙伴想要学习的技术方向,那么什么是红蓝对抗,如何学习?

其实很好理解,就是通过攻防的方式来检验企业是否安全,通过对抗的方式来找出安全的弱点,针对弱点进行防御建设,通过不断优化这个流程,让企业的安全状况越来越好。

这篇文章主要以老外整理的框架 ATT&CK 来看,我们如何学习红蓝对抗的技术,怎么提升自身的技术能力,更好的提升整体的安全能力。

ATT&CK 各个阶段(攻击)

突破边界

任何一个企业,敏感数据和核心资产都是存在于内部的,所以作为攻击方,想要获得最大的影响力就需要进入到企业内部,并且通过一系列的操作拿到公司的核心资产,这是攻击者最终的目标。

进入内部是我们的第一步,在这个阶段,我们可以通过两种不同的方式进行攻击,分别为:主动攻击、被动攻击。

主动攻击,我这里的理解就是不需要内部人员的配合,通过边界的应用程序或者服务的弱口令进入内网,这个过程中是没有企业内部人员参与的,而且成功与否取决于企业边界的安全防御能力和攻击者自身的能力和运气。

而被动攻击,就是需要内部员工的配合,这个过程是有内部人员参与的,比如钓鱼邮件、挂马、水坑、供应链等攻击方式,需要内部员工点击构造好的恶意页面,或者更新恶意的应用程序,或者攻击者通过社工欺骗的方式让内部员工安装有问题的软件,从而为攻击者提供一个可以进入内部的通道或者临时工作点。

这里涉及的技术点包括:

1、挂马:通过给大量的网站或者受害者经常访问的网站插入恶意的脚本,在受害者使用浏览器正常访问该网站时,截取用户的凭证、执行恶意脚本,可能需要依靠浏览器自身的漏洞或者用户无意识的输入自己的账号密码。

2、应用漏洞:这个最常见,也是大家接触最多的,比如 web 漏洞,通过这些漏洞获取服务器权限,如果服务器在内部网络,那么我们就很幸运的进入内网了,但是如今大多数的 web 服务器都放在了云上,通过这种方式进入内网的可能性相对会比较小。还有其他的一些漏洞,比如:Windows 协议的 ms17010、ms08067,或者其他应用或者服务的漏洞。

3、远程服务:为了远程工作方便,很多企业都会设置一些可以通过账号口令认证即可进入内部的方式,比如:VPN、远程桌面等,我们需要做的就是要获取这些方式中使用的账号口令,这些口令可以主动去网络上收集,比如 github 等源代码分享平台,也可能从一些公开分享的网盘或者文件服务器上找到一些无意泄露的账号口令。还可以通过钓鱼的方式被动获取口令,还有暴力破解等方式。

4、硬件传播:提前给一些硬件做手脚,在将硬件插入设备时,释放恶意文件,达到获取权限的效果,成本和难度都比较高。

5、鱼叉式附件:发送钓鱼邮件或者消息,将捆绑恶意代码的应用或者文件发送给受害者,在受害者打开或者运行文件时,释放并运行恶意代码,从而达到获取权限的目的。

6、鱼叉式链接:这个攻击的难度在于链接背后的功能,比如:获取凭证、执行恶意脚本(依赖浏览器的漏洞)等。

7、社会工程:通过其他的服务媒体,与企业员工建立关系,从侧面了解公司的情况以及个人设备的情况,比如常用软件、版本信息,这样有了一定的信息基础之后,进行有针对性的攻击尝试。

8、供应链攻击:这个方式需要借助于先攻击了一些其他的公共软件提供商,然后将正常的软件捆绑恶意代码或者通过修改源代码的方式增加后门,也可以直接提供存在恶意代码的公共组件,大家为了方便,直接使用该组件进行编码或者执行,从而实现入侵。

9、第三方攻击:企业不是闭关锁国的,会存在大量的合作商,比如外包、子公司、外部支持等,这些人虽然不会一直在企业内部,但是存在业务往来,对于企业内部也是有部分访问权限的,通过获取第三方的权限,从而实现进入企业的目的。

10、有效账号:这里的账号主要包括一些系统的默认账号、域账号,账号的获取可以结合钓鱼和暴力猜解等方式,账号的使用需要依赖外部是否存在可以远程访问的服务,比如:VPN、windows 3389,Linux ssh 等。。

如何学习这些技术

1、信息收集,收集目标公司的员工的联系方式、边界资产信息、公司的地理位置、目标公司的合作伙伴等

2、钓鱼挂马要解决的是如何匿名发邮件、如何与目标公司员工交流取得信任,涉及心理学的问题

3、技术方面,如何设计钓鱼邮件内容、如何设计钓鱼网站、历史浏览器 Nday 如何利用、如何给附件增加恶意代码(office 宏,绑马,快捷方式等)

4、应用安全,web 安全,各种 Nday 的利用,知道主流的应用有哪些,存在哪些历史漏洞,如何利用,更深一点知道是什么原理等

执行命令

这个阶段的学习主要是为了将恶意代码或者软件在目标操作系统中运行,让恶意代码发挥作用,所以对于系统的熟悉程度直接影响这个阶段的效果。

如何让恶意代码在主流的操作系统中运行?

目前国内外主流的操作系统包括 MAC、Windows 和 Linux,对于用户使用量来看,Windows 一定是最多的,也是大家最熟悉的操作系统,具体细节可以参考:

https://attack.mitre.org/tactics/TA0002/

任务目标

这里提到了非常多的在系统执行命令或者软件的方式,每一种都可以进行类似的研究,比如如何使用,适合哪种场景等,这里的场景主要包括:获得一个远程桌面、获得一个 webshell、获得一个 VPN 入口、获得一个木马通道等,具体细节可以参考 ATT&CK 等框架,选择一些自己感兴趣的点进行研究并编写报告。

维持权限

这里的技术主要是如何让我们目前的权限得到保留,防止在一些特殊情况下被踢出去,比如:自己工具 BUG 意外退出、被安全软件发现自动清理、被安全人员发现清理等情况。这里的技术可能会贯穿整个供给链路,只要你拿到了比之前的更高的权限,那么你就需要维持住自己历史最高权限,这样一步一步的逼近最高权限,防止自己的努力白费。

这里涉及哪些技术呢?

可以参考 ATT&CK 的框架中关于 Persistence 的内容:

https://attack.mitre.org/tactics/TA0003/

任务目标

这里涉及的技术点非常多,不是一个人一篇报告可以完成的,所以大家可以根据兴趣和自身的优势选择一些知识点或者技术点来测试实现,编写报告,不做具体要求。

权限提升

通常我们获得的内部权限并非最高权限,可能是系统某个服务的权限,可能是某个普通用户的权限,这是我们就需要通过各种手段来获取系统的权限,这样我们才可以在系统中做更多的操作,比如抓取密码哈希、获取所有关键目录下的文件等

关于系统提权最常见的有:利用系统漏洞溢出提权、DLL 劫持、服务注入、应用漏洞等,涉及的技术更多是系统层面的,需要一些操作系统级别的基础,难度非常高。

具体技术细节点列表参考 ATT&CK 的框架中关于提权的列表:

https://attack.mitre.org/tactics/TA0004/

任务目标

如果让大家去写漏洞利用工具、DLL 劫持工具这种太难了, 作为攻击方,还是以使用为主,这里提到的技术点了解就好,然后根据技术点去找一些可以利用的现成工具,有非常多的大神开发了很多好用的小工具,能够用好这些已有的工具已经很不错了,这类技术还是重点关注如何使用吧,如果有实力可以研究研究原理。

绕过防御

随着安全行业的发展,越来越多的安全公司和安全产品被很多公司所使用,在对抗过程中会遇到非常多各式各样的安全产品,如何绕过防御就成了攻击方难以逾越的门槛,对抗无止境,没有百分之百安全的系统,也没有百分之百可以防御的安全产品,绕过防御措施继续攻击是攻击方的必修课。

技术细节还是参考 ATT&CK 的框架:

https://attack.mitre.org/tactics/TA0005/

任务目标

这里我觉得看看就行,太难了,看看自己可以学会啥,根据自身情况,学习学习总结总结就好,这里算是攻击方最难的情况了,想要绕过防御需要比防御方更懂系统,有兴趣可以深入研究。

凭证收集

在内部活动,凭证是很关键的通行证,几乎所有的系统、应用、网络设备都需要凭证进行管理,我们不可能去任何地方都绕过凭证使用漏洞去打吧,所以收集越多的凭证,对于我们在内部的活动就越有利,如何收集系统上保存的凭证就是一门学问了。

这个阶段需要我们了解在系统中可以收集哪些凭证,在什么地方收集等等,以我自己的经验来说,有以下几点:

1、系统账号,可以通过 mimikatz 来抓起本地账号和哈希、还有可能抓到当前登录用户的明文密码

2、浏览器中保存的账号,这个在内部凭证收集中非常重要,因为大家为了方便登录内部或者外部的应用系统,都会将自己的登录平常记录在浏览器中,那么如何从浏览器中获取已经保存的用户凭证就是一个非常关键的技术

3、管理员的密码本,这个保存方式有很多,有 txt、excel、密码管理器等,安全意识弱的未设置访问密码就可以获取,安全意识强的可能会给保存密码 excel 设置个密码,需要我们去破解,那么如何破解加密的 excel 就是需要研究的技术,还有一些密码管理器,如何获取管理器的管理密码呢?这也是需要解决的难题,还有这些东西用户会保存在哪里?如何查找等一系列表的问题,都需要我们自己的寻找,方式可以依据自身的习惯来猜测。

4、邮件、通讯历史记录,很多人喜欢将密码的敏感信息进行邮件传送,然后为了方便就把密码等敏感信息放在了邮件的 note 中,这也是一个很好的获取凭证的地方。

更细节的技术点可以参考 ATT&CK 的框架:

https://attack.mitre.org/tactics/TA0006/

任务目标

可以拿自己为目标,看看自己的敏感信息都保存在了什么地方,这些地方的凭证如何获取,使用了什么技术,深一点可以研究一下原理,还可以扩展一下,如何主动记录敏感账户信息,比如:键盘记录器、钓鱼等方式

资产发现

前面的技术都是跟单个人和单个系统为主要目标,这里就需要进行扩展,首先是进行基础的信息收集,发现内部资产,比如:IP 段信息、内部网络结构信息、内部应用系统信息、DNS 域名等信息,为我们后续的横向扩展做准备。

信息收集的途径有很多,比如看系统的网络配置信息 ipconfig,推测网段的划分,根据 DNS 服务器来推测内网是否存在 AD 域,根据网段来获取存活的主机列表,然后做做端口扫描,看看内部开放了哪些应用等等。

更细节的技术点可以参考 ATT&CK 的框架:

https://attack.mitre.org/tactics/TA0007/

任务目标

这里主要考察几方面,比如如何确定内部网络 IP 段、判断是否存在 AD 域、如何轻量级获取内部端口开放情况、如何避免被安全设备发现获取存活主机列表等,用最小的动作来获取最全的内部资产信息。

横向移动

在获得资产信息时候,我们就要开始扩大我们的权限范围,扩大战果了,整个过程跟在外部攻击差不多,如果网络内部存在 AD 域的话,如果我们对域相关知识熟悉的话,只需要一个域内的普通权限就可以获取域内的大量信息,对于我们的横向移动非常有帮助。

这里涉及的主要技术包括:域相关知识(域信任关系、域林、域信息查询命令等)、各种内部应用存在的安全问题、各种应用爆破枚举的方式方法、各种应用服务利用提权的方式方法、远程命令执行的姿势等。

更细节的技术点可以参考 ATT&CK 的框架:

https://attack.mitre.org/tactics/TA0008/

任务目标

大家可以针对域这块好好学习学习,比如搭建一套域环境,了解域相关的命令如何使用,有什么作用,了解域的认证协议,还有什么黄金票据、白银票据的原理,Dcsync ,hash 传递等。

数据收集

这里的信息收集跟之前收集本地的敏感信息不同,这里主要是如何在内部收集网络中存储的信息,比如:文件服务器、数据库服务器、邮件服务器、DNS 服务器等,我们在获得各种权限之后,你拥有了大量的权限或者说你已经能达到了整个内部最大的权限,想去哪去哪的情况下,那么你还要做什么的问题。

通常我们对于目标进行攻击是有目的的,目的并非是拿到最高权限,而是要获取敏感数据,所以收集想要的数据才是最终的目标,那么我们就需要知道目标数据可能在什么地方,然后去指定的地方寻找。

更细节的技术点可以参考 ATT&CK 的框架:

https://attack.mitre.org/tactics/TA0009/

任务目标

这里需要大家了解企业的架构,公司的组织架构,不同职位是干什么的,拥有什么样的数据,还有数据存储的途径有哪些,公司内部喜欢使用什么方式分享数据、存储数据等,这样在找需要的数据时可以找到对应的人员,拿到相关权限之后去对应的地方去找寻目标数据。

建立通道

在获得数据之后,如何将数据传递出来就是一门学问了,首先要做的是打通道,通过什么途径传递出去,通常的做法就是建立 C2 服务器,使用远控木马、文件管理器等方式,还可以利用自带的 web 服务,通过 web 服务中转将数据下载回来。

这里涉及的技术主要包括:木马控制的各种方式和技巧、内部与外部建立通道的方式,可以利用的点包括 web 服务器、公共云盘、自建通道(各种协议)、突破边界限制(proxy)等

更细节的技术点可以参考 ATT&CK 的框架:

https://attack.mitre.org/tactics/TA0011/

任务目标

主要是 C2 服务器如何更好的隐藏自己,更持久,如何利用网络云盘传递数据,如何使用企业对外的服务传递数据等通道问题,大家可以扩散思维,总结测试自己的想法,建立一个有效的通道,主要是从内到外突破边界的问题,还要绕过一些流量审计的安全工具,防火墙的协议拦截情况等。

数据转移

建好通道之后,我们如何将数据完完整整的从内部转移到外部呢?由于会存在一些安全流量审计的工具,所以我们需要将数据进行处理,比如:加密、分块、分时等方式传输。

涉及的技术点会跟实际的环境关系比较大,具体细节参考 ATT&CK 的框架:

https://attack.mitre.org/tactics/TA0010/

任务目标

通过命令行的方式如何更有效的将数据进行加密、分块,然后如何将数据一点一点的传输出来并进行还原的问题,大家可以学习思考总结一下。

必要措施

既然是攻击一定是不择手段的,作为一个有情怀的攻击者,一定是不想破坏目标系统,做到来无影去无踪的,但是有的时候为了拿到自己想要的权限可能需要一些特殊的举措,很可能会影响目标的可用性、保密性和完整性,也是违背我们作为道德黑客的初衷的。

所以这里的只是提一下,希望大家不要走到这一步,具体细节参考 ATT&CK 的框架:

https://attack.mitre.org/tactics/TA0040/

本期任务可以不做

清理战场

这里就是最后最关键的操作了,理论上是要把自己的以往的所做所为留下的痕迹一一清除,关键技术就是我们要熟悉不同的操作下会留下什么记录或者日志,然后如何清理这些日志记录,自己使用的各种工具是否清理干净等。

这个框架里没有,大家可以自己思考,各种操作下记录的日志在什么地方,如何更好的清理日志,网络上有非常多的资料可以参考,可以总结总结。

安全建设(防御)

大家可以看到攻击方面的技术点非常多,作为甲方企业更多的是依靠乙方的专业能力,使用工具配合一些运营技术人才来进行防御。

安全最大的敌人是人,有人的地方就不安全,从攻击的流程来看,突破边界最有效的方式就是利用员工的安全意识不强,让攻击者有机可乘,即使你的边界防御的如铁通一般,也会被内部员工有意无意的运行恶意软件,让你的防线彻底崩塌。

而甲方对于人员的安全意识提升并非一朝一夕的事情,需要大环境的影响,公司和国家的共同努力,社会成员的不断成长,安全意识才能不断的提高,除了人的因素,剩下就是设备和基础设施的安全性了。

从攻击的流程来看,系统的安全、应用的安全都是非常重要的,补丁有没有打完整、应用上线前能不能发现全部的安全问题,找出安全问题能不能修复完再上线、系统的配置是不是安全等等。

除了系统自身的安全外,还有网络的安全问题,内部安全域划分是否合理,网络是否存在监控,安全事件是否有告警,告警是否有人处理,接入网络的访问控制是否有效,接入用户是否有审计等等一系列的问题,都可以决定你的企业是否安全。

攻击者可以是一个人、一个团队,而防御者是整个企业所有参与者,每一个人都是存在安全风险的,除了自己公司的人,合作的第三方公司存在安全风险一样可以被攻击者所利用。

如何学习攻击和防御的技术

攻击主要是突破一个点就能成功,而防御需要做的是面的事情,从技术上看,一定是攻击更为容易。从人数上来看,攻击者可能一个或者几个就能突破上百安全人才防御团队。

从学习技术的角度,按照 ATT&CK 的框架来学习攻击技术一定是可以的,但不一定在实际的攻防对抗中全部用到,可以优先选择最有效的技术点来学习,然后在实际的对抗中,遇到常规技术无法继续的时候,可以再去有针对性的学习其他的技术。

而防御的学习难度相对较高,因为安全建设如果你没有在一个甲方企业,没有实际的环境可以建设的情况下,学习难度非常高,因为你有想法无法实践,无法体会防御的效果,只能看看理论或者别人的实践经验。

每一个可以利用的攻击点都需要做非常多的工作才可以防御,不止是技术深度的研究,人的问题就很难解决,每个人都不喜欢麻烦,作为防御者如何让其他人为了安全做职责之外的工作,也是需要考虑的。

信安之路搭建了一个成长平台,大家可以基于自己感兴趣的领域进行学习并在平台分享,分享之后也可以查看其他人的分享,共同成长。

本文分享自微信公众号 - 信安之路(xazlsec)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 单点登录的实现原理

    单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同...

    良月柒
  • 【GPLT】L2-027 名人堂与代金券

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • 基于FileZilla Server搭建FTP文件服务器

    文件下载地址:https://filezilla-project.org/download.php?type=server

    华创信息技术
  • 靶机实战 |『VulnHub系列』Bottleneck 1-Walkthrough

    发现这个img标签的src的值有点特别,对其进行base64解码,得到图片名称bottleneck_dontbe.png

    7089bAt@PowerLi
  • Postman之授权(Authorization)

    昨天在项目进行接口实战过程中,接触到了Title提及的关键词Authorization , 基于登录请求之外的任何操作进行想后台发送的请求,在request h...

    测试小兵
  • OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)

    为什么需要OAuth2.0网页授权接口,主要是为了获取微信用户的基本信息(比如用户绑定,用户统计等等)

    专注APP开发
  • Windows下ThinkPHP与Linux互通之exec或shell_exec问题

    最近在做一个项目需要用到PHP调用Linux命令行脚本,在服务器执行命令是可以的,但是当放在项目代码中,在web中执行命令就不行了,调试了一天,终于可以了!

    php007
  • C#通过邮箱验证来找回密码

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • 发布Maven构件到中央仓库

    https://issues.sonatype.org/secure/Dashboard.jspa

    十毛
  • 福利多多 丨 T-Star们,小编在此郑重宣布两件事情

    ? ? 10月14日-11月30日 TSRC、腾讯高校合作中心 共同主办的 腾讯网络安全T-Star高校挑战赛 正在如火如荼地进行中 11月30日活动结束前...

    腾讯高校合作

扫码关注云+社区

领取腾讯云代金券