Історія та необхідність тестування на проникнення
У 1967 році група експертів з комп’ютерної безпеки, що працювали в корпорації Rand, а саме Вілліс Варе, Рейн Терн, Гарольд Петерсен і Бенард Пітерс, після спільної конференції дійшли висновку, що системи зв’язку між комп’ютерами є досить вразливими до зовнішнього проникнення.
Саме тоді було зафіксовано першу спробу зламу комп’ютерних систем з метою перевірки їхньої безпеки. Цей інцидент підштовхнув Джеймса П. Андерсона до розробки покрокової методології, яка стала основою для сучасного тестування на проникнення.
Схема була досить простою: команди з безпеки проходили кілька етапів, починаючи з виявлення потенційних вразливостей і закінчуючи розробкою методів їх усунення. Ось, у стислому вигляді, історія виникнення тестування на проникнення.
Забезпечення безпеки компанії – це складний процес, який вимагає спеціалізованих знань та часу. У наш час, завдяки технологічному прогресу, зловмисникам стало легше виявляти слабкі місця в організаціях. Тести на проникнення, спрямовані на онлайн-активи компанії (такі як веб-додатки, веб-сайти, DNS-сервери та електронна пошта), допомагають виявити способи несанкціонованого доступу до цінних даних.
Завдяки тестам на проникнення, компанії можуть виявляти та зміцнювати свої системи до того, як ними скористаються зловмисники. Дослідження показують, що значна кількість ( 73%) успішних кібератак відбувається через вразливості веб-додатків.
Тому організаціям необхідно регулярно перевіряти безпеку своїх програм, систем і мереж. Проведення імітаційних тестів є ефективним методом підтвердження безпеки системи та її механізмів контролю. Це не одноразова процедура, а постійний процес. Частота перевірок залежить від структури компанії та виявлених ризиків.
На щастя, тести на проникнення не є чимось надскладним. Озброївши свої IT-команди необхідними знаннями, компанія зможе постійно впроваджувати заходи безпеки, особливо під час важливих оновлень інфраструктури або при запуску нових цифрових сервісів.
І все починається з чіткого розуміння суті цього процесу.
Що таке тестування на проникнення?
Перш ніж розбиратися з технічними деталями, важливо визначити, що ж це таке. Тести на проникнення (часто їх називають pen test) – це санкціонована кібератака, що проводиться на системи компанії в безпечному та контрольованому середовищі.
Подібно до аудитів безпеки, pen tests мають на меті виявити вразливості в межах керованої інфраструктури організації. Фактично, вони моделюють дії хакерів. Основні причини, чому вашій компанії необхідні pen tests, включають:
- Виявлення прихованих вразливостей до того, як це зроблять зловмисники.
- Удосконалення процесів і стратегій забезпечення безпеки.
- Зниження витрат на відновлення систем та скорочення часу простою.
- Дотримання нормативних вимог щодо безпеки та захисту даних.
- Зміцнення репутації бренду та збереження лояльності клієнтів.
Тести перевіряють стійкість вашого підприємства до атак і показують, наскільки легко хакери можуть проникнути у ваші системи. Крім того, отримана інформація корисна для визначення пріоритетів інвестицій у кібербезпеку, дотримання галузевих стандартів та вдосконалення захисних стратегій. Це стає можливим завдяки спеціалізованим автоматизованим інструментам тестування.
Що таке інструменти для Pen Test?
Етичні хакери використовують інструменти для pen test, щоб оцінити стійкість обчислювальної інфраструктури шляхом імітації реальних кібератак. Ці інструменти допомагають командам безпеки усунути повторні перевірки, прискорити створення звітів і зменшити витрати на різноманітні сканери.
Існує багато різних типів інструментів: з відкритим кодом, для веб-додатків, мереж, мобільних додатків, хмарних середовищ, ручні, автоматизовані та тестування на проникнення як послуга. Незалежно від їх різноманітності, важливо шукати інструменти з такими ключовими функціями, як створення звітів, інтеграція CI/CD, підтримка виправлень та наявність сертифікатів тестування (лише деякі з них пропонують публічні сертифікати).
Маючи це на увазі, розглянемо процес тестування на проникнення.
Етапи тестування на проникнення
Типовий тест на проникнення складається з кількох етапів. Хоча різні джерела можуть описувати їх по-різному, основна структура залишається незмінною. Процес включає збір інформації, сканування, оцінку вразливостей, експлуатацію та звітування.
Кваліфіковані фахівці з тестування використовують різноманітні інструменти, щоб вибрати найкращий для кожного етапу. Розглянемо кожен крок детальніше.
Збір інформації
Цей етап є надзвичайно важливим, хоча часто його недооцінюють. Він дозволяє організації досягти спільного розуміння з фахівцем з pen test. На цьому етапі визначається обсяг робіт, правила взаємодії, терміни та конкретна логістика, чіткі цілі та завдання.
Для отримання повного та корисного pen test цей етап допомагає зрозуміти, які області потребують перевірки та які методи будуть найефективнішими. Оскільки це початковий крок, його не варто ігнорувати.
Перед початком тестування системи організація повинна дати згоду на його проведення. Інакше дії тестувальника можуть вважатися незаконними. Організації встановлюють чіткі правила (зазвичай у формі договору) для забезпечення злагодженої роботи. Договір також має описувати критично важливі активи, цілі тестування та необхідні запобіжні заходи. Крім того, цей крок впливає на всі подальші дії. До кінця етапу всі плани повинні бути узгоджені з очікуваними результатами тестування.
Розвідка/OSINT-збір
На цьому етапі тестувальники збирають всю доступну інформацію про систему. Отримані дані є основою для наступних тестів і залежать від результатів першого кроку. Таким чином, тестувальники точно знають, які дані потрібно зібрати та які стратегії використовувати. Якщо використовується активна розвідка, тестувальник взаємодіє з системами безпосередньо. Якщо пасивна – використовується загальнодоступна інформація. Для отримання вичерпних даних, слід використовувати обидва підходи.
Активний збір даних включає аналіз мереж, операційних систем, облікових записів користувачів, доменних імен, поштових серверів та програм. Пасивний збір даних включає інформацію з відкритих джерел, таких як соціальні мережі, податкова інформація, веб-сайти та інші публічні дані.
Існує ряд інструментів розвідки з відкритим кодом (OSINT), які можуть спростити процес збору та аналізу інформації. Використовуючи структуру OSINT, можна створити розширений перелік точок входу та вразливостей. Цей крок є важливим для внутрішніх і зовнішніх pen test, але його можна пропустити при тестуванні веб-додатків, мобільних додатків та API.
Сканування
Наступний крок – це поглиблений технічний аналіз системи. За допомогою інструментів сканування, таких як автоматизовані сканери вразливостей та мережеві карти, можна зрозуміти, як цільова система реагує на різні типи вторгнення, відкриті порти, мережевий трафік та інші фактори.
Основними компонентами цього етапу є сканування та аналіз активів. Інструменти, такі як Nmap, дозволяють виявляти комп’ютерні служби та хости, відправляти пакети даних та аналізувати відповіді. Наприкінці цього етапу ви отримаєте інформацію про активи, включаючи операційні системи, запущені служби та відкриті порти.
Аналізуючи результати, можна отримати основу для розробки експлойтів. Можна створити мапу цифрового ландшафту системи та визначити можливі точки атаки. Для отримання чіткого розуміння реакції системи в різних умовах можна використовувати статичний та динамічний аналіз.
Статичний аналіз перевіряє код програм, поки вони ще не виконуються; можна використовувати спеціалізовані інструменти для сканування кодових баз. Динамічний аналіз, навпаки, перевіряє код під час виконання програми. Важливо пам’ятати, що зібрана на цьому етапі інформація повинна бути точною та повною, оскільки від цього залежить успіх наступних етапів.
Оцінка/Посилення доступу
На цьому етапі всі дані, отримані на попередніх кроках, допомагають виявити вразливості та визначити, чи можна їх використати. Цей етап особливо потужний у поєднанні з іншими процесами тестування на проникнення.
Для оцінки ризиків, пов’язаних з виявленими вразливостями, тестувальники звертаються до багатьох джерел, наприклад, до Національної бази даних про вразливості (NVD), яка аналізує вразливості програмного забезпечення, опубліковані в Common Vulnerabilities and Exposures (CVE).
Далі визначаються цілі та вектори атак. Цільовими областями можуть бути такі важливі активи, як дані про співробітників, інформація про клієнтів, дані партнерів/постачальників, порти, програми та протоколи. Запускаються атаки на веб-додатки.
Найпоширенішими є SQL-ін’єкції, міжсайтові сценарії та бекдори. Для визначення наслідків шкоди система використовується шляхом підвищення привілеїв, перехоплення трафіку та крадіжки даних. Дотримуючись обсягу, визначеного на етапі збору інформації, тестувальник працює в межах встановлених обмежень.
Експлуатація
На цьому етапі тестувальник перевіряє, чи можна використовувати виявлені вразливості. Фактично здійснюється спроба проникнення в систему. За допомогою таких інструментів, як Metasploit, тестувальник імітує реальну атаку.
На цьому етапі тестувальник несе відповідальність за ресурси організації, гарантуючи, що системи не будуть скомпрометовані після завершення моделювання.
Metasploit є потужним інструментом для експлуатації вразливостей. На цьому етапі оцінюються наслідки проникнення. Тестувальник може спробувати зашифрувати або викрасти дані, імітувати програми-вимагачі та атаки нульового дня. Головне завдання – досягти балансу між розширенням меж і збереженням цілісності системи.
Найкраще працювати з досвідченими фахівцями, оскільки вони можуть виявити вразливості, які пропускає автоматизація. Наприкінці цього етапу ви повинні мати змогу отримати привілеї високого рівня в системі та отримати доступ до мережевої інформації. Етичний хакер також має надати пояснення щодо результатів використання виявлених вразливостей.
Аналіз ризиків і рекомендації, огляд, звітність
Після етапу експлуатації тестувальник створює звіт, де детально описує результати. Цей звіт використовується для усунення виявлених вразливостей.
Хороший звіт про pen test повинен містити всю інформацію про виявлені вразливості, їх оцінки CVVS, короткий опис технічних ризиків, можливий вплив на бізнес, докладний опис складності експлуатації та тактичні поради.
Крім того, звіти повинні документувати всі етапи, використані тестові моделі, методи та цільові активи. За можливості, тестувальник повинен висловити свою думку про відповідність тесту цілям організації. Звіт має містити загальний огляд та технічні рекомендації.
Після звітування важливо провести очищення системи. Це передбачає повернення її до стану, в якому вона була до тестування, тобто відновлення значень за замовчуванням. Діяльність з очищення включає видалення всіх виконуваних файлів, тимчасових файлів і скриптів зі скомпрометованих систем, видалення облікових записів користувачів, створених для отримання доступу до скомпрометованої системи, та видалення руткітів з середовища.
На останньому етапі відновлення стає відповідальністю організації. Керуючись звітами та висновками тестів на проникнення, організація визначає вразливості, аналізуючи потенційні наслідки, надаючи інформацію для прийняття подальших рішень і впливаючи на стратегії виправлення.
Оскільки цей етап завершується вдосконаленням минулих помилок, усунення всіх вразливостей, які можна використовувати, обмежено розумним часом. Іноді цей етап може тривати деякий час, щоб провести повторні тести оновлень або провести різні тести.
Практичне застосування тестів пера: покрокова інструкція
Для цього прикладу ми вирішили використати фреймворк Metasploit. Ви можете створити свій власний робочий процес, але ось один з типових варіантів. Почніть з встановлення фреймворку.
Якщо ви використовуєте Linux/macOS, скористайтеся командою:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
Якщо ви використовуєте Windows, скористайтеся останнім інсталятором Windows. Або використайте команду Shell:
[CmdletBinding()] Param( $DownloadURL = "https://windows.metasploit.com/metasploitframework-latest.msi", $DownloadLocation = "$env:APPDATA/Metasploit", $InstallLocation = "C:\Tools", $LogLocation = "$DownloadLocation/install.log" ) If(! (Test-Path $DownloadLocation) ){ New-Item -Path $DownloadLocation -ItemType Directory } If(! (Test-Path $InstallLocation) ){ New-Item -Path $InstallLocation -ItemType Directory } $Installer = "$DownloadLocation/metasploit.msi" Invoke-WebRequest -UseBasicParsing -Uri $DownloadURL -OutFile $Installer & $Installer /q /log $LogLocation INSTALLLOCATION="$InstallLocation"
І потім…
Розпочніть проєкт – це буде ваше сховище даних і робочий простір. Оскільки у вас можуть бути різні вимоги до різних підмереж у вашій організації, організація вашої роботи підвищить вашу ефективність. Наприклад, якщо у вас є pen test для IT-команд і відділу кадрів, вам потрібні окремі результати.
Джерело зображення – MetaSploit
Отримання цільових даних – тут ви додаєте дані до свого проєкту за допомогою сканування виявлення або імпортуєте наявні дані. Скануйте цілі, щоб перерахувати відкриті порти для перегляду служб мережі. Використовуйте опцію сканування. Далі введіть IP-адреси, з якими ви хочете працювати, кожну на окремому рядку. Ви також можете скористатися опцією імпорту для завантаження даних з локального файлу.
Джерело зображення – MetaSploit
Перегляд даних хоста та керування ними – ви можете переглядати дані на рівні хоста або проєкту. Ви можете перемикатися між кожною IP-адресою для перегляду окремого хоста.
Джерело зображення – MetaSploit
Пошук вразливостей – запустіть сканування вразливостей за допомогою параметрів Nexpose. Цей крок використовує бази даних вразливостей для пошуку співпадінь.
Використання вразливостей – ви можете використовувати вразливості за допомогою майстра перевірки. Крім того, Nexpose також буде працювати.
Post Exploit Activity – Збір даних про експлойт через вкладку сеансу, натисніть “зібрати”.
Джерело зображення – MetaSploit
Очищення – після завершення збору даних скористайтеся опцією “очистити”, щоб завершити сеанс і очистити систему.
Створення звітів – наприкінці pen test Metasploit надає вам низку звітів, які є відправною точкою для консолідації даних та збору результатів.
Детальний короткий посібник з тестування пера можна знайти у Короткому посібнику Metasploit.
Загальні інструменти для перевірки пера
Серед поширених інструментів можна виділити Sn1per, Metasploit і Commix.
#1. Sn1per
Sn1per – це інструмент дослідження вразливостей, який перевіряє вплив атак на стороні клієнта у випадках злому. Він дозволяє імітувати віддалені та кінцеві атаки на користувачів у контрольованому середовищі. Sn1per має 6 тисяч зірок на GitHub. Він також може бути носієм інформації. За допомогою Sn1per ви можете заощадити час, автоматизувавши інструменти з відкритим вихідним кодом і комерційні інструменти для аналізу вразливостей.
#2. Metasploit
Metasploit – це потужна платформа для тестування на проникнення, що розробляється завдяки спільним зусиллям спільноти з відкритим кодом. Він має 31,2 тисячі зірок на GitHub, що свідчить про великий інтерес до цього інструменту. Metasploit підтримується завдяки співпраці ентузіастів безпеки, спрямованої на усунення вразливостей і підвищення рівня безпеки.
#3. Commix
Commix є чудовим інструментом для ін’єкцій команд ОС. Commix спеціалізується на вразливостях ін’єкції команд, він є простим у використанні, безкоштовним і з відкритим вихідним кодом, сумісний з різними платформами, портативний і модульний. Він отримав 4 тисячі зірок на GitHub. Він є безкоштовним та з відкритим вихідним кодом.
Заключні слова
Виконання всіх етапів тестування на проникнення є надзвичайно важливим для підприємств, які прагнуть підвищити стійкість своїх цифрових продуктів до сучасних кібератак. Оскільки кіберзлочинці постійно обходять традиційні методи захисту, моделювання реальних атак за допомогою pen test є ефективним способом боротьби з мінливими кіберзагрозами.
Адаптуючи pen test до конкретних потреб вашої організації, ви зможете підвищити ефективність політики безпеки. Проходження всіх етапів тестування на проникнення гарантує найкращу рентабельність інвестицій у кібербезпеку.
Щоб провести успішний pen test, почніть зі збору інформації про тест. Потім перейдіть до розвідки. Гарним початком розвідки є визначення цілей у системі, що тестується.
Далі скануйте систему для отримання повної інформації та виявлення вразливостей. Перейдіть до запуску атаки, намагаючись не пошкодити систему. Після цього створіть звіт, який стане основою для розробки плану дій з усунення виявлених вразливостей. Не забудьте очистити та повернути систему до початкового стану.
При правильному використанні, тести на проникнення покращують рівень безпеки вашої організації, дозволяючи виявляти та усувати вразливості. Оскільки багато організацій переходять на хмарні технології та використовують новітні розробки, тести на проникнення стають критично важливими для сфери інформаційної безпеки. Насправді, 75% підприємств використовують pen test для перевірки свого рівня безпеки. Якщо ви приділите достатньо уваги та розглянете кожен етап тесту окремо, ви завжди отримаєте користь від проведення тестів на проникнення.
Далі ознайомтеся з безкоштовними онлайн-інструментами тестування на проникнення (Pentest), щоб перевірити безпеку своїх програм.