Ayer estaba configurando una nueva máquina virtual invitada Kali en VirtualBox y tuve algunos problemas durante la instalación. En el paso de instalar paquetes de software, la instalación fallaba, así que después de algunos intentos decidí omitir ese paso. El resto de la instalación finalizó sin problemas.
Una vez finalizada la instalación, comencé a intentar averiguar qué paquetes faltaban. El primer problema que encontré fue prepararme para trabajar. La actualización e instalación de apt siempre fallaban, así que limpié /var/lib/apt e intenté cambiar los espejos del repositorio, pero nada ayudó. El error específico que recibo al ejecutar apt update es:
Luego me di cuenta de que las sumas de comprobación SHA no coinciden, pero MD5Sum sí coincide. Entonces, mi hipótesis de trabajo es que no hay ningún problema con las descargas o repositorios, mi sistema produce sumas de verificación incorrectas y es por eso que apt siempre falla.
En este punto, probablemente debería desactivar la máquina virtual y reinstalar el sistema, pero prefiero usar esto como una experiencia de aprendizaje y solucionar el problema. Así que espero sugerencias sobre qué hacer a continuación.
Editaren respuesta a la gran respuesta de @Gilles 'SO- deja de ser malvado'.
Intenté verificar si el archivo Packages.gz no está sincronizado con los metadatos en 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
Hasta donde puedo decir, el archivo Packages.gz se descarga correctamente y los hashes reales coinciden con lo que se espera del archivo InRelease. Pero apt todavía informa hashes incorrectos.
Edición 2:
Entonces, después de perder mucho tiempo, finalmente logré un estado de funcionamiento al degradar manualmente apt a la versión 1.8.4 (la versión original era 2.0.2). El problema es reproducible, se ejecuta apt upgrade
la instalación 2.0.2 y el problema vuelve.
Respuesta1
El archivo del paquete Kali se encuentra actualmente en un estado inconsistente. No puedes hacer nada al respecto.
Sería muy poco probable que su sistema produjera sumas de verificación incorrectas. Hay varias razones por las que esto podría suceder, pero ninguna de ellas es plausible.
- El software que calcula la suma de comprobación podría tener errores. Esto es extremadamente improbable: calcular sumas de verificación es fácil y el código para hacerlo es muy estable y fácil de probar.
- El software que descarga los archivos, los almacena, los verifica, etc., podría tener errores. Es muy poco probable que tenga errores de tal manera que calcule sumas de verificación incorrectas, en lugar de generar errores.
- Es posible que el software esté descargando archivos incorrectos, trunciándolos o codificándolos de una manera que no se detecta. Este es el punto menos inverosímil aquí.
- Su sistema podría verse comprometido de tal manera que se calculen sumas de verificación incorrectas. Esto es inverosímil porque un atacante que puede hacer eso puede hacer cosas mucho más útiles de una manera menos notoria.
Es algo menos improbable que su red esté bajo ataque y que un atacante esté manipulando activamente los archivos que está descargando. Aún es poco probable porque el atacante sabría que el ataque sería detectado y sería ineficaz debido a las comprobaciones criptográficas que realiza apt (explicaré estas comprobaciones a continuación). El ataque sólo sería útil contra un usuario que se las arregle para ignorar el error o que descargue .deb
archivos manualmente y los instale con dpkg
.
Por supuesto, improbable no significa imposible. Puede verificar que nada de esto sucede descargando los archivos y calculando su suma de verificación en un sistema diferente y en buen estado. Hice eso y obtuve los mismos valores de sumas de verificación esperadas y reales.
La corrupción podría estar en un espejo, así que usé un espejo diferente (https://http.kali.org/dists/kali-rolling/). El InRelease
archivo contiene las sumas de verificación esperadas y Packages.gz
es el archivo cuyas sumas de verificación se verifican.
$ 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
Como puede ver, las sumas de verificación esperadas y reales son diferentes. Los tamaños esperados y reales también son diferentes. Tengo una versión diferente y anterior Packages.gz
a la tuya, aunque la descargué más recientemente, pero desde un espejo diferente.
También descargué los archivos deel mismo espejo que tuy allí los archivos tenían las sumas de comprobación esperadas, por lo que el problema se repara en ese espejo. Parece un error temporal y la solución aún no se ha propagado por completo.
No sé qué causó el problema. Podría ser un intento de ataque (pero, de ser así, parece haber fallado ya que no todos los archivos que debían corromperse estaban corruptos). Lo más probable es que se tratara de un fallo de sincronización en algún lugar dentro de la infraestructura de Kali.
No sé por qué ves un MD5 coincidente. O el InRelease
archivo que descargó tiene datos inconsistentes o apt ni siquiera se molesta en calcular MD5 porque se considera débil.
Como prometimos, así es como apt garantiza la seguridad de las descargas. La siguiente infraestructura criptográfica genera los datos que garantizan que los paquetes son genuinos:
- Un servidor de compilación calcula elhash criptográfico¹ de cada paquete (
.deb
, o archivo de un paquete fuente). - Un servidor hash crea la lista de paquetes (
Packages
y una versión comprimidaPackages.gz
) a partir de los hashes enviados por el servidor de compilación para cada parte de la distribución y genera unRelease
archivo que contiene los hashes de losPackages
archivos. - Un servidor de firma, que tiene unPGPclave privada, genera unafirma criptográficadel
Release
archivo y lo almacena enRelease.gpg
. También hay un archivoInRelease
que contiene tanto los datos como la firma en el mismo archivo.
En su sistema:
- Su imagen de instalación inicial contiene la clave pública PGP para la clave privada del servidor de compilación, así como todas las herramientas necesarias para validar que un archivo esté firmado correctamente con esta clave.
- Cuando apt descarga la lista de paquetes, descarga el
InRelease
archivo (o tal vezRelease
yRelease.gpg
) y verifica que esté firmado correctamente. También verifica que los hashes criptográficos de losPackage
archivos coincidan con el valor delInRelease
archivo. - Cuando apt descarga un paquete, verifica que los hash del archivo del paquete coincidan con los valores del
Packages
archivo.
Esto es suficiente porque:
- Nadie sabe cómo crear un archivo con el mismo hash criptográfico que otro archivo existente. (Esto es cierto incluso para MD5 y SHA-1, para los cuales sabemos cómo hacer una colisión, es decir, cómo crear dos archivos con el mismo hash, pero no cómo calcular una segunda preimagen, es decir, encontrar otro archivo cuyo hash sea lo mismo que un archivo determinado.)
- Nadie sabe cómo generar una firma PGP válida sin tener la clave privada.
Eso es todo. Tenga en cuenta que no importa cómo se transfirieron los archivos entre la infraestructura de Kali y el espejo de descarga, o entre el espejo de descarga y su sistema. Usar TLS para estos es una mejora de seguridad porque evita que un atacante de red entregue archivos obsoletos (por ejemplo, pretenda que nunca se realizó una actualización de seguridad para una pieza crítica de software, entregue paquetes genuinos pero obsoletos con la correspondiente versión obsoleta del Release
expediente y su firma).
La única forma en que algo puede pasar desapercibido es dentro de la infraestructura de Kali: si la clave de firma está comprometida o si los servidores de compilación informan hashes incorrectos.
¹ En este contexto, “suma de comprobación (criptográfica)”, “hash (criptográfica)” y “resumen (criptográfico)” son sinónimos. Hay sumas de verificación y hashes no criptográficos, pero no están involucrados aquí.
Respuesta2
Esta respuesta supone un host de Windows 10.
Encontré lo que parece ser el mismo error de "No coincide la suma de hash" en "Packages.gz" durante el paso "Instalación del sistema base" de cualquiera de los ISO AMD-64 2020-2 en VirtualBox. También inicié Kali 2020-2 amd-64 VirtualBox OVA y recibí el mismo error al intentar instalar un archivo apt-get update
. Parece que se resolvió al desactivar la función "Windows Defender Credential Guard", también conocida como "Device Guard" o "Virtualization Based Security".
Administrar la protección de credenciales de Windows Defender
Introducido en Windows 10 Enterprise y Windows Server 2016, Windows Defender Credential Guard utiliza seguridad basada en virtualización para aislar secretos de modo que solo el software privilegiado del sistema pueda acceder a ellos. El acceso no autorizado a estos secretos puede dar lugar a ataques de robo de credenciales, como Pass-the-Hash o Pass-The-Ticket. Windows Defender Credential Guard previene estos ataques protegiendo los hashes de contraseñas NTLM, los tickets de concesión de tickets Kerberos y las credenciales almacenadas por las aplicaciones como credenciales de dominio. Link de referencia
Existen varios métodos para desactivar esta función, como se explica en el enlace. Utilicé la "herramienta de preparación de hardware Credential Guard de Windows Defender", disponibleaquí.
DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot
Respuesta3
Deshabilitar Hyper-V
Deshabilitar Hyper-V funcionó para mí.
Poreste comentario, encontré los recursos que necesitaba para hacer precisamente eso.
- Abra un mensaje de cmd elevado
- Ejecute
bcdedit
y verifique la configuración parahypervisorlaunchtype
debajo{current}
- Correr
bcdedit /set {current} hypervisorlaunchtype off
- Reiniciar
Después de hacer esto, ya no veo la "tortuga verde" en la barra de estado del huésped.
Para volver a encenderlo, realice el proceso de guardar como se indica arriba con este paso alternativo 3:
- Correr
bcdedit /set {current} hypervisorlaunchtype auto
https://www.tenforums.com/tutorials/139405-run-hyper-v-virtualbox-vmware-same-computer.html#Part1
Nota:
Noté que Docker para Windows usa Hyper-V, por lo que es posible que apagar Docker solucione los problemas de VBox si está usando Docker.