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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
bitcracker — BitCracker는 BitLocker로 암호화된 메모리 장치를 위한 최초의 오픈 소스 비밀번호 크래킹 도구입니다. | Kitploit
도구/GitHubGitHub/e-ago/bitcracker
Password CrackingEncryption/Decryption ToolsCryptography
GitHube-ago/bitcracker

bitcracker

BitCracker는 BitLocker로 암호화된 메모리 장치를 위한 최초의 오픈 소스 비밀번호 크래킹 도구입니다.

저장소 보기
9652074년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

BitCracker

BitCracker는 BitLocker로 암호화된 저장 장치(하드 디스크, USB 펜드라이브, SD 카드 등)를 위한 최초의 오픈 소스 비밀번호 크래킹 도구입니다. BitLocker는 Windows Vista, 7, 8.1 및 10(Ultimate, Pro 및 Enterprise 에디션)에서 사용할 수 있는 암호화 기능입니다. BitLocker는 TPM(Trusted Platform Module), 스마트 카드, 복구 암호, 사용자 제공 암호 등 저장 장치를 암호화하기 위한 다양한 인증 방법을 제공합니다.

사전 공격을 통해 BitCracker는 암호화된 저장 장치를 해독하기 위해 올바른 사용자 암호 또는 복구 암호를 찾으려고 시도합니다. CUDA 및 OpenCL로 구현되었습니다.

논문

여러 저널이 BitCracker 논문의 출판을 지연시켰습니다(거의 3년, 여러 번의 수정 끝에 최종 거절). 이 논문은 공격의 세부 사항, BitLocker 드라이브 암호화(BDE) 볼륨 형식 및 암호화/복호화 절차의 가능한 취약점을 설명합니다. 마지막으로 여기에 논문을 게시했습니다: https://arxiv.org/abs/1901.01337 . 자유롭게 댓글을 달고 공유해 주세요.

요구 사항

BitCracker-CUDA를 실행하려면 최소 요구 사항은 다음과 같습니다:

  • CC 3.5 이상의 NVIDIA GPU
  • CUDA 7.5 이상

BitCracker-OpenCL을 실행하려면 최소 요구 사항은 OpenCL을 지원하는 모든 GPU 또는 CPU입니다 (여기에서 도움을 찾을 수 있습니다).

BitCracker는 최소 260MB의 디바이스 메모리가 필요합니다.

성능상의 이유로 CPU보다 GPU에서 공격을 실행하는 것을 강력히 권장합니다 (성능 섹션 참조).

빌드

build.sh 스크립트를 실행하면 build 디렉토리 안에 4개의 실행 파일이 생성됩니다: bitcracker_hash, bitcracker_rpgen, bitcracker_cuda, bitcracker_opencl.

bitcracker_cuda를 NVIDIA GPU 및 CUDA 버전에 맞게 빌드하려면 src_CUDA/Makefile을 수정하여 올바른 SM 버전을 선택해야 합니다. 참고로 다음 표를 사용할 수 있습니다:

공격 준비

예를 들어 dd 명령을 사용하여 BitLocker로 암호화된 저장 장치의 이미지를 생성해야 합니다:

root@kitploit:~
sudo dd if=/dev/disk2 of=/path/to/imageEncrypted.img conv=noerror,sync
4030464+0 records in
4030464+0 records out
2063597568 bytes transferred in 292.749849 secs (7049013 bytes/sec)

그런 다음 imageEncrypted.img에서 bitcracker_hash 실행 파일을 실행하여 다음을 수행해야 합니다:

  • 이미지가 유효한 형식인지, BitCracker로 공격할 수 있는지 확인
  • 원래 저장 장치가 사용자 암호(User Password) 또는 복구 암호(Recovery Password)로 암호화되었는지 확인
  • 이미지를 설명하는 해시 추출

실행이 정상적으로 완료되면 bitcracker_hash는 1개 또는 2개의 출력 파일을 생성합니다:

  • hash_user_pass.txt : 장치가 사용자 암호로 암호화된 경우, 이 파일에는 사용자 암호 공격 모드를 시작하는 데 필요한 해시가 포함됩니다.
  • hash_recv_pass.txt : 복구 암호 공격 모드를 시작하는 데 필요한 해시입니다.

