Об опасности вредоносноко ПО (вирусов, троянов и т.д.) знают все. Но эта опасность в основном свойственная Windows системам, и это для многих является причиной перехода на Linux. Некоторые ошибочно считают, что для Linux вообще не существует вирусов. Но так ли это на самом деле? Вредоносное ПО существует для любых операционных систем! О том, почему вирусов для Linux очень мало читайте в этой статье. Но для начала давайте рассмотрим историю и принципы работы linux-вирусов. Но если читать истории вам скучно, зайдите поиграться с вирусами на сайте Касперского.

История linux-вирусов

Первый вирус (червь) для UNIX - это Червь Морриса (хотя он был не самым-самым первым - были вири для Apple, Siemens и т.д.). Автор был двоечником-аспирантом в Корнельском университете. Допущеная им ошибка (малое время для переодичности перезаписи/размножения вируса) привела к эпидемии. А логические ошибки в коде привели к многократному инфицированию компьютеров, в результате вирус превратился в DoS-атаку, приводившую к "отключке" компов. Но мало того, что он лоханулся в коде, так этот придурок еще и во всем сознался добровольно! В результате суд приговорил его к трём годам условно, 10 тысячам долларов штрафа и 400 часам общественных работ. НЕ ПОВТОРЯЙТЕ ОШИБОК МОРРИСА! Первым же вирусом для Linux считается "Bliss", появившийся в конце 1996 года. Считать эту программу вирусом язык не поворачивается. Видимо, автор просто пошутил, да и решил показать саму возможность написания вируса для linux. Bliss написан на языке C и может быть перенесен на любую unix систему. Вреда этот домашний питомец не причиняет, а просто живет в системе. Мало кто знает, что Bliss обладает механизмом лечения системы от Bliss (если не поняли фразу, перечитайте её еще пару раз). Если запустить его с таким ключем

--bliss-uninfect-files-please

то он полностью удалится из системы. Вот такой оригинальный юмор у программистов. Если кому будет интересно, вот ссылка на Foolproof код вируса. Вторым официально зафиксированным вирусом стал Linux.Vit.4096. Это уже пример типового вируса. Прямого вреда он не несет, но плодиться может знатно. На его примере я расскажу о принципе работы вируса (см. ниже). На данный момент вирусы для linux создаются редко - обычно вредоносное linux ПО относится к группам backdoor и rootkit. Об опасности этих типов расскажу ниже. На данный момент известно околок полутора тысяч вирусов для unix-систем (по данным securelist.com), а в базах Kaspersky Internet Security - три с гаком миллиона вирусов (включая линуксовые полторы тысячи),большая часть из которых виндовые. Почуствуйте разницу!!!

Принцип работы linux-вирусов

Честно говоря, принцип работы windows- и linux-вирусов не отличается. Отличаются лишь структура файлов в самих ОС.

Исполняемые файлы в Linux имеют специальный формат - ELF (Executable and Linkable Format — формат исполняемых и компонуемых файлов). У каждого ELF-файла есть заголовок, в котором указан адрес входа, т.е. место, где начинается код самой программы. Таким образом загрузчик ELF interpretor узнает, что и в каком количестве загружать. "Классический" вирус записывает себя в место точки входа, чтобы, выполнившись, передать управление оригинальной программе, которую он поместил в другое место. Загрузчик запускает процесс, расположенный по адресу из заголовка, считая его нормальной программой, а вирус, перехвативший таким образом управление, сам является подобием ELF-файла, но сначала в нем записан исполняемый вредоносный код, а потом - подобие ELF-заголовка, чтобы передать управление оригиналу. Антивирусы, сканируя систему и зная "в лицо" многие вирусы, проверяют содержимое файла на наличие знакомого участка кода (тела вируса) и при необходимости удаляют его. Если не поняли на словах, смотрите картинку:

