Страница 1 из 1

Azazel userland rootkit

Добавлено: 06 мар 2014, 16:04
Raven
Перестал пускать один из "подопечных" - ни SSH, ни тебе FTP. Ну, попарили его, и попросили хостеров поглядеть на него из системной консоли. Те подрубили IP-KVM, однако сервак отказался жрать пароль и из консоли. При всем том, что установленная на нем же WHM работает отлично.

Долго репу чесал как залезть, наконец откопал на форумах cpanel.net стоящий пост - у сипанель есть одна не особо документированная особенность - если сходить по линку http://domain.com:2086/scripts2/doautof ... sshrestart она перезапустит sshd со своим конфигом из /var/cpanel в безопасном режиме. После этого удалось залогиниться.

Код: Выделить всё

Mar  4 17:57:01 srv1 kernel: crond[3306]: segfault at 0 ip (null) sp 00007fffe0ae2d78 error 14 in pam_deny.so[7fe214b64000+1000]
Mar  4 17:58:01 srv1 kernel: crond[3307]: segfault at 0 ip (null) sp 00007fffe0ae2d78 error 14 in pam_deny.so[7fe214b64000+1000]
Mar  4 17:58:01 srv1 kernel: crond[3308]: segfault at 0 ip (null) sp 00007fffe0ae2d78 error 14 in pam_deny.so[7fe214b64000+1000]
Mar  4 17:58:52 srv1 pure-ftpd: (?@127.0.0.1) [INFO] New connection from 127.0.0.1
Mar  4 17:58:53 srv1 kernel: pure-authd[3281]: segfault at 2 ip 00007f0c6cdaf93c sp 00007fffe70a5980 error 4 in libselinux.so[7f0c6cdab000+7000]
Mar  4 17:59:22 srv1 kernel: sshd[3342]: segfault at 0 ip (null) sp 00007fff73f06c48 error 14 in pam_shells.so[7f22d381a000+1000]
Пакетный менеджер rpm не находил ничего в /var/lib/rpm, yum был убит наглухо, при попытке вызвать его рапортовал что python не нашел модуль yum...
И тут в глаза бросилась эта строчка:

Код: Выделить всё

Mar  4 17:58:53 srv1 kernel: pure-authd[3281]: segfault at 2 ip 00007f0c6cdaf93c sp 00007fffe70a5980 error 4 in libselinux.so[7f0c6cdab000+7000]
стало интересно, причем же здесь selinux, сипанель же его первым делом отключает... В связи с нарастающими сомнениями решил обозреть содержимое файла.

Код: Выделить всё

# strings /lib/libselinux.so
...
...
...
The whole earth has been corrupted through the works that were taught by Azazel: to him ascribe all sin.
Опаньке! Это уже интересно! гугление привело на хабр в обзор нового руткита Azazel. Приведу цитату оттуда:
Новый Userland-RootKit Azazel
Вирусы (и антивирусы), Информационная безопасность*, Linux*
Возможно вы слышали про руткиты Jynx и Jynx2. Это так называемые userland-руткиты, они используют возможность переменной LD_PRELOAD, которая позволяет подгружать любые библиотеки до того, как будет запущена программа. Они уже относительно старые, но все еще хорошо работают.
2 дня назад, Github-пользователь Chokepoint выложил rootkit Azazel. Он основан на исходном коде Jynx и имеет много новых фич:

Антиотладочные механизмы
Скрытие от unhide, lsof, ps, ldd
Скрытие файлов и директорий
Скрытие удаленных подключений
Скрытие процессов
Скрытие логинов
Скрытие от локального сниффинга трафика через PCAP
2 бекдора с полноценными шеллами (с PTY):
— Crypthook accept()-бекдор
— Обычный accept()-бекдор
PAM-бекдор для аутентификации под любым пользователем
Очистка логов utmp/wtmp для PTY
Обфускация строк скомпилированной библиотеки через xor.
Полностью читать тут

Из доков следует что эта дрянь вписывает себя в /etc/.ld.so.preload, однако все мои попытки открыть его ни к чему не привели - нет говорит такого файла. Ладно, заходим с другой стороны - mv /lib/libselinux.so /lib/libselinux.azazel.so
Теперь при попытке запуска любой команды получаем ругань, то файл /lib/libselinux.so загружаемый из /etc/.ld.so.preload не найден. По бырому ныряем с соседней консоли на сервак и открываем /etc/.ld.so.preload в своем любимом редакторе и теперь в нем обнаруживается строчка

Код: Выделить всё

/lib/libselinux.so
Можно смело ее грохать и перезагружать сервер - он запустится уже в нормальном режиме. Далее пришлось грохнуть все _*.db файлы из /var/lib/rpm и пересоздать их

Код: Выделить всё

# rpm --initdb
# rpm --rebuilddb
И сразу для надежности обновим систему.

P.S. Как показал разбор полетов, клиент (владелец сервера) где-то проморгал рутовый пароль. Скорее всего в каком-нить клиенте сохранил, а оттуда его удже какой-нить злобный вирус умыкнул и передал злобному дяде из Египта, который не упустил возможности поселить на сервере заразу.

Берегите свои пароли... и нервы.

Re: Azazel userland rootkit

Добавлено: 03 апр 2014, 17:49
Phantom
Я бы так не разорялся с поиском. Если не подходит пароль от SSH и админ трезв, то значит рута увели когда админ был пъян. Тупо переустановка и восстановление конфигов из бекапа.....это кстати и безо всяких атак иногда полезно))) А в целом полезная статья)

Re: Azazel userland rootkit

Добавлено: 04 апр 2014, 12:13
Raven
Phantom писал(а):Тупо переустановка и восстановление конфигов из бекапа.....это кстати и безо всяких атак иногда полезно)))
Только не для продакшена с несколькими сотнями тысяч юзеров, из которых тысяча-другая всегда онлайн. С такими обьемами даунтайм был бы бешеный - там одна только таблица с продукцией весит 47 Гб. Представь насколько бы растянулось восстановление конфигов?

Re: Azazel userland rootkit

Добавлено: 06 апр 2014, 17:35
Phantom
Если это настолько важный узел,то....экономить на дублировании нехорошо. *WORK*

Re: Azazel userland rootkit

Добавлено: 06 апр 2014, 23:19
Raven
Phantom
Это уже не в мой огород камень. Владелец сервера не считает нужным даже бэкапы делать... Хотя говорить что IT-шник по образованию...