Kali-Linux

升級後 WSL 上的 Kali Linux 中斷

  • December 7, 2021

所以我的問題如下。我從 wsl 商店安裝 Kali Linux,使用 $wsl --install -d kali-linux. 以下已安裝

PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
ID=kali
VERSION="2019.2"
VERSION_ID="2019.2"
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="https://www.kali.org/"
SUPPORT_URL="https://forums.kali.org/"
BUG_REPORT_URL="https://bugs.kali.org/"

如果我這樣做$sudo apt-get update,我會收到以下錯誤

Get:1 http://kali.download/kali kali-rolling InRelease [30.6 kB]
Err:1 http://kali.download/kali kali-rolling InRelease
 The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>
Fetched 30.6 kB in 1s (40.9 kB/s)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://kali.download/kali kali-rolling InRelease: The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>
W: Failed to fetch http://http.kali.org/kali/dists/kali-rolling/InRelease  The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org>
W: Some index files failed to download. They have been ignored, or old ones used instead.

然後我手動安裝kali-archive-keyring_2020.2_all.deb$sudo dpkg -i kali-archive-keyring_2020.2_all.deb 然後我這樣做,$sudo apt-get update它會按預期更新儲存庫。

然後我做$sudo apt-get upgrade 了到目前為止它可以工作我將我的kali升級到

PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
ID=kali
VERSION="2021.4"
VERSION_ID="2021.4"
VERSION_CODENAME="kali-rolling"
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="https://www.kali.org/"
SUPPORT_URL="https://forums.kali.org/"
BUG_REPORT_URL="https://bugs.kali.org/"

現在,當我執行命令$sudo apt-get upgrade時,它說有包被保留。

Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
 apt apt-utils bind9-host bsdmainutils bsdutils coreutils cron curl dnsutils dpkg e2fsprogs fdisk findutils iproute2
 iptables isc-dhcp-client libbind9-161 libbsd0 libc-bin libc6 libcryptsetup12 libcurl4 libdevmapper1.02.1 libext2fs2
 libgnutls30 libiptc0 libirs161 libisccc161 libisccfg163 libldap-2.4-2 liblocale-gettext-perl liblwres161 libmount1
 libp11-kit0 libpam-modules libpam-modules-bin librtmp1 libselinux1 libsemanage-common libslang2 libstdc++6
 libsystemd0 libtext-charwidth-perl libtext-iconv-perl libudev1 libxml2 libxtables12 login logrotate mawk mlocate
 mount net-tools passwd perl-base procps rsyslog sed sudo systemd tar udev util-linux vim-common vim-tiny wget whois
0 upgraded, 0 newly installed, 0 to remove and 67 not upgraded.

從這一點開始,我嘗試安裝什麼並不重要,它總是會導致以下錯誤,並且 kali 已損壞,我無法進一步使用作業系統。

/usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
dpkg: error processing package libc6:amd64 (--configure):
installed libc6:amd64 package post-installation script subprocess returned error exit status 127
Errors were encountered while processing:
libc6:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

例如,如果我$sudo apt-get update之後嘗試它會導致 sudo: account validation failure, is your account locked?

我查看了錯誤,但我沒有找到任何可行的解決方案。我將不勝感激有關此問題的任何幫助。提前致謝!

我可以重現這個,我真的很驚訝他們讓它溜走了。如this answer中所述,問題是Kali文件對於手動安裝的版本已經過時了。

可悲的是,看起來那個位置就是我們wsl --install為 Kali 做的事情。

更新密鑰環(如您嘗試的那樣)曾經足以修復它,但不再是。現在甚至更多的簽名和/或包已經過時了。

我們也可能會找到修復它們的方法,但目前最簡單的解決方案是使用 Microsoft Store 進行安裝,而不是使用wsl --install命令。我從 Microsoft Store 在 WSL 中安裝了 Kali,它立即安裝為 2021.3。

請注意,wsl --unregister kali-linux在安裝 Microsoft Store 版本之前,您應該先執行另一個操作。

備擇方案

如果您無法從 Microsoft Store 安裝(並且從評論中,由於公司政策,您不能安裝),那麼有一些替代方案。所有這些都涉及獲得一個 Kali tarball 然後wsl --importing 它。

我已經親自用 Kali 成功地測試了每一個:

  • 選項 1:從可以訪問 Microsoft Store 的另一台電腦複製 WSL Kali

