Running Kali Linux GUI(Win-KeX) On WSL 2
概述
适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。
利用 WSL 在 Windows 环境下搭建轻量的 Linux 系统,相较于 VMware 等虚拟化技术更能节省内存和 CPU 资源,而且在启动速度上也更具优势。
WSL 2
WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。
这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。
单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。
WSL 2 是一个新的版本,解决了 WSL 1 存在的缺陷,更进一步的提高了文件系统的性能以及系统的兼容性。
事先准备
WSL 运行要求
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。
查看 Windows 版本及内部版本号的几种方法
方法一
- 按下”Win+R”,输入
winver
,确定或回车直接运行。
方法二
- 通过右键”此电脑”,选择”属性”;
- 直接打开”设置”,点击”系统”,再找到”关于”。
本篇文章中所使用的系统环境
操作系统: Windows 10 Enterprise LTSC 2021
版本: 21H2 (操作系统内部版本 19044.1288)
CPU: AMD Athlon(tm) X4 860K Quad Core Processor
分配内核数: 2 Core
基准速度: 4.29 GHz
内存: 4 G
硬盘空间: 60 G
启用 BIOS 中的虚拟化功能
使用过虚拟机或安卓模拟器的读者应该知道这一步指的是什么。由于不同型号之间操作不同,本篇不再赘述。
开启VT方法教程:如何开启VT - 网易MuMu
检查 Microsoft Store 是否可用
没有安装 Microsoft Store
这一步适用于没有安装 Microsoft Store 的 Windows 10 版本,比如本篇使用的 Windows 10 Enterprise LTSC 2021 之类的。(本篇末尾有关于此项的描述,这里只占个位置)
Microsoft Store 无法连接
使用代理等其他加速方式进行访问。或者手动下载软件包进行安装。
启用 WSL
Powershell
用管理员权限打开 PowerShell 并运行下列命令开启 WSL 功能,并重启操作系统。
1 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux |
重启完成后同上述操作,用管理员权限打开 PowerShell 并运行下列命令启用虚拟化,执行完毕后再次重启操作系统。
1 | dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart |
手动设置
在开始菜单依次打开设置 - 应用 - “应用和功能” 中的 “可选功能”,滑动至底部找到”相关设置”中的”更多 Windows 功能”。
勾选”适用于 Linux 的 Windows 子系统“和”虚拟机平台“这两项后点击确定,等待安装,完成后重启操作系统即可。
升级为 WSL 2
下载 WSL 2 内核,打开安装程序点击”Next“,等待安装完毕。
下载连接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
再用管理员权限打开Powershell,输入下方的命令将 WSL 2 作为默认设置。
1 | wsl --set-default-version 2 |
WSL 安装问题排查
微软给出的 WSL 安装步骤足够细致,读者们若在安装中途遇到问题也请参照官方文档和 Bing 吧。(笑)
安装 Kali
从 Microsoft Store 中直接获取
搜索框输入”Kali“,点击获取等待完成即可。
手动安装
在该页面下载需要的发行版(旧版 WSL 的手动安装步骤 | Microsoft Docs),在用管理员权限运行的 Powershell 中输入下方命令即可安装(该方式下载的镜像不是最新的,但可以后期通过 Microsoft Store 升级)。
1 | Add-AppxPackage .\kali-linux-XX-XX-XXXX.appx |
曾经安装过 Kali
使用下列命令进行升级,需要实现安装好 WSL 2 内核。
1 | # 查看已有镜像的 WSL 状态信息 |
配置 Kali
修改镜像源
开局sudo vi /etc/apt/sources.list
粘贴下列清单保存退出sudo apt update && sudo apt upgrade
一气呵成。然而,实际操作过程中,由于 WSL 终端的”特性”,在尝试输入和删除字符以及移动光标时(如果你用的不是 vi 的HJKL)你会发现一些很”有趣”的现象。针对这些问题,只能靠读者你对 vi 的熟悉程度啦(笑)。
1 | # 官方源 |
下载完整软件包 (可选)
1 | # 完整版 |
- kali-linux-core - 基本Kali Linux系统,包含的核心项目
- kali-linux-headless - 不需要 GUI 的默认安装
- kali-linux-default - “默认”桌面 (amd64/i386)映像包括这些工具
- kali-linux-arm - 适用于 ARM 设备的所有工具
- kali-linux-nethunter - 用作 Kali NetHunter 一部分的工具
安装完整工具集后整个系统占用的大小
压缩硬盘映像
下列命令中的虚拟磁盘文件存放在C:\Users\<用户名>\AppData\Local\Packages\<镜像名>\LocalState
中。
1 | wsl --shutdown |
引用自 搭建 WSL2 下的 Kali 环境(含GUI及空间优化)中的 “WSL2 优化“ 部分。
可见效果显著,整体减少了 2.7 GB
本次安装中遇到的问题
没有输入密码却提示密码错误 (sudo)
在网上搜到同样的例子,但并没有给出有效的解决方法。
文章链接:sudo 无法在 WSL 下运行的 Kali 上工作 - Unix & Linux Stack Exchange
怀疑更新包安装失败导致的,使用 PowerShell 进入终端进行修复。
1 | kali config --default-user root |
尝试了创建动态链接库的软连接,手动下载libc的RPM包,折腾了半小时。洗完澡回来发现已经可以用了,也没清楚到底是什么原因。
替换国内镜像源并更新时提示证书签名无效
按照网络上各类解决方案使用下述命令更新整数,然而系统却提示”gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation”。
1 | wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add |
最终根据这篇文章给出的方式稍加修改,成功更新。
1 | curl -o kali-archive-keyring_2022.1_all.deb https://mirrors.tuna.tsinghua.edu.cn/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2022.1_all.deb && sudo apt install ./kali-archive-keyring_2022.1_all.deb |
在这之后又找到了一篇文章,记录了多种方法,读者们可根据实际情况选择。
文章链接:kali更新源问题解决方案
结语
偶然在 Kali 官网看到了关于 WSL 2 以及 Kex 的资料,发觉 Kex SL 模式正是我想要的效果。正好在配置渗透用的虚拟机,干脆也装上 WSL 好了,没想到这玩意这么能吃内存,60 GB 的磁盘空间还是少了一点。
实用性暂且不说,整个过程折腾下来还是蛮有意思的,之后再考虑部署在实际环境中,届时还能解锁 WSL 其他的玩法。
吐槽
版本特性
这个 Windows 10 企业版 LTSC 2021 是昨天才安装的,安装完才想起默认没有自带 Microsoft Store。之后在 Github上找到了适用于 LTSC 2019 的安装包(kkkgo/LTSC-Add-MicrosoftStore - Github),抱着试试的心态最后安装成功了。
小插曲
在配置系统环境的过程宿主蓝屏了两次(CLOCK_WATCHDOG_TIMEOUT),可能是占用太高所导致的,期间修改的浏览器设置全部复原,就连宿主的浏览器也给影响了。而且运行 Powershell 会提示这样的一个错误(在此之前并没有运行过 Powershell),Bing 搜索倒也没发现什么特别的发现。
漫长的扫描过程
参考文献
概述 | Microsoft Docs
适用于 Linux 的 Windows 子系统文档 | Microsoft Docs
安装 WSL | Microsoft Docs
Win-KeX | Kali Linux Documentation
Win-KeX SL | Kali Linux Documentation
Win-KeX Win | Kali Linux Documentation
搭建 WSL2 下的 Kali 环境(含GUI及空间优化)
在Windows运行完整的Linux桌面GUI!Kali on WSL2安装与简单配置指南