Чого вам сильно треба боятися, коли з Windows ви йдете в Internet
Останнім часом стало дуже модно вважати, що операційні системи Windows NT і Windows 95 містять масу помилок в захисті при роботі в IP мережах, що дозволяє чи не кожному зловмиснику робити все, що він захоче з комп’ютером беззахисного користувача. Дійсно, 97 рік на перший погляд прямо таки приголомшив масою знайдених і широко разрекламированых дір: від дірок в браузерах internet explorer і NetscapeNavigator, до помилок в ядрах ОС. Але не все так фатально. Ця стаття являє собою спробу пояснити доступною мовою чого все-таки слід уникати, а чого немає. Розрахована стаття на грамотних користувачів, але може бути напевно корисною і системним адміністраторам. По тексту статті під Windows розуміються Windows NT і Windows 95. Практично всі нижческазане відноситься до обох систем в рівній мірі.
Отже, що становить безпосередню небезпеку
Найбільш небезпечними мені представляються дірки мають місце бути в WWW браузерах. У найпоширеніших: Internet Explorer і Netscape Navigator.
Ці помилки небезпечні тому, що жертвою їх можна стати зовсім випадково, просто зайшовши на сайт, де хто-небудь заклав щось деструктивне. Звичайно, можна ходити тільки на сайти великих надійних компаній, але навряд чи хто-небудь нехтував можливістю просто вільного ковзання по мережі, від посилання до посилання.
Дуже серйозна помилка є в Internet Explorer версії 3.00 і 3.01. Суть її в наступному: вам може бути перекачан з мережі файл з розширенням.url або.lnk і виконаний на вашому комп’ютері, причому зроблено це може бути абсолютно непомітно для вас. Зрозуміло, що зміст цих файлів залежить тільки від настрою зловмисника. Теоретично можлива, повна втрата вашої інформації. Тому всім користувачам зазначених версій настійно рекомендується негайно припинити використовувати зазначені версії IE і перейти на IE 3.02 або більш новий, хоча доступний і fix — www.microsoft.com/ie/security/update.htm
Хоча IE 3.02 теж не абсолютно безпечний. Широко відома дірка заснована на зв’язці PowerPoint та Internet Explorer. Суть її в наступному: документи PowerPoint здатні виконувати зовнішні команди, а IE здатний відображати PowerPoint-івські документи як вбудовані об’єкти. Відповідно, при встановленому PowerPoint можливе виконання будь-яких зовнішніх команд автоматично, просто при перегляді сторінки містить документ PP. Fix доступний www.microsoft.com/ie/security/powerpoint.htm
Тепер зупинимося на дірках, специфічних для NetscapeNavigator. Досить широко стала відома помилка знайдена одним датським програмістом. Вона дозволяє отримати ваші локальні файли під час вашого доступу до сайту. Технічно все це виконується через форми в невидимому вікні, що заповнюються вмістом локальних файлів і посилаються в мережу. Фірма Netscape а також численна армія любителів лаяти Microsoft і не помічати проблем у продуктах інших виробників применшують небезпеку мотивуючи це тим, що необхідно знати повний шлях до того файлу, який хочеш поцупити, а перекачування поширених типу файлів autoexec.bat не має ніякого сенсу. Ну що ж, давайте пофантазуємо: багато людей використовують Windows 95; більшість з них ставить її на диск C; багато людей використовують dial-up scripting tools; досить широко поширена практика коли в стандартному скрипті pppmenu.scp явним текстом прописується логін і пароль до свого провайдера. Якщо спорудити привабливий сайт — еротику яку-небудь), та розмістити його у великому місті, то швидше за все через dial-up платити самому вже не доведеться ніколи. І це тільки перший прийшов мені в голову варіант використання цієї «нешкідливою» помилки Netscape.
Gовоpить про помилки наявні в IE 4.0 і NetscapeCommunicator зараз передчасно, оскільки доступні версії мають статус бета-продукту. Хоча деякий прогноз можна зробити. В IE будуть знаходити все нові дірки, що йдуть від інтеграції IE з операційною системою. У продуктах Netscape дірок буде значно менше, але оскільки, зважаючи на все більшого захоплення ринку браузерів фірмою Microsoft, число користувачів Netscape буде зменшуватися, то через деякий час наявність або відсутність дірок в NetcapeNavigator, Communicator і «щось там ще потім буде» буде не настільки важливо. Тепер давайте поговоримо про небезпеки, що йдуть не від помилок, а від нових перспективних технологій, звичайно ж роблять web-сторінки більш привабливими і, можливо, небезпечніша.
Java
Це вже досить усталена технологія, успішно розвивається фірмою Sun. Про успіх свідчить те, що навіть Microsoft був змушений ліцензувати java, що не відповідає звичайній агресивній політиці MS. По самій своїй ідеології java досить безпечна. У специфікації написано, що java applet не може мати доступ до фізичних ресурсів комп’ютера і не може впливати на інші процеси. Єдина приходить в голову проста деструктивна це можливість запросити з аплету велика кількість пам’яті, ніж викликати своп і суттєве уповільнення роботи системи. Тут треба додати, що ступінь захисту IE 3.02, значно вище ніж в попередніх версіях IE або ж в NetscapeNavigator. Так, в IE 3.02 при спробі читання файлу з локального диска відбувається виключення. Як наслідок, аплети, які використовують зовнішні файли з картинками, не працюють при запуску з диска. Це ускладнює життя розробника java аплетів. Певне занепокоєння викликає бажання деяких контор (в тому числі і Microsoft) збільшити швидкість виконання аплетів java, за рахунок зниження рівня безпеки. Ну що ж, поживемо побачимо.
ActiveX
Ця технологія була задумана Microsoft як відповідь на Java. Сильна сторона ActiveX controls це значно більш широкі можливості і швидкість ніж у java, слабка сторона це прив’язаність до певної апаратній платформі і більш слабка система безпеки. C внутрішньої точки зору ActiveX control являє собою звичайну dll виконувану в адресному просторі IE і має доступ практично до всіх ресурсів PC через інтерфейси COM. Безпека в ActiveX заснована на принципі довіри. Перед скачуванням та інсталяцією ActiveX control з’являється зображення сертифіката з назвою фірми виробника, і якщо ви не довіряєте виробнику, то control можна заборонити. Зважаючи на недостатньо широкій поширеності цієї технології повідомлень про знайдені дірки в системі безпеки поки що не з’являлося. Хоча я б порадив дуже обережно ставитися до ActiveX, потенційно там можлива велика небезпека.
JavaScript
Найбільша проблема цієї технології, то що у Netscape і Microsoft досить різні погляди на стандарти і реалізацію JavaScript, що служить причиною головного болю багатьох web дизайнерів. Підхід обох вищевказаних фірм схожий в одному: мають місце бути дірки в захисті існують і в IE і NN. Якщо java виконується в рамках віртуальної машини java та обмежена її можливостями, то JavaScript виконується www браузером і, відповідно, теоретично є можливість робити все те, що робить www браузер, а це як мінімум маніпуляції з файлами на локальному диску і можливість здійснення своєї інформації куданібудь в мережу. Власне можливість подібних дій вже була продемонстрована на прикладі Netscape Navigator і отримала широкий розголос — див. www.aleph2.com/tracker/tracker.cgi Демонстрація полягала в тому, що після відвідування певного сайту подекуди починав формуватися лог-файл вашої роботи в мережі, який потім можна було з подивом подивитися. Доступні заплатки від Netscape — www.netscape.com/flash4/assist/security/index.html
і Microsoft — www.microsoft.com/ie/security/update.htm

