Пошук вразливостей


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

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

Сканери уразливості діляться на дві основні групи:

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

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

Функціонувати такі засоби можуть на мережевому рівні (network-based), рівні операційної системи (host-based) і рівні додатку (application-based). Найбільшого поширення набули засоби аналізу захищеності мережевих сервісів і протоколів. Пов'язано це, в першу чергу, з універсальністю використовуваних протоколів. Вивченість і повсюдне використання таких протоколів, як IP, TCP, HTTP, FTP, SMTP і т.п. дозволяють з високим ступенем ефективності перевіряти захищеність інформаційної системи, що працює в даному мережевому оточенні. Другими за поширеністю є засоби аналізу захищеності операційних систем (ОС). Пов'язано це також з універсальністю і поширеністю деяких операційних систем (наприклад, UNIX і Windows NT). Однак через те, що кожен виробник вносить в операційну систему свої зміни (яскравим прикладом є безліч різновидів ОС UNIX), засоби аналізу захищеності ОС аналізують в першу чергу параметри, характерні для всього сімейства однієї ОС. І лише для деяких систем аналізуються специфічні для неї параметри. Засобів аналізу захищеності додатків на сьогоднішній день не так багато, як цього хотілося б. Такі засоби  існують тільки для широко поширених прикладних систем, типу Web-браузери, СУБД  і т.п.

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

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

Механізми роботи

Існує два основних механізми, за допомогою яких сканер перевіряє наявність уразливості - сканування (scan) і зондування (probe).

Сканування - механізм пасивного аналізу, за допомогою якого сканер намагається визначити наявність уразливості без фактичного підтвердження її наявності - за непрямими ознаками. Цей метод є найбільш швидким і простим для реалізації. У термінах компанії ISS даний метод отримав назву "логічний висновок" (inference). Згідно компанії Cisco цей процес ідентифікує відкриті порти, знайдені на кожному мережевому пристрої, і збирає пов'язані з портами заголовки (banner), знайдені при скануванні кожного порту. Кожен отриманий заголовок порівнюється з таблицею правил визначення мережевих пристроїв, операційних систем і потенційних вразливостей. На основі проведеного порівняння робиться висновок про наявність чи відсутність уразливості.

Зондування - механізм активного аналізу, який дозволяє переконатися, присутня чи ні на уже згадуваному вузлі вразливість. Зондування виконується шляхом імітації атаки, що використовує  вразливість яка перевіряється. Цей метод більш повільний, ніж "сканування", але майже завжди набагато більш точний. У термінах компанії ISS даний метод отримав назву "підтвердження" (verification). Згідно компанії Cisco цей процес використовує інформацію, отриману в процесі сканування ( "логічного висновку"), для детального аналізу кожного мережевого пристрою. Цей процес також використовує відомі методи реалізації атак для того, щоб повністю підтвердити передбачувані уразливості і виявити інші уразливості, які не можуть бути виявлені пасивними методами, наприклад схильність атакам типу "відмова в обслуговуванні" ( "denial of service").

На практиці зазначені механізми реалізуються наступними кількома методами.

"Перевірка заголовків" (banner check)

Зазначений механізм являє собою ряд перевірок типу "сканування" і дозволяє робити висновок про уразливість, спираючись на інформацію в заголовку відповіді на запит сканера. Типовий приклад такої перевірки - аналіз заголовків програми Sendmail або FTP-сервера, що дозволяє дізнатися їхню версію і на основі цієї інформації зробити висновок про наявність в них уразливості.

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

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

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

"Активні зондуючі перевірки" (active probing check)

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

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

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

"Імітація атак" (exploit check)

Дані перевірки відносяться до механізму "зондування" і засновані на експлуатації різних дефектів в програмному забезпеченні.

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

Однак існують випадки, коли імітація атак не завжди може бути реалізована. Такі випадки можна розділити на дві категорії: ситуації, в яких тест призводить до "відмови в обслуговуванні" аналізованого вузла або мережі, і ситуації, при яких уразливість в принципі не придатна для реалізації атаки на мережу.

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

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

Етапи сканування

Практично будь-який сканер проводить аналіз захищеності в кілька етапів:

  1. Збір інформації про мережу. На даному етапі ідентифікуються всі активні пристрої в мережі і визначаються запущені на них сервіси та демони. У разі використання систем аналізу захищеності на рівні операційної системи даний етап пропускається, оскільки на кожному аналізованому вузлі встановлені відповідні агенти системного сканера.
  2. Виявлення потенційних вразливостей. Сканер використовує описану вище базу даних для порівняння зібраних даних з відомими вразливостями за допомогою перевірки заголовків або активних зондуючих перевірок. У деяких системах всі вразливості ранжуються за ступенем ризику. Уразливі місця (наприклад, впливаючі на маршрутизатори) вважаються серйознішими в порівнянні з уразливостями, характерними тільки для робочих станцій.
  3. Підтвердження обраних вразливостей. Сканер використовує спеціальні методи і моделює (імітує) певні атаки для підтвердження факту наявності вразливостей на обраних вузлах мережі.
  4. Генерація звітів. На основі зібраної інформації система аналізу захищеності створює звіти, що описують виявлені вразливості. У деяких системах звіти створюються для різних категорій користувачів, починаючи від адміністраторів мережі і закінчуючи керівництвом компанії. Якщо перших цікавлять технічні деталі, то для керівництва компанії необхідно подати, красиво оформлені, із застосуванням графіків і діаграм, звіти з мінімумом подробиць. Важливим аспектом є наявність рекомендацій щодо усунення виявлених проблем. У багатьох випадках звіти також містять посилання на FTP- або Web-сервера, що містять patch'і і hotfix'и, що усувають виявлені вразливості.
  5. Автоматичне усунення вразливостей. Цей етап дуже рідко реалізується в мережевих сканерах, але широко застосовується в системних сканерах.

У будь-якому випадку у адміністратора, який здійснює пошук вразливостей, є кілька варіантів використання системи аналізу захищеності:

Запуск сканування тільки з перевірками на потенціальні вразливості (етапи 1,2 і 4). Це дає попереднє ознайомлення з системами в мережі. Цей метод є набагато менш руйнівним в порівнянні з іншими і також є найшвидшим.

  • Запуск сканування з перевірками на потенційні і підтверджені уразливості. Цей метод може викликати порушення роботи вузлів мережі під час реалізації перевірок типу "exploit check".
  • Запуск сканування з вашими призначеними для користувача правилами для знаходження конкретної проблеми.
  • Все з вищезгаданого.

Розглянемо можливості та роботу деяких відомих сканерів.