Як я можу заразитися вірусом, просто відвідавши веб-сайт? [дублікат]


47

Можливий дублікат:
Чи може комп'ютер заразитися шкідливим програмним забезпеченням через веб-браузер?

Загальновідомо, що заразитися вірусом можна, лише відвідавши веб-сайт. Але як це можливо?

Ці віруси атакують користувачів Windows, Mac та Linux, або користувачі Mac / Linux захищені?

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

Чи програмуються віруси в JavaScript? (Це має сенс, оскільки це мова програмування, яка працює локально.) Якщо так, то які функції JavaScript є тими, які зазвичай використовуються?


2
Найчастіше це поєднання різних методик та витоків безпеки веб-переглядачів.
Paŭlo Ebermann

Добре питання, і IMHO, оскільки це веб, це залежить від HTTP, і він більше не впливає на ОС, браузер натомість має значення більше, ніж ОС.
Кенан Д

Дуже широка тема, вразливості браузера можуть змінюватися в міру їх виявлення і змінюватися від браузера до браузера.
Моаб

1
Про пов’язану замітку: superuser.com/questions/245096/…
BloodPhilia

@LordCover: хоча початкова тактика відлякування може бути http, корисна навантаження повинна бути виконаним файлом, орієнтованим на конкретні системи, щоб вийти за рамки простого роздратування і стати справжнім вірусом. Оскільки Linux і Mac не можуть запускати файли exe (без будь-якої допомоги), а Win не може запускати виконувані файли, написані для інших ОС, все одно це система, що залежить від ОС. Нещодавні хак-фести показали, що Win7 порівняно з (і дещо кращим, ніж) Mac та Linux щодо безпеки. В даний час все ще факт, що більшість людей запускає Windows, що робить його популярною ціллю.
music2myear

Відповіді:


24

Загальновідомо, що заразитися вірусом можна, лише відвідавши веб-сайт. Хтось може пояснити, як це можливо?

Приклади в паренах. У браузері (IE), інтерпретаторі javascript або в плагіні (наприклад, flash або java) є помилка. Ця помилка призводить до виконання коду - ця частина може бути дуже складною, але вона часто передбачає використання помилок та маніпуляцій після купи .

