简介
在本次实验中,你将学习如何使用社会工程学工具包(Social Engineer Toolkit,SET)模拟钓鱼攻击,从而了解凭据收集技术。你将练习安装 SET、创建虚假登录页面并捕获凭据,以分析攻击者如何利用人类的弱点。
本练习通过亲身体验钓鱼页面克隆和凭据监控,展示了现实世界中的社会工程学方法。你将看到用户是多么容易在仿冒网站上受骗并泄露敏感信息。
在本次实验中,你将学习如何使用社会工程学工具包(Social Engineer Toolkit,SET)模拟钓鱼攻击,从而了解凭据收集技术。你将练习安装 SET、创建虚假登录页面并捕获凭据,以分析攻击者如何利用人类的弱点。
本练习通过亲身体验钓鱼页面克隆和凭据监控,展示了现实世界中的社会工程学方法。你将看到用户是多么容易在仿冒网站上受骗并泄露敏感信息。
在这一步中,你将安装社会工程学工具包(SocialEngineer Toolkit,SET),这是一个专为社会工程学攻击设计的强大开源渗透测试框架。SET 提供了各种攻击手段,如凭据收集、钓鱼活动等。对于初学者来说,重要的是要明白 SET 是专业人员用于测试系统漏洞的合法安全工具,而非用于恶意目的。
首先,确保你处于默认工作目录。我们将在此处下载并安装 SET,以便组织好你的文件:
cd ~/project
从 GitHub 克隆 SET 仓库。此命令会从其官方源下载最新版本的 SET:
git clone https://github.com/trustedsec/social-engineer-toolkit.git
进入 SET 目录。下载完成后,我们需要进入安装 SET 的文件夹:
cd social-engineer-toolkit
使用 Python 安装程序安装 SET。sudo
命令赋予我们安装所需的管理员权限,而 python3
确保我们使用的是正确的 Python 版本:
sudo python3 setup.py install
等待安装完成。此过程可能需要几分钟,因为它会安装所有必要的组件。你应该会看到类似以下的输出:
[*] Social Engineer Toolkit (SET) has been installed.
[*] You can now launch setoolkit by typing 'setoolkit' in your terminal.
通过检查 SET 版本来验证安装。这可以确认 SET 已正确安装,并显示你正在运行的版本:
setoolkit --version
你应该会看到显示已安装版本号的输出,这意味着 SET 已准备好使用。
在这一步中,你将使用社会工程学工具包(Social Engineer Toolkit,SET)配置一个钓鱼页面,以模拟凭据收集攻击。钓鱼是一种常见的网络攻击,攻击者会创建虚假登录页面来窃取用户凭据。SET 让你可以在可控环境中轻松演示这种攻击的原理。
我们将创建一个模仿热门服务的虚假登录页面。这个克隆页面看起来会与真实网站一模一样,但用户输入的任何凭据都会被我们的系统捕获,而不会发送到合法服务。
首先,确保你位于 SET 目录。这是工具包在你系统上的安装位置:
cd ~/project/social-engineer-toolkit
以 root 权限启动 SET 工具包。SET 需要管理员权限来配置网络设置和 Web 服务:
sudo setoolkit
在 SET 菜单中,我们将浏览攻击选项:
1) Social-Engineering Attacks
(社会工程学攻击)——这是钓鱼攻击的主要类别2) Website Attack Vectors
(网站攻击向量)——我们要创建一个虚假网站3) Credential Harvester Attack Method
(凭据收集攻击方法)——专门针对登录凭据2) Site Cloner
(网站克隆器)——我们将复制现有网站的设计当提示输入 POST 回传的 IP 地址时,按回车键使用默认值(你的虚拟机的 IP)。这是被盗凭据将被发送的位置。
输入要克隆的 URL(我们将使用一个演示站点)。在实际攻击中,这将是你要模仿的目标网站:
https://example.com
SET 将克隆页面并配置钓鱼攻击。克隆过程会复制网站的 HTML、CSS 和图像,使其看起来逼真。你应该会看到类似以下的输出:
[*] Cloning the website: https://example.com
[*] This could take a little bit...
[*] Files have been imported to the Apache web root.
钓鱼页面现已配置完毕,准备好进行托管(我们将在下一步进行)。此时,SET 已经创建了目标网站的完美副本,它将捕获登录表单中输入的任何凭据。
在这一步中,我们将使用 Apache Web 服务器托管你的钓鱼页面,使其在网络上可用。Apache 是一款流行的 Web 服务器,它会将你的虚假登录页面提供给任何访问你虚拟机 IP 地址的人。这就是真实钓鱼攻击的工作原理——在攻击者控制的服务器上模仿合法网站。
首先,如果你的系统上尚未安装 Apache,我们需要进行安装。运行以下命令来更新软件包列表并安装 Apache:
sudo apt-get update && sudo apt-get install -y apache2
-y
标志会自动确认安装,这样你就无需手动批准。
安装完成后,使用以下命令检查 Apache 是否正在运行:
sudo service apache2 status
如果服务未运行(新安装后这种情况很常见),使用以下命令启动它:
sudo service apache2 start
社会工程学工具包(Social Engineer Toolkit,SET)会自动将你的钓鱼页面文件保存到 Apache 的默认 Web 目录中。让我们验证这些文件是否存在:
ls /var/www/html
你应该会看到 index.html
(主要的钓鱼页面)以及其他使页面看起来逼真的文件,比如从克隆网站获取的图像和样式表。
为了让其他人能够访问你的钓鱼页面,你需要知道你的虚拟机的 IP 地址。使用以下命令查找:
hostname -I
记下这个 IP 地址(我们将其称为 YOUR_VM_IP),因为你需要用它来测试和分享钓鱼链接。
在分享页面之前,先在本地进行测试,以确保它能正确加载:
curl http://localhost
这个命令会获取页面内容。你应该会看到与你克隆的网站匹配的 HTML 输出。如果你遇到错误,可能是 Apache 运行不正常。
你的钓鱼页面现在已经上线,可以通过以下地址访问:
http://YOUR_VM_IP
网络上任何访问此地址的人都会看到你的虚假登录页面。
保持 Apache 运行——不要关闭终端或停止服务。在接下来的步骤中,当受害者输入他们的信息时,我们将使用这个托管页面来捕获凭据。
在这一步中,你将通过模拟攻击者和受害者的视角,了解钓鱼攻击是如何捕获登录凭据的。当受害者在不知情的情况下在虚假登录页面(比如我们之前创建的那个)输入他们的信息时,SET 会为攻击者保存这些敏感信息。
首先,让我们确认 SET 是否仍在运行,因为我们之前已经进行了设置。如果你关闭了它或者会话已过期,我们需要重新启动该工具。这能确保我们的钓鱼服务器处于活动状态,并等待受害者连接:
cd ~/project/social-engineer-toolkit
sudo setoolkit
现在,我们将配置 SET 以捕获凭据。在 SET 主菜单中,按顺序仔细选择以下选项:
4) Create a Payload and Listener
(创建有效负载和监听器)——这使 SET 准备好接收数据2) Website Attack Vectors
(网站攻击向量)——我们专注于基于 Web 的攻击3) Credential Harvester Attack Method
(凭据收集攻击方法)——专门针对登录凭据1) Web Templates
(Web 模板)——使用预先制作的钓鱼页面模板保持这个终端窗口打开——SET 现在正在积极监控网络流量,并等待受害者通过我们的虚假登录页面提交他们的凭据。
让我们模拟受害者的操作。打开一个新的终端标签页(在大多数 Linux 环境中按 Ctrl+Shift+T),并使用 curl 向我们的本地钓鱼服务器发送测试凭据。这模拟了有人填写并提交登录表单时的情况:
curl -X POST -d "username=testuser&password=Test123!" http://localhost
立即检查你的 SET 终端。你应该会看到确认信息,表明凭据已被捕获,显示格式如下:
[*] WE GOT A HIT!
Username: testuser
Password: Test123!
SET 会自动记录所有捕获的凭据,以便日后查看。要查看包含我们测试条目的完整攻击日志,请运行:
sudo cat /var/lib/set/logs/set.log
日志文件将显示你的测试凭据以及它们被捕获的确切时间。在实际攻击中,这个文件会随着时间的推移包含所有成功骗取的凭据。
既然你已经完成了钓鱼模拟,现在让我们来检查结果。这最后一步将向你展示如何访问和解读社会工程学工具包(Social Engineer Toolkit,SET)收集的数据,以及如何正确清理测试环境,以遵循安全最佳实践。
首先,我们将查看完整的 SET 日志文件,其中包含所有以原始格式捕获的凭据。这个文件存储在受保护的系统位置,因此我们需要使用 sudo
:
sudo cat /var/lib/set/logs/set.log
此命令会显示 SET 主日志文件的内容,在钓鱼模拟期间,所有捕获的凭据都会自动存储在该文件中。
为了更好地组织数据并便于日后参考,让我们在你的项目目录中创建一份该数据的工作副本。我们还将把文件所有权更改为你的实验用户账户:
cd ~/project
sudo cp /var/lib/set/logs/set.log captured_credentials.txt
sudo chown labex:labex captured_credentials.txt
chown
命令确保你拥有处理此文件的适当权限,后续操作无需再使用 sudo
。
现在,让我们查看刚刚创建的格式化报告:
cat captured_credentials.txt
你应该会看到类似以下示例的结构化输出,显示捕获的凭据以及时间戳和来源信息:
[*] 2023-11-15 14:30:22 - Credentials captured:
Username: testuser
Password: Test123!
IP Address: 127.0.0.1
完成练习后,清理测试环境非常重要。这将移除我们创建的钓鱼页面并停止 Web 服务器:
sudo rm /var/www/html/index.html
sudo service apache2 stop
这些命令确保不会留下任何可能构成安全风险的残留测试材料。
最后,让我们通过创建一份总结报告来记录我们的发现,报告将统计捕获的凭据数量:
echo "Phishing Test Results" > test_summary.txt
echo "Total credentials captured: $(grep -c 'Username' captured_credentials.txt)" >> test_summary.txt
cat test_summary.txt
这将创建一份简单的报告,显示你在测试期间捕获的凭据对总数。grep -c
命令会统计 'Username' 在捕获的数据文件中出现的次数。
在本次实验中,你学习了如何使用社会工程学工具包(Social Engineer Toolkit,SET)模拟钓鱼攻击。整个过程包括安装 SET、通过凭据收集配置钓鱼页面,以及克隆目标网站以创建具有欺骗性的登录界面。
本次练习让你亲身体验了渗透测试工具和社会工程学技术。你了解了攻击者是如何捕获凭据的,并且提高了对防范此类安全威胁的防御策略的认识。