Спонсор проекта
Лучший вариант для анонимности купить прокси на выделенном сервере IPANN.NET.
Рекламки



Авторизация






Последние комментарии
#1
2023 пишет: » Запостите:

s3r [точка] ru/stavka-tolko-na-linuks-et... (18.03.2023)
// ОСТОРОЖНО: ВИНДОФИЛИЯ!
#2
бронедрочец пишет: » В костылинуксе порядок таков: нужен нормальный кал... (02.03.2023)
// Обзор калькуляторов в GNU/Linux
#3
Линупсодав пишет: » Костылинупс на десктопе не взлетит без прикладнухи... (13.02.2023)
// ОСТОРОЖНО: ВИНДОФИЛИЯ!
#4
admin пишет: » БоЗяН, ожидаемо. (30.01.2023)
// ReactOS 0.4.1
#5
БоЗяН пишет: » Хех. Чёт делать было нечего - дело было вечером)))... (29.01.2023)
// ReactOS 0.4.1
Цитаты
Чуствовать себя элитой только от того, что умеешь доблестно преодолевать искусственно созданные трудности под Linux? Зачем?



Детективная история взлома одного коммерческого хостинга с наказанием и рекомендациями | автор: linux_must_die! | 9 октября 2009

Категория: GNU/Linux, Security


Ко мне поступил сервер с linux CentOS 5.3 64bit, выполняющий роль коммерческого хостинга сайтов (WHM/cPanel), который был взломан и взломщики не потрудились вытереть за собой все инструменты, которые они использовали.
Проанализировав их, я смог составить цепочку событий, которая привела к взлому сервера и компрометации рутовой учетной записи.
Никаких логов небыло, так как они все были почищены, так что взломщик не оставил за собой следов, и я начал поистине детективное расследование — с уликами и подозреваемыми.









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

После этого, используя найденную уязвимость, в /tmp заливается Remote Backdoor Shell — perl скрипт, открывающий доступ к командной строке сервера, работающий с правами вебсервера, в данном случае — nobody.
Через этот скрипт в /tmp были установлены:

набор взломщика (см. ниже)
— червь для автоматизации работы со сканерами RFI ботнета, само ищет сайты на Joomla 1.x, пытается взломать через них сервер и залить весь этот комплект, автоматически скачивает эксплойты с Milw0rm и пытается их применить(!) в публичном доступе мной не найден
— модифицированный сканер RFI, который исключает из проверки уже взломанные сайты, обмениваясь информацией по IRC с такими же скриптами ботнета, за основу взят FeeLCoMz RFI Scanner Bot
— скрипт для выполнения приказов типа scan, ddos и тд, простой, в публичном доступе мной не найден
— модифицированный Jheefry RFI Scanner Bot

Все скрипты написана на Perl и управляются через IRC на порту 6667, взломанный сервер заходит под случайным логином в
специальный канал на хаккерском IRC сервере, который в свою очередь так-же устанавливается скриптами на один из взломанных серверов.

Теперь о том, что включает в себя набор взломщика, который скрипты ботнета заливают автоматически:

— psybnc скрипты
— бинарный файл irc севера собранный статически и переименованный в httpd(!)
— бинарный файл proc неизвестного назначения, собран статически, и служит скорее всего для запуска irc сервера в контексте httpd(!)
— скрипт run: ./proc "/usr/local/apache/bin/httpd -DSSL" httpd JaM5, выполняющий подключение irc сервера в контексте httpd(!!!)
— бинарник неизвестного формата с названием xh, вероятно эксплойт, не рабочий, выполняющий подключение irc сервера в контексте httpd для FreeBSD

Итак, на сервере взломщики получили доступ к запуску файлов от имени вебсервера, но как же я определил, что они получили там доступ к root?

Когда я в профилактических целях остановил вебсервер httpd, то в процессах оставался висеть один httpd процесс. Как это возможно?
На самом деле это был perl скрипт, который маскировался под /usr/bin/httpd, тем самым себя выдав, так как httpd запускался из /usr/local/apache/bin/httpd. Он использовал маскировку под procname, где procname — имя процесса:


$rm="rm -rf";
qx($rm $0);
$0 =
$procname. "\0";

Но самое интересное было не это, а то, что файл с правами nobody находился в /var/lib/mysql, куда может писать только
пользователь mysql! И я решил проверить подозреваемого целостность пакета mysql-server:
#rpm -V MySQL-server
.M5....T /usr/sbin/mysqld
M — означало смену прав, 5 — содержимого (сравнение по MD5 хешу), T — времени. Само собой понятно, что был взломан именно mysql, тем более, что shell у пользователя mysql установлен в /bin/bash, чего быть не должно.

Итак, взломщик при помощи сканов уязвимостей ядра нашел лазейку в ядре, после чего использовал эксплойт для получения консоли с правом root и запустил руткит для mysqld, который при старте запускает бекдор, маскирующийся под процесс /usr/sbin/httpd!

