BitCracker - это первый инструмент для взлома паролей с открытым исходным кодом для устройств хранения (жесткий диск, USB Pendrive, SD -карта и т. Д.), Зашифрованные с помощью Bitlocker, функции шифрования, доступная на Windows Vista, 7, 8.1 и 10 (Ultimate, Pro и Enterprise издания). Bitlocker предлагает ряд различных методов аутентификации для шифрования устройства хранения, такого как доверенный модуль платформы (TPM), смарт -карта, пароль для восстановления, пароль, предоставленный пользователем.
С помощью словаря BitCracker пытается найти правильный пароль пользователя или пароль для восстановления, чтобы расшифровать зашифрованное устройство хранения. Он был реализован в CUDA и OpenCl.
Несколько журналов задержали публикацию нашей бумаги Bitccracker (почти 3 года, с окончательным отказом после нескольких изменений), которая объясняет детали нашей атаки, формата громкости битлокового диска (BDE) и возможных недостатков в процедуре шифрования/дешифрования. Наконец, мы опубликовали статью здесь: https://arxiv.org/abs/1901.01337. Пожалуйста, не стесняйтесь комментировать и поделиться.
Чтобы запустить BitCracker-CUDA, минимальные требования:
Чтобы запустить BitCracker-Opencl, минимальные требования-это любой графический процессор или процессор, поддерживающий OpenCl (вы можете найти некоторую помощь здесь.
Bitcracker требует не менее 260 МБ памяти устройства.
Мы настоятельно рекомендуем запустить вашу атаку на графическом процессоре, а не на процессоре по соображениям производительности (см. Производительность раздела).
Запуск сценария build.sh
генерирует 4 исполняемых файла в каталоге build
: bitcracker_hash
, bitcracker_rpgen
, bitcracker_cuda
, bitcracker_opencl
.
Чтобы построить bitcracker_cuda
, посвященную вашей версии NVIDIA и версии CUDA, вам необходимо изменить src_CUDA/Makefile
, выбрав правильную версию SM. В качестве ссылки вы можете использовать следующую таблицу:
Архитектура графического процессора | Предложил CUDA | Makefile |
---|---|---|
Кеплер | CUDA 7.5 | ARCH = COMPUTE_35, CODE = SM_35 |
Максвелл | CUDA 8.0 | ARCH = COMPUTE_52, CODE = SM_52 |
Паскаль | CUDA 9.0 | ARCH = COMPUTE_60, CODE = SM_60 |
Вольта | CUDA 9.0 | ARCH = COMPUTE_70, CODE = SM_70 |
Вам нужно создать изображение вашего устройства хранения, зашифрованное Bitlocker, используя, в качестве примера команда DD :
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)
Затем вам нужно запустить исполняемый файл bitcracker_hash
на вашем imageEncrypted.img
, чтобы:
Если выполнение завершается правильно, bitcracker_hash
создает 1 или 2 выходных файла:
Зашифрованные объемы BDE могут иметь разные форматы для различных методов аутентификации. Если bitcracker_hash
не может найти пароль восстановления на вашем зашифрованном изображении, откройте проблему или свяжитесь со мной
Пример:
/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
: идентификатор устройства GPU nvidia-u
: укажите, что вы хотите атаку пароля пользователя Для всех доступных вариантов введите ./build/bitcracker_cuda -h
. Чтобы получить наилучшую производительность, пожалуйста, обратитесь к разделу Table в производительности, чтобы правильно установить параметры t
и b
в соответствии с вашим графическим процессором NVIDIA.
Те же соображения могут быть применены для исполняемого файла bitcracker_opencl
.
Вывод пример:
====================================
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 Docs для получения более подробной информации.
Что касается пароля пользователя, 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
: генерировать пароли восстановления, начиная с этогоВы можете использовать конфигурацию по умолчанию без параметров:
./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
Согласно нашему исследованию, распределение паролей равномерное, и нет никакого способа найти «более вероятные» числа. До сих пор мы не нашли правила, чтобы уменьшить количество возможных кандидатов. Это означает, что атака пароля восстановления может занять навсегда (атака Passwod пользователя всегда является предпочтительной). Вскоре мы изменим инструмент bitcracker_rpgen
для создания пароля восстановления повседневным, а не в упорядоченной последовательности.
Пример командной строки:
./build/bitcracker_cuda -f hash_recv_pass.txt -d bitcracker_wlrp_0.txt -t 1 -b 1 -g 0 -r
Где параметры такие же, как в случае с паролем пользователя, но вместо -u
вам необходимо указать -r
. Вывод пример:
====================================
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
================================================
По умолчанию BitCracker выполняет быструю атаку (как для режимов пользователя, так и для пароля восстановления), которые могут вернуть некоторые ложные положительные. В этом случае вы можете перезапустить свою атаку с помощью опции -m
, которая позволяет проверить Mac (более медленное решение).
Чтобы проверить BitCracker в вашей системе, прежде чем начать реальную атаку, мы предоставили несколько изображений зашифрованных устройств хранения.
Вы можете атаковать эти изображения как с режимами пароля пользователя, так и с помощью режимов пароля восстановления, используя списки слов, хранящиеся в папке Dictionary
.
Здесь мы сообщаем о лучших выступлениях BitCracker в случае Fast Attack (по умолчанию) к паролю пользователя (-U).
Графический процессор акроним | Графический процессор | Архи | Скандал | # Sm | Часы | Куда |
---|---|---|---|---|---|---|
Гф | GeForce Titan | Кеплер | 3.5 | 14 | 835 | 7.0 |
GTK80 | Тесла К80 | Кеплер | 3.5 | 13 | 875 | 7,5 |
GFTX | GeForce Titan x | Максвелл | 5.2 | 24 | 1001 | 7,5 |
GTP100 | Тесла P100 | Паскаль | 6.1 | 56 | 1328 | 8.0 |
GTV100 | Tesla v100 | Вольта | 7.0 | 80 | 1290 | 9.0 |
AMDM | Радеон Мальта | - | - | - | - | - |
Производительность:
Версия | Графический процессор | -t | -б | Пароли x ядра | Пароли/сек | Хеш/сек |
---|---|---|---|---|---|---|
Куда | Гф | 8 | 13 | 106.496 | 303 | 635 МГ/с |
Куда | GTK80 | 8 | 14 | 114,688 | 370 | 775 МГ/с |
Куда | GFTX | 8 | 24 | 106.608 | 933 | 1,957 мх/с |
Куда | GTP100 | 1 | 56 | 57.344 | 1.418 | 2,973 мх/с |
Куда | GTV100 | 1 | 80 | 81.920 | 3.252 | 6,820 мх/с |
Opencl | AMDM | 32 | 64 | 524.288 | 241 | 505 мх/с |
Opencl | GFTX | 8 | 24 | 196.608 | 884 | 1,853 мх/с |
NB Каждый пароль требует около 2.097.152 SHA-256
Мы выпустили BitCracker в качестве формата OpenCl-Bitlocker в Джоне Потрошитель ( --format=bitlocker-opencl
). Хэш -файлы, сгенерированные bitcracker_hash
(см . Раздел, полностью совместимы с форматом John.
На уровне пароля GTV100 составляет около 3150p/s. Команда JTR разработала версию этой атаки CPU ( --format=bitlocker
); На процессоре Intel (R) Xeon (R) V4 2,20 ГГц скорость пароля составляет около 78 пенсов/с.
Это работа в процессе ...
Ноябрь 2021: Код обновлен для запуска на графическом процессоре NVIDIA AMPERE с использованием CUDA 11.X
Поделиться и проверить наш проект: нам нужны ваши отзывы!
Особая благодарность команде John the Ripper, Dislocker и Libbde Projects.
Это исследовательский проект в сотрудничестве с Национальным исследовательским советом Италии, опубликованным по лицензии GPLV2.
Copyright (C) 2013-2021 Елена назад (Елена Дот назад в Gmail Dot Com) и Massimo Bernaschi (Massimo Dot Bernaschi в Gmail Dot Com)
Мы предоставим некоторую дополнительную информацию о атаке BitCracker в будущей статье.
Хотя мы используем лицензию GPLV2, мы открыты для сотрудничества. Для любой дополнительной информации, сотрудничества или отчета об ошибках, пожалуйста, свяжитесь с нами или откройте проблему