Атака Pass-the-hash

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Атака Pass-the-hash — один из видов атаки повторного воспроизведения. Она позволяет атакующему авторизоваться на удалённом сервере, аутентификация на котором осуществляется с использованием протокола NTLM или LM.

Этот метод может быть использован против любого сервера/сервиса, использующего протокол аутентификации NTLM или LM, вне зависимости от используемой на компьютере жертвы операционной системы.

Описание[править | править код]

В системах, использующих протокол аутентификации NTLM, пароли никогда не передаются по каналу связи в открытом виде. Вместо этого они передаются соответствующей системе (такой, как контроллер домена) в виде хешей на этапе ответа в схеме аутентификации Вызов-ответ[1].

Приложения Windows запрашивают у пользователя пароль в открытом виде, а затем вызывают API (например, LsaLogonUser[2]), которые преобразуют пароль в LM хеш и NTLM хеш[3] и передают их в процессе аутентификации.[Прим. 1][4] Анализ протоколов показал, что для успешной аутентификации не обязательно знать пароль в открытом виде, вместо этого может использоваться только его хеш.

После получения каким-либо образом пары {имя пользователя — хеш пароля пользователя}, криптоаналитик получает возможность использовать эту пару для выполнения атаки по сторонним каналам и аутентификации на удаленном сервере под видом пользователя.[5] При использовании данной атаки отпадает необходимость полного перебора значений хеш-функции для нахождения пароля в открытом виде.[6] В основе атаки лежит слабость в реализации протокола сетевой аутентификации. Она заключается в том, что хеши паролей передаются без использования соли, а потому остаются неизменными от сессии к сессии (до тех пор, пока не изменяется пароль пользователя).[7] Другими словами, для атакующего хеши паролей эквивалентны самим паролям.

История[править | править код]

Атака pass the hash изначально была опубликована Полом Эштоном в 1997[8]. В основе этой атаки лежала возможность пройти аутентификацию на Samba SMB клиенте с использованием хеша пароля пользователя. При этом клиент не требовал пароля в открытом виде (Следующие версии Samba и некоторые сторонние реализации SMB и NTLM протоколов также поддерживали эту функциональность).

Поскольку этот способ атаки основывался на сторонней реализации Samba SMB клиента, он был подвержен некоторым серьезным ограничениям с точки зрения перспективности использования. Так как SMB протокол продолжал развиваться с течением времени, сторонние разработчики были вынуждены поддерживать изменения и дополнения, вносимые в протокол в новых версиях Windows/SMB (исторически это осуществлялось с помощью метода обратной разработки). Это означает, что даже после успешной NTLM аутентификации с использованием атаки pass the hash, некоторые Samba SMB клиенты могли не поддерживать необходимый криптоаналитику функционал.

Также из-за применения в атаке сторонней реализации Samba SMB клиента, было невозможно использовать встроенные приложения Windows такие как Net.exe или Active Directory Users and Computers, поскольку для аутентификации они запрашивали у атакующего/пользователя пароль в открытом виде, а не принимали хеш.

В 2007 Хернан Очоа опубликовал программу «Pass-the-Hash Toolkit»[9]. С её помощью можно было во время работы системы изменить имя пользователя, доменное имя и хеш пароля, занесенные в кеш сервером проверки подлинности локальной системы безопасности после аутентификации пользователя[10][11]. Благодаря этому становилось возможным выполнить атаку pass the hash с использованием стандартных средств Windows, и, таким образом, обойти встроенные в систему средства проверки аутентификации.

Приложение также предоставляло новую технику атаки, позволявшую извлечь хеши паролей, сохраненные в кеш-памяти процесса lsass.exe. Данная техника вскоре стала широко использоваться для проведения испытаний на проникновение и атак. Этот метод сбора хешей паролей превосходит использовавшиеся ранее (например, извлечение хешей из локальной базы данных SAM с использованием pwdump или аналогичных программ), поскольку позволяет извлечь из оперативной памяти имя пользователя/доменное имя/хеш пароля пользователей домена (и администраторов домена), авторизованных в системе. Этот метод, например, позволяет получить хеши паролей авторизованных пользователей домена, которые не хранятся на жестком диске.[12] Благодаря этому становится возможным скомпрометировать весь домен Windows NT после компрометации одного участника этого домена. Более того, атака может быть выполнена сразу, без необходимости проводить ресурсозатратную подготовку методом полного перебора.

