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 copy() returning failure disinfecting: not infected couldn't malloc bytes, skipping couldn't read() all bytes read bytes happy_commit() failed, skipping couldn't write() all bytes, hope you had backups! successfully (i hope) disinfected Debugging is ON Disinfecting files... using infection log:



Вирус также содержит строки:


dedicated to rkd /tmp/.bliss asmlinkage int sys_umask(int mask) mask&023000 return if(mask&023000) {{current->uid = current->euid = current->suid = current->fsuid = 0; return old&023000} } bliss.%s.%d -l rsh%s%s %s 'cat>%s;chmod 777 %s;%s;rm -f %s' doing popen("%s" /.rhosts r %s %s .rhosts: %s, %s localhost doing do_worm_stuff() /etc/hosts.equiv hosts.equiv: %s HOME --bliss- uninfect-files-please disinfect-files-please version %d.%d.%d (%.8x) Compiled on Sep 28 1996 at 22:24:03 Written by electric eel. dont-run-original just-run-bliss dont-run-virus dont-run-bliss just-run-original exec infect-file unsupported version help help? hah! read the source! /proc/loadavg %d. loadav is %d bliss was run %d sex ago, rep_wait=%d /tmp/.bliss-tmp.%d execv /bin PATH : /usr/spool/news /var/spool/news wow