引言
Fluxion 是一款强大的安全审计和社工(social-engineering)研究工具。它最知名的功能之一是“强制门户攻击”(Captive Portal attack),该攻击会创建一个虚假的 Wi-Fi 接入点和登录页面来捕获凭据。虽然 Fluxion 自带了几个预制的登录页面,但创建一个自定义页面可以让你的社工尝试更具说服力,并针对特定目标进行定制。
在本实验中,你将学习创建自定义 HTML 登录页面并将其集成到 Fluxion 中的分步过程。你将浏览 Fluxion 的目录结构,创建一个新站点,编写一个基本的 HTML 登录表单,并确保它能与 Fluxion 后端正确通信。
导航至 'attacks/Captive Portal/sites'
在此步骤中,你将导航到 Fluxion 存储其强制门户模板的目录。理解此目录结构是添加自定义页面的第一步。所有操作都将从 ~/project 目录开始。
首先,让我们进入在设置过程中为你克隆的 fluxion 目录。
cd ~/project/fluxion
现在,深入目录结构以查找强制门户站点。
cd attacks/Captive\ Portal/sites/
请注意使用反斜杠 \ 来转义目录名 Captive Portal 中的空格。
最后,列出此目录的内容,以查看现有的门户模板。这将让你了解它们的组织方式。
ls -l
你应该会看到一个目录列表,每个目录代表一个不同的登录页面模板。
total 80
drwxr-xr-x 2 labex labex 4096 Dec 12 12:00 ASUS_dark_desktop
drwxr-xr-x 2 labex labex 4096 Dec 12 12:00 Brand_Generic_Alternative_Login_EN
drwxr-xr-x 2 labex labex 4096 Dec 12 12:00 Brand_Generic_Login_EN
drwxr-xr-x 2 labex labex 4096 Dec 12 12:00 D-Link_EN
drwxr-xr-x 2 labex labex 4096 Dec 12 12:00 Linksys_EN
... (还有许多其他)
你现在已处于创建自定义门户的正确位置。
为你的自定义门户创建新目录
在此步骤中,你将为你的新自定义门户创建一个专用目录。Fluxion 通过扫描 sites 文件夹内的目录来识别可用的门户。每个目录都必须包含一个 index.html 文件才能被识别为有效的门户。
从你当前的位置(~/project/fluxion/attacks/Captive Portal/sites/),使用 mkdir 命令创建一个新目录。我们将其命名为 MyCustomPortal。
mkdir MyCustomPortal
创建目录后,你可以再次列出 sites 目录的内容来验证它是否存在。
ls
你应该会在其他门户目录中看到 MyCustomPortal。
ASUS_dark_desktop
Brand_Generic_Alternative_Login_EN
Brand_Generic_Login_EN
...
MyCustomPortal
...
这个新目录将包含你自定义登录页面的所有文件,首先是主要的 index.html 文件。
创建一个包含登录表单的 'index.html' 文件
在此步骤中,你将创建门户的核心文件:index.html。此文件将包含一个简单的登录表单的 HTML 结构,该表单将呈现给用户。
首先,导航到你新创建的目录。
cd MyCustomPortal
现在,使用 nano 文本编辑器创建和编辑 index.html 文件。
nano index.html
在 nano 编辑器中,粘贴以下基本 HTML 代码。此代码创建了一个简单的页面,包含一个标题、一个头部以及一个包含密码字段和提交按钮的表单。
<!DOCTYPE html>
<html>
<head>
<title>Network Login</title>
</head>
<body>
<h1>Please log in to continue</h1>
<form>
<p>Password:</p>
<input type="password" name="pass" />
<br /><br />
<input type="submit" value="Login" />
</form>
</body>
</html>
粘贴代码后,按 Ctrl+X,然后按 Y,最后按 Enter 保存文件并退出 nano。
你现在已经创建了登录页面的视觉部分。在下一步中,你将配置它以将捕获的数据正确发送到 Fluxion。
确保表单 POST 到 '/login'
在此步骤中,你将修改 HTML 表单,以确保它能与 Fluxion 后端正确通信。为了让 Fluxion 能够拦截凭据,表单必须使用特定的方法 (POST) 将其数据提交到特定的路径 (/login)。
再次使用 nano 打开 index.html 文件。
nano index.html
找到 <form> 标签。你需要为其添加两个属性:method="POST" 和 action="/login"。method="POST" 属性告诉浏览器在 HTTP 请求的 body 中发送表单数据,而 action="/login" 指定了数据应发送到的端点。Fluxion 的 Web 服务器在此端点上监听以捕获凭据。
将你的 index.html 文件修改为如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Network Login</title>
</head>
<body>
<h1>Please log in to continue</h1>
<form method="POST" action="/login">
<p>Password:</p>
<input type="password" name="pass" />
<br /><br />
<input type="submit" value="Login" />
</form>
</body>
</html>
注意 <form> 标签中的更改。输入字段上的 name="pass" 属性也很重要,因为它是 Fluxion 用于识别提交的密码的键。
保存文件并退出 nano (Ctrl+X, Y, Enter)。你的自定义门户现在功能上已完成,并已准备好供 Fluxion 使用。
重新启动 Fluxion 并选择你的自定义门户
在最后一步中,你将启动 Fluxion,以确认它能够识别你新创建的自定义门户。
首先,导航回主 fluxion 目录。
cd ~/project/fluxion
现在,使用 sudo 权限运行主 Fluxion 脚本。网络操作需要管理员权限。
sudo ./fluxion.sh
首次运行时,Fluxion 可能会执行依赖项检查。如果它提示你安装缺失的工具,请按 Enter 继续。检查完成后,你将看到主菜单。
- 选择你的语言(例如,输入
1选择 English)。 - 在攻击菜单中,选择
Captive Portal。
Fluxion 随后将扫描 attacks/Captive Portal/sites/ 目录,并向你展示可用门户的列表。滚动浏览此列表,你应该会看到你的 MyCustomPortal 作为选项之一。
你可以选择它来确认它是否正常工作。由于这是一个没有物理无线网卡的虚拟环境,你无法完成攻击,但看到你的门户出现在列表中,就证明你已成功集成它。
你可以在任何时候通过按 Ctrl+C 来退出 Fluxion。
总结
恭喜你!你已成功创建了一个自定义 HTML 登录页面并将其集成到 Fluxion 中。
在本实验中,你学会了如何:
- 导航 Fluxion 的内部目录结构以定位 captive portal 站点。
- 创建一个新目录来存放你的自定义门户文件。
- 编写一个基本的
index.html文件,其中包含一个登录表单。 - 关键地将表单配置为向
/login端点POST数据,使 Fluxion 能够捕获凭据。 - 启动 Fluxion 并验证你的自定义门户是否被识别,以及是否可以在 Captive Portal 攻击中使用。
这项技能使你能够为你的安全评估创建更具针对性且更可信的登录页面,从而显著提高你的社会工程学活动的潜在有效性。你还可以通过添加 CSS 来进行样式设计,以及添加 JavaScript 来实现动态内容,从而进一步增强你的页面。
