web-dev-qa-db-ja.com

新しいカーリーでSHA256が間違っているか壊れているVM

昨日、新しいKaliゲストをセットアップしていましたVM VirtualBoxで、インストール中に問題が発生しました。ソフトウェアパッケージをインストールするステップで、インストールが失敗するため、何度か再試行した後、スキップすることにしましたインストールの残りの部分は問題なく終了しました。

インストールが終了した後、私はどのパッケージが欠けているのかを解明しようとし始めました。私が最初に遭遇した問題は、働きがちなgettinでした。 aptの更新とインストールは常に失敗するため、/ var/lib/aptを削除してレポミラーの切り替えを試みましたが、何も役に立ちませんでした。 apt updateを実行するときに私が得る具体的なエラーは次のとおりです。

enter image description here

次に、SHA=チェックサムは一致しないが、MD5Sumは実際には一致することに気づきました。そのため、私の作業仮説は、ダウンロードまたはリポジトリに何も問題がなく、システムが間違ったチェックサムを生成していることです。 aptが常に失敗する理由。

この時点で、おそらくVMを核にしてシステムを再インストールする必要がありますが、これを学習体験として使用して問題を修正したいと思います。そのため、次に行うこと。

Edit@Gilles 'SO- stop be evil be great'の素晴らしい回答に応えて。

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を動作状態にしました。この問題は再現可能であり、apt upgradeは2.0.2をインストールし、問題が再発します。

2
JonC

この回答は、Windows 10ホストを想定しています。

VirtualBoxの2020-2 AMD-64 ISOのいずれかの「ベースシステムのインストール」ステップ中に「Packages.gz」で同じ「ハッシュサム不一致」エラーのように見えるものに遭遇しました。また、Kali 2020-2 AMD-64 VirtualBox OVAを起動し、apt-get updateを試行中に同じエラーを受け取りました。 「デバイスガード」または「仮想化ベースのセキュリティ」とも呼ばれる「Windows Defender Credential Guard」機能を無効にすることで解決されたようです。

Windows Defender Credential Guardの管理

Windows 10 EnterpriseおよびWindows Server 2016で導入されたWindows Defender Credential Guardは、仮想化ベースのセキュリティを使用してシークレットを分離し、特権のあるシステムソフトウェアのみがアクセスできるようにします。これらのシークレットへの不正アクセスは、Pass-the-HashやPass-The-Ticketなどの資格情報の盗難攻撃につながる可能性があります。 Windows Defender Credential Guardは、NTLMパスワードハッシュ、Kerberosチケット許可チケット、およびアプリケーションによってドメイン資格情報として保存されている資格情報を保護することにより、これらの攻撃を防ぎます。 参照リンク

リンクで説明されているように、この機能を無効にする方法はいくつかあります。 「Windows Defender Credential Guardハードウェア準備ツール」を使用しました ここ を利用できます。

DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot
1
Brandon

Kaliパッケージアーカイブは現在、矛盾した状態にあります。それについては何もできません。

システムが誤ったチェックサムを生成することはほとんどありません。それが起こり得るいくつかの理由がありますが、それらのどれももっともらしいものではありません。

  • チェックサム自体を計算するソフトウェアはバグがある可能性があります。これは非常にまれです。チェックサムの計算は簡単で、そのためのコードは非常に安定していてテストが簡単です。
  • ファイルのダウンロード、保存、検証などを行うソフトウェアはバグがある可能性があります。エラーが発生するのではなく、誤ったチェックサムを計算するようなバグがある可能性はほとんどありません。
  • ソフトウェアが間違ったファイルをダウンロードしたり、キャッチされない方法でファイルを切り詰めたり、エンコードしたりしている可能性があります。これは、ここではもっともありそうもない箇条書きです。
  • 誤ったチェックサムを計算するような方法でシステムが危険にさらされる可能性があります。これを実行できる攻撃者は、目立たない方法ではるかに有用なことを実行できるため、これは信じられないことです。

