Чтение онлайн

ЖАНРЫ

Искусство цифровой самозащиты
Шрифт:

Считается, что червь Морриса заразил около 6 тыс. компьютеров – примерно 10 % от всех, что были подключены в то время к интернету. Ущерб в зависимости от важности владельцев компьютеров оценивали в диапазоне от $200 до $53 тыс. за систему (традиционно речь идет о «предполагаемом», то есть гипотетическом ущербе). Власти называли общую сумму ущерба в диапазоне от $100 тыс. до $10 млн, которая с годами превратилась в $95–100 млн и 60 тыс. зараженных компьютеров. Более вероятными представляются всё же первоначально озвученные цифры.

На определение авторства ушло время. Есть версия, согласно которой отец 23-летнего парня рекомендовал ему самому рассказать о себе властям.

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

Механизмы распространения

Все механизмы («векторы атаки») распространения червей делятся на две большие группы:

• Использование уязвимостей и ошибок администрирования в программном обеспечении, установленном на компьютере. Червь Морриса использовал известные на тот момент уязвимости в программном обеспечении – а именно в почтовом сервере sendmail, сервисе finger – и подбирал пароль по словарю. Такие черви способны распространяться автономно, выбирая и атакуя компьютеры в полностью автоматическом режиме.

• Средства так называемой социальной инженерии провоцируют запуск вредоносной программы самим пользователем. Чтобы убедить пользователя в том, что файл безопасен, могут подключаться недостатки пользовательского интерфейса программы – например, червь VBS.LoveLetter (рассмотренный выше вирус ILOVEYOU) использовал тот факт, что Outlook Express скрывает расширения файлов. Данный метод широко применяется в спам-рассылках, социальных сетях и т. д.

Иногда встречаются черви с целым набором различных векторов распространения, стратегий выбора жертвы, и даже эксплойтов под различные операционные системы.

Структура

Черви могут состоять из различных частей.

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

Также существуют черви, которые после успешного инфицирования памяти сохраняют код на жестком диске и принимают меры для последующего запуска этого кода (например, путем прописывания соответствующих ключей в реестре Windows). От таких червей можно избавиться только при помощи антивирусного программного обеспечения или подобных инструментов. Зачастую инфекционная часть таких червей (эксплойт, шелл-код) содержит небольшую полезную нагрузку, которая загружается в ОЗУ и может «догрузить» по сети непосредственно само тело червя в виде отдельного файла. Загружаемое таким способом тело червя (обычно отдельный исполняемый файл) теперь отвечает за дальнейшее сканирование и распространение уже с инфицированной системы по локальной сети, а также может содержать более серьезную, полноценную полезную нагрузку, целью которой может быть, например, нанесение какого-либо вреда (к примеру, DoS-атаки).

Большинство почтовых червей распространяются как один файл. Им не нужна отдельная «инфекционная» часть, так как обычно пользователь-жертва при помощи почтового клиента или интернет-браузера

добровольно скачивает и запускает червя целиком.

Дам определение еще раз: сетевой червь – это вредоносная программа, самостоятельно распространяющaяся через локальные и глобальные компьютерные сети. Ключевое отличие от вируса – именно в распространении через сети, а не через заражение других исполняемых файлов.

Сетевой червь

Эксплойты

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

Например, червь Морриса эксплуатировал переполнение буфера утилиты finger, изначально предназначенной для удаленного определения времени подключения пользователя к рабочей станции, а написан он был аж в 1988-м. 34 года спустя переполнение буфера – до сих пор одна из самых распространенных уязвимостей. Хотя описание работы этой атаки выходит за рамки данной книги и скорее относится уже к специализированной технической литературе, попробую объяснить кратко и понятно для человека, далекого от программирования.

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

Как всё это использовать злоумышленнику в реальности? В первую очередь нас интересуют уязвимости в браузерах. Да, браузеры пишут тоже люди, и ошибок в них хватает. А для использования этих ошибок и появляются эксплойты.

Эксплойты (exploits) – подвид вредоносных программ. Термин связан с английским глаголом to exploit, означающим «эксплуатировать, применять в своих интересах».

Для пользователя основную опасность, как я уже писал выше, представляют эксплойты под различные браузеры. Такой набор эксплойтов называют связкой.

Как работает заражение компьютеров при просмотре сайтов в интернете? Злоумышленник взламывает чужие сайты (в основном также из-за наличия уязвимостей) и устанавливает на них свой вредоносный код – связку эксплойтов. При каждом посещении сайта вредоносный код активируется, подбирает к конкретному браузеру и операционной системе нужный эксплойт – код, который использует конкретную уязвимость конкретного браузера под конкретную операционную систему. В случае успешного срабатывания эксплойта в ваш браузер или набор команд выполняется внедренный злоумышленникам код. Обычно это команда скачать и запустить трояна-загрузчика. Троян-загрузчик позже может загружать к вам на систему произвольные исполняемые файлы. На черном рынке такая успешная загрузка и запуск файла называется установкoй (от английского install).

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