BDE 암호화 볼륨은 인증 방법에 따라 다른 형식을 가질 수 있습니다. bitcracker_hash가 암호화된 이미지에서 복구 암호를 찾을 수 없는 경우, 이슈를 열거나 저에게 연락해 주세요.

예제:

root@kitploit:~
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7

---------> BitCracker Hash Extractor <---------
Opening file ./Images/imgWin7

....

Signature found at 0x02208000
Version: 2 (Windows 7 or later)

VMK entry found at 0x022080bc
VMK encrypted with user password found!
VMK encrypted with AES-CCM

VMK entry found at 0x0220819c
VMK encrypted with Recovery key found!
VMK encrypted with AES-CCM

User Password hash:
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2

Recovery Key hash:
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688

Output file for user password attack: "hash_user_pass.txt"
Output file for recovery password attack: "hash_recv_pass.txt"

사용자 암호 공격

저장 장치가 다음 이미지와 같이 사용자가 제공한 암호로 암호화된 경우 이 유형의 공격을 사용할 수 있습니다. 대체 텍스트 BitCracker는 사전 공격을 수행하므로 가능한 사용자 암호의 단어 목록을 제공해야 합니다.

공격을 시작하려면 다음이 필요합니다:

  • hash_user_pass.txt 파일
  • 가능한 사용자 암호의 단어 목록 (직접 제공해야 함)

명령줄 예:

./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u

여기서:

  • -f : hash_user_pass.txt 파일의 경로
  • -d : 단어 목록의 경로
  • -t : 각 CUDA 스레드에서 처리되는 암호 수
  • -b : CUDA 블록 수
  • -g : NVIDIA GPU 장치 ID
  • -u : 사용자 암호 공격을 지정

사용 가능한 모든 옵션은 ./build/bitcracker_cuda -h를 입력하세요. 최상의 성능을 얻으려면 Performance 섹션의 표를 참조하여 NVIDIA GPU에 따라 t 및 b 옵션을 적절히 설정하세요.

동일한 고려 사항이 bitcracker_opencl 실행 파일에도 적용됩니다.

출력 예:

root@kitploit:~
====================================
Selected device: GPU Tesla K80 (ID: 0)
====================================
....
Reading hash file "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663

====================================
Attack
====================================

Type of attack: User Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 1
Max Psw per kernel: 1024
Dictionary: wordlist.txt
Strict Check (-s): No
MAC Comparison (-m): No

CUDA Kernel execution:
	Stream 0
	Effective number psw: 12
	Passwords Range:
		abcdefshhf
		.....
		blablalbalbalbla12
	Time: 28.651947 sec
	Passwords x second:     0.42 pw/sec

================================================
....
Password found: paperino
================================================

현재 BitCracker는 길이가 8자에서 55자 사이의 입력 암호를 처리할 수 있습니다.

복구 암호 공격

저장 장치 암호화 중에 (인증 방법에 관계없이) BitLocker는 사용자에게 드라이브를 정상적으로 잠금 해제할 수 없는 경우 암호화된 저장 장치에 대한 액세스를 복원하는 데 사용할 수 있는 복구 암호를 어딘가에 저장하도록 요청합니다. 따라서 복구 암호는 모든 인증 방법에 대한 일종의 마스터 키이며 다음과 같은 48자리 키로 구성됩니다:

236808-089419-192665-495704-618299-073414-538373-542366

자세한 내용은 Microsoft 문서를 참조하세요.

사용자 암호와 마찬가지로 BitCracker는 저장 장치를 암호화하기 위해 BitLocker가 생성한 올바른 복구 암호를 찾기 위해 사전 공격을 수행할 수 있습니다. 현재 저장 장치가 TPM으로 암호화되지 않은 경우에만 복구 암호를 공격할 수 있습니다.

공격을 시작하려면 다음이 필요합니다:

  • hash_recv_pass.txt 파일
  • 가능한 복구 암호의 단어 목록

