Skip to Content
 Русский Русский    English English   

 

Брутфорс пароля или PIN-кода Android с использованием oclHashcat

Брутфорс пароля или PIN-кода Android с использованием oclHashcat

Для восстановления пароля или PIN-кода Android возможно применение техники перебора паролей - брутфорс (англ. brute force - метод "грубой силы"). Чтобы осуществить брутфорс атаку необходимо получить хеш пароля/PIN-кода и соль. Хеш пароля хранится в файле /data/system/password.key. Соль находится в базе данных формата SQlite - /data/data/com.android.providers.settings/databases/settings.db или /data/system/locksettings.db (зависит от версии Android). Чтение базы данных можно осуществить с помощью sqlite3 на самом устройстве или на компьютере с помощью дополнения к Firefox - SQLite Manager. Также потребуется файл /data/system/device_policies.xml, который содержит информацию о количестве символов в пароле и типе символов (цифры, буквы, спец.символы). Это поможет уменьшить набор комбинаций символов и использовать атаку по маске.

Чтобы получить доступ в раздел /data, потребуется установка кастомного рекавери, например, ClockworkMod Recovery (CWM). После этого можно осуществить доступ с компьютера через интерфейс Android Debug Bridge (ADB) в режиме рекавери и примонтировать раздел /data (это можно сделать и через меню CWM). Еще лучше, если на устройстве имеется root-доступ (хотя это и не обязательно). Подробное описание затрагивает слишком много деталей, зависит от конкретного устройства и требуют отдельной статьи.

Если осуществлять доступ к устройству через ADB с запущенной ОС Android, то должна быть включена отладка USB (в разделе "Настройки" - "Параметры разработчика") на взламываемом устройстве, которая на многих телефонах по умолчанию отключена, но даже если отладка включена, то в большинстве случаев нет доступа на запуск adb root:

adb root: adbd cannot run as root in production builds

Существует много разных программ для брутфорса паролей. Я предпочитаю использовать пакет oclHashcat, который содержит 32- и 64-разрядные версии программ, использующих GPU (графический процессор), как для Linux, так и для Windows. OclHashcat поддерживает большое количество алгоритмов, среди которых Samsung Android Password/PIN, TrueCrypt, 1Password, Oracle и т.д. Позволяет задействовать до 128 GPU. На сайте разработчика доступен пакет Hashcat, который использует только CPU. Для Hashcat и oclHashcat имеется графический интерфейс.

Итак, скачиваем последнюю версию oclHashcat (на момент написания данной статьи - v1.00). Распаковываем в любую папку, например, C:\oclHashcat-1.00. Для Windows систем запускаем командную строку Пуск -> Выполнить -> cmd. Перемещаемся в директорию, в которую распаковали oclHashcat - cd С:\oclHashcat-1.00. Если используется оборудование NVIDIA, то необходимо запускать файлы, название которых начинается с "cuda". В системе должен быть установлен драйвер ForceWare версии 319.37 или выше. Если используется оборудование AMD, то необходимо запускать файлы, название которых начинается с "ocl". В случае с AMD требуется драйвер Catalyst версии 13.4 или выше.

В Android минимальная длина пароля на экран блокировки (PIN-код), который может задать пользователь, составляет 4 символа. Подбор пароля, состоящего из 4-х символов (3 цифры и 1 буква), на компьютере под управлением 64-разрядной ОС Windows 7 на процессоре Intel Хeon E5-2620 c 32 Гб оперативной памяти на борту и видеокартой AMD Radeon HD 7900 с помощью программы oclHashcat составляет 1 секунду. Подбор пароля из 8 цифр на данном оборудовании занял 33 секунды. Подбор 6-х символьного пароля, состоящего из 3-х букв и 3-х цифр, составил 1 минуту 47 секунд.

Брутфорс пароля из 6 символов

Рассмотрим пример брутфорса пароля/PIN-кода в Android 4.1, состоящий из 6 символов - 3 буквы и 3 цифры. Узнаем хеш пароля в файле /data/system/password.key - 3989E1BE85F17D31A8261593B97342A88DA9CA5C.

