48

Возможный дубликат:
Может ли компьютер быть заражен вредоносным ПО через веб-браузер?

Общеизвестно, что вы можете заразиться вирусом, просто посетив веб-сайт. Но как это возможно?

Эти вирусы атакуют пользователей Windows, Mac и Linux или пользователи Mac/Linux защищены?

Я понимаю, что, очевидно, я могу заразиться вирусом, загрузив и выполнив .exe в Windows, но как я могу заразиться вирусом, просто зайдя на веб-сайт?

Запрограммированы ли вирусы в JavaScript? (Это имеет смысл, так как это язык программирования, который работает локально.) Если да, то какие функции JavaScript чаще всего используются?

8 ответов8

24

Общеизвестно, что вы можете заразиться вирусом, просто посетив веб-сайт. Кто-нибудь может объяснить, как это возможно?

Примеры в паренсе. Существует ошибка в браузере (IE), интерпретаторе javascript или в плагине (например, flash или java). Эта ошибка приводит к выполнению кода - эта часть может быть действительно сложной, но она часто включает в себя ошибку «использование после освобождения» и манипулирование кучей.

Затем у меня работает шеллкод. Код шелл-кода должен избегать любой защиты, которую имеет браузер - для ошибки V8/Chrome вам нужно будет выйти из песочницы chrome и победить DEP и ASLR. Для IE вам придется побить DEP и ASLR, а затем выйти из режима низкой целостности. Для Java вы должны ... ничего не делать - вы все золотые. (Вот почему было множество ошибок Java.)

Итак, теперь, когда на вашем компьютере запущен произвольный код, вы (я не администратор, не так ли?) Я могу загрузить файл из Интернета и запустить его, удалив на вашем компьютере вредоносное ПО.

Запрограммированы ли вирусы в JavaScript? (Это имеет смысл, так как это язык программирования, который работает локально.) Если да, то какие функции JavaScript чаще всего используются?

Конкретно - нет. Javascript - это вектор атаки, который люди используют для поиска ошибки в браузере. Они также могут использовать Flash, Java или Silverlight в качестве вектора атаки. В случае с javascript они пишут javascript, чтобы вызвать ошибку браузера, а затем вирус в конечном итоге удаляется из Интернета.

14

К сожалению и порочно, существует множество способов, которыми это может произойти.

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

Эта проблема возникает всякий раз, когда существует вероятность того, что иностранные данные из Интернета, которые мы всегда должны создавать с преднамеренным злонамеренным намерением, каким-то образом удается выполнить вашей системе.

Если вы просто сидите в командной строке и wget http://evil.com/hitme.php , HTTP-клиент wget просто записывает двоичный дамп запроса на ваш диск, и ничего плохого не произошло (кроме, возможно, вашего диска). заполнение). Но если вы введете адрес в свой браузер, ваш браузер сможет делать все, что захочет - отформатировать жесткий диск, отправить данные своей кредитной карты и т.д. Вы должны довериться своему браузеру, что не будете этого делать. Большинство браузеров действительно стараются не делать этих плохих вещей, но мы, пользователи овец , требовали, чтобы браузеры могли делать еще больше "хитрых трюков" и демонстрировать автоматическое поведение, основанное на инструкциях из Интернета. Наши требования привели к созданию технологий исполнения кода на стороне клиента, таких как JavaScript и Flash, которые загружают произвольный, чужой, ненадежный, вредоносный код и исполняют его, все для нашего удовольствия.

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

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

Единственный умеренно безопасный выход - отключить JavaScript и плагины в вашем браузере. Безопасно, как в 1995 году.

11

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

На каждом этапе процесса создания программного обеспечения создатели Flash; вашего браузера; вашей операционной системы пытался убедиться, что случайный, вредоносный код из Интернета не может просто найти способ выполнить себя. К сожалению, сделать это сложно. Действительно сложно.

Так что, как и все люди, разработчики этого программного обеспечения неизбежно допускают ошибки: анализатор HTML случайно перезаписывает один байт в стеке, когда вы заканчиваете HTML с помощью </p . Они случайно использовали signed int вместо unsigned int . JIT-компилятор javascript случайно пытается преобразовать индекс массива в нулевой указатель. Все эти уязвимости, а также миллионы других постоянно встречаются в программном обеспечении либо из-за недостатка знаний в области безопасности, либо из-за недосмотра, либо даже из-за простой ошибки. Программное обеспечение просто слишком сложно , чтобы поймать их всех.

Из-за этого операционные системы имеют встроенные механизмы для предотвращения повреждения системы, даже когда обнаружена уязвимость. Ваша ОС, вероятно, имеет DEP и ASLR. Программы могут иметь различные средства защиты, добавленные компилятором. Браузеры работают с меньшими привилегиями. Программы запускаются с помощью автоматического анализа и тестирования, которые могут выявить многие из этих уязвимостей.

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

8

Ваши конкретные вопросы

Я понимаю, что, очевидно, я могу заразиться вирусом, загрузив и выполнив .exe в Windows, но как я могу заразиться вирусом, просто зайдя на веб-сайт?

Ваш браузер постоянно выполняет код (он состоит из кода). Когда он загружает веб-страницы, этот код загружает и отображает произвольные данные (пиксели, символы и т.д.).

Код также данные (на уровне процессора).