가능한 모든 암호를 생성하고 저장하는 것은 어려운 문제입니다. 이러한 이유로 bitcracker_rpgen이라는 복구 암호 생성기를 만들었습니다. 이 도구를 사용하면 공격에 사용할 수 있는 여러 복구 암호 단어 목록을 만들 수 있습니다. 예를 들어:

./build/bitcracker_rpgen -n 300 -p 10000000 -s 000000-000011-000022-000033-000044-000055-008459-015180

이는 다음을 생성합니다:

  • -n : 단어 목록 수
  • -p : 단어 목록당 복구 암호 수
  • -s : 이 암호부터 시작하여 복구 암호 생성

옵션 없이 실행하여 기본 구성을 사용할 수 있습니다:

root@kitploit:~
./build/bitcracker_rpgen

************* BitCracker Recovery Password wordlists generator *************

Running with this configuration:
### Create 100 wordlists
### Recovery Passwords per wordlist=5000000
### Allow duplicates=No
### Generate starting from=000000-000011-000022-000033-000044-000055-000066-000077

Creating wordlist "bitcracker_wlrp_0.txt" with 5000000 passwords
First password=000000-000011-000022-000033-000044-000055-000066-000077
Last password= 000000-000011-000022-000033-000044-000055-000902-217822
...

-s 옵션을 사용하면 매번 초기 암호부터 다시 시작하는 대신 마지막으로 생성된 복구 암호부터 생성을 재개할 수 있습니다. -d 옵션은 동일한 복구 암호 내에서 중복을 허용합니다. 예: 000000-000011-000055-000055-000044-000055-000902-217822

사용 가능한 모든 옵션은 ./build/bitcracker_rpgen -h를 입력하세요.

참고: 가능한 복구 암호의 양은 엄청납니다:
recovery password = 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536 x 65536
연구에 따르면 암호 분포는 균일하며 "더 높은 확률"의 숫자를 찾을 방법이 없습니다. 지금까지 가능한 후보의 양을 줄이는 규칙을 찾지 못했습니다. 이는 복구 암호 공격이 영원히 걸릴 수 있음을 의미합니다 (사용자 암호 공격이 항상 선호됩니다). 곧 bitcracker_rpgen 도구를 수정하여 정렬된 순서가 아닌 무작위 방식으로 복구 암호를 생성할 것입니다.

명령줄 예:

./build/bitcracker_cuda -f hash_recv_pass.txt -d bitcracker_wlrp_0.txt -t 1 -b 1 -g 0 -r

옵션은 사용자 암호의 경우와 동일하지만 -u 대신 -r을 지정해야 합니다. 출력 예:

root@kitploit:~
====================================
Selected device: GPU Tesla K80 (ID: 0)
====================================

...
Reading hash file "hash_recv_pass.txt"
$bitlocker$2$16$432dd19f37dd413a88552225628c8ae5$1048576$12$a0da3fc75f6cd30106000000$60$3e57c68216ef3d2b8139fdb0ec74254bdf453e688401e89b41cae7c250739a8b36edd4fe86a597b5823cf3e0f41c98f623b528960a4bee00c42131ef


====================================
Attack
====================================

Type of attack: Recovery Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 8
Max Psw per kernel: 8192
Dictionary: wordlist.txt
Strict Check (-s): No
MAC Comparison (-m): No

CUDA Kernel execution:
	Effective passwords: 6014
	Passwords Range:
		390775-218680-136708-700645-433191-416240-153241-612216
		.....
		090134-625383-540826-613283-563497-710369-160182-661364
	Time: 193.358937 sec
	Passwords x second:    31.10 pw/sec


================================================
CUDA attack completed
Passwords evaluated: 6014
Password found: 111683-110022-683298-209352-468105-648483-571252-334455
================================================

오탐지(False Positives)

기본적으로 BitCracker는 빠른 공격을 수행합니다(사용자 및 복구 암호 모드 모두). 이 공격은 일부 오탐지를 반환할 수 있습니다. 이 경우 MAC 검증을 활성화하는 -m 옵션을 사용하여 공격을 다시 실행할 수 있습니다(느린 솔루션).

