昨日、VirtualBoxで新しいKaliゲストVMをセットアップし、インストール中にいくつかの問題が発生しました。パッケージのインストール段階でインストールが失敗したため、数回再試行してからこのステップをスキップすることにしました。残りのインストールは問題なく完了しました。
インストールが完了した後、どのパッケージが欠落しているかを調べ始めました。私が直面した最初の障害は仕事に適応することでした。 aptの更新とインストールが常に失敗したため、/var/lib/aptをクリーンアップしてrepoミラー切り替えを試みましたが、役に立ちませんでした。 apt updateを実行したときに発生する特定のエラーは次のとおりです。
その後、SHAチェックサムは一致しませんが、MD5Sumは実際に一致することがわかりました。したがって、私の仕事の前提はダウンロードやリポジトリに問題がなく、私のシステムが間違ったチェックサムを生成するので、aptが常に失敗する理由です。
この時点で、おそらくVMを核に設定し、システムを再インストールする必要があります。しかし、私はこれを学習経験として使用して問題を解決したいと思います。それで、今後どうすべきかアドバイスを聞きたいです。
編集する@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
データは一貫していないか弱いと見なされ、MD5を計算しません。
予定通りダウンロードのセキュリティを確保する方法は次のとおりです。次の暗号化インフラストラクチャは、パッケージの信頼性を保証するデータを生成します。
- サーバーコンピューティングの構築暗号ハッシュ¹各パッケージ(
.deb
またはソースパッケージのファイル)ごと。 - ハッシュサーバーは、展開の各部分について、ビルドサーバーから送信されたハッシュに基づいてパッケージリスト(および圧縮バージョン)をビルドし、ファイルのハッシュを含む
Packages
ファイルを生成します。Packages.gz
Release
Packages
- 署名サーバーはプロスタグランジン秘密鍵、生成暗号署名ファイル
Release
に保存し、同じファイルにデータと署名を含むRelease.gpg
ファイルもあります。InRelease
システムでは:
- 初期インストールイメージには、サーバーの秘密鍵を生成するPGP公開鍵と、ファイルがこの鍵で正しく署名されていることを確認するために必要なすべてのツールが含まれています。
- aptがパッケージリストをダウンロードしたときに
InRelease
ファイル(またはRelease
およびRelease.gpg
)をダウンロードし、正しく署名されていることを確認してください。また、ファイルの暗号化ハッシュがファイルPackage
の値と一致することを確認してくださいInRelease
。 - aptがパッケージをダウンロードすると、パッケージファイルのハッシュがファイルの
Packages
値と一致することを確認します。
次の理由で十分です。
- 他の既存のファイルと同じ暗号化ハッシュを使用してファイルを生成する方法を知っている人はいません。 (これはMD5とSHA-1の場合でも同様です。競合を生成する方法、つまり2つのファイルが同じハッシュを持つようにする方法を知っていますが、2番目の辞書画像を計算する方法、つまり指定されたファイルと同じハッシュを見つける方法はわかりません。
- 秘密鍵なしで有効なPGP署名を生成する方法を知っている人はいません。
それはすべてです。 Kaliインフラストラクチャとダウンロードイメージ間、またはダウンロードイメージとシステム間でファイルを転送する方法は重要ではありません。 TLSを使用すると、サイバー攻撃者が古いファイルを提供するのを防ぐことができるため、セキュリティが向上します。起こらなかったかのように最もRelease
)。
これが検出されない唯一のケースは、Kaliインフラストラクチャの内部です。署名キーが破損しているか、ビルドサーバーが誤ったハッシュを報告している場合。
1この文脈では、「(暗号化)チェックサム」、「(暗号化)ハッシュ」、および「(暗号化)ダイジェスト」は同義語です。非暗号化チェックサムとハッシュがありますが、ここでは扱いません。