Основным назначением /etc/passwd является сопоставление логина(login) и идентификатора пользователя (UID).
Изначально поле пароля содержало хеш пароль и использовалось для аутентификации. Однако, в связи с ростом вычислительных
мощностей процессоров появилась серьёзная угроза применения простого перебора для взлома пароля. Поэтому все пароли
были перенесены в специальные файлы, такие как /etc/shadow в GNU/Linux или /etc/master.passwd во FreeBSD.
Эти файлы недоступны для чтения обычным пользователям. Такой подход называется механизмом скрытых паролей.
В файле /etc/shadow хранятся хеши паролей всех пользователей в системе. Процессы суперпользователя могут читать его напрямую,
а для остальных создана специальная библиотека PAM. Она позволяет непривилегированным приложениям спрашивать у неё, правильный
ли пароль ввёл пользователь, и получать ответ. Таким образом, хеш не попадает «в чужие руки». Дело в том, что злоумышленник,
имея набор хешей, всегда может осуществить атаку путём перебора паролей. Например, слова из словаря являются ненадёжными паролями,
так как можно зашифровать словарь целиком и поискать хеши в том, что получится. Одна из наилучших программ,
выполняющих такого рода атаки — John The Ripper. Также весьма популярна утилита crack.
Фрагмент файла /etc/shadow
login : хеш-password : ....
john:13$80l1AVB5$6AdyTstdHpsSTsewiac8O1:13283:0:31:3:14:13514:
От теории к практике:
Процесс получения прав root делится на 2 этапа - получение доступа(чтения и/или записи) к файлам /etc/passwd и /etc/shadow
и в зависимости от того какой вы получили доступ к файлам
проделываем не хитрые махенации с системой:
1) допустим у нас доступ на чтение тогда выдергиваем хеш-пароль из /etc/passwd root:lZTB0KTrSKy8M:0:0:root:/root:/bin/sh - lZTB0KTrSKy8M,
если в нем нет пароля в моем случае x свидетельствует что используется механизм скрытых паролей root:x:0:0:root:/root:/bin/sh то обращаемся к файлу /etc/shadow root:13$/Xhw3kaR$Vif2djTL4aQshu8aKfkl0/:12545:0:99999:7::: - 13$/Xhw3kaR$Vif2djTL4aQshu8aKfkl0/
далее получив хеш-пароль мы должны его расшифровать точне осуществить атаку путём перебора паролей
с помощью программ типа John The Ripper, Slurpie или crack.
John The Ripper — быстрая и гибкая программа подбора пароля. Она может использовать несколько списков слов
и подбирать пароль методом грубой силы. Она доступна по адресу http://www.openwall.com/john/.
Crack — возможно, наиболее известная программа взлом паролей. Crack также очень быстрая программа, хотя
и не так проста в использовании, как John The Ripper. Её можно найти по адресу http://google.com/. :)
Slurpie — программа Slurpie похожа на John The Ripper и Crack, но она рассчитана на работу сразу на нескольких компьютерах,
и позволяет провести распределённый взлом пароля. Её, а также другие средства организации распределённой атаки,
можно найти по адресу http://www.ussrback.com/distributed.htm.
2) допустим у нас доступ на чтение/запись тогда можно:
а)сменить идентификатор пользователя (UID) у которого вы случайно не забыли пароль как все мы помним в системе могут
существовать несколько пользователей с одним идентификатором(UID). Это нередко используется взломщиками, когда они после
проникновения в систему создают себе учётную запись с UID=0. В результате они выглядят как обычные пользователи,
но на самом деле имеют права root.
b)стереть хеш-пароль в /etc/passwd или в /etc/shadow то есть 'обнулить' его или встаить хеш-пароль пользователя
у которого вы случайно не забыли пароль.
c)отключить аутенфикацию паролей в системе если я не ошибаюсь то делается это так в файле /etc/pam.d/passwd
коментируем строчку #password required pam_stack.so service=system-auth.
d)тупо ввести команду #passwd root.
Процесс получения доступа
1) Грузимся с какого-либо LiveCD/flash/дискетки и восстанавливаемся... Надеюсь, файловые системы не шифрованы :)
2) Можно загрузится с инсталляционного диска. А дальше смонтировать корень поставленного линукса например в /mnt
и chroot /mnt после чего passwd или текстовый редактор на /etc/shadow в помощь :)
3) Если нет(или не забыл) пароля на загрузчик, то передаем ядру init=/bin/bash, если нужно перемонтируй раздел в rw,
смени пароль, обратно в ro и reboot. На своей машине я делал так, нажал "a" при выборе партиции в grub и дописал init=/bin/bash ч/з 10 сек в консоли :)
4) Загружайся в single user. В 9-ом редхате при загрузке в single user получаешь рутовскую консоль без пароля но в ASP 11.2
запрашивает пароль рута нажал "a" при выборе партиции в grub и дописал s
5) Задаем другой root-partition грузимся с другого раздела root=/dev/sda2
6) При загрузке grub нажать "c" попадаем в командную строчку и cat /etc/passwd :)