Тоді у мене працює якийсь код оболонки. Оболонка оболонки повинна уникати будь-якого захисту браузера - для помилки V8 / Chrome вам доведеться уникнути хромової пісочниці та перемогти DEP та ASLR. Для IE вам доведеться перемогти DEP та ASLR, а потім вийти з режиму низької цілісності. Для Java вам доведеться ... нічого не робити - ви всі золоті. (Ось чому там з'явилася купа язиків.)

Тож тепер, коли у мене на вашій машині працює довільний код, так як ви (ви не працюєте адміністратором, правда?), Я можу завантажити файл з Інтернету та запустити його, скинувши деяку кількість зловмисного програмного забезпечення на вашу машину.

Чи програмуються віруси в JavaScript? (Це має сенс, оскільки це мова програмування, яка працює локально.) Якщо так, то які функції JavaScript є тими, які зазвичай використовуються?

Конкретно - ні. Javascript - вектор атаки, який люди використовуватимуть для пошуку помилки у браузері. Вони також можуть використовувати Flash, Java або Silverlight як вектор атаки. У випадку javascript вони пишуть javascript, щоб викликати помилку браузера, а потім вірус врешті-решт витягується з Інтернету.


4
Це неточно. Віруси часто роблять це, але не потрібно (завантажувати додатковий код). У них може бути вбудована корисна навантаження в експлуатацію на основі javascript. Це корисне навантаження буде збірним кодом, але подаватиметься як JavaScript. Все залежить від помилки та конкретної реалізації експлуатації.
Мерлін Морган-Грехем

2
Ти щойно писав, що у Java немає пісочниці? Тому що це дійсно є у кожному браузері, про який я знаю.
CarlF

4
@CarlF: Ні, мова не йде про пісочницю Java (яка все ще існує). Йдеться про помилки на Java - якщо вони дозволяють вирватися з пісочниці, мало додаткової безпеки (наприклад, DEP), щоб зупинити зловмисника.
sleske

3
Java - це головна діра, яка мене двічі вкусила. Я відключую це релігійно зараз: superuser.com/questions/201613/…
Джефф Етвуд

2
@Merlyn Так, цілком можливе розміщення всього корисного навантаження в javascript і не завантажувати додатковий код (наприклад, всі модулі метасплату на зразок "Додати додаткового користувача до системи" або reverse_tcp). Але складні зловмисні програми , як правило, використовують shellcode в JavaScript як стаджер, щоб знищити складніший і складніший код. Все залежить від помилки та експлуатації - вся логіка та код коду може бути у зображенні, що переробляє аналізатор зображень - я просто кажу про найпоширеніший маршрут.
Том Ріттер

14

На жаль, і збочно, існує будь-яка кількість способів цього.

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

Проблема виникає всякий раз, коли є можливість, що іноземні дані з Інтернету, які ми завжди повинні вважати створеними з максимально злісним наміром, якимось чином вдається виконати вашою системою.

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

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

На жаль, дизайнерський підхід до того, щоб "спочатку все дозволяти, а потім кричуще приховувати декілька поганих місць, про які ми можемо придумати", є принциповим недоліком, і тепер ми стикаємося з нескінченним потоком нових способів, завдяки яким наші зручності на базі клієнта можуть використовувати для компрометації наших систем.

Єдиний помірно безпечний вихід - відключити JavaScript і плагіни у вашому браузері. Безпечно, як ми були в 1995 році.


6
Wget не є "безпечним", ні драйвери, які управляють вашою машиною, ні одна з систем рівня ядра. Є пом'якшення, але в кінцевому підсумку кожен фрагмент коду потенційно може зазнати нападу.
Мерлін Морган-Грем

@Meryll: Я опускав один цілий клас проблем, а саме ті, що виникають із несправного коду. Так, безумовно, існує загроза від порушених бібліотек зображень та аналізаторів заголовків MP3 і подібних речей. Я не хотів занадто далеко заїжджати. Я вважав, що проблеми, пов'язані з дизайном сучасних технологій Інтернету, набагато більше стосуються питання ОП.
Керрек СБ

1
@Kerrek: Їх питання було "чи можу я отримати вірус від відвідування веб-сторінки", і ви сказали, що вони не можуть отримати вірус від wget. Ви також говорите про довіру. Але питання не в тому, "як я захищаю себе", а більше в тому, "як спрацював би експлоатація". Поверхня атаки, здається, є вашою основною точкою, яка чудова, але затьмарена цими неточностями і дотичними.
Мерлін Морган-Грем

3
Так, я трохи спрощував ... Я не хотів чітко доводити аргументи "в принципі може бути помилка wget, яка змушує поводитись несподівано" вбік. Ти прав, звичайно. Я подумав, що ОП видається новим у цій галузі, і хотів зосередитись на більш фундаментальних та концептуальних проблемах нашого ІТ-суспільства, а не на проблемах через технічні несправності.
Керрек СБ

-1 ця відповідь не розуміє питання: "Наші вимоги призвели до створення таких технологій виконання коду на стороні клієнта, як JavaScript і Flash, які завантажують довільний, іноземний, ненадійний, зловмисний код і виконують його, все для нашого задоволення". - намір не завантажувати довільний код; і навіть без цього ми все одно отримаємо віруси з Інтернету. Ви можете заразитись вірусом, відкривши .jpg у фарбі або переглянувши фільм у VLC. Це не часто, але це траплялося і раніше.
BlueRaja - Danny Pflughoeft

11

У цих відповідях суть, яку я справді хочу перемогти вдома, полягає в тому, що причина, коли ви можете отримати вірус з веб-сторінки, полягає в тому, що деяке програмне забезпечення, яке ви працюєте, має помилку - вразливість безпеки .

На кожному кроці процесу створення програмного забезпечення творці Flash; вашого браузера; Вашої операційної системи намагалися переконатися, що випадковий, зловмисний код з Інтернету не може просто знайти спосіб виконання себе. На жаль, зробити це важко . Дійсно важко .

Отже, як і всі люди, розробники цього програмного забезпечення зобов'язані робити помилки: HTML-аналізатор випадково перезаписує один байт у стеку, коли ви закінчуєте html </p. Вони випадково використали signed intзамість цьогоunsigned int . Javascript JIT-компілятор випадково намагається скинути індекс масиву в нульовий покажчик. Усі ці вразливості та мільйони більше постійно виникають у програмному забезпеченні, або через відсутність знань із безпеки, або на нагляд, або навіть просто на помилку. Програмне забезпечення просто шлях дуже складний , щоб зловити їх усіх.

Через це в операційних системах є вбудовані механізми для запобігання пошкодженню системи, навіть коли виявлена ​​вразливість. Напевно, у вашій ОС є DEP та ASLR . Програми можуть мати різні захисти, додані компілятором. Браузери працюють із нижчими привілеями. Програми запускаються за допомогою автоматичного аналізу та тестування, які можуть наздогнати багато цих вразливих місць.

Моя думка, ніхто цього не дозволяє - але розробити повністю захищене програмне забезпечення неможливо, як неможливо розробити цілком безпечний сейф. Хтось, у кого є достатньо часу, знань, грошей та стимулів, завжди знайде спосіб розкрити це. І проблема з цим сейфом полягає в тому, що коли деякі хакерські тріщини відкриють свою копію, вони можуть легко відкривати інші копії по всьому світу, не виходячи зі своєї кімнати.


Але в багатьох випадках помилка є, тому що користувачі "вимагали" її. Тобто, специфікація для HTML3.14159 є несправною в тому, що вона дозволяє дотримуватися певної поведінки, яка за своєю суттю є ризикованою. І дизайнери сайтів використовують специфічні особливості, які провокують подібну поведінку, вимагаючи від дизайнерів браузерів впроваджувати "феєри" (або ризикувати залишитись у "війні браузера"). Дизайнер браузера, ймовірно, намагається якось пом’якшити ризиковану поведінку, а антивірусні реалізатори купують додаткові перевірки, але щось завжди проникає.
Даніель Р Хікс

@DanH: Чи є у вас конкретні приклади пробоїв у безпеці, які навмисно залишаються у всіх браузерах, тому що користувачі цього вимагали?
BlueRaja - Danny Pflughoeft

Я не кажу, що діри там залишаються навмисно. Швидше, погані характеристики призводять до "ризикованих" впроваджень, і в занадто багатьох випадках реалізація (очевидно) не є виправданою з точки зору безпеки. (І це не виправдано, тому що специфікація цього не дозволяє.)
Daniel R Hicks

Ага так, інформатика ... Наука в світі, де є машини, які їдуть неправильно по одній стороні вулиці половину часу, а телепортують в протилежний кінець іншій половині.
Прорив

8

Ваші конкретні запитання

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

Ваш браузер постійно виконує код (він складається з коду). Під час завантаження веб-сторінок цей код завантажує та відображає довільні дані (пікселі, характеристики тощо).

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

Оскільки код - це дані, якщо ваш браузер намагається виконати дані (незалежно від розширення чи формату файлу), він може фактично запуститися (якщо правильно створений).

Зазвичай ваш браузер не буде настільки нерозумним, щоб спробувати запустити випадкові дані, які він завантажив. Однак це може статися.

Один із способів зробити це - сформувати дані таким чином, що при прочитанні вони "просочуться" та перезапишують дані, що становлять виконувану програму браузера. Це вимагає, щоб у веб-переглядача з'явилася помилка (найчастіше в цьому випадку, допускаючи перевищення буфера ).

Ваш браузер також запускає програми на вершині веб-сторінок. Як ви вже згадали, Javascript є одним з таких типів коду. Але є десятки. ActiveX, Flash, додатки, мастильні сценарії мавп тощо - це все коди, які ви виконуєте під час відвідування веб-сторінок. Цей код може містити помилки, які спричиняють порушення безпеки.

Ці віруси атакують і користувачів Windows, Mac та Linux, або користувачі Mac / Linux захищені?

Жодна платформа, яку ми використовуємо, не захищена від помилок, оскільки всі вони використовують процесори, які трактують дані як код. Так просто працює наша існуюча архітектура комп’ютера.

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

Віруси не трапляються за допомогою магії чи еволюції подій (як це роблять біологічні віруси). Це програмне забезпечення, написане окремими особами або командами розробників. І вони хочуть орієнтуватися на найбільшу частку ринку, як це роблять звичайні постачальники програмного забезпечення.

Що стосується того, чи може один вірус націлити на кілька платформ; Усі браузери мають різний код, тому будуть різні помилки (навіть один і той же браузер на різних платформах). Але є деякі бібліотеки коду, які спільно використовуються на різних платформах. Якщо така бібліотека містить помилку, можливо, експлуатація може існувати на декількох платформах.

Але, залежно від типу атаки, вірус, написаний для не-Mac Mac, може не працювати на Intel Mac, і навпаки, оскільки вони мають різні процесори. Для різних процесорів дані, що представляють код, мають різний формат.

Якщо ви говорите про віртуальну машину чи мову сценаріїв, атаки можуть бути незалежними від платформи. Це призводить нас до наступного питання ...

Чи програмуються віруси в JavaScript?

Деякі віруси є. Інформація, яку я заявляла вище (про подвиги буфера), зазвичай використовується як атака за межами Javascript, але однаково може бути застосована до вірусу, створеного для атаки на експлуатацію в інтерпретаторі Javascript.

У Javascript також буде власний набір подвигів на робочому рівні, який перевищує перевищення буфера. Існує маса способів атаки на будь-яку частину програмного забезпечення. Чим більше програмне забезпечення (рядки коду), тим більше різновидів введення користувачем (у цьому випадку типів коду) воно, ймовірно, отримує, і тим більше помилок воно може містити.

Крім того, чим більше піддається дії програмного забезпечення (наприклад, програмне забезпечення, на якому працює сервер), тим більш вразливим є атака.

Взагалі це називається Attack Surface

Подвиги взагалі

Корпорація Майкрософт має мнемонічний характер для поширених типів експлуатації, і всі вони мають свої цікаві властивості та різні рівні програмного забезпечення, на яке вони можуть атакувати - STRIDE , який розшифровується як:

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

Деякі з них швидше використовуються в атаці на основі Javascript, ніж інші, деякі на серверах, деякі на файлах даних (наприклад, зображення).

Але безпека - це велике і розвивається поле. Дійсно занадто багато інформації, щоб повністю відповісти на всі ваші запитання.


Коли ви маєте справу з інтерпретованими (проти компільованими) мовами, подвиги, як правило, не залежать від архітектури. Додаток (або вірус), зібраний для іншої архітектури процесора, просто не запуститься (якщо тільки процесор не містить рівень сумісності).
Прорив

@Breakthrough: Їх запитують "вони запрограмовані в JavaScript?" не робить те, про що я говорив, менш правдивим, особливо коли застосовується до "як я можу отримати вірус, лише зайшовши на веб-сайт". Вони задавали кілька запитань, і те, що я описав, стосувалося частини запитання, якщо не все.
Мерлін Морган-Грехем

@Breakthrough: Я додав більше інформації про Javascript спеціально та загрози загалом.
Мерлін Морган-Грем

@Merlyn Morgan-Graham, я конкретно мав на увазі, коли ви говорили, "... вірус, написаний для Mac, який не використовується Intel, може не працювати на Intel Mac, і навпаки, тому що вони мають різні процесори". а не всю вашу відповідь.
Прорив

1
@Merlyn Morgan-Graham "Причина цього міфу полягає в тому, що у Mac і Linux значно нижчі показники прийняття порівняно з машиною Windows"
Lincity

7

Термін називається "Завантажити за допомогою завантаження"

Ось приємний приклад того, як це відбувається, не роблячи нічого, крім відвідування веб-сайту.

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

Подальший аналіз оболонки виявив чітко текстову URL-адресу, що вказує на відомий шкідливий сервер, який зберігався у сховищі M86 як такий, що використовував відому вразливість iepeers.dll, MS10-018.


+1 за те, що поки єдина відповідь на використання належного терміна.
Прорив

3

Хитрість полягає в тому, що виробники вірусів / експерти з безпеки знаходять в браузерах лунки. Простими словами, вони знаходять дірку в безпеці браузера, і вони можуть використовувати цей отвір, щоб зробити щось у вашій системі. Є випадки, що в Adobe Flash були отвори і з певним кодом це можна було експлуатувати. Також є рядки javascript, які можуть викликати ці отвори в безпеці.

Тим не менш, якщо ви постійно оновлюєте веб-переглядач, малоймовірно, що ви заразитесь, просто зайшовши на веб-сайт (завантажуйте файли та виконуючи їх - це вже інша історія!)


У кожному наявному програмному забезпеченні є помилки безпеки. Не всі вони знайдені. Microsoft Paint тривалий час мав жахливу помилку, наприклад, її було легко відновити (протягом декількох хвилин), просто викидаючи випадково генеровані дані як "зображення" у діалоговому вікні "файл-> відкрити".
Мерлін Морган-Грем

Ну, я впевнений, що десь написано програмне забезпечення без помилок безпеки. (Я думаю, що я, можливо, написав один-два самостійно.) Але ви маєте хорошу думку. Близько 35 років тому хтось демонстрував десятки помилок в Unix, просто подаючи випадкові символи в аналізатор команд оболонки. Розбив машину протягом декількох хвилин.
Даніель Р Хікс

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 набагато безпечнішим, ніж раніше, або, принаймні, саме так, ви вважаєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.