На друге за небезпеки місце після помилок в браузерах я б поставив помилки в операційних системах. Тут небезпеки менше, тому що необхідна спрямована атака саме на вас, ну або ви випадково потрапите в діапазон адрес, що піддаються атаці. Хоча якщо у вас є «доброзичливці» така небезпека виходить на перше місце.
Найвідоміший спосіб атаки отримав назву Winnuke: (див. www.darkening.com/winnuke/) У середині травня таким способом на кілька днів був виведений з ладу www.microsoft.com. Деякий час після цього в мережі творився справжній кошмар. Йшло масове вбивство серверів на базі Windows NT. Отже, що ж це таке. Поряд зі звичайними даними що пересилаються по TCP з’єднання стандарт предустатривает також передачу термінових (Out Of Band) даних. На рівні форматів пакетів TCP це виражається в ненульовому urgent pointer. Y більшості PC із установленим Windows присутній мережевий протокол NetBIOS, який використовує для своїх потреб 3 IP порту: 137, 138, 139. Як з’ясувалося, якщо з’єднатися з Windows машиною в 139 порт і послати туди кілька байт OutOfBand даних, то реалізація NetBIOS-а не знаючи що робити з цими даними просто підвішує або перезавантажує машину. Для Windows 95 зазвичай це виглядає як синій текстовий екран, який повідомляє про помилку в драйвері TCP/IP і неможливість роботи з мережею до перезавантаження ОС. NT 4.0 без сервіс паків перезавантажується, NT 4.0 з другим сервіс паком випадає в синій екран. Судячи з інформації з мережі схильні такій атаці і Windows NT 3.51 і Windows 3.11 for Workgropus. Є дуже велика кількість програм для атаки цим способом, практично для всіх платформ. Поряд з великою кількістю коштів атаки існує велика кількість засобів захисту. Так якщо ви ходите в інтернет з комп’ютера неподсоединенного до локальної мережі і з встановленою Windows 95, то найпростіший спосіб це просто прибрати клієнта для Microsoft Network. Саме так зроблено на моєму домашньому комп’ютері і можу запевнити, що WinNuke таку конфігурацію не пробиває. Існують програми, які відстежують всі спроби відстрілу вас, і навіть ті, які роблять залп у відповідь, швидше за все даремний. Офіційний метод від Microsoft це установка OOB заплатки на Windows’95 (http://www.microsoft.com/kb/articles/q168/7/47.htm) і третього Serivice Pack для NT v4.0 (ftp://ftp.microsoft.com/bussys/winnt/ winnt-public/fixes/usa/nt40/ussp3/).
Хоча з SP3 і WinNuke пов’язана досить весела історія. Як з’ясувалося невдовзі після випуску SP3, запущений з комп’ютерів Apple WinNuke спокійно пробивав захист сервіс пака. Причиною цього послужило існування двох різних стандартів на IP-пакети, що містять OutOfBand дані. Є стандарт від Berkley і стандарт, використовуючи описаний в RFC 1122. Відмінність їх полягає в тому, що UrgentPointer обчислюється по різному. Насправді, UrgentPointer у двох реалізаціях буде відрізнятися рівно на одиницю. Третій сервіс-пак, захищає від «своїх» OOB пакетів, виявився беззахисним протов пакетів іншого стандарту. Тому майже відразу після SP3 вийшов додатковий OOB fix. (див. ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/nt40/ hotfixes-postSP3/oob-fix/). Тут слід зазначити, що саме існування OOB даних, безвідносно WinNuke, викликає досить багато проблем саме через існування двох стандартів, або вірніше відсутність стандарту. Тому гарантувати правильну роботу програми, що використовує OOB не може ніхто. Багато розумні люди рекомендують взагалі не використовувати OOB дані у своїх програмах. Насправді, якщо для написання оригінального WinNuke досить самих тривіальних функцій роботи з TCP/IP (програма на PERL займає 7 рядків), щоб пробити SP3 потрібно працювати з TCP на низькому рівні, або запускати стандартний WinNuke з платформи підтримує іншу реалізацію OOB. До речі, схильним до такої атаки є не тільки 139 порт, точно відомо, що MS DNS (53 порт) теж стріляється OOB даними, а автор статті переконався, що популярний мережний преферанс легко вбивається цим методом.
Наступний досить відомий спосіб атаки називається PingOfDeath або SSPing (див. www.darkening.com/ssping Сутність його наступного: на машину жертви надсилається сильно фрагментований пакет ICMP великого розміру (64KB). Реакцією Windows систем на отримання такого пакета є беззастережне повисание, включаючи мишу і клавіатуру. Програма для атаки широко доступна в мережі в вигляді макету на C і у вигляді завантажуваних файлів для деяких версій unix. Lюбопытно, що на відміну від WinNuke жертвою такої атаки можуть стати не тільки Windows машини, піддані атаці MacOS і деякі версії unix. Переваги такого способу атаки в тому, що зазвичай firewall пропускає ICMP пакети, а якщо firewall і налаштований на фільтрацію адрес посылателей, то використовуючи нехитрі прийоми spoofing можна обдурити і таке firewall. Недолік PingOfDeath в тому, що для однієї атаки треба переслати більш 64KB по мережі, що робить взагалі кажучи малоприменимым для широкомасштабних диверсій, хоча звичайно псувати життя кількох окремо взятих особистостей можна досить легко. З цієї ж причини ще менш застосовна модифікація, звана PingOfDeath 2, полягає в посилці декількох 64KB ICMP-пакетів. Офіційні заплатки доступні на Microsoft Windows 95 (ftp://ftp.microsoft.com/Softlib/MSLFILES/VIPUPD.EXE), NT v4.0 (ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/ NT40/hotfixes-postSP3/icmp-fix/icmpfixi.exe) і NT v3.51 (ftp://ftp.microsoft.com/bussys/winnt/winnt-public/fixes/usa/ nt351/hotfixes-postSP5/icmp-fix/ICMP351I.EXE). Слід зауважити, що за деякими чутками установка цих латочок знімає OOB fix, тому після цього необхідно буде ще раз ставити захист від WinNuke. Lюбопытно, що fix для 95 не працює, принаймні у мене, тому залишається альтернатива використовувати «неофіційний» і досить подозрительнчый фікс, що лежить на www.darkening.com/ssping/pingfix.zip. Lично для себе, я вирішив поки не закривати цієї дірки, до першого реального випадку такої атаки на мене.
Існувала велика група помилок Windows NT 4.0 виправлених в SP3, які могли привести до досить сумних наслідків. Найбільш популярною була наступна: заходиться telnet-му на 135 порт, і надсилається кілька символів. Після цього завантаження сервера перманентно дорівнює 100 % до перезавантаження. Є багато способів закрити цю дірку, але я б рекомендував поставити SP3, оскільки він включає в себе крім цього ще дуже багато інших не менш корисних речей.
Наступна група небезпек подстерегащих вас в світі Windows і Internet це атаки на всілякі додатки. Окремий випадок таких атак (WWW браузери — як найпоширеніші програми для роботи з інтернетом) вже розглядалося. Тепер обговоримо проблеми безпеки пов’язані з іншими додатками на прикладі іншого окремого випадку: Microsoft Internet Information Server.
Існують кілька способів впустити інтернет сервер IIS.
Досить старий і широко відомий спосіб це зайти telnet-му на 80 порт і дати команду GET “../..”. Реакцією на цю команду буде повисание HTTP сервера.
Інший метод диверсії носить назву IISSlayer. В середині червня 97 року www.microsoft.com був виведений з ладу на кілька днів допомогою атаки такого типу. Суть її в наступному: при запиті у IIS дуже довгого URL (4 — 8KB) сервер зависає і не реагує на подальші запити. Проблема в тому, що точний розмір URL залежить від конкретного сервера, тому програми-вбивці починаючи з деякого базового розміру запиту і поступово збільшуючи розмір намагаються знайти ту критичну точку, що підвісить сервер-жертву. Отримав поширення java applet назвою IISSlayer.class (див. www.ntsecurity.net/security/tools/IIServerSlayer.class), який і здійснює подібну атаку. Латка доступна на Microsoft. Звичайно можна описувати ще багато способів диверсій для Windows систем та окремих додатків (типу відомої, але некритической помилку NetscapeMail, що дозволяє отримати кому-небудь копію вашого майлбокса), але самі небезпечні з широко поширених дірок вже освітлені. І якщо ви захистилися від усього перерахованого вище, то можна вважати, що заподіяти вам шкоди буде не дуже легко. Хоча, звичайно, завжди залишаться методи грубої сили типу пінгування величезними пакетами або SYN flood, якими можна завалювати будь-яку інтернет машину або підмережі, незалежно від конфігурації. Також невідомо які знову знайдені помилки в популярних програмах готує нам майбутнє. За межами цієї статті залишилися питання безпеки в Windows стосуються всіляких способів злому та незаконного отримання прав доступу, заслуговують окремої великої статті. Також тут опущені загальні питання безпеки в Internet, заслуговують не статьти, а хорошою монографії.
На закінчення хочеться спростувати думку, що в ОС сімейства Windows та різних додатках для цих ОС міститься дуже багато помилок (хоча начебто сам дух статті говорить про інше). Так, помилки є, але де їх немає? Значно важливіше те, що всі критичні помилки дуже швидко виправляються. Так для WinNuke і IISSlayer (знамениті вбивці www.microsoft.com) fix ставав доступний протягом 2 діб. Якщо такий рівень сервісу залишиться і в майбутньому, то конкурентів у Windows платформи в Internet просто не буде. На цій оптимістичній ноті дозволю собі завершити цю статтю і без того досить довгу.