Тест на проникнення — Вікіпедія

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

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

Типи тестів на проникнення[ред. | ред. код]

  • Соціальна інженерія — Тестування з підключенням «людського контингенту», здатність чітко виявляти і отримувати конфіденційні дані та іншу інформацію через Інтернет чи телефон (до цієї групи можуть відноситися співробітники організації чи будь-які інші уповноважені особи, які присутні в мережі організації);
  • Вебдодаток (Web Pentesting) — Використовується для виявлення вразливості в безпеці та інших проблем в декількох варіантах вебдодатків і сервісів, які розміщені на боці клієнта чи сервера;[1]
  • Мережева служба. (Network Pentesting) — Тестування проникнення в мережу для виявлення можливості доступу хакерів чи інших неавторизованих об'єктів;[2]
  • Клієнтська частина — Тест використовується для тестування додатків, встановлених на клієнтському сайті / додатку;
  • Віддалене підключення — Тестування vpn чи аналогічного об'єкта, який може забезпечити доступ до підключеної системи;
  • Бездротові мережі — Тест призначений для бездротових додатків і сервісів, включаючи їх різні компоненти та функції (маршрутизатори, фільтраційні пакети, шифрування, дешифрування і т. д.);
  • Тестування Системи автоматичного контролю та збору інформації (SCADA Pentesting).

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

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

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

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

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

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

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

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

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

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

При проведенні тесту на проникнення вирішуються завдання:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Міжсайтовий скриптинг (XSS)[ред. | ред. код]

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

SQL-ін'єкції[ред. | ред. код]

Докладніше: SQL ін'єкція
SQL-ін'єкція

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

PHP-ін'єкції[ред. | ред. код]

Докладніше: PHP-ін'єкція

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

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

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

Література[ред. | ред. код]

  • Тести на проникнення
  • Вовченко В. В., Степанов И. О. Організаційні проблеми захисту інформації. — К.: Академія, 2003 .- 48-65с.
  • Куранов А. И. Основи інформаційної безпеки. — К.: Ріпол — 2005. -38-41с.
  • Журнал «Information Security/ Інформаційна безпека». -2007 -№ 2.

Див. також[ред. | ред. код]

  1. Krishna, Ananda (31 жовтня 2019). Guide on Website Penetration Testing (Website Pentesting). www.getastra.com (амер.). Процитовано 8 січня 2022.
  2. Varghese, Jinson (10 листопада 2020). What is Network Penetration Testing & How to Perform It?. www.getastra.com (амер.). Процитовано 8 січня 2022.