새로운 Kali VM의 SHA256이 잘못되었거나 취약함

새로운 Kali VM의 SHA256이 잘못되었거나 취약함

어제 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.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" 또는 "Virtualization-Based Security"라고도 함)을 비활성화하여 해결한 것 같습니다. 문제.

Windows Defender Credential Guard 관리

Windows 10 Enterprise 및 Windows Server 2016에 도입된 Windows Defender Credential Guard는 가상화 기반 보안을 사용하여 권한이 있는 시스템 소프트웨어만 비밀에 액세스할 수 있도록 비밀을 격리합니다. 이러한 비밀에 대한 무단 액세스는 "해시 통과" 또는 "티켓 통과"와 같은 자격 증명 도용 공격으로 이어질 수 있습니다. 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

노트:

Windows용 Docker는 Hyper-V를 사용하므로 Docker를 사용하는 경우 Docker를 끄면 VBox 문제가 해결될 수 있습니다.

관련 정보