детектирования (на английском языке).
LINUX VIRUSES – ELF FILE FORMAT Marius Van Oers
www.nai.com/common/media/vil/pdf/mvanvoers_VB_conf %25202000.pdf&e=747
Блестящий обзор современных UNIX-вирусов и анализ используемых ими методик внедрения в ELF-файлы (на английском языке).
Некоторые администраторы полагают, что под *nix вирусов нет. Вирусы же придерживаются иного мнения.
Некоторые пользователи в желании почувствовать себя богом подолгу работают в системе на из- под root'а. Вирусы и хакеры любят таких пользователей :).
Малочисленность вирусов в мире *nix компенсируется отсутствием нормальных антивирусов.
IE и IRC – вот основные источники для пополнения твоей коллекции вирусов.
Открытость ELF-формата вкупе с доступностью исходных текстов системного загрузчика значительно упрощает конструирование вирусов под *nix.
Создание вирусов не преследуется по закону. По закону преследуется создание вредоносных программ.
Из десятка возможных методов внедрения в ELF-файлы вирусописателям удалось освоить лишь два-три, так что на отсутствие творческого простора жаловаться не приходится.
*nix– и Windows-вирусы строятся по одним и тем же принципам, причем UNIX-вирусы даже проще.
Антивирусная Энциклопедия Касперского содержит большое количество фактических ошибок в описании *nix-вирусов.
Многие *nix-вирусы зависят от версии операционной системы, поэтому всякий исследователь вынужден держать на своей машине зоопарк осей.
Огромная коллекция *nix-вирусов (и не только) имеется на http://vx.netlux.org.
Опасная практика / Примеры реальных взломов
Master-lame-master
Любая теория должна быть закреплена практикой. Даже теория взлома. Если человек никогда не проверял свои знания на реальных серверах, то его нельзя назвать хакером. Позволь рассказать тебе, как хакеры ломают различные ресурсы. Но помни: повторять их действия опасно – старший брат следит за тобой!
Все взломы, представленные в моем небольшом обзоре хакерских этюдов, реальны и происходили в 2003-2004 году. Имена злоумышленников, по понятным причинам, не называю. В этом материале я старался охватить все методы атак. Итак, приступим!
Любой игроман знает Никиту. Это не геймерский персонаж, а обычная игровая компания, создающая интересные проекты. Я, например, любил погамать в Parkan, хроника империи. Быть может, ты знаешь эту фирму по другим игрушкам. Это не столь важно. Важно то, что год назад ресурс был взломан неизвестным хакером. Впрочем, взлом выполнялся по тривиальной схеме, даже скрипткиди мог занять место нашего героя и порулить сервером известной компании. Вот как это было. От нечего делать хакер сканировал подсеть, где обычно хостились сервера крупных компаний. Хостером являлся «Ростелеком», у которого клиенты арендовали место в специальном серверном помещении. Хакер предполагал, что заказчики экономили на сисадминах, поэтому их сервера могли содержать дырки в своих демонах. Вскоре он засек примечательный сервер www.nikita.ru, который располагался в ростелекомовской подсети. Внимание хакера привлекло отсутствие фаервола и многочисленные сервисы, крутящиеся на этой машине. Понятно, чем больше сервисов, тем вероятность наличия бага, приводящего к удаленному взлому, выше. Атака происходила как раз в ту пору, когда в публичных источниках появился эксплоит 7350fun, позволяющий поиметь www-права через дырявый mod_php. Контент www.nikita.ru передавался браузеру через PHP- скрипты, поэтому стоило проверить версию модуля – быть может, хозяин машины даже не знал о баге. Чтобы выполнить подобную проверку, достаточно прителнетиться на 80 порт и отправить стандартный HTTP-запрос, например, такой:
HEAD / HTTP/1.0.
Хакер проделал эту несложную работу, затем пару раз нажал Enter и проанализировал поле Server. Как раз в нем говорилось, что версия mod_php была очень древней – 4.0.6. Впрочем, старый релиз еще не сулил об успешном взломе. Например, если сервер крутится на FreeBSD, mod_php вообще неуязвим. Но попытка не пытка, поэтому сетевой партизан натравил эксплоит на сервер. Строка запуска была следующей:
./7350fun www.nikita.ru /sms/privet.php
Бинарник требовал последний параметр в виде пути к полноценному скрипту. Неважно какому. Сценарий мог обрабатываться и perl-интерпретатором, главное, чтобы скрипт понимал входные опции. После запуска эксплоит начал формировать смертельный запрос, приводящий к переполнению буфера, и отправлять его на сервер. Надо сказать, что это довольно длительный процесс (время зависит от ширины канала между хакерским хостом и уязвимым сервером). Пока хакер ощупывал другие демоны, эксплоит блестяще справился с задачей, предоставив злоумышленнику шелл с правами nobody.
Вот незадача – хакер хотел привилегий рута, а получил какого-то nobody. Права нужно было как-то поднимать. Выполнив команду cat /etc/*release, взломщик узнал, что на машине крутится RedHat 7.3. Затем последовала команда uname -a, которая показала версию ядра. Кернел 2.4.24 (именно это ядрышко находилось в системе) был уязвим. Примерно год назад хакерская группа isec выпустила знаменитый эксплоит для ядерной функции ptrace. Сплойт работал как надо и даже не требовал наличия псевдотерминала (как это делали его предшественники). Но хакера поджидал неожиданный облом. На сервере не было программы wget, которая бы позволила нашему герою слить эксплоит на взломанный шелл. Впрочем, взломщик быстро решил эту проблему: залил файл прямо через консоль с помощью нехитрой команды cat > isec.c << EOF. После отправки текста с помощью сочетаний ctrl+c, ctrl+v хакер набрал магическое слово EOF и получил приглашение bash. Оставалось только скомпилировать и запустить эксплоит. К счастью нашего героя, на кернел не было наложено патчей, поэтому сетевой партизан без проблем получил рутовые права.
После взлома хакер должен позаботиться о собственной безопасности и вычистить все логи. В бинарных журналах наш герой не наследил, поэтому ему нужно было подтереть /var/log/messages и еще парочку текстовых логов, а также не забыть о WWW-журнале access_log (туда здорово наследил эксплоит от TESO). Но прежде чем манипулировать логами взломщик поставил на сервер руткит. В то время в узких хакерских кругах юзался комплект shv4. Он до сих пор приватный, поэтому ссылку я не дам :). Чтобы установить кит, достаточно выполнить команду «./setup пароль порт», и на указанном порту откроется поддельный демон sshd. Как ты догадался, пароль для соединения взломщик передал скрипту setup. Напоследок сетевой партизан написал unset HISTFILE, чтобы стереть лог команд, и покинул консоль.
Прицепившись на фейковый демон, хакер стер компрометирующие журналы, а также вычистил