Атака 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].

Примечания

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

Литература

Ссылки