Наказание за небрежное администрирование сервера, точнее — за его полным отсутствием, по причине желания экономии
на сисамдине заказчиком — форматирование и переустановка ОС, восстановление из резервных копий.
Ввыоды:

— perl под nobody — зло, suexec рулит
— исходящие коннекты с сервера —зло, но порой необходимое, а вот прикрыть irc порт никогда не помешает
— каждый скрипт должен работать от своего владельца, а не от nobody, fastcgi рулит
— надо своевременно обновлять ядро — отсутствие известных уазвимостей в публичном доступе еще не означает их отсутствие в ядре
— если смонтировать разделы, доступные пользователю на запись с noexec — любой эксплойт будет отдыхать

P.S. По ссылке — увлекательная история с ботнетом и infobox.ru.

UPD. Про perl, апач, nobody и suexec:
Все дело в том, что как правило скрипты на Perl запускают с правами владельцев через suexec. И это хорошо, так как в случае проблем будут видны права владельца, через которого закачали бэкдор.
Но если права на запуск Perl доступны для всех, то его можно запустить через функцию exec() PHP. А PHP работает у большинства хостеров от nobody.
Таким образом разрешение запуска Perl от nobody — зло, так как непонятно через какого пользователя заливают бекдор.

UPD2 — ЧАВО

— Уязвимость с ld.so, которая позволяла запустить бинарник с раздела, смонтированного noexec — уже давно закрыта.
— Для хаккера все равно какой ID будет в шелле — юзерский или апача. А сисадмину — это важно знать, так как будет видно какой пользователь имеет уязвимый сайт, просто сделав ps axuwf. Именно по этому php-fastcgi предпочительней mod_php
— Исходящие коннекты нужны для многих вещей — RPC-Ping'ов, Яндекс.Маркета, бирж ссылок, именно по этому невозможно закрыть все исходящие коннекты

Источник



      ВНИМАНИЕ !
Возможно что-то уже неактуально. Обращайте внимание на даты !
Эта статья опубликована 9 октября 2009-го года !



Голосов: 335


Прочитано 7266 раз и оставлено 12 комментариев.





Комментарии посетителей

#1. goujat

Решето.

#2. dro4er

статья хоть и не о чем, но все ж приятно видеть тут подобные статьи, а не тупое обсирание как обычно.
впрочем сейчас школота набежит...

#3. Mike22

#4. msAVA

msAVA
Я всё думал, когда же вы это перепечатаете:
http://www.linux.org.ru/view-message.jsp?msgid=4101738&lastmod=1254869623701

Всего неделя прошла.
msAVA написал:
Я всё думал, когда же вы это перепечатаете:

Ну мы каг бэ Хабру читаем, а не ЛОР. Её в сообщениях добавили ещё того же дня, но на сайт добавили только вчера. tongue
Невропаразитолог
"дети плакали, кололись, но жрать кактус не переставали" (с)

Тут на досуге поразмыслил почему в линуксе столько ошибок, пришёл к выводу, что иначе линуксостроители без зарплаты останутся- исправлять же они только за деньги согласны. Это ж только злыдни в Майкрософте, бесплатные патчи и техподдержку организовывают для своих покупателей.
Невропаразитолог
Смени ник, что бы с тобой по-нормальному разговаривать. Или сиди и занимайся именно тем, что вынес в ник. Меня дрочить бесполезно, сам задрочу целую роту. Разговор окончен.

#8. dro4er

Невропаразитолог,

это потому что сказать нечего
не сольешься же ты в тихую, вот и на ник съехал
будь здоров!
dro4er написал:
это потому что сказать нечего

Да о чём с тобой разговаривать, когда ты ничего не говоришь? biggrin

#10. dro4er

Linux_must_die! написал:
Да о чём с тобой разговаривать, когда ты ничего не говоришь?


тут вырезали посты
я ему говорил много чего, просто несколько в грубой форме
попробую иначе

Невропаразитолог,

> Тут на досуге поразмыслил почему в линуксе столько ошибок

сколько? зайди на секьюритифокус и сделай выборку по критическим уязвимостям в линукс и своей любимой венде

> исправлять же они только за деньги согласны

это что за вещества?

где в статье намек на незакрытую уязвимость?
тут только показан ламеризм одминов, а это актуально в любой ос
я говорил что не стоило им selinux отключать, вот и почитали бы что это такое и возможен ли был с ним подобный взлом. про noexec я вообще молчу. дырявый хостинг, одним словом
рекомендую ознакомиться с вопросом прежде чем чушь нести
Невропаразитолог
dro4er написал:
про noexec я вообще молчу. дырявый хостинг, одним словом
рекомендую ознакомиться с вопросом прежде чем чушь нести
Так важен сам факт взлома, а не то, каким образом. Вы, линуксойды, ведь утверждаете, что ПО ДЕФОЛТУ ваш любимый линукс не ломается...

#12. Click

по дефолту и не ломанули бы. тут же не дефолт а сервер со спецефческими задачами и его админ обязан настроить, темболее обновлять ядро.