LiteNet.Ru - Актуально о ПК и ПО. 2006-2019.
СТАТЬИ | НОВОСТИ | ПРОГРАММЫ | ОБРАТНАЯ СВЯЗЬ | КАРТА САЙТА
Сейчас на сайте: 2 пользователей онлайн
Обновления
Материал Mozilla Firefox 66.0.5 [10.05.19]
Материал AIMP 4.51.2084 [10.05.19]
Материал RealTimes (RealPlayer) 18.1.16.216 [10.05.19]
Материал Uninstall Tool 3.5.7 [10.05.19]
Материал Hamachi 2.2.0.633 [10.05.19]
Материал Paint.NET 4.1.6 [10.05.19]
Материал PotPlayer 1.7.18346  [10.05.19]
Материал USB Manager 2.05 [10.05.19]
Материал Rufus 3.5 [10.05.19]
Материал Gimp 2.10.10 [10.05.19]
Материал Lazesoft Recover My Password 3.5.3 [10.05.19]
Материал WinScan2PDF 4.77 [10.05.19]
Комментарии dynabook Satellite... [29.03.19]
Комментарии СПАСИБО!!! Получил... [04.03.19]
Комментарии Уважаемый Професси... [11.01.19]
Комментарии спасибо... [14.12.18]
Комментарии Спасибо, не заняло... [05.12.18]
Комментарии Toshiba satelit a2... [25.11.18]
Комментарии Вы шутите?... [23.11.18]
Комментарии Отличный продукт. ... [18.11.18]
Комментарии На второй вкладке ... [10.09.18]
Комментарии Помогло трёхсекунд... [04.07.18]
Комментарии Toshiba 440CDT Пр... [04.07.18]
Комментарии Не совсем согласен... [19.06.18]

RSS

Последние добавленные статьи

Компьютерная вирусология: основы
21.02.2006

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

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

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

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

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

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

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

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

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

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

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

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

Что еще почитать?