概述

适用于 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,确定或回车直接运行。

image.png

方法二

  • 通过右键”此电脑”,选择”属性”;
  • 直接打开”设置”,点击”系统”,再找到”关于”。

image.png

本篇文章中所使用的系统环境

操作系统: 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
2
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

手动设置

在开始菜单依次打开设置 - 应用 - “应用和功能” 中的 “可选功能”,滑动至底部找到”相关设置”中的”更多 Windows 功能”。
image.png

勾选”适用于 Linux 的 Windows 子系统“和”虚拟机平台“这两项后点击确定,等待安装,完成后重启操作系统即可。

升级为 WSL 2

下载 WSL 2 内核,打开安装程序点击”Next“,等待安装完毕。

下载连接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

image.png
再用管理员权限打开Powershell,输入下方的命令将 WSL 2 作为默认设置。

1
wsl --set-default-version 2

WSL 安装问题排查

微软给出的 WSL 安装步骤足够细致,读者们若在安装中途遇到问题也请参照官方文档和 Bing 吧。(笑)

官方文档:排查适用于 Linux 的 Windows 子系统问题 | Microsoft Docs

安装 Kali

从 Microsoft Store 中直接获取

搜索框输入”Kali“,点击获取等待完成即可。
image.png

手动安装

在该页面下载需要的发行版(旧版 WSL 的手动安装步骤 | Microsoft Docs),在用管理员权限运行的 Powershell 中输入下方命令即可安装(该方式下载的镜像不是最新的,但可以后期通过 Microsoft Store 升级)。

1
Add-AppxPackage .\kali-linux-XX-XX-XXXX.appx

下载地址:https://aka.ms/wsl-kali-linux-new

曾经安装过 Kali

使用下列命令进行升级,需要实现安装好 WSL 2 内核。

1
2
3
4
# 查看已有镜像的 WSL 状态信息
wsl --list --verbose
# 转换为 WSL 2 版本
wsl --set-version kali-linux 2

image.png

配置 Kali

修改镜像源

开局sudo vi /etc/apt/sources.list粘贴下列清单保存退出sudo apt update && sudo apt upgrade一气呵成。然而,实际操作过程中,由于 WSL 终端的”特性”,在尝试输入和删除字符以及移动光标时(如果你用的不是 vi 的HJKL)你会发现一些很”有趣”的现象。针对这些问题,只能靠读者你对 vi 的熟悉程度啦(笑)。

Linux vi/vim - 菜鸟教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 官方源
#deb http://http.kali.org/kali kali-rolling main non-free contrib
#deb-src http://http.kali.org/kali kali-rolling main non-free contrib
#中科大
#deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#清华大学
#deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
#浙大
#deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
#deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
#东软大学
#deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
#deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
#重庆大学
#deb http://http.kali.org/kali kali-rolling main non-free contrib
#deb-src http://http.kali.org/kali kali-rolling main non-free contrib

image.png

下载完整软件包 (可选)

1
2
3
4
5
# 完整版
sudo apt install -y kali-linux-large

# 默认安装
sudo apt install -y kali-linux-default
  • kali-linux-core - 基本Kali Linux系统,包含的核心项目
  • kali-linux-headless - 不需要 GUI 的默认安装
  • kali-linux-default - “默认”桌面 (amd64/i386)映像包括这些工具
  • kali-linux-arm - 适用于 ARM 设备的所有工具
  • kali-linux-nethunter - 用作 Kali NetHunter 一部分的工具

详细参考:Kali Linux Metapackages

image.png

安装完整工具集后整个系统占用的大小

压缩硬盘映像

下列命令中的虚拟磁盘文件存放在C:\Users\<用户名>\AppData\Local\Packages\<镜像名>\LocalState中。

1
2
3
4
5
6
wsl --shutdown
diskpart
select vdisk file="C:\Users\nameless\AppData\Local\Packages\KaliLinux.54290C8133FEE_ey8k8hqnwqnmg\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk

引用自 搭建 WSL2 下的 Kali 环境(含GUI及空间优化)中的 “WSL2 优化“ 部分。

image.png
image.png

可见效果显著,整体减少了 2.7 GB

本次安装中遇到的问题

没有输入密码却提示密码错误 (sudo)

在网上搜到同样的例子,但并没有给出有效的解决方法。

文章链接:sudo 无法在 WSL 下运行的 Kali 上工作 - Unix & Linux Stack Exchange

image.png
怀疑更新包安装失败导致的,使用 PowerShell 进入终端进行修复。

1
2
kali config --default-user root
wsl

image.png
尝试了创建动态链接库的软连接,手动下载libc的RPM包,折腾了半小时。洗完澡回来发现已经可以用了,也没清楚到底是什么原因。
image.png

替换国内镜像源并更新时提示证书签名无效

按照网络上各类解决方案使用下述命令更新整数,然而系统却提示”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更新源问题解决方案

image.png

结语

偶然在 Kali 官网看到了关于 WSL 2 以及 Kex 的资料,发觉 Kex SL 模式正是我想要的效果。正好在配置渗透用的虚拟机,干脆也装上 WSL 好了,没想到这玩意这么能吃内存,60 GB 的磁盘空间还是少了一点。
实用性暂且不说,整个过程折腾下来还是蛮有意思的,之后再考虑部署在实际环境中,届时还能解锁 WSL 其他的玩法。
image.png

吐槽

版本特性

这个 Windows 10 企业版 LTSC 2021 是昨天才安装的,安装完才想起默认没有自带 Microsoft Store。之后在 Github上找到了适用于 LTSC 2019 的安装包(kkkgo/LTSC-Add-MicrosoftStore - Github),抱着试试的心态最后安装成功了。
image.png

小插曲

在配置系统环境的过程宿主蓝屏了两次(CLOCK_WATCHDOG_TIMEOUT),可能是占用太高所导致的,期间修改的浏览器设置全部复原,就连宿主的浏览器也给影响了。而且运行 Powershell 会提示这样的一个错误(在此之前并没有运行过 Powershell),Bing 搜索倒也没发现什么特别的发现。
image.png

漫长的扫描过程

参考文献

概述 | 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安装与简单配置指南