SHA256 неверен или неисправен на новой виртуальной машине Kali

SHA256 неверен или неисправен на новой виртуальной машине Kali

Вчера я настраивал новую гостевую виртуальную машину Kali в VirtualBox и столкнулся с некоторыми проблемами во время установки. На этапе установки пакетов ПО установка не удалась, поэтому после нескольких попыток я решил пропустить этот шаг. Остальная часть установки прошла без проблем.

После завершения установки я начал пытаться выяснить, каких пакетов не хватает. Первая загвоздка, с которой я столкнулся, была в том, что apt не заработал. apt update и install всегда терпели неудачу, поэтому я очистил /var/lib/apt и попробовал переключить зеркала репозитория, но ничего не помогло. Конкретная ошибка, которую я получаю при запуске 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 в рабочее состояние, вручную понизив версию 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.gz) из хэшей, отправленных сервером сборки для каждой части дистрибутива, и генерирует Releaseфайл, содержащий хэши файлов Packages.
  • Сервер подписи, который имеетПГПзакрытый ключ, генерируеткриптографическая подписьфайла Releaseи сохраняет его в Release.gpg. Также есть файл InRelease, который содержит и данные, и подпись в одном файле.

В вашей системе:

  • Ваш первоначальный установочный образ содержит открытый ключ PGP для закрытого ключа сервера сборки, а также все инструменты, необходимые для проверки того, что файл правильно подписан этим ключом.
  • Когда apt загружает список пакетов, он загружает InReleaseфайл (или, может быть, Releaseи Release.gpg) и проверяет, что он правильно подписан. Он также проверяет, что криптографические хэши файлов Packageсоответствуют значению в InReleaseфайле.
  • Когда apt загружает пакет, он проверяет, что хэши файла пакета соответствуют значениям в Packagesфайле.

Этого достаточно, потому что:

  • Никто не знает, как создать файл с тем же криптографическим хешем, что и у другого существующего файла. (Это справедливо даже для MD5 и SHA-1, для которых мы знаем, как создать коллизию, т. е. как создать два файла с одинаковым хешем, но не знаем, как вычислить второй прообраз, т. е. найти другой файл, хеш которого такой же, как у заданного файла.)
  • Никто не знает, как создать действительную подпись PGP, не имея закрытого ключа.

Вот и все. Обратите внимание, что неважно, как файлы были переданы между инфраструктурой Kali и зеркалом загрузки или между зеркалом загрузки и вашей системой. Использование TLS для этих целей является улучшением безопасности, поскольку не позволяет сетевому злоумышленнику обслуживать устаревшие файлы (например, делать вид, что обновление безопасности для критической части программного обеспечения никогда не происходило, обслуживая подлинные, но устаревшие пакеты с соответствующей устаревшей версией файла Releaseи его подписью).

Единственный способ, которым что-то может остаться незамеченным, — это проникновение в инфраструктуру Kali: если ключ подписи будет скомпрометирован или если серверы сборки сообщат неверные хэши.

¹ В этом контексте «(криптографическая) контрольная сумма», «(криптографический) хэш» и «(криптографический) дайджест» являются синонимами. Существуют некриптографические контрольные суммы и хэши, но они здесь не задействованы.

решение2

В этом ответе предполагается, что хост работает на базе Windows 10.

Я столкнулся с похожей ошибкой "Hash Sum mismatch" в "Packages.gz" во время шага "Installing the base system" любого из ISO-образов 2020-2 amd-64 на VirtualBox. Я также загрузил Kali 2020-2 amd-64 VirtualBox OVA и получил ту же ошибку при попытке apt-get update. Похоже, что мне удалось решить ее отключением функции "Windows Defender Credential Guard", также известной как "Device Guard" или "Virtualization Based Security".

Управление защитой учетных данных Windows Defender

Представленный в Windows 10 Enterprise и Windows Server 2016, Windows Defender Credential Guard использует безопасность на основе виртуализации для изоляции секретов, чтобы только привилегированное системное программное обеспечение могло получить к ним доступ. Несанкционированный доступ к этим секретам может привести к атакам кражи учетных данных, таким как Pass-the-Hash или Pass-The-Ticket. Windows Defender Credential Guard предотвращает эти атаки, защищая хэши паролей NTLM, билеты Kerberos Ticket Granting и учетные данные, хранящиеся приложениями в качестве учетных данных домена. Ссылка на ссылку

Есть несколько методов отключения этой функции, как описано в ссылке. Я использовал «Windows Defender Credential Guard hardware readyness tool», доступныйздесь.

DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot

решение3

Отключение Hyper-V

Мне помогло отключение Hyper-V.

Заэтот комментарий, я нашел необходимые мне ресурсы именно для этого.

  1. Откройте командную строку с повышенными привилегиями
  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 для Windows использует Hyper-V, поэтому вполне возможно, что отключение Docker исправит проблемы VBox, если вы используете Docker.

Связанный контент