Тест на проникнення

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

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

Основні відомості[ред.ред. код]

Тест на проникнення є корисним з кількох причин:

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

Тести на проникнення є складовою частиною повного аудиту безпеки.

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

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

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

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

Завдання тесту[ред.ред. код]

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

  • оцінка поточного стану системи захисту інформації ІС;
  • виявлення вразливостей інформаційної системи;
  • використання виявлених вразливостей для отримання несанкціонованого доступу чи здійснення несанкціонованого впливу на інформацію для демонстрації наявності вразливостей і існування високоймовірної загрози інформаційної системи;
  • вироблення рекомендацій щодо підвищення ефективності захисту інформації в ІС.

Об'єкти і режим тестування[ред.ред. код]

В якості об'єкта дослідження може бути вибраний як зовнішній периметр мережі, так і окремо запущений сервіс або хост.

Вибирається режим тестування на основі рівня початкових знань виконавця про тестованої системі (Black Box або White Box) і рівня інформованості замовника про випробування (режим Black Hat або White Hat).

При виборі рівня Black Box виконавцю відомий лише діапазон зовнішніх IP-адрес. Даний підхід максимально наближений до дій хакера, дані про тестованому об'єкті будуть збиратися за допомогою відкритих джерел, соціальної інженерії і т.д.

У режимі White Box доступна виконавцю інформація значно ширше. У цій ситуації фахівцям може бути надано документація, вихідні коди, структура мережі, а також повний доступ до тестируемому об'єкту.

У режимі Black Hat про проведення робіт знають тільки керівники служби ІБ. У такому випадку вдається перевірити рівень оперативної готовності до атак мережевих адміністраторів та адміністраторів ІБ.

У режимі White Hat виконавці працюють в постійному контакті зі службою ІБ замовника, ІТ-фахівці замовника не перешкоджають виконанню необхідних тестів. і основне завдання зводиться до виявлення можливих вразливостей і оцінки ризику проникнення в систему.

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

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

Логічне міркування[ред.ред. код]

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

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

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

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

Ризики[ред.ред. код]

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

Методології[ред.ред. код]

OSSTMM (Open Source Security Methodology Manual) являє собою рецензовану методологію проведення тестів безпеки. OSSTMM випадки тестів діляться на п'ять каналів, які в сукупності тестують: управління інформацією та даними, рівні безпекової обізнаності персоналу, рівні управління шахрайством та соціальною інженерією, комп'ютерні та телекомунікаційні мережі, бездротові пристрої, мобільні пристрої, контроль безпеки фізичного доступу, фізичні місця розташування, такі як будівлі, периметри і військові бази.

OSSTMM зосереджується на технічних деталях: які саме елементи повинні бути перевірені, що робити до, під час і після тесту безпеки, як виміряти результат. OSSTMM також відомий своїми правилами ведення “бойових дій” (англ. Rules of Engagement), які визначають для тестувальника і клієнта, як тест повинен правильно протікати, починаючи з заперечення помилкових повідомлень від тестувальників, закінчуючи тим як клієнт може очікувати на отримання звіту. Нові тести для кращої міжнародної практики, закони, правила і етичні проблеми регулярно додаються та оновлюються.

NIST (National Institute of Standards and Technology) обговорює тестування на проникнення у документі SP800-115. Методологія NIST є менш вичерпною ніж OSSTMM, проте вона є кращою для прийняття регулюючими органами. З цієї причини NIST посилається на OSSTMM.

Етапи тесту на проникнення[ред.ред. код]

Роботи по тесту на проникнення включають в себе ряд послідовних етапів:

  • Аналіз відкритих джерел
  • Інструментальне сканування
  • Аналіз / оцінка виявлених вразливостей і вироблення рекомендацій
  • Підготовка звіту

Аудит інформаційної безпеки (ІБ)[ред.ред. код]

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

Міжсайтовий скриптинг (XSS).

Принцип роботи міжсайтового скриптинга заснований на впровадженні шкідливого коду в HTML-код сторінки, що призводить до виконання такого коду на машині «жертви». Давайте розглянемо цю уразливість на прикладі сайтів використовують PHP. Якщо атакуючий отримає можливість вставити довільний HTML-код, то він зможе керувати відображенням веб-сторінки з правами самого сайту. Приклад XSS атаки: «http://host/xxx.php?name =» Якщо впровадити код у вразливу сторінку сайту чи форуму, то цілком реально одержати вміст «піщерник» адміністратора. Також, XSS становить небезпеку, якщо довільний код відображається на сторінках з розширенням shtml, тобто сервер підтримує технологію SSI (Server Side Includes). Це може призвести до читання або виконання довільних файлів на сервері.

SQL-ін'єкції.

SQL-ін'єкція

SQL-ін'єкція відноситься до вставки мета символів SQL вводяться користувачем дані, що призводить до зміни запиту в кінцевій базі даних. Як правило, зловмисники для початку визначають уразливість сайту до такої атаки (для цього надсилається знак одинарної «лапки»). Наслідки виконання такої атаки на уразливому сайті можуть знаходитися в межах від появи детального повідомлення про помилку, що розкриває зловмисникові використовувану на сайті технологію, до доступу до закритих областям сайту або виконання на сервері довільних команд операційної системи. Методи SQL-ін'єкції залежать від типу використовуваної бази даних. Наприклад, SQL-ін'єкція на базі даних «Oracle» здійснюється в основному за допомогою використання ключового слово union, і вона набагато більш важка, ніж на MS SQL-сервері, де можна виконати множинні запити, відокремлюючи їх символом крапки з комою. У заданої за замовчуванням конфігурації MS SQL-сервер виконується з привілеями Local System і має розширену процедуру «xp_shell», що дозволяє виконання команд операційної системи.

PHP-ін'єкції.

З назви видно, що даної уразливості схильні скрипти, написані на мові PHP. Метод реалізації полягає в передачі функцій include () і reqiure () довільних параметрів, що може призвести до виконання довільного коду на цільовій машині з правами веб-сервера. Дана уразливість більш небезпечна, ніж дві попередні, тому що при стандартній конфігурації PHP і веб-сервера (що характерно для більшості серверів) можливе використання командного інтерпретатора.

Висновки[ред.ред. код]

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

Джерела[ред.ред. код]