Поскольку код - это данные, если ваш браузер пытается выполнить данные (независимо от того, какое расширение файла или формат), он может действительно работать (если он создан правильно).

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

Один из способов сделать это - сформировать данные таким образом, чтобы при чтении они "просачивались" и перезаписывали данные, составляющие исполняемую программу браузера. Для этого в браузере должна быть ошибка (чаще всего в этом случае допускается переполнение буфера).

Ваш браузер также запускает программы поверх веб-страниц. Javascript, как вы упомянули, является одним из таких типов кода. Но есть десятки. ActiveX, Flash, надстройки, сценарии обезжиривания и т.д. - это весь код, который вы запускаете при посещении веб-страниц. Этот код может содержать ошибки, которые вызывают нарушения безопасности.

Эти вирусы атакуют пользователей Windows, Mac и Linux или пользователи Mac/Linux защищены?

Ни одна из используемых нами платформ не застрахована от ошибок, поскольку все они используют процессоры, которые обрабатывают данные как код. Это просто, как работает наша существующая компьютерная архитектура.

Причина этого мифа заключается в том, что Mac и Linux имеют гораздо более низкий уровень внедрения по сравнению с компьютерами Windows (на уровне настольных компьютеров). Таким образом, программное обеспечение для настольных компьютеров на этих компьютерах не так часто становится целью для создателей вирусов.

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

Что касается того, может ли один вирус предназначаться для нескольких платформ; Все браузеры работают с разным кодом, поэтому будут иметь разные ошибки (даже один и тот же браузер на разных платформах). Но есть несколько библиотек кода, которые используются на разных платформах. Если такая библиотека содержит ошибку, возможно, что эксплойт может существовать на нескольких платформах.

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

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

Запрограммированы ли вирусы в JavaScript?

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

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

Кроме того, чем более уязвимым является работающее программное обеспечение (например, программное обеспечение, работающее на сервере), тем уязвимее оно для атаки.

В общем, это называется поверхность атаки

Подвиги в общем

У Microsoft есть мнемоника для распространенных типов эксплойтов, и все они имеют свои интересные свойства и разные уровни программного обеспечения, на которое они могут атаковать - STRIDE, что означает:

Spoofing (of user identity)
Tampering
Repudiation
Information disclosure (privacy breach or Data leak)
Denial of Service (D.o.S.)
Elevation of privilege

Некоторые из них чаще используются в атаке на основе Javascript, чем другие, некоторые на серверах, некоторые на файлах данных (например, изображения).

Но безопасность - это большая и развивающаяся область. На самом деле слишком много информации, чтобы полностью ответить на все ваши вопросы.

7

Термин называется "Drive By Download"

Вот хороший пример того, как это происходит, когда вы ничего не делаете, кроме как посещаете веб-сайт.

Шнайдер сказал, что команда исследователей компании обнаружила на странице фрагмент JavaScript, который вставлял фрейм, указывающий на вредоносный сайт. Более тщательная проверка показала, что он использовал ранее неизвестный (0 дней) эксплойт IE, способный вывести из строя полностью исправленную версию этого браузера и выполнить вредоносный код. Однако 0-недельный срок был недолгим, так как Microsoft вскоре выпустила подробности об этой уязвимости.

Дальнейший анализ шелл-кода выявил незашифрованный URL-адрес, указывающий на известный вредоносный сервер, который был сохранен в репозитории M86 как использующий известную уязвимость iepeers.dll, MS10-018.

3

Хитрость в том, что создатели вирусов / эксперты по безопасности находят лазейки в браузерах. Проще говоря, они находят дыру в безопасности браузера и могут использовать эту дыру, чтобы что-то сделать с вашей системой. Есть случаи, когда у Adobe Flash были дыры, и с конкретным кодом это можно было бы использовать. Есть также строки JavaScript, которые могут вызвать эти дыры в безопасности.

Тем не менее, если вы обновляете свой браузер, очень маловероятно, что вы заразитесь, просто посетив веб-сайт (загрузка файлов и их выполнение - другая история!)

2

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

Таким образом, предположительно каждая операционная система является потенциальной жертвой, но разработчики вирусов обычно создают свои атаки на основе эффекта масштаба - чем больше пользователей, тем лучше. Вот почему Windows и Internet Explorer чаще становятся мишенью.

Любая часть браузера или плагина может быть поражена вирусом. Вышеупомянутый образ «это вызвало вирус» был реальным примером. Вспышка является общей целью. Движок JavaScript в браузерах тоже. Есть много разных вещей, которые могут пойти не так.

Лучше всего запустить качественный антивирусный сканер. Я использовал NOD32 от Eset. Кроме того, не нажимайте на что-то, если это слишком хорошо, чтобы быть правдой. Используйте NoScript в Firefox и AdBlock.

1

Эти вирусы атакуют пользователей Windows, Mac и Linux или пользователи Mac/Linux защищены?

Если веб-сайту удается нарушить безопасность вашего браузера, он может испортить все, что принадлежит вам на компьютере. Однако, если он может повысить свои привилегии и получить административный доступ, тогда он может испортить что-либо в системе.

Давно считалось, что получить административные привилегии на компьютере с Unix (например, Linux, Mac или BSD) труднее, чем на Windows. Однако недавняя (с Windows Vista) модернизация функций безопасности Microsoft, возможно, сделала Windows намного более безопасной, чем раньше - или, по крайней мере, это то, во что они бы поверили.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .