Говорим о вирусах в эпоху пандемии.
Disclamer: статья написана начинающим для начинающих! Если Вы уже сформировавшийся специалист, ничего нового Вы тут, скорее всего, не найдёте. Однако, если прочитаете, критика (желательно конструктивная) приветствуется.
Концептуальная составляющая
Большую часть рынка десктопных операционных систем занята семейством операционных систем Windows. Однако с развитием рынка мобильных устройств и различных технологий, подразумевающих клиент-серверное взаимодействие, на арену уже относительно давно вышли Unix-системы. Подробную статистику за последние 10 лет можно посмотреть, например, здесь.
Первые компьютерные вирусы... Здесь остановимся и, чтобы заранее не создавать напряжённой атмосферы, условимся вирусом называть везде, где это не оговорено особо (разумеется, для краткости), любое вредоносное программное обеспечение (по-английски «malware»), способной внедряться много куда: в код программ, в системные области памяти и т.п. и распространять там свои копии — реплицировать себя. То, что вредоносное программное обеспечение будет делать дальше, зависит от фантазии и цели его написавшего. Именно компьютерный вирус — маленький подкласс таких программ. К тому, какие они бывают, мы вернёмся позже.
Итак, форточку открыли, проветрили. Продолжаем.
Первые компьютерные вирусы появились ещё в середине прошлого века — ещё фон Нейман предложил первые способы написания своих программ. А теперь сориентируемся с временными рамками: первые Unix-подобные системы появлись в 1970(69) году в Bell Laboratories AT&T (для тех, кто любит переходить по ссылкам, как я, вот ссылка на краткую ленту времени развития).
… Unix was born in 1969 not 1974, and the account of its development makes a little-known and perhaps instructive story.
Source: The Evolution of the Unix Time-sharing System, an account of developments during 1968-1973 — Dennis M. Ritchie
... А первые вирусы под эти системы появились уже в 1984 году (как сказал однажды ведующий BBC Джереми Кларксон: «В 80-е время текло медленнее») в ходе экспериментов — вот она, человеская любознательность.
Итак, сформулируем основные концепты данной статьи, чтобы можно было быстро промотать к интересующему кусочку.
Что делает Unix-подобные системы (будем говорить в большинстве своём о Linux-системах) уязвимы к вирусам?
Какие виды вредоносного программного обеспечения существуют под Linux (обзорно, но с примерами)?
А можно ли как-то защититься от заражения?
Примечание: если Вы вдруг не понимаете, в чём разница Unix и Linux, прочтите перед дальнейшим данный этюд. Вкратце, Linux — один самых известных представителей Unix-like с ядром, как у Unix. Но «подобный» не значит «совпадающий»
Где же уязвимость?
Чтобы лучше понять, откуда растут корни проблемы, отправимся в путешествие во времени. На дворе был 1996 год, когда появился первый вирус Staog — именно вирус, — для ядра Linux, который написал VLAD, хакер из Quantum (они, кстати, чуть ранее написали вирус для Windows 95). Пока нам не так важно, как был написан этот вирус (на ассемблере), нам важно, как этот вирус заражал систему: вирус пытался получить привелегии суперпользователя.
А теперь притормозим, и разберёмся, кто такой суперпользователь, и зачем он нужен.
Типы пользователей Linux-систем
Кратко о системе разделения привелегий Linux.
Если не рассматривать сервис-юзеров (учётные записи служб), то существует 2 основных вида пользователей на ОС, базирующихся на Linux-ядре:
root-пользователи, суперпользователи — основной вид пользовательской записи в Linux, который позволяет заниматься администрированием системы и получить доступ к любой системной службе. Не может быть удалена.
обычный пользователь — такие пользователи имеют доступ только авторизированным ресурсам системы и могут выполнять ограниченное количество действий. Таких записей может быть создано и удалено любое количество.
Чтобы оказать влияние на систему, необходимо получить привелегии супер-пользователя. Пока пользователь не начнёт работу с root-привелегиями, система разграничения прав не даст вирусу возможности причинить системе какой-либо вред — без получения прав суперпользователя вредоносная деятельность вирусов сводится к слежению за действиями пользователя.
Возвращаясь к Staog, который использовал ошибки в программном обеспечении такие, как
ошибку переполнения буфера в команде mount;
ошибку переполненения буфера в программе dip;
уязвимость в интепритаторе perl, связанную c битом SUID,
меняя атрибуты чтения и записи некоторых файлов, делая их доступными для обычного пользователя.
Основные способы заражения
Вредоносное программное обеспечение может попасть на компьютер многими способами. Перечислим некоторые из них:
Бинарные файлы и исходные коды, полученные из сторонних репозиториев. Shell scripts (скипты оболочки), которые помогают установке программ на Linux-системы, часто запускаются, используя права суперпользователя, имеют доступ к файлам системы. Вместо актуальной версии может быть установлена библиотека-обманка.
Методы social engineering (подробнее можно посмотреть здесь) — некие техники, использующие слабости человеской психики, эксплуатируя ошибки, совершаемые полльзователем на этой почве, чтобы получить доступ к его данным, правам доступа или ценным данным. Самый простой и известный пример такой страшной техники — фишиг.
Также стоит заметить, что под Linux работают и вредоносное ПО Windows (здесь мы передаём «привет» Wine), правда живут они (по некоторым причинам: возможно, стандартные методы запуска программ в Windows в Linux не работают) до перезагрузки системы.
В наши дни разработчики программного обеспечения мониторят свои репозитории на наличие уязвимостей, жить становится безопаснее!
Основные этапы «заражений» Linux (ну, или запасные — мой субъективный взгляд)
Данный раздел базируется на материалах данного блога — спасибо, что он есть; там есть всё, что нужно, если Вы — программист: сниппеты кода и подробное их описание. Мы же здесь собрались с точки зрения истории, так что обсуждаем качественную сторону вопроса.
Вообще, вирусов, которых мы, обычные пользователи, представляем в жизни, на Linux уже почти не осталось.
Тот самый Staog, о котором шла речь выше, много компьютеров не заразил, отделавшись малым (коммпьютеров много под Linux тогда и не было), и был быстро обезврежен. Однако его влияение не стоит недооценивать, он сделал маленький шаг для вируса, но большой шаг для всего сообщества: показал, что ядро Linux способно быть поражено вирусом. И тут началось...
В 1997 году вышел Bliss — вирус, который прикреплялся к исполняемым файлам в системе и препятствовал их запуску. Опять же, для таких манёвров ему требовался root-доступ. Вроде бы ничего, а вот для Debian угроза от этого вируса присутствует до сих пор, однако она минимальна.
Для того чтобы не заразиться этим вирусом, достаточно просто
Не пользоваться root-правами. И это не шутка.
В 1999 году... ничего не произошло такого значимого, зато пошутили хорошо: вышел некий вирус (или это был hoax, мнения в Интернете разнятся, сам сказать не могу, мне тогда было 0 лет) Tuxissa, который делал примерно следующее: пользователю на почту (пользователь на Windows, где ж ему ещё быть) приходило письмо с важным сообщением о безопасности системы. Пользователь кликал на него (а Вы бы кликнули?), загружался вирус, затирая реестр, и в конце концов компьютер перезагружался, и на экране появлялся терминал Linux. Будем надеяться, что это была только первоапрельская шутка.
Зато богатым на всякое разное вредоносное ПО выдался 2001 год. Помимо всяких червей (Worms), ...
Что такое Worm?
Сетевой червь — разновидность вредоносной программы, самостоятельно распространяющейся через локальные и глобальные (Интернет) компьютерные сети.
...например, ZipWorm, который просто цеплял себя ко всем .zip-файлам в текущей директории, появились, наконец, и более опасные вирусы, как, например, Ramen. Тут остновимся чуть подробнее. Это один из первых вирусов, который был многокомпонентным, каждый компонент выполняла определённую функцию. Червь копирует себя в Linux-систему в виде файла ramen.tgz.
Червь получает доступ к Web-серверу, используя по крайней мере одну (из нескольких) известную уязвимость в системе безопасности. Как только получен root-доступ, червь извлекает и записывает себя на главный компьютер, используя исполняемые файлы в формате ELF и shell-скрипты, которые выполняют команды для поиска доступных серверов в интернете. Так червь реплицируется дальше.
Следующее значимое событие, которое оказало влияние на развитие разработки вредоносного ПО, — операция Windigo. Речь идёт про 2014 год. Эта организация осуществляет сложную и крупномасштабную киберпреступная деятельность, осуществляемую тысячами серверов Linux. Windigo заставляет сервер генерировать спам, передавать вредоносные программы и перенаправлять ссылки.
Вот исследования компании ESET насчёт данной группировки, которая даже функционирует на данный момент:
публикация раз;
публикация два;
На данный момент среди вредоносного программного обеспечения распространены ботнеты.
Ботнет — компьютерная сеть, состоящая из некоторого количества хостов с запущенными ботами — автономным программным обеспечением. Подробное изучение данных вирусов является задачей на будущее.
Напоследок!
Если Вы дочитали мою первую статью, оставьте, пожалуйста, комментарий, покритикуйте, пожалуйста. Также очень рад всем предложениям по улучшению статьи.
Но даже на примере уже мною написанного этюда видно, насколько своеобразно развивалась разработка malware на Unix-подобных (в данном случае, Linux-системах, так как они более распространены и используются в процессе обучения) операционных системах.