#1 Взлом паролей. Понимание файлов etc/passwd и etc/shadow.
Здравствуйте, дорогие друзья.
В этой статье мы обсудим, как система linux выполняет аутентификацию. Есть два файла, представляющих для нас особый интерес — это etc/passwd и etc/shadow.

etc/passwd содержит основную информацию о каждой учетной записи пользователя в системе. Давайте посмотрим содержимое файла etc/passwd, открывая его, с помощью команды «less».

Каждая строка файла представляет одну учетную запись типа обычного пользователя или системного пользователя, и в каждой строке есть семь полей. Давайте рассмотрим эти поля по порядку.
Первое поле — это имя пользователя для входа в систему.

Второе поле — начало эпохи unix, использовавшейся для хранения зашифрованного пароля. В настоящее время оно содержит букву x, чтобы обозначить, что пароль был назначен, но был сохранен в другом файле теневого файла.
Если это второе поле пусто, пользователю не нужно вводить пароль для входа.

Третье поле — идентификатор пользователя.

Положительное целое число, назначенное пользователю, за которым следует идентификатор группы — четвертое поле.

Пятое поле — комментарий. Иногда его оставляют пустым.

Следующее поле — использование домашнего каталога.

И, наконец, последнее поле — это оболочка по умолчанию, обычно установленная в bin zsh.

Если вместо zsh Вы видите, что нет входа в систему или false, это означает, что это системный пользователь, которому не разрешено входить в систему, которая была в формате пароля.
Я выхожу из файла, нажимая на q.
Давайте продолжим и посмотрим на формат etc/shadow. Это команда less etc/shadow.

Это файл, в котором хранятся фактические пароли пользователей в зашифрованном формате. На самом деле, есть хэш пароля с дополнительными свойствами, относящиеся к паролям пользователя, такие как даты истечения срока действия пароля. Файл etc/passwd доступен для чтения по словам, а это означает, что любой пользователь может его прочитать, но файл etc/shadow доступен для чтения только учетной записи root.
Давайте глубже посмотрим на содержимое теневого файла. Каждая строка файла содержит 9 полей, разделенных запятыми. Первое поле — это имя пользователя, и именно так строка в теневом файле соединяется с соответствующей строкой в файле паролей.

Второе поле представляет собой пароль. Вся строка между этими двумя столбцами — это пароль.

Затем идут семь полей, связанных с датами истечения срока действия пароля, такими как минимальный и максимальный возраст пароля последнего изменения пароля и так далее. Я не буду углубляться в это, но если Вам интересно, Вы можете найти полное описание из этих полей на странице руководства теневого файла man shadow. Вы найдете здесь полное описание каждого поля.


Давайте вернемся к теневому файлу, если поле пароля содержит звездочку или восклицательный знак, пользователь не сможет войти в систему, использующую аутентификацию по паролю, и другие методы входа в систему, такие как аутентификация на основе ключей или переключение на пользователя.

Это случай пользователя root, в последней версии kali linux. Давайте глубже посмотрим на поле пароля. Обычно формат пароля в этом случае установлен в долларах.

В этом случае используемым алгоритмом криптографического хеширования могут быть следующие значения: 1 означает md5, 2a означает blowfish, 2y означает x blowfish, 5 означает sha 256. Затем идет соль этой части, а затем хэш пароля и соль вместе.
Эта часть хэша, вычисленная, с использованием, в данном случае, алгоритма sha-512, который является чрезвычайно сильным алгоритмом. Позвольте мне рассказать Вам несколько слов о соли.

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

Пользователь был создан, и давайте установил пароль «test» для проверки пароля user1, и я набирал test два раза.
Аналогичным образом создаем второго пользователя «user2», с тем же паролем «test».

Теперь давайте проверим хэши в теневом файле, я распечатываю последние 10 строк. Это команда «tail etc/shadow».

Мы замечаем, что, хотя и у обоих пользователей один и тот же пароль, сохраненный хэш отличается. Он уникален, потому что система вычислила хеш, используя как общий пароль, так и соль, которая теперь уникальна для каждого пользователя.
Если хакеру удается найти пароль первого пользователя, имеющего хэш, хакер не знает, что у второго пользователя такой же пароль, потому что в файле есть еще один хэш.
Последнее, что я хочу Вам сказать, это то, что эти файлы, passwd и shadow не должны редактироваться вручную. Если Вы знаете, что Вы делаете, всегда используйте комментарий, который предназначен для этой цели.
На этом все. Всем хорошего дня!