在 SET 中模拟钓鱼攻击

WiresharkWiresharkBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习如何使用社会工程学工具包(Social Engineer Toolkit,SET)模拟钓鱼攻击,从而了解凭据收集技术。你将练习安装 SET、创建虚假登录页面并捕获凭据,以分析攻击者如何利用人类的弱点。

本练习通过亲身体验钓鱼页面克隆和凭据监控,展示了现实世界中的社会工程学方法。你将看到用户是多么容易在仿冒网站上受骗并泄露敏感信息。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/export_packets("Exporting Packets") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") subgraph Lab Skills wireshark/export_packets -.-> lab-549949{{"在 SET 中模拟钓鱼攻击"}} wireshark/packet_analysis -.-> lab-549949{{"在 SET 中模拟钓鱼攻击"}} end

安装社会工程学工具包

在这一步中,你将安装社会工程学工具包(SocialEngineer Toolkit,SET),这是一个专为社会工程学攻击设计的强大开源渗透测试框架。SET 提供了各种攻击手段,如凭据收集、钓鱼活动等。对于初学者来说,重要的是要明白 SET 是专业人员用于测试系统漏洞的合法安全工具,而非用于恶意目的。

  1. 首先,确保你处于默认工作目录。我们将在此处下载并安装 SET,以便组织好你的文件:

    cd ~/project
  2. 从 GitHub 克隆 SET 仓库。此命令会从其官方源下载最新版本的 SET:

    git clone https://github.com/trustedsec/social-engineer-toolkit.git
  3. 进入 SET 目录。下载完成后,我们需要进入安装 SET 的文件夹:

    cd social-engineer-toolkit
  4. 使用 Python 安装程序安装 SET。sudo 命令赋予我们安装所需的管理员权限,而 python3 确保我们使用的是正确的 Python 版本:

    sudo python3 setup.py install
  5. 等待安装完成。此过程可能需要几分钟,因为它会安装所有必要的组件。你应该会看到类似以下的输出:

    [*] Social Engineer Toolkit (SET) has been installed.
    [*] You can now launch setoolkit by typing 'setoolkit' in your terminal.
  6. 通过检查 SET 版本来验证安装。这可以确认 SET 已正确安装,并显示你正在运行的版本:

    setoolkit --version

    你应该会看到显示已安装版本号的输出,这意味着 SET 已准备好使用。

配置钓鱼页面

在这一步中,你将使用社会工程学工具包(Social Engineer Toolkit,SET)配置一个钓鱼页面,以模拟凭据收集攻击。钓鱼是一种常见的网络攻击,攻击者会创建虚假登录页面来窃取用户凭据。SET 让你可以在可控环境中轻松演示这种攻击的原理。

我们将创建一个模仿热门服务的虚假登录页面。这个克隆页面看起来会与真实网站一模一样,但用户输入的任何凭据都会被我们的系统捕获,而不会发送到合法服务。

  1. 首先,确保你位于 SET 目录。这是工具包在你系统上的安装位置:

    cd ~/project/social-engineer-toolkit
  2. 以 root 权限启动 SET 工具包。SET 需要管理员权限来配置网络设置和 Web 服务:

    sudo setoolkit
  3. 在 SET 菜单中,我们将浏览攻击选项:

    • 选择 1) Social-Engineering Attacks(社会工程学攻击)——这是钓鱼攻击的主要类别
    • 然后选择 2) Website Attack Vectors(网站攻击向量)——我们要创建一个虚假网站
    • 选择 3) Credential Harvester Attack Method(凭据收集攻击方法)——专门针对登录凭据
    • 选择 2) Site Cloner(网站克隆器)——我们将复制现有网站的设计
  4. 当提示输入 POST 回传的 IP 地址时,按回车键使用默认值(你的虚拟机的 IP)。这是被盗凭据将被发送的位置。

  5. 输入要克隆的 URL(我们将使用一个演示站点)。在实际攻击中,这将是你要模仿的目标网站:

    https://example.com
  6. SET 将克隆页面并配置钓鱼攻击。克隆过程会复制网站的 HTML、CSS 和图像,使其看起来逼真。你应该会看到类似以下的输出:

    [*] Cloning the website: https://example.com
    [*] This could take a little bit...
    [*] Files have been imported to the Apache web root.
  7. 钓鱼页面现已配置完毕,准备好进行托管(我们将在下一步进行)。此时,SET 已经创建了目标网站的完美副本,它将捕获登录表单中输入的任何凭据。

托管虚假页面

