- Эффективное получение хеша паролей в Windows. Часть 5
- Logon-сессии
- Получение logon-сессий
- Какие угрозы влечет за собой получение logon-сессии
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Как взломать пароль Windows
- Где Windows хранит пароль входа пользователя?
- Как получить хеши паролей Windows
- Дамп хешей паролей Windows на работающем компьютере
- Дамп хешей паролей Windows на выключенном компьютере
- Чем различаются хеши NTLM и NTLMv1/v2 и Net-NTLMv1/v2
- Что такое mimikatz
- Как установить mimikatz в Windows
- Как извлечь хеш пароля пользователя NTLM из файлов реестра
- Извлечение хеша NTLM из дампа lsass.DMP
- Брут-форс хеша NTLM
Эффективное получение хеша паролей в Windows. Часть 5
В logon-сессиях Windows сохраняет информацию о любых успешных входах в систему. Информация включает в себя имя пользователя, имя рабочей группы или домена, а также LM/NT-хеши паролей.
Logon-сессии
Вне зависимости от того, как именно легитимный пользователь заходит в систему: интерактивно или удаленно через RDP – в любом случае, локальная подсистема безопасности (Local Security System — LSA) сохраняет учетные данные пользователей в памяти.
Ниже представлена модель входа и аутентификации в Windows NT:
Модель входа и аутентификации в Windows NT
Аналогичные данные сохраняются и для процессов, “запускаемых от имени…” (Run As) и служб, выполняющихся в контексте определенного пользователя. Пароли служб сохраняются в незашифрованном виде, и могут быть получены из секретов LSA.
Тем не менее, при аутентификации по сети (например, по протоколам SMB или HTTP) logon-сессии сохраняться не будут, поскольку NT/LM-хеши в действительности не передаются на сервер ¬– для аутентификации используется механизм типа “запрос-ответ”.
Система хранит в памяти конфиденциальную информацию пользователей для того, чтобы использовать технологию единого доступа (Single Sign-On (SSO)). Технология SSO широко применяется в сетях Windows, и в особенности внутри доменов. SSO позволяет пользователю единожды аутентифицироваться в системе и получить доступ к разделяемым ресурсам, (принтеры, HTTP-прокси и.т.п.) без необходимости повторного ввода своих учетных данных: Windows воспользуется хранимой в памяти информацией (имя пользователя, домен/рабочая группа, хеши паролей) и прозрачно для пользователя аутентифицирует его.
Механизм SSO функционирует благодаря тому, что сегодня практически все сервисы Windows (исключением является подключение по RDP) наряду с аутентификацией по паролю поддерживают аутентификацию по NT/LM-хешам.
Получение logon-сессий
Следующие утилиты помогают слить logon-сессии: msvctl от TrueCrypt идеально подходит для 32-битных Windows XP/2003. Последняя версия gsecdump сольет logon-сессии в независимости от версии и архитектуры Windows. Из недавних разработок TrueSec стоит также отметить lslsass: утилита была спроектирована специально для систем Windows Vista и выше. Lslsass безупречно работает как на 32-x, так и на 64-x разрядных системах.
Самые известные утилиты для управления logon-сессиями Windows – это Windows Credentials Editor (WCE) и ее предшественница Pass-the-Hash Toolkit (PTK). Обе утилиты представляют собой результат плодотворной работы основателя компании Amplia Security Хернана Очоа (Hernan Ochoa). По своим разработкам он сделал несколько презентаций, среди которых:
- “Pass-The-Hash Toolkit для Windows: реализация и использование”, представленная на конференции по безопасности Hack In The Box в Малазии в конце 2008 года. Презентация проливает свет на историю и механизмы работы пост-эксплойтов, и в частности на атаку передачи хеша (“Pass-The-Hash”) и реализацию атаки в утилите Pass-The-Hash Toolkit.
- “Принципы работы WCE”, представленная на конференции RootedCon в начале 2011 года в Мадриде. В презентации поясняются механизмы, которые лежат в основе работы WCE, а также то, как Windows хранит в памяти учетные данные пользователей в системах до и после Windows Vista.
- “Реализация пост-эксплойтов с помощью WCE” – презентация представлена в июле 2011 года. Если вы впервые слышите о logon-сессиях и атаке передачи хеша, то я рекомендую вам начать свое знакомство с ними именно с этой простой и понятной презентации с примерами. Также можете почитать FAQ-страничку WCE.
Из двух утилит я по ряду причин предпочитаю WCE: во-первых, WCE – это самостоятельный EXE-файл; во-вторых, WCE безопаснее, поскольку не приводит к падению процесса LSASS при чтении памяти; и в-третьих, утилита работает на всех версиях и архитектурах Windows.
Специально для целей статьи я установил Windows Server 2003 Service Pack 2 со всеми обновлениями (NetBIOS-имя w2k3r2), и произвел следующие действия:
- Локальный пользователь Administrator интерактивно зашел на консоль. Длина пароля пользователя Administrator – 15 символов.
- Два локальных пользователя inquis и foobar подключились к системе по RDP. Первый пользователь подключился через mstsc, а второй через rdesktop.
- Запущено несколько сервисов СУБД IBM DB2 в контексте локального администратора db2admin.
Утилита lslsass была намеренно исключена из эксперимента, так как она работает только на системах Windows Vista и выше.
Все тестируемые утилиты удачно слили logon-сессии. Ниже показан результат работы Windows Credential Editor:
WCE v1.2 (Windows Credentials Editor) — (c) 2010,2011 Amplia Security — by
Hernan Ochoa (hernan@ampliasecurity.com)
Use -h for help.
Administrator:W2K3R2:00000000000000000000000000000000:237599E85CF684A67
85A12ACD2E24E5C
inquis:W2K3R2:0AC9A586623764E16591BB5472A3AD4A:89F411F435A93044E2E8AA4CEDF
E0FBA
foobar:W2K3R2:87DCEB9223BE0E08FD8E74C8CEB3053A:33D807D89B36ACDF2FAB42A361D
E0B91
db2admin:W2K3R2:3AE6CCCE2A2A253F93E28745B8BF4BA6:35CCBA9168B1D5CA6093B4B7D
56C619B
W2K3R2$:WORKGROUP:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D
7E0C089C0
Мы получили имя пользователя, имя домена/рабочей группы и LM/NT-хеши. Результаты тестируемых утилит и утилит для получения хеша из SAM очень похожи, за исключением того, что тестируемые утилиты могут отобразить учетные данные не только локальных, но и доменных пользователей тоже.
Следующий скриншот также подтверждает удачность атаки:
Получение logon-сессий с помощью Windows Credential Editor (WCE) на Windows Server 2003 R2
(Administrator имеет доступ к консоли, два пользователя подключены удаленно по RDP и один процесс выполняется в контексте локального пользователя)
Во время проведения эксперимента я понял, что независимо от того, как именно завершаются сессии, logon-сессии все равно остаются в памяти. Например, неважно как вы закроете RDP-соединение: нажмёте X в левом верхнем углу RDP-клиента или выйдете из системы через меню “ПУСК” – logon-сессия все равно останется в памяти. Подобные вещи происходят и в Windows Server 2008 R2 Enterprise Service Pack 1. В системах Windows Vista и выше logon-сессии стираются из памяти спустя пару минут после выхода пользователя из системы.
Вышеописанное поведение продемонстрировано на следующем скриншоте:
Получение logon-сессии после отключения от RDP пользователя foobar: его logon-сессия осталась в памяти
Получение logon-сессии после принудительного отключения от RDP пользователя foobar: его logon-сессия осталась в памяти
Logon-сессия db2admin также осталась в памяти, несмотря на то, что соответствующий сервис был остановлен.
Какие угрозы влечет за собой получение logon-сессии
Тогда попробуйте слить logon-сессии. Если вам удастся получить logon-сессию доменного администратора, то вы победили: осталось только использовать полученную logon-сессию, чтобы выдать себя за администратора и получить доступ к командной строке. Такая атака также известна, как “pass-the-hash” (“передача хеша”) или кража logon-сессии.
В командной строке наберите следующее:
C:\>wce.exe -s : : : -c cmd.exe
В новом открывшемся окне командной строки подключитесь по SMB (например, с помощью утилиты PsExec компании Sysinternals) к корневому контроллеру домена. Система, скорее всего, успешно аутентифицирует вас как администратора домена, потому что, по сути, вы предоставили учетные данные именно этого пользователя.
Если же logon-сессии администратора домена на захваченной вами системе нет, то проверьте (с помощью утилиты keimpx), на какие еще системы в домене пользователь может войти. Есть вероятность, что новые захваченные системы содержат необходимую вам информацию об учетных данных администратора домена, и поэтому, повторяя те же самые действия, вам, возможно, удастся захватить контроллер домена.
Помимо WCE есть и другие утилиты, способные провести атаку передачи хеша: например, msvctl и RunhAsh от TrueSec. Все новые утилиты я добавил в таблицу. Буду рад вашим отзывам и предложениям!
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как взломать пароль Windows
В этой статье мы узнаем, где в Windows хранится пароль пользователя, как извлечь данные для взлома пароля Windows, как раскрыть пароль пользователя и как их использовать даже без брут-форса.
Не каждый пользователь использует пароль на Windows — особенно редко пользователи устанавливают пароль на домашнем компьютере, за которым работает один человек. Но в условиях корпоративной сети или при использовании Windows в качестве сервера, пароль является обязательным. Ещё одно интересное свойство пароля пользователя Windows: если пользователь завёл онлайн учётную запись Microsoft, то хеш пароля всё равно хранится на локальном компьютере, но расшифрованный пароль подойдёт и для локального компьютера, и для онлайн сервисов Microsoft.
Где Windows хранит пароль входа пользователя?
Пароли пользователей Windows хранятся в кустах (hives) реестра Windows под названием SYSTEM и SAM в файлах:
- C:/Windows/System32/config/SAM
- C:/Windows/System32/config/SYSTEM
Вместо пароля в виде простого текста, Windows хранит хеши паролей. Эти хеши легко поддаются брут-форсу, но даже без взлома хеши паролей Windows можно использовать для сбора данных и выполнения атак.
Как получить хеши паролей Windows
Дамп хешей паролей Windows на работающем компьютере
На запущенной системе проблематично получить доступ к файлам C:/Windows/System32/config/SAM и C:/Windows/System32/config/SYSTEM, хотя это и возможно. Для сохранения копий этих файлов можно использовать утилиту reg, а именно следующие команды:
В некоторых инструкциях вместо SYSTEM сохраняют куст SECURITY — это ошибка, с кустами SECURITY и SAM восстановить хеш не удасться, нужны именно SYSTEM и SAM!
Хеш пароля также содержится в оперативной памяти, а именно в процессе Local Security Authority Process (lsass.exe). Этот процесс всегда запущен в работающей Windows и можно сделать его дамп (копию процесса в оперативной памяти сохранить на диск в виде файла). Для создания дампа можно использовать различные утилиты, в том числе две официальные:
Диспетчер задач уже имеется в каждой Windows, чтобы его открыть нажмите Win+r и наберите taskmgr, затем нажмите ENTER. Либо правой кнопкой мыши нажмите на панель задач (то есть на нижнюю полоску, где находятся часы, кнопка пуск и т. д.) и в контекстном меню выберите «Диспетчер задач».
В Диспетчере задач нажмите «Подробнее» и во вкладке «Процессы», в разделе «Процессы Windows» найдите Local Security Authority Process, нажмите на него правой кнопкой мыши и выберите в контекстном меню пункт «Создать файл дампа»:
Файл будет сохранён по пути C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Local\Temp\lsass.DMP. У меня имя пользователя MiAl и путь до файла C:\Users\MiAl\AppData\Local\Temp\lsass.DMP.
Дамп хешей паролей Windows на выключенном компьютере
На выключенном компьютере для последующего извлечения пароля пользователя достаточно скопировать файлы:
- C:/Windows/System32/config/SAM
- C:/Windows/System32/config/SYSTEM
Эти же файлы можно найти в резервной копии Windows или в Shadow копии диска, либо скопировать загрузившись с Live системы.
Чем различаются хеши NTLM и NTLMv1/v2 и Net-NTLMv1/v2
Сейчас мы будем охотиться за хешем NTLM. В статье «Взлом сетевой аутентификации Windows» мы уже охотились за хешами NTLMv1 и NTLMv2, название которых довольно похоже.
На самом деле, NTLM и NTLMv1/v2 это довольно разные вещи. Хеш NTLM хранится и используется локально, а хеши NTLMv1/NTLMv2 используются для сетевой аутентификации и являются производными хеша NTLM. Используя любой из этих хешей можно расшифровать пароль пользователя Windows, но это разные алгоритмы шифрования/взлома.
Для атаки Pass-the-hash (мы рассмотрим её в этой статье) применим только хеш NTLM, а хеши NTLMv1/NTLMv2 не подходят.
Остался ещё один вопрос, что такое хеши Net-NTLMv1/v2. Хеши Net-NTLMv1/v2 это сокращённое название для хешей NTLMv1/v2, то есть NTLMv1/v2 и Net-NTLMv1/v2 это одно и то же. А NTLM это другое.
В этой статье мы будем извлекать, взламывать и эксплуатировать без взлома хеш NTLM.
Что такое mimikatz
Программа mimikatz хорошо известна за возможность извлекать пароли в виде простого текста, хеши, ПИН коды и тикеты kerberos из памяти. mimikatz также может выполнять атаки pass-the-hash, pass-the-ticket или строить Golden тикеты.
В этой инструкции мы рассмотрим только способность mimikatz извлекать хеши NTLM. Помните, у mimikatz есть и другие очень интересные функции — посмотрите, какая у неё обширная справка: https://kali.tools/?p=5342
Имеются реализации mimikatz в Meterpreter & Metasploit, DLL reflection в PowerShell и других продуктах. В принципе, mimikatz можно запускать в Wine на Linux, но не будут работать функции, связанные с извлечением данных непосредственно из Windows; функции извлечения хешей из дампов или расшифровки из файлов реестра должны работать в Linux.
Как установить mimikatz в Windows
mimikatz — это портативная утилита командной строки. То есть установка не требуется, но нужно уметь запустить, если вы не очень знакомы с командной строкой.
1. Перейдите на страницу https://github.com/gentilkiwi/mimikatz/releases, скачайте файл mimikatz_trunk.7z или mimikatz_trunk.zip. Распакуйте скаченный архив.
2. Откройте PowerShell (Win+x → Windows PowerShell (администратор)) или командную строку (Win+r → cmd).
3. В командной строке с помощью команды cd перейдите в папку с исполнимым файлом mimikatz.exe. К примеру, архив распакован в папку C:\Users\MiAl\Downloads, тогда исполнимый файл будет в папке C:\Users\MiAl\Downloads\mimikatz_trunk\x64\:
4. Запустите исполнимый файл.
Как извлечь хеш пароля пользователя NTLM из файлов реестра
Следующие команды нужно выполнять в консоли mimikatz.
Команда log включает запись всего вывода в ФАЙЛ:
К примеру, для запуска всего вывода в файл hash.txt:
Я скопировал с выключенного компьютера файлы SYSTEM и SAM, теперь для извлечения хеша мне нужно запустить команду вида:
Пример моей команды:
Вывод довольно обширный и много не до конца понятных данных. Интерес представляют последовательно идущие строки вида:
В моём примере интересные строки:
Также есть строки с именами пользователей:
Но после них нет строк с хешем NTLM, поскольку у этих пользователей не установлен пароль в системе.
Если вы хотите извлечь данные из файлов реестра текущей операционной системы, то выходим из mimikatz, для этого нажмите Ctrl+c.
Теперь сделаем дамп кустов реестра SYSTEM и SAM текущей системы:
Вновь запускаем mimikatz:
Включаем ведение журнала:
И выполняем команду с указанием файлов, в которые сохранены дампы кустов реестра, то есть SystemBkup.hiv и SamBkup.hiv:
Здесь найден только один пользователь с хешем:
На самом деле, для извлечения хешей NTLM из локальной системы необязательно было делать дамп кустов реестра. Другой вариант — повысить привилегии самой программы mimikatz и извлечь хеши непосредственно из системы. Для этого выполните команды:
Извлечение хеша NTLM из дампа lsass.DMP
По логике (и на практике) в дампе процесса Local Security Authority Process должен быть хеш только пользователя, выполнившего вход с паролем.
Вначале укажите путь до файла дампа командой вида:
Затем выполните команду:
Брут-форс хеша NTLM
Для взлома я возьму следующий хеш:
Загляним в справку Hashcat, чтобы узнать номер режима хеша NTLM:
То есть номер хеша NTLM равен 1000.
Чтобы запустить атаку по маске для взлома NTLM в Hashcat нужно выполнить команду вида:
Пример моей реальной команды:
- hashcat — имя исполнимого файла. В Windows это может быть hashcat64.exe.
- —force — игнорировать предупреждения
- —hwmon-temp-abort=100 — установка максимальной температуры, после которой будет прерван перебор, на 100 градусов Цельсия
- -m 1000 — тип хеша NTLM
- -D 1,2 — означает использовать для взлома и центральный процессор, и видеокарту
- -a 3 — означает атаку по маске
- -i — означает постепенно увеличивать количество символов в генерируемых паролях
- —increment-min 1 — означает начать с длины маски равной единице
- —increment-max 10 — означает закончить перебор при длине маске равный десяти
- -1 ?l?d — пользовательский набор символов номер 1, в него включены маленькие латинские буквы (?l) и цифры (?d)
- ca76a176340f0291e1cc8ea7277fc571 — хеш для взлома
- ?1?1?1?1?1?1?1?1?1 — маска из пользовательского набора символов
Взломаем ещё один хеш:
Команда (другой хеш и другой набор пользовательских символов):
Итак, в этой статье мы научились извлекать хеш NTLM и взламывать пароль Windows. А что делать, если не удалось взломать NTLM? Ответ на этот вопрос смотрите во второй части, которая называется «Использование NTLM без взлома пароля: атака Pass-the-hash».