мы можем знать пароль для других пользователей, если у нас есть root-доступ?

24

Если человек имеет root-доступ к определенному компьютеру RHEL, смогут ли они получить пароль других пользователей?

Памятник погибшим
источник
4
Да, вы можете, они могут поделиться этим с вами, если вас приятно спросить :) Другими словами, ваш вопрос точно не задан.
Пой

Ответы:

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 может принять ваш пароль или его собственный вместо вашего с достаточным усилием. Что еще более важно, он может просто изменить ваш пароль или стать вами.

В частности, пароли обычно зашифрованы. Обычно это своего рода так называемый «односторонний» алгоритм, который генерирует число (хеш), которое можно использовать для проверки пароля, но, как правило, не для того, чтобы изменить номер и вернуть пароль снова. Таким образом, это не просто чтение файла, чтобы получить чей-то пароль.

Тем не менее, вы МОЖЕТЕ прочитать историю их оболочки и историю входа в систему, где они, скорее всего, в какой-то момент набрали свой пароль вместо своего имени пользователя, либо напечатали его в оболочке вместо запроса пароля. В этом случае это был бы простой текст. Это очень часто встречается на текстовых терминалах, и я не знаю хороших решений.

Однако, даже если оставить эту проблему в стороне, «одностороннее» шифрование на самом деле не является одним из способов. Существует множество инструментов, которые будут проходить через множество комбинаций парольных фраз, шифруя их одним и тем же односторонним процессом, пока вы не найдете подходящий. Затем они знают пароль, который получит доступ (хотя от имени root они УЖЕ имеют доступ на ЭТОЙ машине).

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

Опять же, доступ на корневом уровне - это то, что нужно защищать. С этим скомпрометированы вся машина и все, что на ней есть. Пришло время начать все сначала, включая информирование всех ваших пользователей о том, что вашему бизнесу больше нельзя доверять для защиты их конфиденциальности. И да, это может означать выход из бизнеса.


источник
Получение доступа к моей учетной записи отличается от получения моего пароля. Если вы разрешите мне войти в систему на вашем компьютере, и я (глупо, но часто) использую один и тот же пароль для всех компьютеров, у вас не будет доступа ко всем машинам, только вы можете сменить мой пароль на своем компьютере. Я просто заблокирован из одного аккаунта.
Эмори
Кроме того, если для секретных данных используются зашифрованные файловые системы, компрометация корневого доступа не требует времени для начала заново.
Эмори
@emory Если вы используете зашифрованные файловые системы и система скомпрометирована с правами root, можете ли вы доверять коду, который имеет дело с зашифрованной файловой системой, считывает кодовую фразу шифрования и т. д.? Я бы сказал, что вы не можете, потому что по определению компрометация с привилегиями суперпользователя означает, что все в системе (вплоть до ядра) готово к использованию.
CVn
@ MichaelKjörling Могу ли я доверять коду, который работает с зашифрованной файловой системой? В большинстве случаев нет. В моем случае да. Он размещен на носителе только для чтения. Root не может написать в него. Логи идут на WORM диск. Точно так же я не раздаю ключи от root и, вероятно, начну все сначала.
Эмори
8

Если у вас есть, rootвы можете запустить взломщик паролей /etc/shadow(предполагая локальные пароли, а не LDAP или Kerberos и т. Д.). Это может быть неэффективно, если они выбирают надежные пароли, а система настроена на использование надежного хеширования паролей. Но системные пароли не хранятся в открытом виде; пароли напрямую недоступны даже для root.

geekosaur
источник
5

Все пароли хранятся в /etc/shadowфайле. Вы можете открыть этот файл, используя root-доступ, и просмотреть hash valueэти пароли для каждого пользователя (даже для пользователя root).

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

Но, тем не менее, если у вас есть доступ к пользователю root, вы можете изменить пароль любого обычного пользователя, используя следующую команду, и получить доступ к его учетной записи.

root@localhost$ passwd pradeep

Это попросит вас ввести новый пароль, который вы хотите установить для пользователя pradeep. Таким образом, вы можете изменить passwd на pradeep.

Теперь вы можете получить доступ из своего аккаунта по:

root@localhost$ su pradeep

Это приведет к переключению на пользователя pradeep, и вы получите терминал, подобный этому:

pradeep@localhost$

pradeepchhetri
источник
1
вы можете делать "su pradeep" даже без изменения пароля pradeep, потому что когда вы делаете "su pradeep" с пользователем root, вам не нужно вводить пароль pradeep для входа в систему ...
Wolfy