RuCore.NET

Разновидности программных вирусов





КОПИПАСТА

О компьютерных вирусах сегодня знают безусловно все. Средства массовой информации регулярно пугают нас подробностями очередной вирусной эпидемии, рассказами о все более страшных и изощренных компьютерных червях и зловещих легионах вирусописателей. Которые, к тому же, теперь еще и со спамерами объединились…
Однако, как порой неожиданно выясняется, далеко не все знают, что же, по сути, представляют собой компьютерные вирусы и откуда вообще эта напасть на наши головы свалилась. Поэтому цель этой статьи — попытаться объяснить общими словами и понятиями даже не что такое компьютерные вирусы и черви, а почему их существование вообще стало возможным. Какие особенности компьютерных программ делают их уязвимыми перед «виртуальной заразой» и в чем причина столь масштабных эпидемий.

Ни одна программа не идеальна — ведь их пишут живые люди. В любой обязательно находятся какие-либо ошибки — «баги» и «глюки». И чем сложнее программа (пакет программ), тем больше ошибок в ней неизбежно присутствует. А ведь любая ошибка — брешь, «ворота» для хакеров, компьютерных вирусов и червей.



По большому счету, любая брешь в программах может быть отнесена к одному из трех следующих типов.

Тип 1. У компьютерных вирусологов есть выражение: «Скальпель, забытый в животе». Дело в том, что любой программист в ходе написания и последующей отладки программы использует множество вспомогательных функций, позволяющих, например, смотреть или менять значения переменных, передавать управление в программе в обход тех или иных фрагментов кода и так далее. Конечно же, в конце, когда программа «вылизывается» и выпускается конечный продукт, все отладочные средства должны убираться. Но программисты, как мы уже сказали, тоже люди, и вполне могут забыть о той или иной функции, которая использовалась лишь временно и использовалась сугубо во вспомогательных целях. Если злоумышленник обнаружит соответствующий кусок кода, то вполне сможет использовать его в собственных целях.

Другой (к сожалению, нередкий) вариант — это когда программист вполне сознательно оставляет в своих программах лазейки (функции), позволяющие выполнять различные «нештатные» операции. Зачем это делается — вопрос отдельный. Кто-то из добрых побуждений (помочь системным администраторам), кто-то из злых (обрести «власть» над будущими пользователями программы). К этому типу брешей относится, например, известная брешь в MS SQL Server, которая позволяет пользователю с определенным логином получить права администратора на сервере.

Тип 2. Этот тип уязвимостей можно кратко охарактеризовать известной фразой: «Хотели как лучше, а получилось как всегда». Бреши этого типа обычно бывают связаны со специфическими возможностями программ, которые их создатели планировали использовать исключительно на благо пользователей. Но в результате фантазия хакеров оказывается более развитой, чем фантазия разработчиков, и созданные с благими намерениями функциональные возможности оборачиваются против пользователей. Типичный пример — появление т.н. макровирусов. Разработчики «революционной» версии MS Office хотели сделать благое дело — встроить в программный пакет мощную систему программирования, удобное средство для автоматизации множества задач. Что из этого вышло, известно, к сожалению, всем…

Тип 3. К этому типу относятся весьма распространенные уязвимости особого типа — возможности нестандартных манипуляций с программой. Программист, пишущий программу, изначально рассчитывает на то, что пользователь будет работать с ней так-то и никак иначе. Хакер же первым делом начинает думать: а что с программой еще можно такого-этакого сделать? А что будет, если сделать то-то или то-то?

В результате значительное число брешей используется следующим образом: злоумышленник подбирает такие наборы исходных данных для программы (или производит другие манипуляции с программой), которые даже гипотетически не предусматривались авторами программы. В этом случае не помогает и предусмотренная разработчиками «защита от дурака». Классические примеры брешей третьего типа основаны на так называемом «переполнении стека». Суть его в следующем. Как правило, в исполняемых файлах сначала располагается секция данных (именно в ней и хранятся значения вводимых исходных данных), а затем — сам исполняемый код программы. Если в программе не предусмотрена специальная защита, злоумышленник может таким образом подобрать исходные данные, чтобы они превысили допустимый размер и «вторглись» в секцию программного кода. Если при этом данные подобраны таким образом, чтобы фрагмент, попавший в секцию кода, был «осмысленным», то злоумышленник может заставить атакуемый компьютер выполнять свои команды. Описанный прием атаки широко известен, но разработчики программного обеспечения не учитывают его с завидным постоянством.

Наиболее известный, ставший классическим, пример использования процедуры переполнения стека — эпидемия вируса Морриса в 1998 году, которая (по самым скромным оценкам) стоила человечеству более 150.000.000 долларов.

Другой вариант использования бреши этого типа — такие манипуляции со вполне корректными исходными данными, которые не могли предвидеть программисты. В качестве примера можно привести способ взлома популярного SQL-сервера MySQL, при котором пользователь, имеющий право администрировать какую-нибудь базу данных на сервере, при определенных условиях мог получить права администратора сервера, переопределив пароль администратора. К этой же категории относится брешь в Microsoft Internet Information Server (IIS). С этой брешью была связана одна из самых громких вирусных эпидемий — эпидемия червя «CodeRed». Принципиальной особенностью «CodeRed» является то, что в процессе работы он не создает и не использует никаких временных или постоянных файлов. Данный червь уникален: он существует либо в системной памяти зараженных компьютеров, либо в виде TCP/IP-пакета при пересылке на удаленные машины. Подобная «бестелесность» представляет серьезную проблему для защиты серверов, поскольку требует установки специальных антивирусных модулей на межсетевые экраны.

Но что бы ни говорили, а все же самая уязвимая часть компьютера — это пользователь. Элементарная человеческая лень препятствует установке и/или обновлению антивирусов, файрволлов и прочего подобного ПО. И лишь мизерная часть пользователей устанавливает патчи, даже те, которые специалисты по компьютерной вирусологии классифицируют как «критические» для обеспечения безопасности.

 

Источник: //darkcartel.pw



Поделись статьей с друзьями


60 просмотров



Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: