规划与侦察
社会工程渗透测试的第一阶段是规划和侦察。在此阶段,您需要与客户合作,明确定义测试的目标和范围。您需要了解客户想要测试组织的哪些区域或部门、可以使用的可接受的社会工程策略,并获得客户的书面同意才能执行任何测试。
在此阶段,您还需要为测试做好准备。 其中包括:
资源收集:获取和设置执行社会工程测试所需的所有必要资源(例如,网络钓鱼模拟框架、云基础设施等)。
信息收集:收集有关目标组织、其员工、基础设施和安全政策的信息。这些背景信息对于建立您想要针对的个人的档案和创建可信的借口非常有用。您可以使用开源情报 (OSINT)来收集这些信息,也可以去翻找垃圾。
社会工程渗透测试的第一阶段是规划和侦察。在此阶段,您需要与客户合作,明确定义测试的目标和范围。您需要了解客户想要测试组织的哪些区域或部门、可以使用的可接受的社会工程策略,并获得客户的书面同意才能执行任何测试。
在此阶段,您还需要为测试做好准备。 其中包括:
资源收集:获取和设置执行社会工程测试所需的所有必要资源(例如,网络钓鱼模拟框架、云基础设施等)。
信息收集:收集有关目标组织、其员工、基础设施和安全政策的信息。这些背景信息对于建立您想要针对的个人的档案和创建可信的借口非常有用。您可以使用开源情报 (OSINT)来收集这些信息,也可以去翻找垃圾。
使用包管理器安装 Nmap
要想快速有效地在 Ubuntu 系统上启动并运行 Nmap,apt 包管理器。
打开终端
首先,打开终端。一个简单的方法是按下Ctrl+Alt+T 键盘上的 。此组合键是启动 Ubuntu 终端的快捷方式。
更新包管理器
打开终端后,是时候更新你的软件包列表了。在终端中,输入以下命令并按 Enter:sudo apt update。将需要提供的密码。
安装Nmap
更新完成后,就可以安装 Nmap 包了。在终端中,输入sudo apt install nmap,然后按 Enter。Ubuntu 可能会再次要求输入密码。输入密码,然后按 Enter。
终端将显示安装进度,安装完成后,Nmap 将安装在您的 Ubuntu 系统上。要验证安装,可以nmap -v 在终端中输入并查看已安装的 Nmap 版本。
要想快速有效地在 Ubuntu 系统上启动并运行 Nmap,apt 包管理器。
打开终端
首先,打开终端。一个简单的方法是按下Ctrl+Alt+T 键盘上的 。此组合键是启动 Ubuntu 终端的快捷方式。
更新包管理器
打开终端后,是时候更新你的软件包列表了。在终端中,输入以下命令并按 Enter:sudo apt update。将需要提供的密码。
安装Nmap
更新完成后,就可以安装 Nmap 包了。在终端中,输入sudo apt install nmap,然后按 Enter。Ubuntu 可能会再次要求输入密码。输入密码,然后按 Enter。
终端将显示安装进度,安装完成后,Nmap 将安装在您的 Ubuntu 系统上。要验证安装,可以nmap -v 在终端中输入并查看已安装的 Nmap 版本。
从源代码编译 Nmap
步骤 1:打开终端
和之前一样,让我们打开终端。可以通过按下Ctrl+Alt+T 键盘快速完成此操作。终端将弹出,准备好输入的命令。
第 2 步:安装所需的软件包
要从源代码编译 Nmap, Ubuntu 系统上需要有一些必需的软件包。在终端中输入以下命令:sudo apt install build-essential libssl-dev
提取源代码
下载完成后,您需要使用以下命令提取 tarball(一种压缩文件):tar jxvf nmap-<version>.tar.bz2
导航到Nmap目录
现在,导航到解压 tarball 时创建的目录:cd nmap-<version>
编译并安装 Nmap
最后,是时候编译和安装 Nmap 了。使用以下命令完成:./configure && make && sudo make install
步骤 1:打开终端
和之前一样,让我们打开终端。可以通过按下Ctrl+Alt+T 键盘快速完成此操作。终端将弹出,准备好输入的命令。
第 2 步:安装所需的软件包
要从源代码编译 Nmap, Ubuntu 系统上需要有一些必需的软件包。在终端中输入以下命令:sudo apt install build-essential libssl-dev
提取源代码
下载完成后,您需要使用以下命令提取 tarball(一种压缩文件):tar jxvf nmap-<version>.tar.bz2
导航到Nmap目录
现在,导航到解压 tarball 时创建的目录:cd nmap-<version>
编译并安装 Nmap
最后,是时候编译和安装 Nmap 了。使用以下命令完成:./configure && make && sudo make install
在 Docker 中安装 Nmap
步骤 1:打开终端
与往常一样,以 启动该过程Ctrl+Alt+T。
第 2 步:拉取 Nmap Docker 镜像
在终端处于活动状态时,输入docker pull instrumentisto/nmap 并按 Enter 键以获取 Nmap Docker 映像。
步骤3:在Docker中运行Nmap
获取镜像后,执行docker run -it --rm instrumentisto/nmap -v 并按 Enter 键在 Docker 中运行 Nmap,显示 Nmap 安装版本。
Sudo 卸载 Nmap
尽管 Nmap 是许多道德黑客和渗透测试工具包中的主要工具,但有时可能需要从 Ubuntu 系统中卸载它。
步骤 1:打开终端
与往常一样,以 启动该过程Ctrl+Alt+T。
第 2 步:拉取 Nmap Docker 镜像
在终端处于活动状态时,输入docker pull instrumentisto/nmap 并按 Enter 键以获取 Nmap Docker 映像。
步骤3:在Docker中运行Nmap
获取镜像后,执行docker run -it --rm instrumentisto/nmap -v 并按 Enter 键在 Docker 中运行 Nmap,显示 Nmap 安装版本。
Sudo 卸载 Nmap
尽管 Nmap 是许多道德黑客和渗透测试工具包中的主要工具,但有时可能需要从 Ubuntu 系统中卸载它。
Kerberos 是 Microsoft 以前用于保护 Active Directory 的旧式 NTLM 身份验证的后继者。作为 Active Directory 环境的身份验证协议,Kerberos 具有几个关键优势:
单点登录 (SSO) - 用户可以向 KDC 进行一次身份验证并获得多张服务票证来访问他们想要访问的各种资源。
强大的安全性- Kerberos 使用强大的加密技术,使其能够抵御重放攻击和密码盗窃(只要使用强密码)。
相互认证- 客户端和网络资源在认证过程中验证彼此的身份,以确保双方都是合法的,并防止 MitM 攻击。
可扩展性- Kerberos 支持包含数千个用户和服务的大规模 Active Directory 环境。其基于票证的身份验证方法有助于最大限度地减少网络流量并提高性能。
集中式身份验证- 中央 KDC 意味着可以在整个 Active Directory 环境中的单点执行身份验证。这简化了管理和管理开销。
票证过期和更新- Kerberos 使用过期和更新机制来限制票证的使用寿命。这意味着攻击者无法无限期地使用被盗票证,而必须定期重新进行身份验证,从而减少了被盗票证的影响。
互操作性- Kerberos 身份验证可用于各种系统和平台。这可防止在使用多种技术的环境中出现兼容性问题。
单点登录 (SSO) - 用户可以向 KDC 进行一次身份验证并获得多张服务票证来访问他们想要访问的各种资源。
强大的安全性- Kerberos 使用强大的加密技术,使其能够抵御重放攻击和密码盗窃(只要使用强密码)。
相互认证- 客户端和网络资源在认证过程中验证彼此的身份,以确保双方都是合法的,并防止 MitM 攻击。
可扩展性- Kerberos 支持包含数千个用户和服务的大规模 Active Directory 环境。其基于票证的身份验证方法有助于最大限度地减少网络流量并提高性能。
集中式身份验证- 中央 KDC 意味着可以在整个 Active Directory 环境中的单点执行身份验证。这简化了管理和管理开销。
票证过期和更新- Kerberos 使用过期和更新机制来限制票证的使用寿命。这意味着攻击者无法无限期地使用被盗票证,而必须定期重新进行身份验证,从而减少了被盗票证的影响。
互操作性- Kerberos 身份验证可用于各种系统和平台。这可防止在使用多种技术的环境中出现兼容性问题。
Kerberoasting 是指攻击窃取服务帐户的密码哈希并离线破解此哈希以显示明文密码。
这是一种非常危险的攻击,因为任何经过身份验证的用户都可以执行 Kerberoasting,如果服务帐户使用弱密码,攻击很可能会成功。
Kerberoasting 攻击遵循以下步骤:
冒充合法的 Active Directory 用户,并在 Active Directory 环境中向 KDC 进行身份验证。向 KDC 请求 TGT以访问网络资源。KDC遵从,因为冒充的是合法用户。
识别 Active Directory 环境中的活动服务帐户并收集其关联的 SPN 列表。这是通过内部网络侦察完成的。
向KDC请求与服务帐户关联的特定 SPN 的服务票证 (TGS) 。KDC将使用包含服务帐户密码(用于解密票证)的加密 TGS 进行响应。
获取此票证并使用密码破解工具离线破解它(在本地机器上)。
一旦攻击破解了密码,就可以使用它来模仿服务帐户并访问其有权访问的任何网络资源。
这是一种非常危险的攻击,因为任何经过身份验证的用户都可以执行 Kerberoasting,如果服务帐户使用弱密码,攻击很可能会成功。
Kerberoasting 攻击遵循以下步骤:
冒充合法的 Active Directory 用户,并在 Active Directory 环境中向 KDC 进行身份验证。向 KDC 请求 TGT以访问网络资源。KDC遵从,因为冒充的是合法用户。
识别 Active Directory 环境中的活动服务帐户并收集其关联的 SPN 列表。这是通过内部网络侦察完成的。
向KDC请求与服务帐户关联的特定 SPN 的服务票证 (TGS) 。KDC将使用包含服务帐户密码(用于解密票证)的加密 TGS 进行响应。
获取此票证并使用密码破解工具离线破解它(在本地机器上)。
一旦攻击破解了密码,就可以使用它来模仿服务帐户并访问其有权访问的任何网络资源。
下载并将数据导入 Bloodhound
将你收集到的数据集导入Bloodhound。首先,使用Meterpreter命令下载数据文件download <filename>.zip。
然后在本地机器上的 Bloodhound GUI 中,单击菜单中的上传数据按钮并选择您的 ZIP 文件。
搜索服务帐户
对数据集执行数据分析,寻找服务账户。这可以通过MATCH (u:User {hasspn:true}) RETURN u在“原始查询”部分执行搜索查询来完成。
将你收集到的数据集导入Bloodhound。首先,使用Meterpreter命令下载数据文件download <filename>.zip。
然后在本地机器上的 Bloodhound GUI 中,单击菜单中的上传数据按钮并选择您的 ZIP 文件。
搜索服务帐户
对数据集执行数据分析,寻找服务账户。这可以通过MATCH (u:User {hasspn:true}) RETURN u在“原始查询”部分执行搜索查询来完成。
使用 GetUserSPNs.py 执行 Kerberoasting
GetUserSPN.py Python脚本是Impacket框架的一部分,可用于查找与服务账户相关的SPN,以及为这些账户请求服务票证(TGS)并提取密码哈希。
要使用 GetUserSPN.py 执行 Kerberoasting,您需要以下内容:
请求 TGS 的域控制器位于同一网络上。如果不在同一网络上,可以使用之前在受感染的 Windows 计算机上创建的 Meterpreter 会话作为枢轴点。
正在攻击的 Active Directory 域的名称以及您想要验证的用户名。
要验证的用户的纯文本密码或 NTLM 密码哈希。
一旦满足这些要求,就可以在 Kali Linux 中运行以下命令来发现可遭受 Kerberoast 攻击的服务帐户并检索这些帐户的可破解 TGS 哈希:
impacket-GetUserSPNs '<domain>/<username>:<password>' -dc-ip <ip-of-domain-controller> -request
在这里可以看到可进行 Kerberoast 攻击的mssql_svc帐户已返回,同时还返回了密码哈希,可供破解
GetUserSPN.py Python脚本是Impacket框架的一部分,可用于查找与服务账户相关的SPN,以及为这些账户请求服务票证(TGS)并提取密码哈希。
要使用 GetUserSPN.py 执行 Kerberoasting,您需要以下内容:
请求 TGS 的域控制器位于同一网络上。如果不在同一网络上,可以使用之前在受感染的 Windows 计算机上创建的 Meterpreter 会话作为枢轴点。
正在攻击的 Active Directory 域的名称以及您想要验证的用户名。
要验证的用户的纯文本密码或 NTLM 密码哈希。
一旦满足这些要求,就可以在 Kali Linux 中运行以下命令来发现可遭受 Kerberoast 攻击的服务帐户并检索这些帐户的可破解 TGS 哈希:
impacket-GetUserSPNs '<domain>/<username>:<password>' -dc-ip <ip-of-domain-controller> -request
在这里可以看到可进行 Kerberoast 攻击的mssql_svc帐户已返回,同时还返回了密码哈希,可供破解
使用 Rubeus 进行 Kerberoasting
Rebeus是一款用 C# 编写的工具,可以直接与原始 Kerberos 协议交互。
要使用 Rebeus 执行 Kerberoasting,需要满足以下条件:
对正在攻击的 Active Directory 域进行经过身份验证的访问。
想要攻击的服务帐户的名称。
要使用 Rubeus,必须先将其从 Kali Linux 计算机上传到要攻击的受感染 Windows 计算机。可以通过下载Rebeus 的预编译版本并在 Meterpreter 会话中运行命令来执行此操作upload。然后运行命令shell以进入 Windows 命令 shell。
Rebeus是一款用 C# 编写的工具,可以直接与原始 Kerberos 协议交互。
要使用 Rebeus 执行 Kerberoasting,需要满足以下条件:
对正在攻击的 Active Directory 域进行经过身份验证的访问。
想要攻击的服务帐户的名称。
要使用 Rubeus,必须先将其从 Kali Linux 计算机上传到要攻击的受感染 Windows 计算机。可以通过下载Rebeus 的预编译版本并在 Meterpreter 会话中运行命令来执行此操作upload。然后运行命令shell以进入 Windows 命令 shell。
❤1
虚假通知栏
虚假通知栏命令是 BeEF 中专为社会工程攻击而设计的另一个模块。
当该模块在被挂钩的浏览器上执行时,它会在目标浏览器窗口顶部显示一个虚假的通知栏。该通知栏的内容可以自定义和设计,以诱骗用户点击链接或下载文件。
使用反向 shell 有效负载。如果用户被诱骗下载并运行文件,它将打开我们机器的反向 shell。反向 shell 允许我们在受害者的系统上远程执行命令,从而让我们完全控制它。
浏览器是 Firefox,我们将使用“假通知栏(Firefox)”模块,但您可以选择适合您情况的模块。
一旦用户尝试安装更新,将获得一个反向的 Meterpreter shell,从而让我们完全控制用户的系统。
虚假通知栏命令是 BeEF 中专为社会工程攻击而设计的另一个模块。
当该模块在被挂钩的浏览器上执行时,它会在目标浏览器窗口顶部显示一个虚假的通知栏。该通知栏的内容可以自定义和设计,以诱骗用户点击链接或下载文件。
使用反向 shell 有效负载。如果用户被诱骗下载并运行文件,它将打开我们机器的反向 shell。反向 shell 允许我们在受害者的系统上远程执行命令,从而让我们完全控制它。
浏览器是 Firefox,我们将使用“假通知栏(Firefox)”模块,但您可以选择适合您情况的模块。
一旦用户尝试安装更新,将获得一个反向的 Meterpreter shell,从而让我们完全控制用户的系统。