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

На этом трагическом вступлении мои воспоминания заканчиваются - сегодня я поведаю тебе основные правила, подчиняясь которым ты на много процентов повысишь твою "незамеченность" на зарутанном серваке 🙂

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

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

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

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

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

a) 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.

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

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

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

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

После того, когда ты уверен, что логи системы вычищены - качай
vanish, компиль и выполняй:

./vanish2 username 0 yourip

Этим ты сотрешь все строки своего пребывания на сервере (username - логин под которым ты засветился, yourip - твой ip адрес).

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

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

Где user - твой логин, а /usr/bin/ava - _скрытый_ бинарник адоры.

Итак, ты почистил логи и полностью уверен в своей безопасности... Дам тебе напоследок несколько советов, выполняя которые ты увеличишь срок хранения root-привелегий 😉

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

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

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

find /dev -type d
find /tmp -type d
find / -type f -perm 4755

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

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

int main()
{
setuid(0);
setgid(0);
system("bash");
}

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

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

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

Удачи!

Check Also

Raspberry Pi 4. Что дают четыре ядра и четыре гига в четвертой ревизии «малинки»

Как и у людей, у компьютеров есть своя судьба — и складывается она зачастую по-разному. Од…

Оставить мнение