Впоследствии программа была заменена приложением «Windows Credential Editor», расширявшим исходную функциональность и добавлявшим поддержку новых операционных систем.[13][14] Некоторые антивирусы воспринимают данное приложение как вредоносную программу.[15][16]

Сбор хешей[править | править код]

Прежде чем атака pass the hash может быть осуществлена, необходимо получить хеши паролей, соответствующие целевым аккаунтам. С этой целью атакующий может следующие методы сбора хешей:

  • Кешированные хеши паролей пользователей, прошедших аутентификацию в системе, могут быть прочитаны из базы данных SAM любым пользователем с правами администратора или с помощью различных утилит (например, pwdump).[17] Администратор может запретить кеширование хешей паролей, так что данный метод работает не всегда.
  • Считывание хешей из локальной базы данных SAM.[18] Поскольку эта база данных содержит сведения только о локальных пользователях, при использовании домена криптоаналитик не сможет пройти аутентификацию в других сервисах этого домена. Однако если локальный пароль администратора используется в других системах домена, атакующий получает возможность использовать хеши локального аккаунта для удаленного доступа к таким системам.
  • Анализ трафика между сервером и клиентом при аутентификации Вызов-ответ[19]. Поскольку полученные хеши зашифрованы, необходимо выполнить полный перебор для получения хешей паролей.
  • Извлечение хешей, сохраненных системой[20] в памяти процесса lsass.exe. Хеши, полученные таким методом, могут принадлежать пользователям/администраторам домена (например, вошедших в систему через RDP). Таким образом, этот метод может быть использован для компрометации всего домена.

Меры противодействия[править | править код]

Любая система, использующая NTLM/LM протокол аутентификации[21] в сочетании с любым протоколом связи (SMB, FTP, RPC, HTTP и другие)[22], подвержена атаке pass the hash. От данной атаки трудно защититься, поскольку существую многочисленные эксплойты для Windows, позволяющие атакующему получить права администратора и осуществить сбор хешей. Более того, компрометация всего домена Windows может быть осуществлена с использованием одного участника этого домена.[12] Многочисленные программы для проведения испытаний на проникновение могут быть использованы для автоматического поиска уязвимостей в системе.

Для защиты от атаки pass the hash применяется метод комплексной защиты[23][24]: использование межсетевого экрана, системы предотвращения вторжений, IPsec, антивирусных программ, полное шифрование диска, аутентификация с использованием стандарта IEEE 802.1X, уменьшение числа пользователей с правами администратора[25], своевременная установка исправлений безопасности[26]. Запрет системе Windows на кеширование хешей паролей может помешать атакующему извлечь эти значения из памяти. На практике это означает возможность проведения атаки только после входа жертвы в систему.[27] В сценарии атаки на хеши паролей администраторов домена может использоваться возможность прохождения ими аутентификации в скомпрометированной системе. Разрешение администраторам домена проходить аутентификацию только в доверенных серверах проверки подлинности локальной системы безопасности сужает вектор атаки.[28] Принцип минимальных привилегий предполагает предоставление пользователю минимально необходимых прав доступа для выполнения любых операций.[29] Запрет на использование в системе протокола аутентификации NTLM/LM может повысить защищенность системы[30], хотя протокол Kerberos также подвержен данной атаке.[31][32] Запрет на использование отладчика может помешать атакующему извлечь хеши из памяти процессов.[33]

Режим ограниченного администрирования, добавленный в Windows в 2014 году в обновлении для системы безопасности, разработан для снижения эффективности данного метода атаки.[34]