Именно так работает вирус Linux.Vit.4096. Из всего этого следует, что вирус должен иметь доступ на запись к инфицируемому файлу. Поэтому НИКОГДА не используйте root просто так. Вирус попавший в вашу систему может обладать лишь теми же правами, что и вы. Если вы работаете под пользователем, то вирус никогда не сможет нанести вред системе, но нанести вред вашим личным данным может. В общем случае нет структурных отличий между Windows-вирусами и Linux-вирусами. Принципиальная разница в построении системы допусков самих ОС. В систему Линукс вирус может попасть так же легко как и в Винду, но он не сможет "самореализоваться", поэтому вредоносным его можно назвать с большой натяжкой. Другая сложность для линуксового вируса заключается в том, все системы очень сильно отличаются друг от друга. Любая программа (и вирус тоже) использует какие-то системные функции (хороший пример - это зависимости пакетов в Linux: вы не сможете запустить пакет А, если он зависит от отсутсвующего пакета Б). Из этого следует, что вирусописатиель рассчитывает на наличие определенных библиотек (и обычно их количество исчесляется парой десятков). В результате написанный вирус реально сможет заработать на 1-2 машинах из тысячи, но и там будет сильно ограничен в своих правах. Другая сложность для вируса - это принцип логирования в Линукс. Если кто не знает, Линукс вообще и Ubuntu в частности записывает в логи все и вся (если покопаться, можно найти: какие сигареты ты курил за компьютером, сколько пива было в холодильнике и т.д. и т.п.), что позволяет легко и быстро обнаруживать вирусы, даже если они смогли просочиться. Но это классика... Подробнее о типах вирусов, способах их распространения, опасности и прочее в сети полно информации. О том, что вирусы представляют собой опасность (огромную для Windows и некоторую для других ОС) всем уже понятно. Теперь рассмотрим, что нам угрожает в Linux.

Опасность Linux-вирусов

Как я говорил выше, наибольшее распространение в Linux получили т.н. бэкдоры и руткиты.

Определения: backdoor - программа для получения удаленного доступа к взломаной машине (backdoor - от англ. задняя дверь). Обычно идет в паре с руткитом. rootkit - программа для "затирания" следов взлома и обеспечения работы бэкдора. Может состоять из комплекса программ. exploit - программа или ее часть, предназначенная для получения доступа к удаленному компьютеру или нарушения его работы. Эксплои использует какую-либо уязвимость в программном обеспечении для проникновения "внуть" и/или введения в систему бэкдоров и руткитов.

Эти программы обычно не имеют механизмов размножения (кроме случаев, когда эта вредоносная система сканирует компьютеры в сети, чтобы заразить и их, используя эксплойт, например, вирус Ramen). Но чаще всего злоумышленник (хакер) взламывает вашу систему, не используя "стандартный" эксплоит (если он не скрипткиди), и внедряет в систему бэкдор и руткит. Backdoor обеспечивает связь и удаленное управление компьютером жертвы. Часто их можно обнаружить по открытым портам, но не всегда, т.к. порты могут меняться, да и бэкдор может использовать какой-либо стандартный порт (например, http 80 порт). Пока его обнаружение не является проблемой, т.к. все действия попадают в логи ОС. Вот тут и выходит на сцену тов.Rootkit. Он затирает все "следы" пребывания в системе бэкдора и самого себя. Наибольшую опасность представляют "ядерные" руткиты. Они могут быть реализованы модулем ядра или вносить изменения в память ядра. Но в большинстве случаев руткиты лишь подменяют какие-нибудь системные утилиты и меняют настройки безопасности, и то и другое легко обнаруживается антируткитами (например, rkhunter) или блокируется средствами превентивной защиты (SELinux и AppArmor).

Коротко об AppArmor: AppArmor -программный инструмент упреждающей защиты, основанный на профилях безопасности, которые определяют, к каким системным ресурсам и с какими привилегиями может получить доступ то или иное приложение. в AppArmor включён набор стандартных профилей, а также инструменты статического анализа и инструменты, основанные на обучении, позволяющее ускорить и упростить построение новых профилей. По умолчанию входит в состав дистрибутивов Ubuntu с версии 7.10, но не все профили включены по умолчанию.

По сути руткитами являются почти все системы защиты от копирования и эмуляторы CD/DVD и других устройств. На уровне пользователя руткиты не представляют опасности (обычно), но могут терпеливо сидеть в системе, ожидая, когда вы дадите инфицированной программе права суперпользователя.