在这一步中,我们将使用 Apache Web 服务器托管你的钓鱼页面,使其在网络上可用。Apache 是一款流行的 Web 服务器,它会将你的虚假登录页面提供给任何访问你虚拟机 IP 地址的人。这就是真实钓鱼攻击的工作原理——在攻击者控制的服务器上模仿合法网站。

  1. 首先,如果你的系统上尚未安装 Apache,我们需要进行安装。运行以下命令来更新软件包列表并安装 Apache:

    sudo apt-get update && sudo apt-get install -y apache2

    -y 标志会自动确认安装,这样你就无需手动批准。

  2. 安装完成后,使用以下命令检查 Apache 是否正在运行:

    sudo service apache2 status

    如果服务未运行(新安装后这种情况很常见),使用以下命令启动它:

    sudo service apache2 start
  3. 社会工程学工具包(Social Engineer Toolkit,SET)会自动将你的钓鱼页面文件保存到 Apache 的默认 Web 目录中。让我们验证这些文件是否存在:

    ls /var/www/html

    你应该会看到 index.html(主要的钓鱼页面)以及其他使页面看起来逼真的文件,比如从克隆网站获取的图像和样式表。

  4. 为了让其他人能够访问你的钓鱼页面,你需要知道你的虚拟机的 IP 地址。使用以下命令查找:

    hostname -I

    记下这个 IP 地址(我们将其称为 YOUR_VM_IP),因为你需要用它来测试和分享钓鱼链接。

  5. 在分享页面之前,先在本地进行测试,以确保它能正确加载:

    curl http://localhost

    这个命令会获取页面内容。你应该会看到与你克隆的网站匹配的 HTML 输出。如果你遇到错误,可能是 Apache 运行不正常。

  6. 你的钓鱼页面现在已经上线,可以通过以下地址访问:

    http://YOUR_VM_IP

    网络上任何访问此地址的人都会看到你的虚假登录页面。

  7. 保持 Apache 运行——不要关闭终端或停止服务。在接下来的步骤中,当受害者输入他们的信息时,我们将使用这个托管页面来捕获凭据。

捕获凭据

在这一步中,你将通过模拟攻击者和受害者的视角,了解钓鱼攻击是如何捕获登录凭据的。当受害者在不知情的情况下在虚假登录页面(比如我们之前创建的那个)输入他们的信息时,SET 会为攻击者保存这些敏感信息。

  1. 首先,让我们确认 SET 是否仍在运行,因为我们之前已经进行了设置。如果你关闭了它或者会话已过期,我们需要重新启动该工具。这能确保我们的钓鱼服务器处于活动状态,并等待受害者连接:

    cd ~/project/social-engineer-toolkit
    sudo setoolkit
  2. 现在,我们将配置 SET 以捕获凭据。在 SET 主菜单中,按顺序仔细选择以下选项:

    • 4) Create a Payload and Listener(创建有效负载和监听器)——这使 SET 准备好接收数据
    • 2) Website Attack Vectors(网站攻击向量)——我们专注于基于 Web 的攻击
    • 3) Credential Harvester Attack Method(凭据收集攻击方法)——专门针对登录凭据
    • 1) Web Templates(Web 模板)——使用预先制作的钓鱼页面模板
  3. 保持这个终端窗口打开——SET 现在正在积极监控网络流量,并等待受害者通过我们的虚假登录页面提交他们的凭据。

  4. 让我们模拟受害者的操作。打开一个新的终端标签页(在大多数 Linux 环境中按 Ctrl+Shift+T),并使用 curl 向我们的本地钓鱼服务器发送测试凭据。这模拟了有人填写并提交登录表单时的情况:

    curl -X POST -d "username=testuser&password=Test123!" http://localhost
  5. 立即检查你的 SET 终端。你应该会看到确认信息,表明凭据已被捕获,显示格式如下:

    [*] WE GOT A HIT!
    Username: testuser
    Password: Test123!
  6. SET 会自动记录所有捕获的凭据,以便日后查看。要查看包含我们测试条目的完整攻击日志,请运行:

    sudo cat /var/lib/set/logs/set.log
  7. 日志文件将显示你的测试凭据以及它们被捕获的确切时间。在实际攻击中,这个文件会随着时间的推移包含所有成功骗取的凭据。

查看捕获的数据

既然你已经完成了钓鱼模拟,现在让我们来检查结果。这最后一步将向你展示如何访问和解读社会工程学工具包(Social Engineer Toolkit,SET)收集的数据,以及如何正确清理测试环境,以遵循安全最佳实践。

  1. 首先,我们将查看完整的 SET 日志文件,其中包含所有以原始格式捕获的凭据。这个文件存储在受保护的系统位置,因此我们需要使用 sudo

    sudo cat /var/lib/set/logs/set.log

    此命令会显示 SET 主日志文件的内容,在钓鱼模拟期间,所有捕获的凭据都会自动存储在该文件中。

  2. 为了更好地组织数据并便于日后参考,让我们在你的项目目录中创建一份该数据的工作副本。我们还将把文件所有权更改为你的实验用户账户:

    cd ~/project
    sudo cp /var/lib/set/logs/set.log captured_credentials.txt
    sudo chown labex:labex captured_credentials.txt

    chown 命令确保你拥有处理此文件的适当权限,后续操作无需再使用 sudo

  3. 现在,让我们查看刚刚创建的格式化报告:

    cat captured_credentials.txt

    你应该会看到类似以下示例的结构化输出,显示捕获的凭据以及时间戳和来源信息:

    [*] 2023-11-15 14:30:22 - Credentials captured:
    Username: testuser
    Password: Test123!
    IP Address: 127.0.0.1
  4. 完成练习后,清理测试环境非常重要。这将移除我们创建的钓鱼页面并停止 Web 服务器:

    sudo rm /var/www/html/index.html
    sudo service apache2 stop

    这些命令确保不会留下任何可能构成安全风险的残留测试材料。

  5. 最后,让我们通过创建一份总结报告来记录我们的发现,报告将统计捕获的凭据数量:

    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、通过凭据收集配置钓鱼页面,以及克隆目标网站以创建具有欺骗性的登录界面。

本次练习让你亲身体验了渗透测试工具和社会工程学技术。你了解了攻击者是如何捕获凭据的,并且提高了对防范此类安全威胁的防御策略的认识。