
Keepass 메모리 덤프에서 마스터 비밀번호를 검색하며, 무차별 대입(bruteforce) 힌트를 사용합니다.
vdohney/keepass-password-dumper의 Python 포트 (CVE-2023-32784) — 원본 C# 구현과 기본 기술에 대한 모든 공로는 vdohney에게 있습니다.
이 스크립트는 프로세스 메모리 덤프에서 KeePass 2.x의 SecureTextBoxEx가 사용자가 마스터 비밀번호를 입력하는 동안 남겨두는 잔여 렌더 문자열을 스캔하여, 첫 번째 문자를 제외한 비밀번호의 모든 문자를 복구합니다. 선택적으로 keepassxc-cli를 사용하여 KDBX 파일을 대상으로 알 수 없는 첫 번째 문자를 무차별 대입(brute-force)합니다.
결함은 사용자 정의 SecureTextBoxEx 컨트롤에 있습니다. 입력된 각 문자에 대해 .NET은 관리 메모리에 ●a, ●●s, ●●●s, … 형태의 잔여 문자열을 유지하며, 이를 통해 첫 번째 이후의 모든 비밀번호 문자를 복구할 수 있습니다.
KeePass ≤ 2.53.1을 사용했다면 마스터 비밀번호가 손상된 것으로 간주하십시오:
C:\Windows\memory.dmp),powercfg /h off),cipher /w:) — 이전에 할당된 섹터에서 잔여물이 추출되지 않도록,$PATH에 keepassxc-cli ( --kdbx 옵션에만 필요)Debian / Ubuntu에서 무차별 대입을 계획한다면 KeePassXC CLI를 설치하십시오:
sudo apt install keepassxc
# 후보 문자를 복구하여 출력
python3 keepass_dumper.py memory.dmp
# 생성된 후보 목록을 파일로 덤프
python3 keepass_dumper.py memory.dmp -p candidates.txt
# KDBX를 대상으로 누락된 첫 번째 문자를 복구하고 무차별 대입
python3 keepass_dumper.py memory.dmp --kdbx db.kdbx
전체 옵션 목록은 python3 keepass_dumper.py --help를 실행하십시오.