Говорим о вирусах в эпоху пандемии.
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 — cвободной Unix-подобной системы, — разработано проектом GNU. Отличается от Unix тем, что является свободно распространяемым и не содержит кода ядра Unix. Операционные системы Unix должны соответствовать единой спецификации, основным семейством стандартов которой является POSIX. Этот набор документов описывает то, как программы взаимодействуют с операционной системой.
Где же уязвимость?
Чтобы лучше понять, откуда растут корни проблемы, отправимся в путешествие во времени. На дворе был 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, мнения в Интернете разнятся) Tuxissa, который делал примерно следующее: пользователю на почту (пользователь на Windows, где ж ему ещё быть) приходило письмо с важным сообщением о безопасности системы. Пользователь кликал на него (а Вы бы кликнули?), загружался вирус, затирая реестр, и в конце концов компьютер перезагружался, и на экране появлялся терминал Linux. Будем надеяться, что это была только первоапрельская шутка.
Зато богатым на всякое разное вредоносное ПО выдался 2001 год. Помимо всяких червей (Worms), ...
Что такое Worm?
Сетевой червь — разновидность вредоносной программы, самостоятельно распространяющейся через локальные и глобальные (Интернет) компьютерные сети.
...например, ZipWorm, который просто цеплял себя ко всем .zip-файлам в текущей директории, появились, наконец, и более опасные вирусы, как, например, Ramen. Тут остановимся чуть подробнее. Это один из первых вирусов, который был многокомпонентным, каждый компонент выполняла определённую функцию. Червь копирует себя в Linux-систему в виде файла ramen.tgz.
Червь получает доступ к Web-серверу, используя по крайней мере одну (из нескольких) известную уязвимость в системе безопасности. Как только получен root-доступ, червь извлекает и записывает себя на главный компьютер, используя исполняемые файлы в формате ELF и shell-скрипты, которые выполняют команды для поиска доступных серверов в интернете. Так червь реплицируется дальше.
В настоящий момент найти вирусы на Linux, которые базируются на взаимодействии с пользователем, достаточно сложно. Зато достаточно распространены DoS- и DDoS-атак. Одна из самых первых известных таких атак была совершена хакером MafiaBoy 7 февраля 2000. Он получил несанкционированный доступ к 50 сетям, установив на них своё программное обеспечение Sinkhole, чтобы зафлудить (заполнить большим количеством чего-либо, обычно ненужного) сайты-мишени плохим трафиком.
Следующее значимое событие, которое оказало влияние на развитие разработки вредоносного ПО, — операция Windigo. Речь идёт про 2014 год. Эта организация осуществляет сложную и крупномасштабную киберпреступную деятельность, осуществляемую тысячами серверов Linux. Windigo заставляет сервер генерировать спам, передавать вредоносные программы и перенаправлять ссылки.
Вот исследования компании ESET насчёт данной группировки, которая даже функционирует на данный момент:
На данный момент среди вредоносного программного обеспечения распространены бот-неты.
Бот-нет (Bot-net) — компьютерная сеть, состоящая из некоторого количества хостов с запущенными ботами — автономным программным обеспечением. Слово Botnet (ботнет) образовано от слов «robot» (робот) и «network» (сеть). Киберпреступники используют специальные троянские программы, чтобы обойти систему защиты компьютеров, получить контроль над ними и объединить их в единую сеть (ботнет), которой можно управлять удаленно.
Одним из самых известных ботнетов является Mirai (от яп. «будущее») Существования его стало возможным благодаря реализации уязвимости, которая заключалась в использовании одинакового, неизменного, установленного производителем пароля для доступа к учетной записи администратора на «умных» устройствах.
Не используйте, пожалуйста, на своих устройствах пароли по умолчанию.
Всего он использует 61 различную комбинацию логин-пароль для доступа к учетной записи методом перебора (Wikipedia).
Напоследок!
Если Вы дочитали мою первую статью, оставьте, пожалуйста, комментарий, покритикуйте, пожалуйста. Также очень рад всем предложениям по улучшению статьи.
Но даже на примере уже мною написанного этюда видно, насколько своеобразно развивалась разработка malware на Unix-подобных (в данном случае, Linux-системах, так как они более распространены и используются в процессе обучения) операционных системах.
DoMoVoY
«мне было 0 лет» это лишнее. Для unix я бы сказал, что вирусов нет (в моем понимании, вирусы проникают при взаимодействии с пользователем). А unix черви/зловреды проникаю чаще всего за счет 0day уязвимостей в OpenSource ПО. И скрываться им по большей мере нет необходимости, т.к. антивирусов на unix систмемы не ставят в надежде на регулярные обновления и firewall от внешних проникновений.
ALEXANDER_CHERNYAVSKIY Автор
Спасибо за комментарий, про «0 лет» уберу, переборщил действительно.