чи можемо ми знати пароль для інших користувачів, якщо у нас є кореневий доступ?


24

Якщо людина має кореневий доступ до певної машини RHEL, чи зможе вона отримати пароль інших користувачів?


4
Так, ви можете, вони можуть поділитися з вами, коли вас прекрасно запитують :) іншими словами, ваше питання точно не поставлено.
poige

Відповіді:


37

TL; DR: Ні, пароль зберігається як хеші, які неможливо (в цілому) відновити.

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

Якщо у вас є паролі, які зберігаються десь крім /etc/passwdбази даних, вони можуть зберігатися таким чином, що це дозволяє. htpasswdфайли можуть містити зашифровані паролі, а інші програми можуть зберігати слабкі хеши або звичайні текстові паролі з різних (зазвичай поганих) причин.

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

Якщо паролі хешируються або шифруються за допомогою старого, слабкого алгоритму (3DES, MD5), можна було б розробити досить ефективно / дешево, який саме був пароль - хоч і шляхом атаки на дані, а не просто змінити перетворення. (наприклад: такі речі, як http://project-rainbowcrack.com/ або http://www.openwall.com/john/ )

Оскільки ви є root, ви також можете атакувати пароль користувача на іншому рівні - замініть двійковий код для входу, або sudo, або частину PAM тощо, на щось, що захопить пароль при його введенні.

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


1
Більш детальна інформація у Вікіпедії: /etc/shadow, криптографічний хеш - функція , сіль і злом паролів
Tim

2
Це велика відповідь здебільшого, проте 3DES та MD5 насправді не є значно слабкішими за інші алгоритми. Груба сила все ще є єдиним методом пошуку пароля з хешу ( райдужні таблиці - це спосіб прискорити грубі сили методів для будь-якого алгоритму, а не слабкість MD5). Що покращує хеш-метод паролів, це те, що він повільний і використовує досить довгу сіль.
Жил "ТАК - перестань бути злим"

13

На відміну від деяких інших відповідей тут, я б сказав, що проста відповідь на це та багато інших питань, які закінчуються на "якщо у вас є корінь" - ТАК.

В основному, root може робити все на машині, що може зробити сама система. Система може прийняти ваш пароль, тому root може прийняти ваш пароль, або його власний замість вашого, з достатньо зусиль. Що ще важливіше, він може просто змінити ваш пароль, або ПОБУТИТИ вас.

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

Це означає, що ви МОЖЕТЕ прочитати їх історію оболонки та історію входу, де вони, швидше за все, ввели свій пароль замість свого імені користувача в якийсь момент, або ввели його в оболонку, а не в запиті пароля. У такому випадку це було б простим текстом. Це тривожно часто зустрічається на текстових терміналах, не маючи хороших рішень, про які я знаю.

Однак, навіть відклавши цю проблему, "одностороннє" шифрування насправді не є одним із способів. Навколо існує безліч інструментів, які пройдуть безліч комбінацій парольних фраз, шифруючи їх тим самим однобічним процесом, поки не знайдете той, який відповідає. Потім вони знають пароль, який отримає доступ (хоча як root, вони ВИНАГО мають доступ на ЦІй машині).

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

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


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

Крім того, якщо використовувати зашифровані файлові системи для конфіденційних даних, компроміс доступу до кореня не означає часу для початку.
emory

@emory Якщо ви використовуєте зашифровані файлові системи, а система піддається руйнуванню root, то чи можете ви довіряти коду, який стосується зашифрованої файлової системи, читає парольну фразу шифрування тощо? Я б сказав, що ви не можете, тому що, за визначенням, компроміс root-privilege означає, що все в системі (аж до ядра) розроблено для захоплення.
CVn

@ MichaelKjörling Чи можу я довіряти коду, який стосується зашифрованої файлової системи? У більшості випадків немає. У моєму випадку, так. Він розміщений на носіях лише для читання. Корінь не вміє писати до нього. Журнали переходять на привід WORM. Точно так само, я не роздаю ключі до root та, ймовірно, почав би спочатку.
emory

8

Якщо у вас є, rootто ви можете запустити зловмисник паролів проти /etc/shadow(припускаючи локальні паролі, а не LDAP чи Kerberos тощо). Це може бути неефективним, якщо вони вибирають хороші паролі та система налаштована на використання сильного хешування паролів. Але паролі системи не зберігаються в простому тексті; навіть не доступні паролі root.


5

Усі паролі зберігаються у /etc/shadowфайлі. Ви можете відкрити цей файл за допомогою кореневого доступу та побачити hash valueці паролі для кожного користувача (навіть користувача root).

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

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

root@localhost$ passwd pradeep

Це попросить вас про новий пароль, який ви хочете встановити для користувача pradeep. Таким чином ви можете змінити passwd на prodeep.

Тепер ви можете отримати доступ з його акаунта:

root@localhost$ su pradeep

Це призведе до переходу на попередній користувач, і ви отримаєте такий термінал:

pradeep@localhost$


1
ви можете робити "su pradeep" навіть без зміни пароля pradeep, тому що, коли ви робите "su pradeep" з користувачем root, вам не потрібно вводити пароль pradeep для входу ...
Wolfy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.