新 Kali 虛擬機器上的 SHA256 錯誤或容易損壞

新 Kali 虛擬機器上的 SHA256 錯誤或容易損壞

昨天我在 VirtualBox 中設定一個新的 Kali 來賓虛擬機,在安裝過程中遇到了一些問題。在安裝軟體包的步驟中會安裝失敗,所以重試幾次後我決定跳過這一步。其餘的安裝完成,沒有任何問題。

安裝完成後,我開始嘗試找出缺少哪些軟體包。我遇到的第一個障礙是如何適應工作。 apt 更新和安裝總是失敗,所以我清理了 /var/lib/apt 並嘗試切換 repo 鏡像,但沒有任何幫助。執行 apt update 時出現的具體錯誤是:

在此輸入影像描述

然後我注意到 SHA 校驗和不匹配,但 MD5Sum 實際上匹配。所以我的工作假設是下載或儲存庫沒有任何問題,我的系統產生錯誤的校驗和,這就是 apt 總是失敗的原因。

此時,我可能應該對虛擬機器進行核攻擊並重新安裝系統,但我寧願將此作為學習經驗並解決問題。所以我希望得到下一步該做什麼的建議。

編輯回應@Gilles“所以-停止邪惡”很好的答案。

我嘗試驗證 Packages.gz 檔案是否與 InRelease 中的元資料不同步。

root@kali:/var/lib/apt/lists/partial# rm *
root@kali:/var/lib/apt/lists/partial# apt update
Get:1 http://ftp.acc.umu.se/mirror/kali.org/kali kali-rolling InRelease [30.5 kB]
Get:2 http://ftp.acc.umu.se/mirror/kali.org/kali kali-rolling/main amd64 Packages [16.3 MB]                                    
Err:2 http://ftp.acc.umu.se/mirror/kali.org/kali kali-rolling/main amd64 Packages
  Hash Sum mismatch
  Hashes of expected file:
   - Filesize:16317378 [weak]
   - SHA256:77a3e22e7b5ea34fca2d74d79a9d46f4bb27af0dfb56d6052e2d288b3c684d98
   - SHA1:f5b21d796c25dc10d382ffedc1ce4d7bee376057 [weak]
   - MD5Sum:257a18dc4dff52c27f94f6e66a5a82bf [weak]
  Hashes of received file:
   - SHA256:5d1d8ffe97ff7a35ce5537925d7790967b086c75dadd5576688c915830bf0c84
   - SHA1:ce0617edf0193841072c1cba00b6797d2b3dd0eb [weak]
   - MD5Sum:257a18dc4dff52c27f94f6e66a5a82bf [weak]
   - Filesize:16317378 [weak]
  Last modification reported: Fri, 03 Apr 2020 15:48:14 +0000
  Release file created at: Fri, 03 Apr 2020 15:48:24 +0000