Некоторые известные Linux-вирусы

  • Lion Worm поражает Linux-системы с запущенным DNS-сервером BIND версий 8.2, 8.2-P1, 8.2.1, 8.2.2-Px, и всех 8.2.3-beta.
  • Linux.Diesel Virus достаточно безобидный вирус, очень похож на следующий в этом списке Linux.Vit.
  • Linux.Vit.4096. см. описание выше в данном посте.
  • Ramen virus поражает Red Hat Linux 6.2, используя уязвимости в wu-ftpd и rpc.statd, и Red Hat Linux 7.0., используя уязвимости lpd.
  • Winux Virus — кроссплатформенный концепт-вирус для Windows и Linux. В "дикой" природе пока не замечен.
  • Virus.Linux.RST - опасный вирус, который открывает удаленный доступ к локальному компьютеру. Успокаивает лишь то, что вирус опасен при запуске лишь под root`ом.

Мой опыт вирописательства

Под Linux я вирусы никогда не писал. Когда начал увлекаться open-source OS, все порывы писать вирысы уже прошли. Как любой нормальный программер я увлекся изучение вирусов, обучаясь в университете по спечиальности 2201 "Вычислительные машины, комлексы, системы и сети". Писать действительно деструктивные творения - это не мой метод (я ж добрый до омерзения), поэтому я подошел к вопросу творчески. Будучи человеком молодым и сексуально озабоченным, я и вирус решил сделать таким же. Так появился на свет разнополый вирус. Между прочим, в истории я нашел лишь один случай разнополости компьютерных вирусов - это вирус RMNS, но тогда я об этом не знал. Как выяснилось позже, мой вариант был реализован лучше. Самку я назвал Jane, а самца - не помню как.

Общие принципы:

Вирус поражает исполняемые файлы (только .exe) Вирус не размножается самостоятельно (делением), но может перемещаеться из файла в файл. Вирус не является резидентным, а лишь выполняет свои функции при запуске инфицированного exe-файла. По истечении таймера вирус возвращается в исходный файл, если не нашел новый свободный.

Функции самца:

  1. Самец - малая версия вируса, не имеющая функции репликации вообще.
  2. Самец, сканируя файлы, может найти и соответственно выполнить:
    • Чистый файл - переместиться в него или пойти дальше в зависимости от ГСЧ;
    • Файл инфицирован другим самцом - пройти дальше (механизм борьбы между самцами я поленился создавать);
    • Файл инфицирован самкой - СЕКС! С вероятностью 50% самка беременеет, т.е. самец вносит изменение в код самки;
    • Файл инфицирован беременной самкой - пройти дальше.

Функции самки:

  1. Самка является носителем полного кода (и мужкого, и женского);
  2. При запуске самка проверяет состояние беременности: Беременна - проверяется срок, если срок больше 9 дней, то с вероятностью 80% рожает (п.4); Не беременна - идет "гулять", т.е. сканировать файлы.
  3. Самка, сканируя файлы, может найти и соответственно выполнить:
    • Чистый файл - переместиться в него или пойти дальше в зависимости от ГСЧ;
    • Файл инфицирован самкой - пойти дальше;
    • Файл инфицирован самцом - с вероятностью 10% самка беременеет, внося изменения в свое тело.
  4. Роды - самка может родить до 3х тел (очень низкая вероятность, примерно 1%). С гендерной вероятностью 50/50 для каждого ребенка самка либо создает свою полную небеременную копию (самка) или сокращенный вариант кода (самец) в произвольный файл.

Где я нарыл эти цифры вероятностей, даже не спрашивайте! Все эти вероятности были введены исключительно для ограничения размножения (иначе за 1-2 часа активной работы они инфицировали вообще все exe-шники). С такими ограничениями популяция вируса за неделю выросла с 2х до примерно 70-80 особей. Конечно, я сразу написал и антивирус.... но случайно удалил его вместе с иходниками при переустановке гребаной Windows 98. А в системе уже жило до 5 разных билдов (т.е. разных размеров и сигнатур). В порыве мании преследования я удалил и исходники випуса, от греха подальше (хоть и не было тогда отдела "К"). Было еще много идей по развитию этого вируса и по написанию новых, но прошло время и я оказался на другой стороне баррикад. Кстати, этот вирус был написан на Pascal с использованием asm вставок и легкой HEX-правкой скомпиллированного кода.

Рекомендации по повышению антивирусной безопасности в Ubuntu

  1. Сведите работу с правами суперпользователя к минимуму - это самая важная рекомендация!!!
  2. Настройте брандмауэр (или хотя бы включите то, что есть в Ubuntu по умолчанию).
  3. Не ленитесь настраивать профили для AppArmor - это в первый раз долго, потом можно переносить настройки на новую систему.
  4. Если в сети есть Windows машина, установите антивирус. Лично меня устраивает ClamAV (сайт проекта), который есть в хранилище.
  5. Защитите GRUB паролем, чтобы злыдень не мог установить руткит, дорвавшись до вашего компьютера.
  6. Мойте руки перед едой.
  7. Если предыдущие советы вам не помогли, пользуйтесь презервативами - вам не стоит размножаться!

Ссылки по теме Linux-вирусы: Вредоносные программы под Linux в Википедии *nix malware — итоги 2005 и тенденции развития

PS: Хоть и не люблю я винду, но знаю, что оформление windows 7 скачать бесплатно можно по ссылке.

Популярность: 6%

Поделиться в соц. сетях

Опубликовать в Одноклассники
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Яндекс
Опубликовать в Google Buzz
Опубликовать в Google Plus