CVE-2023-32784 익스플로잇 데모
프로젝트 개요
이 저장소는 KeePass 2.54 이전 버전에서 발견된 치명적인 취약점인 CVE-2023-32784의 데모를 제공합니다. 이 익스플로잇은 메모리 덤프를 통해 마스터 비밀번호를 복구하여 저장된 자격 증명을 노출시킵니다. 이 문서는 익스플로잇 환경 설정, PoC 도구 실행, 그리고 완화 전략 이해를 위한 단계별 가이드를 설명합니다.
취약점 세부 정보
설명
CVE-2023-32784는 KeePass 2.0부터 2.53까지의 버전에서 KeePass의 Secure Textbox EX 구성 요소 내 문자열 처리 부적절로 인한 메모리 누수 취약점입니다. 마스터 비밀번호의 각 입력 문자는 메모리에 흔적을 남겨 메모리 덤프를 통해 복구할 수 있습니다.
주요 특징:
- 심각도: 높음
- 익스플로잇 가능성: 메모리 덤프에 대한 물리적 또는 로컬 접근이 필요하며, 원격 코드 실행은 포함되지 않습니다.
- 영향: 메모리에서 마스터 비밀번호(첫 번째 문자 제외) 추출을 통해 저장된 자격 증명에 대한 무단 접근이 가능합니다.
익스플로잇 세부 정보
도구 및 기술
익스플로잇은 메모리 패턴 인식을 사용하여 메모리 덤프에서 문자를 추출하는 KeePass Master Password Dumper 도구를 활용합니다.
- 한계: 비밀번호의 첫 번째 문자는 복구되지 않지만, 나머지 비밀번호가 쉽게 재구성되거나 추측될 수 있으므로 큰 장애는 아닙니다.
- 위협 모델: 이 취약점은 메모리 덤프(예:
pagefile.sys 또는 hiberfil.sys)에 대한 접근이 가능한 공유 시스템이나 무인 시스템에서의 위험을 강조합니다.
익스플로잇 계획
사전 요구 사항
이 익스플로잇을 성공적으로 실행하려면 다음 환경과 도구가 필요합니다:
- 가상화 소프트웨어: 테스트 환경 격리를 위한 VMware 또는 이에 상응하는 도구.
- Windows 10 ISO: 취약한 KeePass 설치를 위한 운영 체제.
- KeePass 2.x: 2.54 이전 버전.
- .NET 7 런타임: PoC 도구 실행에 필요.
- PoC 도구: GitHub에서 사용 가능한 KeePass Password Dumper.
단계별 설명 및 근거
1. 환경 설정
- 왜 VM인가?
가상 머신은 프로덕션 시스템을 위험에 빠뜨리지 않고 취약점을 테스트할 수 있는 안전하고 통제된 환경을 제공합니다.
- 단계:
- VMware를 설치하고 Windows 10으로 새 VM 인스턴스를 생성합니다.
- KeePass 2.x(예: 버전 2.53)를 설치하고 마스터 비밀번호를 설정합니다.
- 예시 마스터 비밀번호:
user.
2. 종속성 설치
- 왜 .NET 7인가?
PoC 도구는 .NET 7 프레임워크를 기반으로 구축되었습니다. 올바른 런타임을 사용하면 호환성이 보장됩니다.
- 단계:
- 공식 Microsoft 웹사이트에서
.NET 7을 다운로드하여 설치합니다.
- 다음을 사용하여 설치를 확인합니다:
3. 메모리 덤프 생성
- 왜 KeePass 프로세스 메모리를 덤프하는가?
취약점은 KeePass의 메모리 처리에 있습니다. 덤프를 캡처하면 비밀번호 흔적이 있는 메모리 공간을 분석할 수 있습니다.
- 단계:
- KeePass를 열고 마스터 비밀번호로 데이터베이스 잠금을 해제합니다.
- 작업 관리자를 사용하여 KeePass 프로세스에 대한
.DMP 파일을 생성합니다:
- 작업 관리자에서 KeePass를 찾습니다.
- 마우스 오른쪽 버튼을 클릭하고 덤프 파일 만들기를 선택합니다.
.DMP 파일의 위치를 기록합니다(일반적으로 %TEMP% 디렉토리에 있음).
4. PoC 도구 실행
- 왜 덤프를 PoC 디렉토리에 복사하는가?
PoC 도구는 작업 디렉토리 내의 덤프 파일을 처리합니다. 이 단계는 올바른 파일이 분석되도록 보장합니다.
- 단계:
.DMP 파일을 추출된 PoC 폴더로 이동합니다.
- 일관성을 위해 파일 이름을
KeePass.DMP로 변경합니다.
- 터미널을 열고 PoC 디렉토리로 이동한 후 도구를 실행합니다:
cd Downloads/keepass-password-dumper-main
dotnet run KeePass.DMP
- 예상 결과:
도구는 첫 번째 문자를 제외한 비밀번호 문자를 출력합니다.
예시 명령 시퀀스
cd Downloads/keepass-password-dumper-main
dir
dotnet run KeePass.DMP
완화 전략
권장 수정 사항
-
KeePass 업데이트:
KeePass 2.54로 업그레이드하면 다음과 같은 개선 사항이 도입되어 취약점이 해결됩니다:
- 민감한 데이터에 대한 향상된 메모리 처리.
- 메모리 예측 가능성을 줄이기 위한 무작위 문자열 삽입.
-
메모리 덤프 보호:
pagefile.sys 및 hiberfil.sys와 같은 민감한 파일을 정기적으로 지우거나 덮어씁니다.
- 메모리에서 민감한 데이터를 플러시하기 위해 시스템을 주기적으로 다시 시작합니다.
-
안전한 메모리 관리 실천:
개발자는 변경 가능한 데이터 구조 사용 또는 사용 후 메모리 버퍼 지우기 등 민감한 문자열 처리를 위한 모범 사례를 채택해야 합니다.
중요 참고 사항
- 데모 전용 사용 사례:
이 익스플로잇은 통제된 환경에서 교육 목적으로만 사용됩니다. 이 정보를 악의적으로 사용하지 마십시오.
- 영향 인식:
조직은 공유 시스템이나 다중 사용자 시스템에서 이 취약점의 영향을 평가하고 그에 따라 완화 조치를 구현해야 합니다.
CVE의 실시간 익스플로잇에 대한 내 유튜브 영상 확인하기
https://youtu.be/o855F0RvI30?si=WXOtPu-jgtC31O-5
참고 자료
작성자
Bhargav Raj Dutta
Bachelor of Information Technology in Cyber Security and Digital Forensics (Murdoch University)
질문이나 협업 문의가 있으시면 [LinkedIn www.linkedin.com/in/bhargav-raj-dutta-80251a1b4)로 연락 주세요.