On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Вирусы и антивирусы

Вирус 'Worm.Linux.Ramen'

Первый известный червь, заражающий системы RedHat Linux. Червь был обнаружен в середине января 2001 года. Вирус заражает удаленные Linux-системы (RedHat Linux) при помощи проблемы буферного переполнения (buffer overflow). Эта "дыра" позволяет засылать исполняемый код на удаленный компьютер и выполнять его там без вмешательства администратора (пользователя). Используя эту дыру червь засылает на удаленные компьютеры короткий кусок своего кода, выполняет его там, докачивает свой основной код и стартует его.

Червь использует три различные дыры в RedHat Linux версий 6.2 и 7.0. По сообщениям корпорации RedHat Linux, эти дыры были обнаружены и закрыты еще летом-осенью 2000 года, т.е. более чем за 3 месяца до появления самого червя.

Недавно стало известно, что код червя также содержит процедуры, направленные на взлом FreeBSD и SuSE, однако эти процедуры не используются (к счастью).

Компоненты червя
Червь состоит из 26 компонент. Общий объем - около 300Kb. Половина из этих файлов является скрипт-программами на командном языке UNIX (".sh"-файлы), другая половина - выполняемые файлы Linux (ELF-файлы).

Основными управляющими компонентами являются скрипт-файлы. Они при необходимости вызывают прочие скрипт-компоненты или выполняют ELF-программы червя.

Список компонент выглядит следующим образом:

 asp        hackl.sh     randb62     start62.sh  wh.sh
 asp62      hackw.sh     randb7      start7.sh   wu62
 asp7       index.html   s62         synscan62
 bd62.sh    l62          s7          synscan7
 bd7.sh     l7           scan.sh     w62
 getip.sh   lh.sh        start.sh    w7

Компоненты с числом "62" исполняются под Linux RedHat 6.2, компоненты "7" - под RedHat 7.0. Компонента "wu62" не используется.

Распространение
При старте основной компоненты червя (файл "start.sh") поочередно вызываются прочие компоненты, которые определяют адреса атакуемых систем, посредством атаки "переполнение буфера" засылают туда "загрузчик" червя, который затем докачивает и запускает основной код червя. Червь активизируется и затем распространяется с только что зараженного компьютера далее на другие системы.

Червь передается с машины на машину в виде архива "tgz" (стандартный архив, применяемый в UNIX-системах) с именем "ramen.tgz". При заражении машины архив передается на нее, распаковывается и запускается главный файл червя.

Червь также добавляет команду запуска своего основого файла к файлу инициализации системы "/etc/rc.d/rc.sysinit". В результате, червь запускается каждый раз при последующих запусках зараженной системы.

Червь также предпринимает действия, закрывающие "дыру" в защите Linux RedHat. В результате, зараженная машина не может быть атакована повторно.

Подробнее
Для того, чтобы получить IP-адреса прочих машин для их последующих атак червь сканирует ресурсы глобальной сети, т.е. действует аналогично утилитам, типа "сниффер".
При атаках используются "дыры" в трех программах-демонах Linux RedHat: "statd", "lpd", "wu-ftp".
При засылке и исполнении кода червя на удаленной машине червь использует "переполнение буфера" кодом, который получает системные привелегии и запускает командный процессор, который затем выполняет следующие команды:

создает каталог "/usr/src/.poop", куда потом будет скачан архив червя "ramen.tgz"

экспортирует переменную "TERM=vt100", необходимую для запуска WWW-броузера "lynx"

запускает броузер "lynx" и с его помощью скачивает "ramen.tgz" с машины, с которой происходит заражение

распаковывает из архива "ramen.tgz" все компоненты червя

запускает основную компоненту: файл "start.sh"

Для отсылки архива "ramen.tgz" по запросу с заражаемого компьютера червь создает на зараженном компьютере дополнительный сервер с именем "asp".

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

ramen

Уничтожает файл "/etc/hosts.deny". Этот файл содержит список адресов машин, которым запрещен доступ к данной системе (в случае использования TCP-враппера).

При заражении очередной системы отправляет три письма с текстом "Eat Your Ramen!" на адреса:

the address of just infected machine 
gb31337@hotmail.com 
gb31337@yahoo.com 

Темой (Subject) письма является IP-адрес зараженной машины.

Linux.Bliss

Нерезидентные вирусы, заражающие выполняемые файлы Linux (разновидность UNIX). Написаны на GNU C. Имеют формат ELF и работают только под Linux. При запуске ищут выполняемые файлы и заражают их: сдвигают содержимое файла вниз, записывают себя в освободившееся место и добавляют в конец файла строку-идентификатор:

"Bliss.a":  infected by bliss: 00010002:000045e4
"Bliss.b":  infected by bliss: 00010004:000048ac

Судя по всему, первое шестнадцатеричное число является номером версии вируса, а второе - длина вируса в байтах (вирусы имеют длины 17892 и 18604 байт соответственно). При запуске зараженного файла "Bliss.a" ищет не более трех ELF-файлов и записывается в них. "Bliss.b" заражает больше файлов (точное число неизвестно). Если в текущем каталоге все файлы заражены, вирус сканирует другие каталоги системы, ищет выполняемые файлы и заражает их. После заражения "Bliss" возвращает управление программе-носителю. В Linux предусмотрена защита доступа, т.е. пользователь и программы имеют доступ к файлам и каталогам в зависимости от установленных привилегий. То же относится к вирусу: он заражает файлы только в тех каталогах, к которым имеет доступ запустивший вирус пользователь. Если же пользователь имеет системные привилегии, то вирус может распространиться по всему компьютеру. При работе вирус выводит "отладочные" сообщения:

already infected
skipping, infected with same vers or different type
replacing older version
replacing ourselves with newer version
infecting:  bytes
infect() returning success
been to   already!
traversing
our size is
copy() returning success
...


Литература по Linux