Извлекаем соль из базы данных /data/system/locksettings.db (SELECT * FROM locksettings where name='lockscreen.password_salt'), в данном случае соль - 5733049674662994238. В некоторых версиях Android соль находится в /data/data/com.android.providers.settings/databases/settings.db (SELECT * FROM secure WHERE name ='lockscreen.password_salt').

Брутфорс пароля или PIN-кода Android. Соль находится в базе данных /data/system/locksettings.db

Преобразуем соль в hex  в нижнем регистре: 4f8fe24dd9f4e13e.

Узнаем длину и тип символов в файле /data/system/device_policies.xml:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<policies>
<active-password quality="327680" length="6" uppercase="0" lowercase="3" letters="3" numeric="3" symbols="0" nonletter="3" recoverable="false" />
</policies>

Запускаем oclHashcat64.exe со следующими параметрами:

oclHashcat64.exe -a 3 -n 160 -u 1024 -m 5800 -1 ?d?l 3989e1be85f17d31a8261593b97342a88da9ca5c:4f8fe24dd9f4e13e ?1?1?1?1?1?1

, где

"-a 3"   - режим атаки, в данном случае режим 3 означает брутфорс;

"-n 160" - gpu-accel, может принимать значения: 1, 8, 40, 80, 160. Опция "-n" указывает степень загрузки GPU.  Значение по умолчанию равно 80.

"-u 1024" - gpu-loops, может принимать значения: 8 - 1024;

Значения gpu-accel и gpu-loops индивидуальны для каждой карты. Вы должны экспериментировать с ними и подобрать оптимальные значения, чтобы повысить производительность перебора, оставив при этом ресурсы для стабильной работы остальных приложений. Следует помнить, что чем выше значения, тем сильнее нагрев GPU. Использование максимальных значений для пользователей Windows Vista и Windows 7 может привести к перезагрузке графического драйвера. Это связано с внедрением WDDM (Windows Display Driver Model) - архитектуры графических драйверов для видеокарты под управлением Microsoft Windows, начиная с Windows Vista. Если драйвер WDDM зависнет, то графический стек перезапустит драйвер. Эта полезная особенность предотвращает замораживание, однако процесс перебора в таком случае прерывается. Для пользователей Vista и Windows 7 существует патч, который отключает восстановление WDDM.

"-m 5800" - тип хеша, 5800 - Samsung Android Password/PIN;

"-1 ?d?l"  -  собственный набор символов, который можно определить с помощью параметра "-1" (или "-2","-3","-4"). Доступны следующие предустановленные наборы символов:

   ?l = буквы в нижнем регистре (a-z);
   ?u = буквы в верхнем регистре (A-Z);
   ?d = все цифры (0-9);
   ?a = ?l?u?d?s;
   ?s = спец.символы( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).

"?1?1?1?1?1?1" - маска.

При использовании нескольких карточек их нужно указывать в опции "-d" (gpu-devices) через запятую, например, "-d 1,2". Если хотите задействовать только вторую карту , то указывайте "-d 2".

Брутфорс пароля или PIN-кода Android с использованием oclHashcat

В данном случае искомый пароль "mnm890". Время перебора составило 1 минуту 47 секунд. Полное количество вариантов перебора составляет 366 = 2176782336, где 36 это сумма цифр и букв в нижнем регистре, 6 - длина пароля.

При нажатии "s" (статус) можно наблюдать за процессом брутфорса: скорость перебора (Speed), количество перебранных вариантов (Progress), время перебора и другие значения. О степени использовании GPU информирует строка HWMon.GPU.

Для того, чтобы взломать пароль на экран блокировки в Android существуют и другие методы, например, изменение параметров системы, но они зависят от конкретного устройства. Метод брутфорса является универсальным, а с помощью OclHashcat можно осуществить подбор и расшифровку различных паролей с высокой эффективностью.

 

Полезные ссылки:

Password Recovery Speeds

Mining hardware comparison

GPU speed estimations

 

Ваша оценка: Нет Средняя: 4.5 (14 голосов)

Нажимая кнопку «Сохранить», я подтверждаю свою дееспособность, согласие на получение информации от NetK, согласие на обработку персональных данных в соответствии с Политикой конфиденциальности и Пользовательским соглашением.