Атака Pass-the-hash

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Атака Pass-the-hash — один з видів атаки повторного відтворення. Вона дозволяє атакуючому авторизуватися на віддаленому сервері, автентифікація на якому здійснюється з використанням протоколу NTLM або LM.

Цей метод може бути використаний проти будь-якого сервера/сервіса, що використовує протокол автентифікації NTLM або LM, не залежно від операційної системи на комп'ютері жертви.

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

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

Після отримання яким-небудь чином пар {ім'я користувача — хеш пароля користувача}, криптоаналітик отримує можливість використовувати цю пару для виконання атаки по іншим каналам та автентифікації на віддаленому сервері під виглядом користувача.[5] При використанні даної атаки відпадає необхідність повного перебору значень хеш-функції для знаходження пароля у відкритому вигляді.[5]

В основі атаки лежить слабкість в реалізації протоколу мережевої автентифікації. Вона полягає в тому, що хеші паролів передаються без використання солі, а тому залишаються незмінними від сесії до сесії (до тих пір, поки не змінюється пароль користувача).[6] Іншими словами, для атакуючого хеші паролів еквівалентні самим паролям.

Історія

[ред. | ред. код]

Атака pass the hash спочатку була опублікована Полом Ештоном в 1997 році[7]. В основі цієї атаки лежала можливість пройти автентифікацію на 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»[8]. З її допомогою можна було під час роботи системи змінити ім'я користувача, доменне ім'я і хеш пароля, занесені в кеш сервером автентифікації локальної системи безпеки після автентифікації користувача[9][10]. Завдяки цьому ставало можливим виконати атаку pass the hash з використанням стандартних засобів Windows, і, таким чином, обійти вбудовані в систему засоби перевірки автентифікації.

Додаток також надавав нову техніку атаки, яка дозволяла отримати хеші паролів, що зберігаються в кеш-пам'яті процесу lsass.exe. Дана техніка незабаром стала широко використовуватися для проведення випробувань на проникнення і атак.

Цей метод збору хешів паролів перевершує ті що використовувалися раніше (наприклад, витяг хешів з локальної бази даних SAM з використанням pwdump або аналогічних програм), оскільки дозволяє витягти з оперативної пам'яті ім'я користувача/доменне ім'я/хеш пароля користувачів домену (і адміністраторів домену) авторизованих в системі.

Цей метод, наприклад, дозволяє отримати хеші паролів авторизованих користувачів домену, які не зберігаються на жорсткому диску.[11] Завдяки цьому стає можливим скомпрометувати весь домен Windows NT після компрометації одного учасника цього домену. Більш того, атака може бути виконана відразу, без необхідності проводити ресурсозатратну підготовку методом повного перебору.

Згодом програма була замінена додатком «Windows Credential Editor», який розширяв вихідну функціональність і додавав підтримку нових операційних систем.[12][13] Деякі антивіруси сприймають цю програму як шкідливу програму.[14][15]

Збір хешів

[ред. | ред. код]

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

  • Кешовані хеші паролів користувачів, які пройшли автентифікацію в системі, можуть бути прочитані з бази даних SAM будь-яким користувачем з правами адміністратора або за допомогою різних утиліт (наприклад, pwdump).[16] Адміністратор може заборонити кешування хешів паролів, так що даний метод працює не завжди.
  • Зчитування хешів з локальної бази даних SAM.[17] Оскільки ця база даних містить відомості тільки про локальних користувачів, при використанні домену криптоаналітик не зможе пройти автентифікацію в інших сервісах цього домену. Однак якщо локальний пароль адміністратора використовується в інших системах домену, атакуючий отримує можливість використовувати хеш-кодування локального облікового запису для віддаленого доступу до таких систем.
  • Витяг хешів, збережених системою[19] в пам'яті процесу lsass.exe. Хеші, отримані таким методом, можуть належати користувачам / адміністраторам домену (які, наприклад, увійшли в систему через RDP). Таким чином, цей метод може бути використаний для компрометації всього домену.

Заходи протидії

[ред. | ред. код]

Будь-яка система, що використовує NTLM/LM протокол автентифікації[20] у поєднанні з будь-яким протоколом зв'язку (SMB, FTP, RPC, HTTP та інші)[21], піддана атаці pass the hash. Від даної атаки важко захиститися, оскільки існують численні експлойти для Windows, що дозволяють атакуючому отримати права адміністратора і здійснити збір хешів. Більш того, компрометація всього домену Windows може бути здійснена з використанням одного учасника цього домену.[11] Численні програми для проведення випробувань на проникнення можуть бути використані для автоматичного пошуку вразливостей в системі.

Для захисту від атаки pass the hash застосовується метод комплексного захисту[22][23]: використання міжмережевого екрану, системи запобігання вторгнень, IPsec, антивірусних програм, повне шифрування диска, автентифікація з використанням стандарту IEEE 802.1 X, зменшення числа користувачів з правами адміністратора[24], своєчасна установка оновленню безпеки[25]. Заборона системі Windows на кешування хешів паролів може перешкодити атакуючому витягти ці значення з пам'яті. На практиці це означає можливість проведення атаки тільки після входу жертви в систему.[26]

У сценарії атаки на хеші паролів адміністраторів домену може використовуватися можливість проходження ними автентифікації в скомпрометованій системі. Дозвіл адміністраторів домену проходити автентифікацію тільки в надійних серверах автентифікації локальної системи безпеки звужує вектор атаки.[27]

Принцип мінімальних привілеїв передбачає надання користувачеві мінімально необхідних прав доступу для виконання будь-яких операцій.[28] Заборону на використання в системі протоколу NTLM-аутентифікації/LM може підвищити захищеність системи[29], хоча протокол Kerberos також схильний до даної атаки.[30][31] Заборону на використання зневаджувача може перешкодити атакуючому отримати хеш з пам'яті процесів.[32]

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

Примітки

[ред. | ред. код]
  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, с. 233.
  4. Microsoft: How Interactive Logon Works, 2009.
  5. а б Stirnimann: Windows Attack — Gain Enterprise Admin Privileges in 5 Minutes, 2010, с. 24.
  6. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, с. 26.
  7. Stirnimann: Windows Attack — Gain Enterprise Admin Privileges in 5 Minutes, 2010, с. 9.
  8. Ochoa: Pass-The-Hash Toolkit for Windows, 2008, с. 11.
  9. Core Security Technologies: Pass-The-Hash Toolkit, 2007.
  10. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, с. 12—13.
  11. а б Core Security Technologies: Pass-The-Hash Toolkit, 2007, WHOSTHERE.EXE/WHOSTHERE-ALT.EXE.
  12. Ochoa: WCE Internals, 2011, с. 3—6.
  13. Ochoa: Windows Credentials Editor (WCE) F.A.Q., 2011.
  14. Symantec: SecurityRisk.WinCredEd, 2011.
  15. Microsoft: HackTool:Win32/Wincred.A, 2011.
  16. Hummel: Why Crack When You Can Pass the Hash?, 2009, с. 8—9, 3.3. Dump the hash locally.
  17. Hummel: Why Crack When You Can Pass the Hash?, 2009, с. 8, 3.3. Dump the hash locally.
  18. Hummel: Why Crack When You Can Pass the Hash?, 2009, с. 8, 3.2. Sniff the LM hash off the network.
  19. Hummel: Why Crack When You Can Pass the Hash?, 2009, с. 10, 3.5. Dump and analyze the contents of memory.
  20. Hummel: Why Crack When You Can Pass the Hash?, 2009, с. 20, 5.1. What systems are at risk?.
  21. Hummel: Why Crack When You Can Pass the Hash?, 2009, с. 20, 5.2. What services are at risk?.
  22. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, с. 26, 3.5. Part 2 – Defense - Pass-the-hash Mitigation.
  23. Kraus, Barber, Borkin, Alpern: Seven Deadliest Microsoft Attacks, 2010, с. 17, Defense-in-Depth Approach.
  24. Grimes: Stop pass-the-hash attacks before they begin, 2011.
  25. Kraus, Barber, Borkin, Alpern: Seven Deadliest Microsoft Attacks, 2010, с. 14.
  26. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, с. 30, 3.5.4. Limit Cached Credentials.
  27. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, с. 26, 3.5.1. Sensitive Systems Isolation.
  28. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, с. 27, 3.5.2. Enforce Least User Access (LUA).
  29. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, с. 28, 3.5.3. Avoid LM and NTLM challenge-response.
  30. securityfocus: Microsoft Windows Kerberos 'Pass The Ticket' Replay Security Bypass Vulnerability, 2010.
  31. Malgherini, Focardi: Attacking and fixing the Microsoft Windows Kerberos login service, 2010, с. 8—10, 3.3 Pass-the-ticket Attack.
  32. Ewaida: Pass-the-hash attacks: Tools and Mitigation, 2010, с. 30, 3.5.5. Disable "Debug Programs" User Right.
  33. Microsoft: Советы по безопасности (Microsoft) (2871997), 2014.
  1. Іноді Windows за замовчуванням може використовувати протокол автентификації Kerberos.

Література

[ред. | ред. код]
Книги
Статті
Сайти