예제

실제 공격을 시작하기 전에 시스템에서 BitCracker를 테스트하기 위해 여러 암호화된 저장 장치 이미지를 제공했습니다.

  • imgWin7: Windows 7 Enterprise 에디션 OS의 BitLocker
  • imgWin8: Windows 8 Enterprise 에디션 OS의 BitLocker
  • imgWin10Compat.vhd: Windows 10 Pro 에디션 OS의 BitLocker (호환 모드)
  • imgWin10NotCompat.vhd: Windows 10 Pro 에디션 OS의 BitLocker (비호환 모드)
  • imgWin10NotCompatLongPsw.vhd : Windows 10 Pro 에디션 OS의 BitLocker (비호환 모드, 더 긴 사용자 암호 포함)

Dictionary 폴더에 저장된 단어 목록을 사용하여 사용자 및 복구 암호 모드 모두로 해당 이미지를 공격할 수 있습니다.

성능

다음은 사용자 암호(-u 옵션)에 대한 빠른 공격(기본)의 최상의 BitCracker 성능을 보고합니다.

성능:

참고: 각 암호는 약 2,097,152 SHA-256이 필요합니다.

John The Ripper

BitCracker를 John The Ripper의 OpenCL-BitLocker 형식으로 출시했습니다 (--format=bitlocker-opencl). bitcracker_hash가 생성한 해시 파일(How To 섹션 참조)은 John 형식과 완전히 호환됩니다.
GTV100에서 암호 속도는 약 3150p/s입니다. JtR 팀이 이 공격의 CPU 버전을 개발했습니다 (--format=bitlocker); CPU Intel(R) Xeon(R) v4 2.20GHz에서 암호 속도는 약 78p/s입니다.

Hashcat

작업 진행 중...

변경 로그

2021년 11월: CUDA 11.x를 사용하여 NVIDIA GPU Ampere에서 실행되도록 코드 업데이트

향후 계획

  • 다중 GPU 구현 제공
  • Qt 인터페이스 제공

참고 문헌, 크레딧 및 연락처

프로젝트를 공유하고 테스트해 주세요: 여러분의 피드백이 필요합니다!

John The Ripper 팀, Dislocker 및 LibBDE 프로젝트에 특별히 감사드립니다.

이는 이탈리아 국립 연구 위원회(National Research Council of Italy)와의 협력 연구 프로젝트이며 GPLv2 라이선스로 출시되었습니다.
저작권 (C) 2013-2021 Elena Ago (elena dot ago at gmail dot com) 및 Massimo Bernaschi (massimo dot bernaschi at gmail dot com)
향후 논문에서 BitCracker 공격에 대한 추가 정보를 제공할 예정입니다.

GPLv2 라이선스를 사용하지만 협력에 열려 있습니다. 추가 정보, 협업 또는 버그 신고는 연락 주시거나 이슈를 열어 주세요.

도구 다운로드
GPU 아키텍처권장 CUDAMakefile
KeplerCUDA 7.5arch=compute_35,code=sm_35
MaxwellCUDA 8.0arch=compute_52,code=sm_52
PascalCUDA 9.0arch=compute_60,code=sm_60
VoltaCUDA 9.0arch=compute_70,code=sm_70
GPU 약어GPU아키텍처CC# SM클럭CUDA
GFTGeForce TitanKepler3.5148357.0
GTK80Tesla K80Kepler3.5138757.5
GFTXGeForce Titan XMaxwell5.22410017.5
GTP100Tesla P100Pascal6.15613288.0
GTV100Tesla V100Volta7.08012909.0
AMDMRadeon Malta-----
버전GPU-t-b커널당 암호 수암호/초해시/초
CUDAGFT813106.496303635 MH/s
CUDAGTK80814114.688370775 MH/s
CUDAGFTX824106.6089331.957 MH/s
CUDAGTP10015657.3441.4182.973 MH/s
CUDAGTV10018081.9203.2526.820 MH/s
OpenCLAMDM3264524.288241505 MH/s
OpenCLGFTX824196.6088841.853 MH/s