如果它適合您,這可能是最可靠的方法。您不會在您的工作電腦上安裝任何 Store 軟體包,因此它至少不應該違反政策。

  • 使用另一台非工作 PC(假設您有權訪問)從應用商店安裝 WSL 和 Kali。
  • 使用您的使用者名和密碼(您最終要在工作電腦上使用的使用者名和密碼——無論它是否存在於該電腦上的 Windows 中都沒有關係)進行配置。
  • (可選)繼續並sudo apt get update && sudo apt get upgrade.
  • 退出卡利
  • 從 PowerShell 或 CMD:
wsl --export kali-linux kali_clean.tar`
假設策略允許,使用 USB 驅動器將生成的 tarball 傳輸到您的工作電腦。如果不允許使用 USB,則將生成的 tarball 放在您有權訪問的雲中某個位置,然後將其下載到您的工作電腦上。如果您無論如何都要安裝 VM 作為替代方案,那麼在我看來,這與該過程一樣安全(且符合策略)。最終,您將下載*一些東西*以在您的工作電腦上獲取 Kali(或任何其他發行版)。
現在在您的工作電腦上...
跳至以下“從 tarball 安裝和配置 Kali”的說明...




---


* *選項 2:從 Kali WSL 建構腳本建構*


Kali 是我見過的少數幾個讓他們的 WSL 建構過程*很*容易找到的發行版之一。它直接列在[Get Kali](https://www.kali.org/get-kali/#kali-build-scripts)頁面上。
您首先需要一個單獨的 WSL 實例。既然我們知道 Ubuntu 是從`wsl --install -d Ubuntu`. 開始工作的,那麼就從 . 完成後可以將其刪除。
在 Ubuntu ...
do apt install -y debootstrap
t clone https://gitlab.com/kalilinux/build-scripts/kali-wsl-chroot.git
 kali-wsl-chroot
do ./build_chroot.sh
The build should complete for x64 but fail for ARM.  That's okay as long as `./x64/install.tar.gz` is created.
do mv ./x64/install.tar.gz /mnt/c/somewhere/on/c/kali.install.tar.gz`
退出 Ubuntu
`wsl --unregister Ubuntu`如果需要,請解除安裝 Ubuntu 發行版 ( )。
跳至以下“從 tarball 安裝和配置 Kali”的說明...




---


* *選項 3:使用 Kali Docker 鏡像創建一個 tarball*


Microsoft[在此處](https://docs.microsoft.com/en-us/windows/wsl/use-custom-distro)提供有關如何手動導入幾乎所有發行版的說明。您需要:
首先安裝另一個發行版,例如 Ubuntu(*當然*可以通過 正常工作`wsl --install`)
安裝 Docker Desktop(如果政策和許可允許)。請注意,Docker Desktop 現在需要付費許可證供企業使用,具體取決於您公司的規模。作為替代方案,您可以在 Ubuntu 發行版中安裝 Docker Engine(它仍然是免費的/OSS)。
`docker pull kalilinux/kali`或`docker pull kalilinux/kali-rolling`(參見[Kali Docker 圖像](https://www.kali.org/docs/containers/official-kalilinux-docker-images/)。
執行鏡像 ( `docker run kalilinux/kali:latest`)
從中獲取圖像的名稱`docker ps -a`
將容器導出到一個 tarball`docker export <name_or_id_from_above> kali.tar`
繼續下面的“從 tarball 安裝和配置 Kali”的說明......




---


#### 從 tarball 安裝和配置 Kali


* 在 Windows 中為 Kali 創建一個目錄。我傾向於使用像`%userprofile%\WSL\instances\kali`我自己這樣的東西。
* `cd`到 PowerShell 中的該目錄。
* `wsl --import Kali . path\to\kali.tar --version 2`(或`kali.tar.gz`選項 2)
* 這將使用 tarball 創建一個 Kali 實例,然後可以使用`wsl -d kali`.
* 您也可以使用 將其設置為預設值`wsl --set-default kali`。
* 對於第二個(建構腳本)和第三個(Docker 映像)選項,您需要`adduser`WSL 使用者並設置其密碼:

adduser <username> usermod <username> -aG adm,cdrom,sudo,dip,plugdev

* 對於所有這些,WSL 將自動以`root`使用者身份啟動。這可以通過創建`/etc/wsl.conf`每個[超級使用者答案](https://superuser.com/a/1627461/1210833)來改變。

引用自:https://unix.stackexchange.com/questions/680382