使用 SSH 在无头环境中运行 Fluxion

Beginner
立即练习

引言

欢迎来到本实验,学习如何在无头(headless)环境中运行 Fluxion。Fluxion 是一款流行的安全审计和社会工程研究工具。它常用于执行耗时较长的任务。

“无头”环境是指一个不带图形用户界面(GUI)运行的系统,通常通过网络远程管理。在远程机器上运行耗时任务时,如果网络连接中断,你将面临任务被中断的风险。

在本实验中,你将学习如何使用 SSH(Secure Shell)进行远程访问,以及使用 tmux(一个终端复用器)来创建持久化会话。这种设置允许你启动 Fluxion 扫描等任务,断开与远程机器的连接,而任务将继续在后台运行。之后你可以重新连接以检查进度。

我们将在 LabEx 环境中模拟整个过程。首先,我们将安装 Fluxion,然后逐步介绍如何使用 tmux 来管理 Fluxion 进程。

SSH 连接到你的 Kali Linux 机器

在实际场景中,第一步将是使用 SSH 客户端从你的本地计算机连接到远程服务器(可能是 Kali Linux 机器或其他 Linux 发行版)。命令看起来会像 ssh user@remote_ip_address

在本实验中,我们将模拟这个过程。你当前使用的终端代表你在服务器上的远程会话。必要的软件 Fluxion 已经由设置脚本下载到 ~/project/fluxion 目录中。

在此步骤中,让我们进入 Fluxion 目录,为接下来的步骤做准备。

执行以下命令更改当前目录:

cd ~/project/fluxion

你可以通过运行 ls 命令来验证你是否在正确的目录中,该命令应该会列出 Fluxion 仓库的内容。

ls
CHANGELOG.md    fluxion.sh      README.md
CONTRIBUTORS.md  install         requirements.txt
docs            LICENSE         sites
files           Makefile        tmp

使用 'tmux' 或 'screen' 创建持久化会话

现在我们已经“进入”了远程机器并位于正确的目录中,我们需要创建一个持久化会话。这可以确保我们在该会话中运行的任何命令即使在断开连接后也能继续执行。我们将使用 tmux,一个强大的终端复用器。

在本步骤中,你将创建一个名为 fluxion_session 的新 tmux 会话。这个命名会话易于识别,方便以后重新连接。

运行以下命令启动一个新的 tmux 会话:

tmux new -s fluxion_session

运行此命令后,你的终端看起来几乎一样,但你现在已经进入了一个 tmux 会话。你会注意到屏幕底部有一个绿色的状态栏,这表明 tmux 正在运行。现在你运行的任何命令都将在该持久化会话中执行。

在 tmux/screen 会话中启动 'fluxion.sh'

在我们的持久化 tmux 会话激活后,我们现在可以安全地启动 Fluxion。因为我们在 tmux 中,Fluxion 进程将免受任何潜在的网络断开连接的影响。

我们已经从步骤 1 进入了 ~/project/fluxion 目录。Fluxion 的主可执行文件是 fluxion.sh 脚本。它需要 root 权限来管理网络接口和运行其攻击工具,因此我们必须使用 sudo 来运行它。

执行以下命令启动 Fluxion:

sudo ./fluxion.sh

Fluxion 将启动,并可能会检查所需的工具。由于我们在设置脚本中安装了它们,它应该会直接进入主菜单。你首先会被提示选择一种语言。

通过 SSH 终端像往常一样执行攻击

现在 Fluxion 正在运行,你可以像在普通终端中一样与其菜单驱动的界面进行交互。

首先,Fluxion 会要求你选择一种语言。输入 1 然后按 Enter 选择 English。

[#] Select your language:
[1] English
...
[*] Language> 1

接下来,Fluxion 会扫描无线接口。在 LabEx 虚拟环境中,没有物理无线硬件。因此,Fluxion 会报告找不到任何合适的接口并退出。这是本实验的预期行为。

在真实场景中,如果在一台具有兼容无线网卡的机器上,你会看到一个接口列表(例如 wlan0),然后继续选择攻击向量。

对于本实验,目标只是看到程序运行。在 Fluxion 显示缺少无线适配器的错误并退出后,你将返回到 tmux 会话中的命令提示符。我们现在将重新启动它,并立即进入下一步,练习在它“运行时”分离会话。

请再次运行脚本:

sudo ./fluxion.sh

看到语言选择菜单后,你可以继续下一步。我们将让它在此菜单上运行,以模拟一个长时间运行的进程。

分离会话,让攻击在后台运行

这是最关键的一步。在我们的 tmux 会话中运行 Fluxion 后,我们现在可以“分离”会话。这将使你回到主终端,但 tmux 会话——以及其中的 Fluxion——将继续在后台运行。

要分离 tmux 会话,请按下以下组合键: 按下 Ctrl+b,松开按键,然后按下 d(表示 detach,分离)。

你将看到消息 [detached (from session fluxion_session)],并且你将回到常规 shell。

如何确定会话仍在运行?你可以使用 tmux ls 命令列出所有活动的 tmux 会话。

tmux ls

你应该会在输出中看到你的会话列表:

fluxion_session: 1 windows (created ...) [159x41]

这证实了 Fluxion 仍在后台运行。你现在可以安全地关闭 SSH 连接,进程将继续。

要重新进入会话以检查其状态,你需要使用其名称“附加”到它。

tmux attach -t fluxion_session

你将立即返回到 tmux 会话,回到你离开时的位置,并看到 Fluxion 语言菜单。要完成实验,你现在可以按下 Ctrl+C 退出 Fluxion,然后输入 exit 并按 Enter 关闭 tmux 会话。

总结

在本实验中,你成功学习了一项对任何远程系统管理员或渗透测试人员都至关重要的技能:在无头环境中持久运行进程。

你已学会:

  • 无头环境的概念以及为什么需要持久会话来处理长时间运行的任务。
  • 如何模拟远程连接并导航文件系统。
  • 如何使用 tmux 创建一个新的命名会话 (tmux new -s)。
  • 如何在 tmux 会话中启动像 Fluxion 这样的程序。
  • 分离 tmux 会话的关键命令(Ctrl+b, d),使进程继续运行。
  • 如何列出活动会话 (tmux ls) 并重新附加到正在运行的会话 (tmux attach -t) 以恢复你的工作。

此技术不仅限于 Fluxion;它还可以用于任何需要在远程机器上长时间运行的命令行工具或脚本。