Примечания[править | править код]

  1. Hummel: Why Crack When You Can Pass the Hash?, 2009.
  2. Microsoft: LsaLogonUser, 2011.
  3. Todorov: Mechanics of User Identification and Authentication: Fundamentals of Identity Management, 2007, pp. 233: «The LsaLogonUser() function on the clienr computer calculates the LM hash and the NTLM hash».
  4. Microsoft: How Interactive Logon Works, 2009.
  5. Stirnimann: Windows Attack — Gain Enterprise Admin Privileges in 5 Minutes, 2010, p. 24: «Passing the hash is an attack based on having a valid set of credentials (a username and its password hash) and authenticating to a remote system as that user.».
  6. Stirnimann: Windows Attack — Gain Enterprise Admin Privileges in 5 Minutes, 2010, p. 24: «The attacker does not need to recover the plaintext password.».
  7. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, p. 26: «Some researchers claim that the pass-the-hash attack is possible because of a weakness in the design of Windows unsalted password hashing mechanism.».
  8. Stirnimann: Windows Attack — Gain Enterprise Admin Privileges in 5 Minutes, 2010, p. 9: «First published (theory & exploit code) in 1997 by Paul Ashton».
  9. Ochoa: Pass-The-Hash Toolkit for Windows, 2008, p. 11: «Published in 2007, is Free and Open Source (written in C, by me)».
  10. Core Security Technologies: Pass-The-Hash Toolkit, 2007: «These tools allow you to list the current logon sessions with its corresponding NTLM credentials (e.g.: users remotely logged in thru Remote Desktop/Terminal Services), and also change in runtime the current username, domain name, and NTLM hashes».
  11. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, pp. 12—13: «These tools allow the attacker to list the current login sessions credentials, and give him the ability to change them in runtime».
  12. 1 2 Core Security Technologies: Pass-The-Hash Toolkit, 2007, WHOSTHERE.EXE/WHOSTHERE-ALT.EXE.
  13. Ochoa: WCE Internals, 2011, pp. 3—6.
  14. Ochoa: Windows Credentials Editor (WCE) F.A.Q., 2011: «The Pass-The-Hash (PSH) Toolkit does not work anymore. It does not support newer updates for Windows XP and 2003; and it does NOT support Windows 7 and 2008 at all.».
  15. Symantec: SecurityRisk.WinCredEd, 2011.
  16. Microsoft: HackTool:Win32/Wincred.A, 2011.
  17. Hummel: Why Crack When You Can Pass the Hash?, 2009, 3.3. Dump the hash locally, pp. 8—9: «In addition to the local system accounts, the tools attempt to retrieve hashes from active login sessions and cached domain login.».
  18. Hummel: Why Crack When You Can Pass the Hash?, 2009, 3.3. Dump the hash locally, pp. 8: «With physical access the system can be booted to an alternate OS where key files can be copied to removable media. Windows password hashes are stored in the SAM file.».
  19. Hummel: Why Crack When You Can Pass the Hash?, 2009, 3.2. Sniff the LM hash off the network, pp. 8: «This makes it is entirely possible to capture packets off the wire containing the hash.».
  20. Hummel: Why Crack When You Can Pass the Hash?, 2009, 3.5. Dump and analyze the contents of memory, pp. 10: «Another technique to obtain hashes involves dumping and analyzing the contents of system memory.».
  21. Hummel: Why Crack When You Can Pass the Hash?, 2009, 5.1. What systems are at risk?, p. 20: «Any system that is using LM or NTLM (v1 and v2) authentication is at risk».
  22. Hummel: Why Crack When You Can Pass the Hash?, 2009, 5.2. What services are at risk?, p. 20: «In this instance a service is referred to as the offering which is obtained as a result of successful authentication rather than the protocol (SMB, HTTP, .etc) that invokes the authentication process.».
  23. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, 3.5. Part 2 – Defense - Pass-the-hash Mitigation, p. 26: «Understanding this fact, and the risks that comes from it, will help organizations building an effective defense-in-depth strategy that will assist them in mitigating pass-the-hash attacks (and other attacks).».
  24. Kraus, Barber, Borkin, Alpern: Seven Deadliest Microsoft Attacks, 2010, Defense-in-Depth Approach, p. 17.
  25. Grimes: Stop pass-the-hash attacks before they begin, 2011.
  26. Kraus, Barber, Borkin, Alpern: Seven Deadliest Microsoft Attacks, 2010, p. 14: «But overall, It should be pretty clear that missing patches and password reuse can be a very deadly combination when faced with these types of threats.».
  27. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, 3.5.4. Limit Cached Credentials, p. 30.
  28. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, 3.5.1. Sensitive Systems Isolation, p. 26.
  29. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, 3.5.2. Enforce Least User Access (LUA), p. 27.
  30. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, 3.5.3. Avoid LM and NTLM challenge-response, p. 28.
  31. securityfocus: Microsoft Windows Kerberos 'Pass The Ticket' Replay Security Bypass Vulnerability, 2010.
  32. Malgherini, Focardi: Attacking and fixing the Microsoft Windows Kerberos login service, 2010, 3.3 Pass-the-ticket Attack, pp. 8—10.
  33. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, 3.5.5. Disable "Debug Programs" User Right, p. 30.
  34. Microsoft: Советы по безопасности (Microsoft) (2871997), 2014.
  1. Иногда Windows по умолчанию может использовать протокол аутентификации Kerberos.

Литература[править | править код]

Книги
Статьи
Сайты