ネットワークが攻撃を受けている可能性はやや低く、攻撃者がダウンロードしているファイルを積極的に操作しています。 aptが行う暗号チェックにより攻撃が検出され、効果がないことを攻撃者が知っているため、それはまだありそうにありません(これらのチェックについては以下で説明します)。この攻撃は、エラーを無視するか、.debファイルを手動でダウンロードしてdpkgでインストールするユーザーに対してのみ有効です。

もちろん、不可能という意味ではありません。ファイルをダウンロードし、別の既知の正常なシステムでチェックサムを計算することにより、これが発生していないことを確認できます。私はそれを行い、期待値と実際のチェックサムの同じ値を得ました。

破損が1つのミラーにある可能性があるため、別のミラーを使用しました( 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ファイルに一貫性のないデータが含まれているか、MD5は弱いと見なされているため、aptはMD5を計算する必要さえありません。

約束どおり、aptがダウンロードのセキュリティを確保する方法は次のとおりです。次の暗号化インフラストラクチャは、パッケージが本物であることを保証するデータを生成します。

  • ビルドサーバーは、各パッケージ(.deb、またはソースパッケージのファイル)の 暗号化ハッシュ ¹を計算します。
  • ハッシュサーバーは、ディストリビューションの各部分に対してビルドサーバーによって送信されたハッシュからパッケージリスト(Packages、および圧縮バージョンPackages.gz)を構築し、Releaseファイルを生成しますPackagesファイルのハッシュを含みます。
  • [〜#〜] pgp [〜#〜] 秘密鍵を持つ署名サーバーは、Releaseファイルの 暗号化署名 を生成して保存しますRelease.gpgにあります。同じファイルにデータと署名の両方を含むファイルInReleaseもあります。

システム上:

  • 初期インストールイメージには、ビルドサーバーの秘密鍵のPGP公開鍵と、ファイルがこの鍵で正しく署名されていることを検証するために必要なすべてのツールが含まれています。
  • Aptがパッケージリストをダウンロードするとき、InReleaseファイル(またはReleaseおよびRelease.gpg)をダウンロードし、正しく署名されていることを確認します。また、Packageファイルの暗号化ハッシュがInReleaseファイルの値と一致することも確認します。
  • Aptはパッケージをダウンロードするときに、パッケージファイルのハッシュがPackagesファイルの値と一致することを確認します。

次の理由によりこれで十分です。

  • 他の既存のファイルと同じ暗号ハッシュを使用してファイルを作成する方法は誰にもわかりません。 (これはMD5とSHA-1にも当てはまります。衝突の方法、つまり同じハッシュで2つのファイルを作成する方法は知っていますが、2番目のプリイメージを計算する方法、つまりハッシュが別のファイルを見つける方法はわかっていません。指定されたファイルと同じです。)
  • 秘密鍵なしに有効なPGP署名を生成する方法は誰にもわかりません。

それでおしまい。 Kaliインフラストラクチャとダウンロードミラーの間、またはダウンロードミラーとシステムの間でファイルがどのように転送されたかは関係ありません。それらに対してTLSを使用すると、ネットワークの攻撃者が古いファイルを提供するのを防ぐことができるため、セキュリティが向上します(たとえば、重要なソフトウェアへのセキュリティ更新が行われなかったふりをして、対応する廃止されたバージョンの正規のパッケージを提供することにより、 Releaseファイルとその署名)。

何かが検出されない唯一の方法は、Kaliインフラストラクチャの内部です。署名キーが危険にさらされている場合、またはビルドサーバーが誤ったハッシュを報告している場合。

¹ この文脈では、「(暗号)チェックサム」、「(暗号)ハッシュ」、「(暗号)ダイジェスト」は同義語です。暗号化されていないチェックサムとハッシュがありますが、それらはここには含まれていません。

Hyper-Vの無効化

Hyper-Vを無効にするとうまくいきました。

このコメント に従って、私はそれを行うために必要なリソースを見つけました。

  1. 管理者特権のコマンドプロンプトを開く
  2. bcdeditを実行し、{current}の下のhypervisorlaunchtypeの設定を確認します
  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の問題が解決する可能性があります。

0
mbomb007