Fetched 16.3 MB in 5s (3368 kB/s)
Failed to fetch http://ftp.acc.umu.se/mirror/kali.org/kali/dists/kali-rolling/main/binary-amd64/Packages.gz
  Hash Sum mismatch
   Hashes of expected file:
    - Filesize:16317378 [weak]
    - SHA256:77a3e22e7b5ea34fca2d74d79a9d46f4bb27af0dfb56d6052e2d288b3c684d98
    - SHA1:f5b21d796c25dc10d382ffedc1ce4d7bee376057 [weak]
    - MD5Sum:257a18dc4dff52c27f94f6e66a5a82bf [weak]
   Hashes of received file:
    - SHA256:5d1d8ffe97ff7a35ce5537925d7790967b086c75dadd5576688c915830bf0c84
    - SHA1:ce0617edf0193841072c1cba00b6797d2b3dd0eb [weak]
    - MD5Sum:257a18dc4dff52c27f94f6e66a5a82bf [weak]
    - Filesize:16317378 [weak]
   Last modification reported: Fri, 03 Apr 2020 15:48:14 +0000
   Release file created at: Fri, 03 Apr 2020 15:48:24 +0000[0m
    Some index files failed to download. They have been ignored, or old ones used instead.[0m
root@kali:/var/lib/apt/lists/partial# ls
ftp.acc.umu.se_mirror_kali.org_kali_dists_kali-rolling_InRelease
ftp.acc.umu.se_mirror_kali.org_kali_dists_kali-rolling_main_binary-amd64_Packages.gz.FAILED

root@kali:/var/lib/apt/lists/partial# md5sum ftp.acc.umu.se_mirror_kali.org_kali_dists_kali-rolling_ main_binary-amd64_Packages.gz.FAILED 
257a18dc4dff52c27f94f6e66a5a82bf  ftp.acc.umu.se_mirror_kali.org_kali_dists_kali-rolling_main_binary-amd64_Packages.gz.FAILED

root@kali:/var/lib/apt/lists/partial# sha1sum  ftp.acc.umu.se_mirror_kali.org_kali_dists_kali-rollingg_main_binary-amd64_Packages.gz.FAILED 
f5b21d796c25dc10d382ffedc1ce4d7bee376057  ftp.acc.umu.se_mirror_kali.org_kali_dists_kali-rolling_main_binary-amd64_Packages.gz.FAILED

root@kali:/var/lib/apt/lists/partial# sha256sum ftp.acc.umu.se_mirror_kali.org_kali_dists_kali-rollinng_main_binary-amd64_Packages.gz.FAILED 
77a3e22e7b5ea34fca2d74d79a9d46f4bb27af0dfb56d6052e2d288b3c684d98  ftp.acc.umu.se_mirror_kali.org_kali_dists_kali-rolling_main_binary-amd64_Packages.gz.FAILED

據我所知,Packages.gz 檔案已正確下載,並且實際雜湊值確實與 InRelease 檔案中的預期相符。但 apt 仍然報告錯誤的哈希值。

編輯2:

因此,經過一番折騰後,我終於透過手動降級 apt 到版本 1.8.4(原始版本是 2.0.2)進入了工作狀態。該問題是可重現的,運行apt upgrade安裝 2.0.2 後問題再次出現。

答案1

Kali 包存檔目前處於不一致狀態。你對此無能為力。

您的系統不太可能產生錯誤的校驗和。發生這種情況的原因有很多種,但沒有一個是合理的。

  • 計算校驗和的軟體本身可能有錯誤。這是極不可能的:計算校驗和很容易,而且計算的程式碼非常穩定且易於測試。
  • 下載檔案、儲存檔案、驗證檔案等的軟體可能有錯誤。它不太可能出現錯誤,以至於計算錯誤的校驗和,而不是出錯。
  • 該軟體可能會下載錯誤的文件,或截斷它們,或以未被捕獲的方式對它們進行編碼。這是這裡最不令人難以置信的要點。
  • 您的系統可能會受到損害,從而計算出錯誤的校驗和。這是難以置信的,因為能夠做到這一點的攻擊者可以以不那麼引人注目的方式做更有用的事情。

您的網路受到攻擊的可能性較小,而且攻擊者正在主動操縱您正在下載的檔案。這仍然不太可能,因為攻擊者知道由於 apt 進行的加密檢查,攻擊會被偵測到並且無效(我將在下面解釋這些檢查)。該攻擊僅對那些安排忽略錯誤或手動下載.deb文件並使用dpkg.

當然,不太可能並不意味著不可能。您可以透過下載檔案並在另一個已知良好的系統上計算其校驗和來驗證這一切都沒有發生。我這樣做了,並得到了相同的預期和實際校驗和值。

損壞可能發生在一個鏡像中,所以我使用了另一個鏡像(https://http.kali.org/dists/kali-rolling/)。該InRelease文件包含預期的校驗和,並且Packages.gz是校驗和經過驗證的文件。

$ wget -q https://http.kali.org/dists/kali-rolling/InRelease https://http.kali.org/dists/kali-rolling/main/binary-arm64/Packages.gz
$ TZ=UTC \ls -log InRelease Packages.gz
-rw-rw-r-- 1    30501 Apr  3 15:48 InRelease
-rw-rw-r-- 1    30501 Apr  3 15:48 InRelease
-rw-rw-r-- 1 16179052 Apr  3 12:04 Packages.gz
$ md5sum Packages.gz
31a332531ecf9d092aaad9a3f4885767  Packages.gz
$ sha1sum Packages.gz
138883655ff0d58a3779acbeda0d61f7552c03eb  Packages.gz
$ sha256sum Packages.gz
63ae17c54bc57dc445ba4a3555bec3fa077c5de6eec0b11363680efc23fd09ec  Packages.gz
$ grep main/binary-amd64/Packages.gz InRelease
 257a18dc4dff52c27f94f6e66a5a82bf 16317378 main/binary-amd64/Packages.gz
 f5b21d796c25dc10d382ffedc1ce4d7bee376057 16317378 main/binary-amd64/Packages.g
 77a3e22e7b5ea34fca2d74d79a9d46f4bb27af0dfb56d6052e2d288b3c684d98 16317378 main/binary-amd64/Packages.gz

正如您所看到的,預期的校驗和與實際的校驗和是不同的。預期尺寸和實際尺寸也不同。我有一個與你不同的舊版本Packages.gz,儘管我最近下載的,但來自不同的鏡像。

我還從以下位置下載了文件和你一樣的鏡子檔案具有預期的校驗和,因此該鏡像上的問題已修復。它看起來像是一個臨時錯誤,修復尚未完全傳播。

我不知道是什麼導致了這個問題。這可能是攻擊嘗試(但如果是這樣,它似乎已經失敗,因為並非所有需要損壞的檔案都已損壞)。更有可能的是,這是 Kali 基礎設施內部某個地方的同步失敗。

我不知道為什麼你會看到匹配的 MD5。您下載的檔案InRelease的資料不一致,或者 apt 甚至懶得計算 MD5,因為它被認為是弱的。

正如所承諾的,以下是 apt 如何確保下載的安全性。以下加密基礎設施產生保證包裹真實性的資料:

  • 建構伺服器計算加密哈希每個包的 ¹(.deb或來源包的檔案)。
  • 哈希伺服器根據建置伺服器為分發的每個部分發送的雜湊值建立套件清單(Packages和壓縮版本),並產生包含檔案雜湊值的檔案。Packages.gzReleasePackages
  • 簽名伺服器,其中有前列腺素私鑰,產生一個加密簽名文件Release並將其儲存在Release.gpg.還有一個文件InRelease在同一文件中包含資料和簽名。

在您的系統上:

  • 您的初始安裝映像包含建置伺服器私鑰的 PGP 公鑰,以及驗證檔案是否已使用此金鑰正確簽署所需的所有工具。
  • 當 apt 下載軟體包清單時,它會下載InRelease檔案(或可能是ReleaseRelease.gpg)並驗證它是否已正確簽署。它還驗證文件的加密雜湊值是否與文件Package中的值相符InRelease
  • 當 apt 下載軟體包時,它會驗證軟體包檔案的雜湊值是否與Packages檔案中的值相符。

這已經足夠了,因為:

  • 沒有人知道如何創建一個與另一個現有文件具有相同加密哈希的文件。 (即使對於 MD5 和 SHA-1 也是如此,我們知道如何產生衝突,即如何使兩個檔案具有相同的雜湊值,但不知道如何計算第二個原像,即找到另一個雜湊值為與給定文件相同。
  • 沒有人知道如何在沒有私鑰的情況下產生有效的 PGP 簽章。

就是這樣。請注意,檔案如何在 Kali 基礎架構和下載鏡像之間或下載鏡像和您的系統之間傳輸並不重要。對這些使用 TLS 是一種安全改進,因為它可以防止網路攻擊者提供過時​​的檔案(例如,透過提供具有相應過時版本的正版但過時的軟體包來假裝關鍵軟體從未發生過安全更新)Release檔案及其簽名)。

唯一不被發現的方法是在 Kali 基礎設施內部:如果簽署金鑰被洩露,或建立伺服器報告錯誤的雜湊值。

1在這種情況下,「(加密)校驗和」、「(加密)雜湊」和「(加密)摘要」是同義詞。有非加密校驗和和雜湊值,但這裡不涉及它們。

答案2

此答案假設 Windows 10 主機。

在 VirtualBox 上任何 2020-2 amd-64 ISO 的“安裝基本系統”步驟中,我在“Packages.gz”上遇到了似乎相同的“哈希和不匹配”錯誤。我還啟動了 Kali 2020-2 amd-64 VirtualBox OVA,並在嘗試apt-get update.透過停用「Windows Defender Credential Guard」功能(也稱為「Device Guard」或「基於虛擬化的安全性」),我似乎已經解決了這個問題。

管理 Windows Defender Credential Guard

Windows Defender Credential Guard 在 Windows 10 企業版和 Windows Server 2016 中引入,使用基於虛擬化的安全性來隔離機密,以便只有特權系統軟體才能存取它們。未經授權存取這些機密可能會導致憑證盜竊攻擊,例如「雜湊傳遞」或「票證傳遞」。 Windows Defender Credential Guard 透過保護 NTLM 密碼雜湊、Kerberos 票證授予票據以及應用程式儲存為網域憑證的憑證來防止這些攻擊。 參考連結

有多種方法可以停用此功能,如連結中所述。我使用了“Windows Defender Credential Guard 硬體準備工具”,可用這裡

DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot

答案3

禁用 Hyper-V

禁用 Hyper-V 對我有用。

這則評論,我找到了做到這一點所需的資源。

  1. 開啟提升的 cmd 提示符
  2. 運行並檢查下的bcdedit設置hypervisorlaunchtype{current}
  3. 跑步bcdedit /set {current} hypervisorlaunchtype off
  4. 重啟

這樣做之後,我在客人的狀態欄上就不再看到「綠海龜」了。

若要重新開啟它,請按照上述替代步驟 3 執行儲存程序:

  1. 跑步bcdedit /set {current} hypervisorlaunchtype auto

https://www.tenforums.com/tutorials/139405-run-hyper-v-virtualbox-vmware-same-computer.html#Part1

筆記:

我注意到 Docker For Windows 使用 Hyper-V,因此如果您使用 Docker,關閉 Docker 可能會解決 VBox 問題。

相關內容