Классификация вредоносного ПО
В наше время даже человек, не связанный с компьютерами, приблизительно знает, что такое компьютерный вирус. Однако не каждый знает, что компьютерные вирусы — только часть вредоносного программного обеспечения. На самом деле не каждая программа, которая может негативно повлиять на работу компьютера, является вирусом. Именно на этом я и хотел бы остановиться в данной статье. Мы займемся тем, что разделим вредоносное ПО как таковое на классы и виды.
Как правило у каждой антивирусной корпорации есть своя классификация согласно, которой эксперты ее лаборатории определяют принадлежность нового вредоносного кода. Я думаю, многие замечали, что у разнах корпораций один и тот же код будет иметь разные названия. Именно разность классификаций тому виной. Но не будем ходить вокруг да около, а приступим сразу к делу. Сегодня мы воспользуемся классификацией лаборатории Евгения Касперского (думаю, объяснять, кто это такой, не надо). Вредоносное программное обеспечение делится на четыре большие группы, которые, в свою очередь, разделяются на классы. Итак, начнем по порядку.
Сетевые черви
В последнее время сетевые черви, пожалуй, потеряли свою популярность среди вирусописателей. Да и можно ли вообще активистов данного «движения» назвать настоящими создателями вирусов? Я думаю, что нет. Большинство этих людей — школьники или студенты, к которым в руки тем или иным путем попадают конструкторы троянских программ. А случаи появления по-настоящему достойных экземпляров червей, которые действительно исправно выполняли бы свои вредоносные функции, сведены к минимуму. Взять хотя бы бюллетень безопасности Лаборатории Касперского за первое полугодие 2006 г. (см. рис. 1). Из диаграммы хорошо видно, какая из групп вредоносного ПО преобладает. Ну да ладно, речь идет о сетевых червях. Сетевой червь — это вредоносный программный код, распространяющий свои копии по локальным или/и глобальным сетям с целью проникновения на компьютер-жертву, запуска своей копии на этом компьютере и дальнейшего распространения. Для распространения черви используют электронную почту, isq, p2p- и irc-сети, lan, сети обмена данными между мобильными устройствами. Большинство червей распространяются в файлах (вложение в письмо, ссылка на файл и т.д.). Но существуют и черви, которые распространяются в виде сетевых пакетов. Такие разновидности проникают непосредственно в память компьютера и сразу начинают действовать резидентно. Для проникновения на компьютер-жертву используются несколько путей: самостоятельный (пакетные черви), пользовательский (социальный инжиниринг), а также различные бреши в системах безопасности операционной системы и приложений. Некоторые черви обладают свойствами других типов вредоносного программного обеспечения (чаще всего это троянские программы). Теперь, пожалуй, поподробней на классах сетевых червей:
Почтовые черви (email-worm). Данный класс сетевых червей использует для распространения электронную почту. При этом червь отправляет жертве письмо с прикрепленным телом кода либо в письме присутствует ссылка на ресурс (естественно, зараженный). Для отправки сообщений червями используются следующие способы: прямое подключение к smtp-серверу, используя встроенную в код червя почтовую библиотеку; использование сервисов ms outlook; использование функций windows mapi.
Для поиска адресов жертв чаще всего используется адресная книга ms outlook, но может использоваться также адресная база wab. Червь может просканировать файлы, хранящиеся на дисках, и выделить из них строки, относящиеся к адресам электронной почты. Черви могут отсылать свои копии по всем адресам, обнаруженным в почтовом ящике (некоторые обладают способностью отвечать на письма в ящике). Встречаются экземпляры, которые могут комбинировать способы.
Черви, использующие интернет-пейджеры (im-worm). Известные компьютерные черви данного типа используют единственный способ распространения — рассылку на обнаруженные контакты (из контакт-листа) сообщений, содержащих url на файл, расположенный на каком-либо веб- сервере. Данный прием практически полностью повторяет аналогичный способ рассылки, использующийся почтовыми червями.
Черви в irc-каналах (irc-worm). Черви этого класса используют два вида распространения: посылание пользователю url-ссылки на файл-тело; отсылку пользователю файла (при этом пользователь должен подтвердить прием).
Черви для файлообменных сетей (p2p-worm). Механизм работы большинства подобных червей достаточно прост: для внедрения в p2p-сеть червю достаточно скопировать себя в каталог обмена файлами, который обычно расположен на локальной машине. Всю остальную работу по его распространению p2p-сеть берет на себя — при поиске файлов в сети она сообщит удаленным пользователям о данном файле и предоставит весь необходимый сервис для его скачивания с зараженного компьютера.
Существуют более сложные p2p-черви, которые имитируют сетевой протокол конкретной файлообменной системы и положительно отвечают на поисковые запросы (при этом червь предлагает для скачивания свою копию).
Прочие сетевые черви (net-worm). Существуют прочие способы заражения удаленных компьютеров — например: копирование червя на сетевые ресурсы; проникновение червя на компьютер через уязвимости в операционных системах и приложениях; проникновение в сетевые ресурсы публичного использования; паразитирование на других вредоносных программах.
Используя первый способ, червь ищет в сети машины с ресурсами, открытыми на запись, и копирует. При этом он может случайным образом находить компьютеры и пытаться открыть доступ к ресурсам. Для проникновения вторым способом червь ищет компьютеры с установленным программным обеспечением, в котором имеются критические уязвимости. Таким образом, червь отсылает специально сформированный пакет (запрос), и часть червя проникает на компьютер, после чего загружает полный файл-тело и запускает на исполнение.
Классические вирусы
Когда профессионал говорит «вирус», он имеет в виду именно этот тип вредоносных программ. Вирусы, в отличие от червей, не пользуются сетевыми сервисами для распространения своих копий. Компьютерный вирус, как правило, попадает на компьютер-жертву по причинам, не зависящим от функционала кода. Обычно виноват пользователь, который не проверяет антивирусной программой информацию, попадающую на компьютер, в результате чего, собственно, и происходит заражение. Способов «подцепить» классический вирус довольно много:
- внешние носители информации;
- интернет ресурсы;
- файлы, распространяющиеся по сети (lan, internet).
Классический компьютерный вирус может иметь свойства других типов вредоносного ПО (например, троянскую процедуру удаления информации на диске). Вирусы делятся на классы по среде обитания, а эти классы, в свою очередь, делятся на подклассы по способу заражения. Итак, по среде обитания вирусы делятся на файловые, загрузочные, макро- и скриптовые. Файловые вирусы для заражения пользуются файловой системой ОС Они различными способами внедряются в исполняемые файлы, создают файлы-двойники и т.д.
Перезаписывающие вирусы (overwriting). Самый распространенный способ заражения. Вирус переписывает код программы (заменяет его своим), после чего, естественно, файл перестает работать. Файл, зараженный данным способом, восстановлению не подлежит. Перезаписывающий вирус быстро обнаруживает себя, так как зараженная система (или программа) перестает функционировать.
Паразитические вирусы (parasitic). К таковым относятся все вирусы, которые изменяют содержимое файла, но при этом оставляют его работоспособным. Основными типами таких вирусов являются вирусы, записывающиеся в начало файлов (prepending), в конец файлов (appending) и в середину файлов (inserting). В свою очередь, внедрение вирусов в середину файлов происходит различными методами — путем переноса части файла в его конец или копирования своего кода в заведомо неиспользуемые данные файла (cavity-вирусы). При записывании кода в начало файла вирус может воспользоваться двумя способами. Первый — это перенос начала файла в конец и дописывание собственного кода в освободившееся место. Второй — дописывание кода файла к своему коду. В обоих случаях при запуске файла управление получает вирус, а потом во избежание подозрений управление передается обратно файлу-жертве. При внедрении кода вируса в конец файла используется способ дописывания. Код вируса дописывается в конец файла-жертвы, при этом головная часть файла изменяется таким образом, что управление, опять же, первым получает вирус, ну, а потом файл. При внедрении в середину файла вирус может воспользоваться несколькими вариантами. Первый — перенос части файла, вместо которой предполагается расположить код вируса, в конец. Второй — так называемое «раздвижение» кода файла. Третий — замещение неисполняемых областей файла кодом вируса. Но каким бы из способов вирус ни воспользовался, ему опять придется изменять головную часть файла-жертвы. Изменение головной части кода файла происходит двумя способами. Наиболее распространен способ, при котором вирус точку входа, «перенося» ее на принадлежащий ему участок. Но некоторые могут просто добавить команду передачи управления — таким образом, файл стартует с оригинальной точки входа, а потом (по дописанной команде) передает управление коду вируса.
Вирусы-компаньоны (companion). Данный способ подразумевает создание файла-двойника, при этом код файла-жертвы не изменяется. Обычно вирус изменяет расширение файла (например, с .exe на .com), потом создает свою копию с именем, идентичным имени файла-жертвы, и дает ему расширение, тоже идентичное. Ничего не подозревающий пользователь запускает любимую программу и не подозревает, что это вирус. Вирус, в свою очередь, заражает еще несколько файлов и запускает программу, затребованную пользователем.
Существуют и еще способы заражения, но они настолько редко встречаются, что мы остановимся только на их перечислении: вирусы, заражающие объектные модули (obj); вирусы, заражающие библиотеки компиляторов (lib); вирусы, заражающие исходные тексты программ. Известные на текущий момент загрузочные вирусы заражают загрузочный сектор гибкого диска и boot-сектор или master boot record (mbr) винчестера. Принцип действия загрузочных вирусов основан на алгоритмах запуска операционной системы при включении или перезагрузке компьютера — после необходимых тестов установленного оборудования (памяти, дисков и т.д.) программа системной загрузки считывает первый физический сектор загрузочного диска (a:, c: или cd-rom в зависимости от параметров, установленных в bios setup) и передает на него управление. При заражении дисков загрузочные вирусы «подставляют» свой код вместо какой-либо программы, получающей управление при загрузке системы. Принцип заражения, таким образом, одинаков во всех вышеописанных способах: вирус «заставляет» систему при ее перезапуске считать в память и отдать управление не оригинальному коду загрузчика, а коду вируса. Заражение дискет производится единственным известным способом — вирус записывает свой код вместо оригинального кода boot-сектора дискеты. Винчестер заражается тремя возможными способами: вирус записывается либо вместо кода mbr, либо вместо кода boot-сектора загрузочного диска (обычно диска c, либо модифицирует адрес активного boot-сектора в таблице разделов диска (disk partition table), расположенной в mbr винчестера. При инфицировании диска вирус в большинстве случаев переносит оригинальный boot-сектор (или mbr) в какой-либо другой сектор диска (например, в первый свободный). Если длина вируса больше длины сектора, то в заражаемый сектор помещается первая часть вируса, остальные части размещаются в других секторах (например, в первых свободных). Макровирусы в основном заражают документы ms office. При этом вирус добавляет свой код в область макросов документа. Расположение кода вируса в документах разных приложений вышеописанного пакета разное, поэтому представить его можно только лишь схематично (см. рис. 2). Скрипт-вирусы — это вирусы, написанные на скрипт-языках (vbs, js, bat, php и т.д.). Заражают они файлы довольно большого диапазона расширений: от .exe до .html.
Троянские программы
Троянская программа — это вредоносный код, совершающий не санкционированные пользователем действия (например, кража информации, уничтожение или модификация информации, использование ресурсов машины в злонамеренных целях и т.д.). Троянские программы являются наиболее распространенными в киберсреде, так как существует множество конструкторов, позволяющих даже неопытному пользователю создавать собственные программы данного типа.
Троянские утилиты удаленного администрирования (backdoor). Троянские программы этого класса являются утилитами удаленного администрирования (управления) компьютеров. В общем, они очень похожи на «легальные» утилиты того же направления. Единственное, что определяет их как вредоносные программы, — это их действия без ведома пользователя. Данная программа при установке и\или загрузке не выдает никаких уведомлений. Таким образом, обладатель конкретной копии данного ПО может без ведома пользователя осуществлять операции разного рода (от выключения компьютера до манипуляций с файлами). Таким образом, троянские программы данного класса являются одними из наиболее опасных. Некоторые backdoor’ы, также могут распространяться по сети, как сетевые черви, но не самостоятельно, а после соответствующей команды владельца копии.
Похитители паролей (trojan-psw). Эти занимаются тем, что воруют пароли. Проникнув на компьютер и инсталлировавшись, троянец сразу приступает к поиску файлов, содержащих соответствующую информацию. Кража паролей — не основная спецификация программ этого класса — они также могут красть информацию о системе, файлы, номера счетов, коды активации другого ПО и т.д.
Интернет-кликеры (trojan-clicker). Данное семейство троянских программ занимается организацией несанкционированных обращений к интернет- ресурсам путем отправления команд интернет-браузерам или подмены системных адресов ресурсов. Злоумышленники используют данные программы для следующих целей: увеличение посещаемости каких-либо сайтов (с целью увеличения количества показов рекламы); организация атаки на сервис; привлечение потенциальных жертв для заражения вредоносным программным обеспечением.
Загрузчики (trojan-downloader). Эти трояны занимаются несанкционированной загрузкой программного обеспечения (вредоносного) на компьютер ничего не подозревающего пользователя. После загрузки программа либо инсталлируется, либо записывается трояном в автозагрузку (это в зависимости от возможностей операционной системы).
Установщики (trojan-dropper). Эти устанавливают на компьютер-жертву программы — как правило вредоносные. Анатомия троянцев этого класса следующая: основной код, файлы. Основной код собственно и является троянцем. Файлы — это программа/ы, которая/ые он должен установить. Троянец записывает ее/их в каталог (обычно временных файлов) и устанавливает. Установка происходит либо незаметно для пользователя, либо с выбросом сообщения об ошибке.
Троянские прокси-серверы (trojan-proxy). Семейство троянских программ, скрытно осуществляющих доступ к различным интернет-ресурсам — обычно с целью рассылки спама.
Шпионские программы (trojan-spy). Данные трояны осуществляют шпионаж за пользователем: записывание информации, набранной с клавиатуры, снимки экрана и т.д. В данной категории также присутствуют «многоцелевые» троянские программы — например, те из них, которые одновременно шпионят за пользователем и предоставляют proxy-сервис удаленному злоумышленнику.
Сокрытие присутствия в операционной системе (rootkit). Понятие rootkit пришло к нам из unix. Первоначально это понятие использовалось для обозначения набора инструментов, применяемых для получения прав root. Так как инструменты типа rootkit на сегодняшний день «прижились» и на других ОС (в том числе на windows), следует признать подобное определение rootkit морально устаревшим и не отвечающим реальному положению дел. Таким образом, rootkit — программный код или техника, направленная на сокрытие присутствия в системе заданных объектов (процессов, файлов, ключей реестра и т.д.). Для поведения rootkit в классификации «Лаборатории Касперского» действуют правила поглощения: rootkit — самое младшее поведение среди вредоносных программ. То есть, если rootkit-программа имеет троянскую составляющую, то она детектируется как trojan.
Архивные бомбы (arcbomb). Вот это интересная штука... дело в том, что такого рода архив при попытке архиватора его обработать вызывает «нестандартные» действия последнего. Компьютер может просто зависнуть или его работа существенно замедлится. Также жесткий диск может заполниться бальшим колличесвом «пустой» информации. Встречаются три типа подобных «бомб»: некорректный заголовок архива, повторяющиеся данные и одинаковые файлы в архиве. Некорректный заголовок архива или испорченные данные в архиве могут привести к сбою в работе конкретного архиватора или алгоритма разархивирования при разборе содержимого архива. Значительных размеров файл, содержащий повторяющиеся данные, позволяет заархивировать такой файл в архив небольшого размера (например, 5 Гб данных упаковываются в 200 Кб rar- или в 480 Кб zip-архив). Огромное количество одинаковых файлов в архиве также практически не сказывается на размере архива при использовании специальных методов (например, существуют приемы упаковки 10100 одинаковых файлов в 30 Кб rar- или 230 Кб zip-архив).
Оповещение об атаке, увенчавшейся успехом (trojan-notifier). Троянцы данного типа предназначены для сообщения своему «хозяину» о зараженном компьютере. При этом на адрес «хозяина» отправляется информация о компьютере — например, его ip-адрес, номер открытого порта, адрес электронной почты и т.п. Отсылка осуществляется различными способами: электронным письмом, специально оформленным обращением к веб-странице «хозяина», icq-сообщением. Данные троянские программы используются в многокомпонентных троянских наборах для оповещения «хозяина» об успешной инсталляции троянских компонент в атакуемую систему.
Прочие вредоносные программы
К прочим вредоносным относятся разнообразные программы, не представляющие угрозы непосредственно компьютеру, на котором исполняются, а разработанные для создания других вирусов или троянских программ, организации dos-атак на удаленные серверы, взлома других компьютеров и т.п. . Сетевые атаки (dos, ddos). Эти «утилиты» используются нарушителями для организации атак на отказ в обслуживании. При выполнении атаки в адрес жертвы отправляется большое количество пакетов, в результате оборудование не справляется, и наступает так называемый «висюк». Программы данного класса бывают двух видов: первый — атака производится с компьютера злоумышленника по его приказу; второй — осуществляется распределительная атака путем заражения компьютеров (такой компьютер называется компьютером-зомби), пользователь работает в сети и при этом не подозревает, что его компьютер — учасник распределительной атаки, направленной на отказ в обслуживании.
Взломщики удаленных компьютеров (exploit, hacktool). Эти программы используются хакерами для удаленного взлома компьютеров с целью дальнейшего управления ими. При этом эксплойты направлены непосредственно на работу с уязвимостями.
«Замусоривание» сети (flood). Забивание интернет-каналов бесполезной информацией.
Конструкторы (constructor). Софт, использующийся, как правило, малограмотными людьми, т.к. позволяют наиболее просто создавать троянские программы и т.д. Люди знающие обычно пишут свои).
Фатальные сетевые атаки (nuker). Утилиты, отправляющие специально оформленные запросы на атакуемые компьютеры в сети, в результате чего атакуемая система прекращает работу. Используют уязвимости в программном обеспечении и операционных системах, в результате чего сетевой запрос специального вида вызывает критическую ошибку в атакуемом приложении.
Введение пользователя в заблуждение (bad-joke, hoax). Это, в общем-то, и вредоносной программой назвать нельзя. Это программка, которая заставляет пользователя испытать страх, эквивалентный тому, который он ощущает при виде надписи типа: «warning! system has bin delete», ну, или что-то в этом роде.
Шифровальщики вредоносного ПО (filecryptor, polycryptor). Это хакерские утилиты, которые занимаются тем, что скрывают другое вредоносное ПО от антивирусных программ.
«Полиморфы» (polyengine). Этих вирусами можно назвать тоже с натяжкой, ведь, в принципе, в их коде не заложены действия на размножение, порчу информации и т.д. Но все же...
Вот так и выглядит современная классификация вредоносного программного обеспечения. Достаточно далеко от «стандартного» понимания того, что такое компьютерный вирус. Но теперь, видя в тревожном сообщении антивируса название обнаруженного кода, вы сможете осмысленно его прочитать и понять, что же этот конкретный код мог сделать с вашей системой или информацией. И еще: не думайте, что вредоносная программа — обязательно ужасно опасная вещь, ведь среди них встречаются и вполне безобидные.