Атака Pass-the-hash
Атака Pass-the-hash — один из видов атаки повторного воспроизведения, при котором злоумышленник может авторизоваться на удалённом сервере, где аутентификация осуществляется с использованием протокола NTLM или LM.
Этот метод может быть применён против любого сервера или сервиса, использующего протокол аутентификации NTLM или LM, независимо от операционной системы, установленной на компьютере жертвы.
Описание
В системах, использующих протокол аутентификации NTLM, пароли никогда не передаются по каналу связи в открытом виде. Вместо этого они передаются системе (например, контроллер домена) в виде хешей на этапе ответа в схеме аутентификации вызов-ответ[1].
Приложения Windows запрашивают у пользователя пароль в открытом виде, а затем вызывают API (например, LsaLogonUser[2]), которые преобразуют пароль в LM-хеш и NTLM-хеш[3] и передают их в процессе аутентификации[4]. Анализ протокола показал, что для успешной аутентификации не обязательно знать сам пароль — достаточно его хеша.
Получив каким-либо образом пару {имя пользователя — хеш пароля пользователя}, злоумышленник может использовать её для атаки по сторонним каналам и аутентификации на удалённом сервере от имени данного пользователя[5]. При этом нет необходимости выполнять полный перебор значений хеш-функции для получения пароля в открытом виде[5]. Суть атаки заключается в уязвимости реализации протокола сетевой аутентификации, из-за которой хеши пароля передаются без использования соли и сохраняются неизменными между сессиями, пока не сменится сам пароль[6]. То есть для злоумышленника хеши оказываются эквивалентны самим паролям.
История
Впервые атака Pass-the-hash была опубликована Полом Эштоном в 1997 году[5]. Она основывалась на возможности пройти аутентификацию на Samba-SMB-клиенте с использованием хеша пароля; при этом клиент не требовал пароль в открытом виде (последующие версии Samba и некоторые реализации SMB/NTLM также сохраняли эту возможность).
Так как атака использовала стороннюю реализацию Samba SMB-клиента, её применение было ограничено. Протокол SMB развивался, и разработчики сторонних клиентов были вынуждены учитывать изменения в новых версиях Windows и SMB (часто прибегая к обратной разработке). Даже после успешной NTLM-аутентификации с помощью Pass-the-hash, не все Samba SMB-клиенты поддерживали необходимый злоумышленнику функционал.
Также из-за использования стороннего SMB-клиента нельзя было применять встроенные утилиты Windows, такие как Net.exe или Active Directory Users and Computers, поскольку те требовали от пользователя пароль в открытом виде, а не принимали только хеш.
В 2007 году Хернан Очоа опубликовал инструмент «Pass-the-Hash Toolkit»[7]. Это средство позволяло изменять имя пользователя, доменное имя и хеш пароля, которые находятся в кеше LSASS после аутентификации[8][9]. Благодаря этому появилась возможность проводить атаку Pass-the-hash с помощью стандартных средств Windows, обходя встроенные процедуры проверки аутентификации.
Инструмент также предоставил новую технику атаки, позволяющую извлекать хеши паролей из памяти процесса lsass.exe. Этот подход широко применялся как в испытаниях на проникновение, так и в реальных атаках, так как позволял извлекать имена пользователей, доменные имена и хеши паролей доменных пользователей и администраторов прямо из оперативной памяти[8], даже если эти хеши не сохранялись на диске. Это открывало путь к компрометации всего домен Windows NT, скомпрометировав только одного участника домена, а также позволяло проводить атаку без необходимости трудоёмкого перебора.
Впоследствии данное решение было вытеснено программой Windows Credential Editor, расширившей возможности оригинального инструмента и добавившей поддержку новых версий операционных систем[10][11]. Некоторые антивирусные программы распознавали Windows Credential Editor как вредоносное ПО[12][13].
Сбор хешей
Перед осуществлением атаки Pass-the-hash необходимо получить хеши паролей целевых учётных записей. Для этого используются следующие методы:
- Получение кешированных хешей пользователей, проходивших аутентификацию в системе — их можно извлечь из SAM пользователем с административными правами или с помощью специальных утилит (например, pwdump)[14]. Администратор может отключить хранение этих кешей, что делает метод не всегда применимым.
- Чтение хешей из локальной базы SAM[15]. Эта база содержит информацию только о локальных пользователях, поэтому, если используется домен, получить доступ к сервисам домена не удастся. Однако, если пароль локального администратора используется и в других системах домена, возможно использовать эти хеши для доступа к ним.
- Анализ сетевого трафика между сервером и клиентом при аутентификации вызов-ответ[15]. Полученные хеши могут быть зашифрованы, и тогда потребуется перебор для получения исходных данных.
- Извлечение хешей, сохранённых системой в памяти процесса lsass.exe[16]. Такие хеши могут принадлежать пользователям и администраторам домена, авторизовавшимся, например, через RDP. Этот способ позволяет скомпрометировать весь домен.
Меры противодействия
Любая система, использующая NTLM/LM протокол аутентификации[17] вместе с любым протоколом передачи данных (SMB, FTP, RPC, HTTP и др.)[17], подвержена атаке Pass-the-hash. Защититься от этой угрозы сложно, так как в Windows возможно получить права администратора множеством способов и извлечь нужные хеши. Более того, компрометация одного из участников домена позволяет получить доступ ко всему домену Windows[8]. Существуют инструменты автоматического поиска уязвимостей — например, используемые для тестирования на проникновение.
Меры противодействия реализуются «в глубину»[6][18] — рекомендуется использовать межсетевой экран, систему предотвращения вторжений, IPsec, антивирусные программы, шифрование диска, аутентификацию по IEEE 802.1X, минимизировать число пользователей с правами администратора[19], своевременно устанавливать обновления безопасности[20]. Отключение кеширования хешей паролей в Windows мешает извлечению этих значений из памяти, хотя не исключает атаку после физического входа пользователя в систему[21]. В случае атак на хеши паролей администраторов домена нужно ограничивать возможность их входа только на доверенные серверы проверки подлинности[6]. Принцип минимальных привилегий требует выдачи пользователям только необходимых им прав[22]. Отказ от NTLM/LM в пользу других протоколов теоретически увеличивает защищённость[23], хотя протокол Kerberos также может быть уязвим для аналогичной атаки (так называемый «Pass-the-ticket»)[24][25]. Отключение отладчиков препятствует извлечению хешей из памяти[21].
В 2014 году в рамках обновления системы безопасности Windows был добавлен режим ограниченного администрирования, призванный снизить эффективность Pass-the-hash[26].
Примечания
- ↑ Hummel, Christian (2009). “Why Crack When You Can Pass the Hash?”. SANS Institute [англ.]. Дата обращения 2024-06-03.
- ↑ LsaLogonUser (англ.). Microsoft (2011). Дата обращения: 3 июня 2024. Архивировано 4 декабря 2008 года.
- ↑ Todorov, Daniel. Mechanics of User Identification and Authentication: Fundamentals of Identity Management : [англ.]. — CRC Press, 2007. — P. 233. — ISBN 9781420052190.
- ↑ How Interactive Logon Works (англ.). Microsoft (2009). Дата обращения: 3 июня 2024. Архивировано 9 июля 2009 года.
- ↑ 1 2 3 Stirnimann, Daniel (2010). “Windows Attack — Gain Enterprise Admin Privileges in 5 Minutes” (PDF). Compass Security AG [англ.]: 24. Дата обращения 2024-06-03.
- ↑ 1 2 3 Ewaida, Basel (2010). “Pass-the-hash attacks: Tools and Mitigation”. SANS Institute [англ.]: 26. Дата обращения 2024-06-03.
- ↑ Ochoa, Hernan (2008). “Pass-The-Hash Toolkit for Windows” (PDF). Core Security Technologies [англ.]: 11. Архивировано из оригинала (PDF) 2015-12-08. Дата обращения 2024-06-03. Используется устаревший параметр
|url-status=(справка) - ↑ 1 2 3 Pass-The-Hash Toolkit (англ.). Core Security Technologies (2007). Дата обращения: 3 июня 2024. Архивировано 10 сентября 2015 года.
- ↑ Ewaida, Basel (2010). “Pass-the-hash attacks: Tools and Mitigation”. SANS Institute [англ.]: 12—13. Дата обращения 2024-06-03.
- ↑ Ochoa, Hernan (2011). “WCE Internals”. RootedCON [англ.]: 3—6. Дата обращения 2024-06-03.
- ↑ Windows Credentials Editor (WCE) F.A.Q. (англ.). Amplia Security (2011). Дата обращения: 3 июня 2024. Архивировано 3 сентября 2011 года.
- ↑ SecurityRisk.WinCredEd (англ.). Symantec (2011). Дата обращения: 3 июня 2024. Архивировано 13 апреля 2012 года.
- ↑ HackTool:Win32/Wincred.A (англ.). Microsoft (2011). Дата обращения: 3 июня 2024. Архивировано 2 февраля 2016 года.
- ↑ Hummel, Christian (2009). “Why Crack When You Can Pass the Hash?”. SANS Institute [англ.]: 8—9. Дата обращения 2024-06-03.
- ↑ 1 2 Hummel, Christian (2009). “Why Crack When You Can Pass the Hash?”. SANS Institute [англ.]: 8. Дата обращения 2024-06-03.
- ↑ Hummel, Christian (2009). “Why Crack When You Can Pass the Hash?”. SANS Institute [англ.]: 10. Дата обращения 2024-06-03.
- ↑ 1 2 Hummel, Christian (2009). “Why Crack When You Can Pass the Hash?”. SANS Institute [англ.]: 20. Дата обращения 2024-06-03.
- ↑ Kraus, Russell. Seven Deadliest Microsoft Attacks : [англ.] / Russell Kraus, Brian Barber, Mark Borkin … [et al.]. — Syngress, 2010. — P. 17. — ISBN 1-59749-551-4.
- ↑ Grimes, Roger. Stop pass-the-hash attacks before they begin (англ.), Infoworld (2011). Архивировано 31 июля 2013 года. Дата обращения: 3 июня 2024.
- ↑ Kraus, Russell. Seven Deadliest Microsoft Attacks : [англ.] / Russell Kraus, Brian Barber, Mark Borkin … [et al.]. — Syngress, 2010. — P. 14. — ISBN 1-59749-551-4.
- ↑ 1 2 Ewaida, Basel (2010). “Pass-the-hash attacks: Tools and Mitigation”. SANS Institute [англ.]: 30. Дата обращения 2024-06-03.
- ↑ Ewaida, Basel (2010). “Pass-the-hash attacks: Tools and Mitigation”. SANS Institute [англ.]: 27. Дата обращения 2024-06-03.
- ↑ Ewaida, Basel (2010). “Pass-the-hash attacks: Tools and Mitigation”. SANS Institute [англ.]: 28. Дата обращения 2024-06-03.
- ↑ Microsoft Windows Kerberos 'Pass The Ticket' Replay Security Bypass Vulnerability (англ.). securityfocus.com (2010). Дата обращения: 3 июня 2024. Архивировано 30 января 2015 года.
- ↑ Malgherini, Thomas; Focardi, Roberto (2010). “Attacking and fixing the Microsoft Windows Kerberos login service” (PDF). Universit`a Ca’ Foscari [англ.]: 8—10. Дата обращения 2024-06-03.
- ↑ Советы по безопасности (Microsoft) (2871997). Microsoft (2014). Дата обращения: 3 июня 2024. Архивировано 28 мая 2014 года.
Литература
- Kraus, Russell. Seven Deadliest Microsoft Attacks : [англ.] / Russell Kraus, Brian Barber, Mark Borkin … [et al.]. — Syngress, 2010. — ISBN 1-59749-551-4.
- Todorov, Daniel. Mechanics of User Identification and Authentication: Fundamentals of Identity Management : [англ.]. — CRC Press, 2007. — ISBN 9781420052190.
- Hummel, Christian (2009). “Why Crack When You Can Pass the Hash?”. SANS Institute [англ.]. Дата обращения 2024-06-03.
- Stirnimann, Daniel (2010). “Windows Attack — Gain Enterprise Admin Privileges in 5 Minutes” (PDF). Compass Security AG [англ.]. Дата обращения 2024-06-03.
- Ochoa, Hernan (2008). “Pass-The-Hash Toolkit for Windows” (PDF). Core Security Technologies [англ.]. Архивировано из оригинала (PDF) 2015-12-08. Дата обращения 2024-06-03. Используется устаревший параметр
|url-status=(справка) - Ochoa, Hernan (2011). “WCE Internals”. RootedCON [англ.]. Дата обращения 2024-06-03.
- Windows Credentials Editor (WCE) F.A.Q. (англ.). Amplia Security (2011). Дата обращения: 3 июня 2024.
- Ewaida, Basel (2010). “Pass-the-hash attacks: Tools and Mitigation”. SANS Institute [англ.]. Дата обращения 2024-06-03.
- Grimes, Roger. Stop pass-the-hash attacks before they begin (англ.), Infoworld (2011). Дата обращения: 3 июня 2024.
- Malgherini, Thomas; Focardi, Roberto (2010). “Attacking and fixing the Microsoft Windows Kerberos login service” (PDF). Universit`a Ca’ Foscari [англ.]: 8—10. Дата обращения 2024-06-03.
Ссылки
- LsaLogonUser (англ.). Microsoft (2011). Дата обращения: 3 июня 2024.
- How Interactive Logon Works (англ.). Microsoft (2009). Дата обращения: 3 июня 2024.
- HackTool:Win32/Wincred.A (англ.). Microsoft (2011). Дата обращения: 3 июня 2024.
- Советы по безопасности (Microsoft) (2871997). Microsoft (2014). Дата обращения: 3 июня 2024.