Швидкий старт penetration testing

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

TOOLS FOR FIND VULNERABILITY

Логин Свят

10/28/20235 min read

Швидкий старт penetration testing

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

Вступ до NMAP

Важливо розуміти чітку різницю між оцінкою вразливості та тестування на проникнення. Щоб зрозуміти цю різницю, давайте розглянемо реальний сценарій. Ви помітили, що двері вашого сусіда замкнено, а сусіда зараз немає вдома. Це називається оцінка вразливості. А тепер, якщо ви відчинете сусідські двері та зайдете в будинок, то це тест на проникнення. У контексті інформаційної безпеки, ви можете помітити, що служба SSH працює зі слабкими обліковими даними; це є частиною оцінки вразливості. Якщо ви використовуєте ці облікові дані, щоб отримати доступ, то це тест на проникнення. Оцінка вразливості часто безпечні для виконання на проді, тоді як тести на проникнення, якщо вони не контрольовані може завдати серйозної шкоди цільовим системам на проді.

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

Проведення тестів на проникнення вимагає добре продуманого та методичного підходу. Це багатоетапний процес. Ось деякі з етапів тестування на проникнення:

1) Збір інформації:
Збір інформації є найважливішим етапом життєвого циклу тестування на проникнення. Цей етап також називається розвідкою. Він включає в себе використання різних пасивних і активних методів для збору якомога більше інформації про цільову систему. Докладний збір інформації створює міцний фундамент для подальших етапів у життєвому циклі тестування на проникнення.

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

3) Оцінка вразливостей:
Фаза оцінки вразливостей передбачає використання різних засобів та методологій для підтвердження наявності відомих вразливостей у системі цілі.

4) Отримання доступу:

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

5) Підвищення привілеїв:

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

6) Збереження доступу:

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

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

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

Ми будемо гратися з трьома такими інструментами: NMAP, OpenVAS і Metasploit. Просто наявність цих трьох інструментів у вашому арсеналі може надати широкі можливості для проведення тестування на проникнення. Нижче описано, як ці інструменти можуть бути використані на різних етапах життєвого циклу тестування на проникнення.

Збір інформації: - Nmap, Metasploit

Перелік: - Nmap, Metasploit

Оцінка вразливостей: - OpenVAS

Отримання доступу: - Metasploit

Підвищення привілеїв: - Metasploit

Збереження доступу: - Metasploit

Приховування слідів: - Metasploit

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

NMAP

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

• Встановлення NMAP

• Використання NMAP з ZENMAP

• Розуміння станів портів у NMAP
• Проведення базового сканування за допомогою NMAP
• Розуміння сканів TCP та сканів UDP
• Виокремлення операційних систем і служб цілі
• Налаштування сканування
• Використання сценаріїв NMAP
• Виклик NMAP з Python



Встановлення NMAP

NMAP можна встановити як на системах Windows, так і на системах, що працюють на основі Unix. Для встановлення NMAP на Windows просто перейдіть за посиланням https://nmap.org/download.html, завантажте виконавчий файл і встановіть його.

Для систем на основі Unix ви можете встановити NMAP з командного рядка. В дистрибутивах для забезпечення безпеки, таких як Kali Linux, NMAP встановлюється за замовчуванням. Однак для інших регулярних дистрибутивів його потрібно встановлювати окремо. Ви можете просто використовувати команду sudo apt install nmap для систем на основі Debian. Ця команда встановить NMAP разом з усіма необхідними залежностями.

Вступ до NMAP та ZENMAP

Спочатку NMAP був інструментом в терміналі. В Linux-терміналі ви можете просто ввести команду nmap, щоб розпочати роботу. На рисунку 1-2 показано вивід команди nmap. Він відображає різні параметри та перемикачі, які потрібно налаштувати для сканування цілі.

ZENMAP - це графічний інтерфейс для NMAP. Він пропонує ту ж функціональність, але більш зручним способом. ZENMAP є частиною стандартної установки Kali Linux і може бути доступний через Applications ➤ Information Gathering ➤ ZENMAP. Інтерфейс ZENMAP має три основні налаштовувані параметри.

• Ціль: Це може бути одна IP-адреса, список декількох IP-адрес або вся підмережа.

• Профіль: ZENMAP має набір кількох попередньо визначених профілів скану. Профілі класифікуються відповідно до типів сканів, доступних в NMAP. Ви можете вибрати один з доступних профілів або створити власний скан відповідно до своїх вимог.

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

Стани портів NMAP

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

Відкритий (Open): Стан "Відкритий" вказує на те, що програма на цільовій системі активно слухає підключення/пакети на цьому порту.

Закритий (Closed): Стан "Закритий" вказує на те, що на цьому порту немає жодної програми, яка б слухала. Однак стан порту може змінитися на "Відкритий" у майбутньому.

Фільтрований (Filtered): Стан "Фільтрований" вказує на те, що або брандмауер, або фільтр, або якась мережева перешкода блокує порт, і, отже, NMAP не може визначити, чи він відкритий чи закритий.

Нефільтрований (Unfiltered): Стан "Нефільтрований" вказує на те, що порти відповідають на запити NMAP; однак неможливо визначити, чи вони відкриті чи закриті.

Відкритий/Фільтрований (Open/Filtered): Стан "Відкритий/Фільтрований" вказує на те, що порт або фільтрований, або відкритий; однак NMAP не може точно визначити стан.

Закритий/Фільтрований (Closed/Filtered): Стан "Закритий/Фільтрований" вказує на те, що порт або фільтрований, або закритий; однак NMAP не може точно визначити стан.

Основне сканування з NMAP

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

Перш ніж перейти до фактичного сканування, важливо відзначити, що NMAP - це шумний інструмент. Він створює багато мережевого трафіку і, іноді, може споживати значну пропускну здатність. Багато систем виявлення вторгнень і систем запобігання вторгнень можуть виявляти та блокувати трафік NMAP. Говорять, що базовий стандартний скан NMAP на одному хості може створити більше 4 МБ мережевого трафіку. Тому, навіть якщо ви робите базовий скан всій підмережі, він створить приблизно 1 ГБ трафіку. Тому важливо виконувати скани NMAP з повним розумінням використовуваних перемикачів.

Базовий скан для одного IP

Ось команда:

nmap -sn <IP-адреса цілі>

Давайте розпочнемо з базового скану "ping" для однієї цілі. Скан "ping" не перевіряє відкриті порти, але він показує, чи жива ціль. На скріні нижче показано результати скану "ping" для одного IP-адреси цілі.

Базовий скан для всієї підмережі

Ось команда:

nmap -sn <підмережа цілі>

У практичному сценарії можливо мати кілька IP-адрес, які вам потрібно перевірити. Щоб швидко дізнатися, які хости в даній підмережі живі, ви можете виконати сканування ping NMAP на всю підмережу. Підмережа - це просто логічний поділ мережі. Сканування всієї підмережі дозволить вам отримати огляд систем, які присутні в мережі. На рисунку нижче результати скану ping, виконаного для підмережі 192.168.31.0-255. Ви можете побачити, що з 255 хостів тільки 4 хости працюють. Тепер ви можете подальше вивчити ці 4 хости і отримати більше деталей.

Сканування з використанням вхідного файлу

Ось команда:

nmap -sn -iL <шлях до файлу>

Можливий сценарій, коли вам потрібно сканувати великий діапазон IP-адрес. Замість того, щоб вводити їх у форматі, розділеному комами, в NMAP, ви можете помістити їх у файл і передати цей файл до двигуна NMAP.

Скан з вказанням причини

Ось команда:

nmap --reason <IP-адреса цілі>

Під час звичайного скану NMAP ви можете отримати список відкритих портів, але ви не будете знати причину, чому NMAP повідомив про відкритий певний порт. Скан з вказанням причини в NMAP - це цікавий варіант, де NMAP надає причину для кожного порту, звітованого як відкритий, як показано на малюнку нижче. Скани NMAP ґрунтуються на прапорцях TCP, які встановлені в запиті та відповіді. У цьому випадку відкриті порти були виявлені на підставі прапорців SYN і ACK, встановлених у пакетах TCP.

Підтримувані протоколи

Ось команда: nmap -sO <IP-адреса цілі>

В рамках збирання інформації та розвідки може бути корисним знати, які IP-протоколи підтримуються цільовою системою. З цього сканування ми побачимо, що ця ціль підтримує: TCP, UDP і ICMP та інші.

Проба брандмауера

У корпоративній мережі, де є брандмауери, системи виявлення вторгнень та системи запобігання вторгненням, дуже можливо, що ваші скани NMAP не тільки будуть виявлені, але й будуть заблоковані. NMAP пропонує спосіб визначити, чи фільтруються його скани якимось проміжним пристроєм, наприклад брандмауером, команда -sA. Нижче показано, що всі 1000 портів, які сканував NMAP, були нефільтрованими; отже, наявності будь-якого фільтруючого пристрою не було.

Топологія

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

Швидкий TCP-скан

Ось команда: nmap -T4 -F <IP-адреса цілі>

Тепер, коли у вас є список живих хостів у підмережі, ви можете виконати докладні скани, щоб дізнатися, які порти та служби працюють на них. Ви можете вказати IP-адресу цілі, вибрати профіль "Швидкий скан" і виконати сканування. На рисунку нижче показані результати скану, де виділено кілька відкритих портів на цільовій системі.

Перелік служб

Ось команда: nmap -sV <IP-адреса цілі>

Тепер, коли у вас є живий хост, і ви також знаєте, які порти відкриті, час перелічити служби, що пов'язані з цими портами. Наприклад, ви бачите, що порт 139 відкритий. Тепер вам потрібно знати, яка служба пов'язана з ним і яка саме версія сервера обслуговує цю службу. Ви можете використовувати команду nmap -sV <IP-адреса цілі>, як показано на рисунку нижче. Перелік служб і їх версій надає велику кількість інформації, яка може бути використана для подальших атак.

UDP Сканування портів

Ось команда: nmap -sU -p 1-1024 <IP-адреса цілі>

Усі скани, які ви виконували досі, надали вам інформацію тільки про TCP-порти. Однак цільова система може також мати служби, що працюють на портах UDP. За замовчуванням скан NMAP просто аналізує TCP-порти. Вам потрібно окремо сканувати порти та служби UDP. Для сканування загальновживаних UDP-портів ви можете використовувати команду nmap -sU -p 1-1024 <IP-адреса цілі>. Параметр -sU вкаже двигуну NMAP сканувати саме UDP-порти, в той час як параметр -p 1-1024 обмежить сканування портів лише діапазоном від 1 до 1024. Також важливо відзначити, що сканування портів UDP зазвичай займає значно більше часу, ніж звичайний скан TCP.

Визначення операційної системи

Ось команда: nmap -O <IP-адреса цілі>

Тепер, коли ви знаєте, як проводити дослідження відкритих портів та перелічити служби, ви можете піти далі і використовувати NMAP для визначення версії операційної системи, яку використовує цільова система. Ви можете використовувати команду nmap -O <IP-адреса цілі>. В результати визначення, як приклад, операційної системи за допомогою NMAP ви можете побачити, що ціль працює під управлінням Linux на основі ядра 2.6.X.

Інтенсивний скан

Ось команда: nmap -T4 -A -v <IP-адреса цілі>

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

Скрипти NMAP

NMAP вдавно відійшов від простого сканера портів. Він набагато потужніший та гнучкіший, ніж просто сканер портів. Функціональність NMAP може бути розширена за допомогою скриптів NMAP. Рушій скриптів NMAP здатний виконувати скрипти, що дозволяють проводити глибокий перелік цілей та збирання інформації. У NMAP є приблизно 600 скриптів для різних цілей. У Kali Linux скрипти можна знайти за шляхом /usr/share/nmap/scripts. Наступний розділ розгляне, як ви можете використовувати скрипти NMAP для переліку різних TCP-сервісів.

Перелік HTTP

HTTP - це загальна служба, яку знаходять на багатьох хостах. Вона працює за замовчуванням на порту 80. У NMAP є скрипт для переліку служб HTTP. Його можна викликати за допомогою команди nmap --script http-enum <IP-адреса цілі>. На рисунку 1-17 показані результати скрипта http-enum. Він відображає різні цікаві каталоги, розміщені на веб-сервері, які можуть бути корисними при побудові подальших атак.

Наступні скрипти NMAP для переліку HTTP:

• http-title

• http-method-tamper

• http-trace

• http-fetch

• http-wordpress-enum

• http-devframework

• http NSE Library

Перелік SMB

Протокол Server Message Block (SMB) широко використовується для обміну файлами в мережі. SMB зазвичай працює на порту 445. Тому, якщо ви знаходите ціль з відкритим портом 445, ви можете подальше перелічити його, використовуючи скрипти NMAP. Ви можете викликати перелік SMB за допомогою команди nmap -p 445 --script-smb-osdiscovery <IP-адреса цілі>. Параметр -p 445 викликає скрипт для запуску проти порту 445 на цільовій системі. Результат виконання скрипта, надасть вам точну версію SMB, використовувану ОС та ім'я NetBIOS.

Інший корисний скрипт NMAP - це smb-enum-shares. Він перелічує всі ресурси SMB на цільовій системі.

Наступні скрипти NMAP для переліку SMB:


• smb-vuln-ms17-010
• smb-protocols
• smb-mbenum
• smb-enum-users
• smb-enum-processes
• smb-enum-services

Перелік DNS

Система доменних імен дійсно є основою Інтернету, оскільки вона виконує важливу функцію перекладу імен хостів на IP-адреси та навпаки. Вона працює на порту 53 за замовчуванням. Перелічення сервера DNS може надати багато цікавої та корисної інформації. У NMAP є кілька скриптів для переліку DNS-служби.

Наступні скрипти NMAP для переліку DNS:

• dns-cache-snoop
• dns-service-discovery
• dns-recursion
• dns-brute
• dns-zone-transfer
• dns-nsid
• dns-nsec-enum
• dns-fuzz
• dns-srv-enum

Перелік FTP

Протокол передачі файлів (FTP) є найбільш розповсюдженим протоколом для передачі файлів між системами. Він працює на порту 21 за замовчуванням. У NMAP є кілька скриптів для переліку служби FTP. Для прикладу скрипти • ftp-syst • ftp-anon відображають деталі версії FTP-сервера і показує, що сервер приймає анонімні підключення.

Оскільки цільова система запускає сервер vsftpd, ви можете спробувати інший скрипт NMAP, який перевірить, чи є FTP-сервер вразливим. Ви можете використовувати скрипт ftp-vsftpd-backdoor.

Результат може показати, чи FTP-сервер вразливий; ви дізнаєтеся.

Наступні скрипти NMAP для переліку FTP:

• ftp-brute
• ftp NSE
• ftp-bounce
• ftp-vuln-cve2010-4221
• ftp-libopie

Перелік MySQL

MySQL - одна з найпопулярніших систем керування реляційними базами даних з відкритим вихідним кодом. Зазвичай вона працює на порту 3306. У NMAP є скрипти для переліку служби MySQL. Перелічення служби MySQL може розкрити багато потенційної інформації, яку можна подальше використовувати для атак на цільову базу даних. На рисунку нижче показані результати скрипта mysql-info. Він відображає деталі версії протоколу, можливості сервера та значення солі, яке використовується.

Наступні скрипти NMAP для переліку MySQL:

• mysql-databases
• mysql-enum
• mysql-brute
• mysql-query
• mysql-empty-password
• mysql-vuln-cve2012-2122
• mysql-users
• mysql-variables

Перелік SSH

Протокол Secure Shell (SSH) широко використовується для безпечних віддалених входів та адміністрування. На відміну від Telnet, SSH шифрує трафік, забезпечуючи безпечну комунікацію. Зазвичай він працює на порту 22. У NMAP є скрипти для переліку служби SSH. Для приклада результати скрипта ssh2-enumalgos. покаже різні алгоритми шифрування, які підтримуються SSH-сервером цільової системи.

Наступні скрипти NMAP для переліку SSH:

• ssh-brute
• ssh-auth-methods
• ssh-run
• ssh-hostkey
• sshv1
• ssh-publickey-acceptance

Перелік SMTP

Простий протокол передачі пошти (SMTP) використовується для передачі електронної пошти. Зазвичай він працює на порту 25. У NMAP є кілька скриптів для переліку служби SMTP. Ці скрипти NMAP можуть розкрити кілька вразливостей в SMTP-сервері, таких як відкриті релеї, прийняття довільних команд і так далі. Скрипт smtp-commands відображає різні команди, які приймає цільовий SMTP-сервер.

Багато SMTP-серверів помилково дозволяють відкритий релеїнг. Це дозволяє будь-кому підключитися до SMTP-сервера без аутентифікації та надсилати листи. Це дійсно критична вразливість. У NMAP є скрипт під назвою smtp-open-relay, який перевіряє, чи дозволяє цільовий SMTP-сервер відкриті релеї.

Наступні скрипти NMAP для переліку SMTP:

• smtp-enum-users
• smtp-commands
• smtp-brute
• smtp-ntlm-info
• smtp-strangeport
• smtp-vuln-cve2011-1764

Перелік VNC

Протокол Virtual Network Computing (VNC) зазвичай використовується для віддаленого обміну графічним робочим столом. Він працює на порту 5900 за замовчуванням. У NMAP є кілька скриптів для переліку служби VNC. Скрипт vnc-info відображає деталі версії протоколу разом з типом аутентифікації.

Наступні скрипти NMAP для переліку VNC:

• vnc-brute
• realvnc-auth-bypass
• vnc-title

Отримання банера служби

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

До цього часу ви бачили можливості NMAP зі сканування портів та переліку служб. Тепер ви побачите, як NMAP можна використовувати для проведення оцінки вразливостей. Хоча це не так повноцінно, як сканери вразливості, такі як Nessus і OpenVAS, NMAP може здійснювати базовий пошук вразливостей. NMAP робить це за допомогою ідентифікаторів загальних вразливостей та витоків (CVE). Він шукає відповідні CVE для служб, що працюють на цільовій системі. Щоб перетворити NMAP у сканер вразливостей, спершу потрібно завантажити і встановити додаткові скрипти. Для встановлення перейдіть до каталогу /usr/share/nmap/scripts і потім клонуємо туди два git-каталоги, які показано тут:

https://github.com/vulnersCom/nmap-vulners.git

https://github.com/scipag/vulscan.git

Після завантаження необхідних скриптів ви готові виконувати їх на цільовій системі. Ви можете використовувати команду nmap -sV --script nmap-vulners <IP-адреса цільової системи>.

Цікаво, що багато CVE доступні проти ISC BIND 9.4.2, яка працює на TCP-порту 53. Ця інформація про CVE може бути використана для подальших атак на ціль. Також видно кілька CVE для TCP-порту 80, де працює веб-сервер Apache httpd 2.2.8,

NMAP Output

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

-oN nmap 192.168.25.129 -oN output.txt: Виконує сканування цільової IP-адреси та записує звичайний вивід у файл output.txt.

-oX nmap 192.168.25.129 -oX output.xml: Виконує сканування цільової IP-адреси та записує звичайний вивід у файл XML з назвою output.xml.

-oG nmap 192.168.25.129 -oG output.grep: Виконує сканування цільової IP-адреси та записує greppable вивід у файл output.grep.

--appendoutput nmap 192.168.25.129 -oN file.file --append-output: Виконує сканування цільової IP-адреси та додає результати скану до попереднього файлу з виводом, який має назву file.file.

У цьому розділі вас було ознайомлено з абсолютною основою і основами інструмента NMAP та дали вам уявлення про те, як можна розширити можливості NMAP, використовуючи скрипти.

OpenVAS

У попередньому розділі ви дізналися про NMAP та його можливості. У цьому розділі ви дізнаєтеся, як використовувати OpenVAS для виконання оцінки вразливостей. Зокрема, цей розділ охоплює наступне:

• Вступ до OpenVAS
• Налаштування OpenVAS
• Імпорт результатів NMAP в OpenVAS
• Сканування на вразливості
• Звітність

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

Введення до OpenVAS

Окрім OpenVAS є і інші аналоги для сканінгу вразливостей. Ось кілька популярних варіантів для сканування на шкідливе ПЗ:

• Nessus

• Nexpose

• QualysGuard

Ці продукти є зрілими і широко використовуються в галузі. Ми будемо розглядати саме платформу OpenVAS. Вона є безкоштовною для спільноти та пропонує багато корисних функцій. OpenVAS - це скорочення від Open Vulnerability Assessment System. Це не просто інструмент, а повна платформа, що складається з кількох служб і інструментів, які пропонують вичерпне і потужне рішення для сканування вразливостей та управління ними. Схоже на те, як антивірусне рішення має сигнатури для виявлення відомих вірусів, у OpenVAS є набір тестів на вразливості мережі (NVT). Тести на вразливості проводяться за допомогою плагінів, які розробляються за допомогою мови скриптування атаки Nessus (NASL). У OpenVAS є понад 50 000 NVT, і нові NVT додаються регулярно.

Установка

OpenVAS поставляється з декількома варіантами установки, включаючи контейнер Docker. Його можна встановити на різних операційних системах. Однак найпростіший і найшвидший спосіб почати використовувати OpenVAS - це завантажити віртуальний апарат OpenVAS. ISO-зображення віртуального апарата OpenVAS можна завантажити з https://www.greenbone.net/en/install_use_gce/. Перевага використання цього віртуального апарата полягає в тому, що в ньому вже є всі залежності та все налаштовано. Вам потрібно лише завантажити ISO-зображення, запустити його в VMware/VirtualBox і налаштувати деякі основні параметри, і OpenVAS буде працювати за кілька хвилин. Після завантаження завантаженого ISO ви можете розпочати, вибравши опцію Setup.

Я буду використовувати докер для роботи з ним. Для цього вам достатньо виконати цю команду щоб розпочати роботу з додатком, але в тому випадку, що у вас вже стоїть докер:


docker run -d -p 443:443 --name openvas mikesplain/openvas:9

Після завантаження можете перейтив браузері на урл https://localhost/, де ви потрапите на сторінку авторизації, для входу в самий додаток використайте креди admin/admin.

Feed Оновлення

"Feed" (поживний) - це абсолютно необхідний компонент OpenVAS. Якщо ваша установка OpenVAS має застарілі "feeds", то ви можете пропустити виявлення останніх уразливостей. Тому важливо мати останні "feeds" перед тим, як розпочати будь-яке сканування. Щоб перевірити поточну версію "feed", перейдіть в меню Додатково ➤ Стан "feed", як показано на рисунку нижче. Ви можете побачити, що "feeds" не були оновлені протягом 1717 днів.

Щоб оновити "feeds", ви можете перейти до терміналу та ввести команду openvas-feed-update. Просто переконайтеся, що у вас є активне підключення до Інтернету для оновлення "feeds". Оновлення "feeds" займе деякий час; після завершення ви можете знову перейти до веб-інтерфейсу OpenVAS та перевірити статус "feeds". Тепер ви повинні побачити, що статус "feeds" є актуальним.

User Management

OpenVAS працює в архітектурі клієнт-сервер, де можуть підключатися кілька користувачів до централізованого сервера. Тому важливо створювати та керувати користувачами та групами. Перед створенням користувачів вам потрібно мати деякі групи користувачів. Щоб створити нові групи користувачів OpenVAS, перейдіть до Розділ ➤ Group у розділі Administration. Після створення і налаштування необхідних груп ви можете створити нових користувачів і призначити їх до певних груп на основі їхніх рівнів привілеїв. Щоб створити нового користувача, перейдіть до Розділ ➤ Users в розділі Administration.

Хоча OpenVAS дозволяє створювати та керувати користувачами локально, ви також можете підключитися до протоколу доступу до каталогів з легким доступом (LDAP) для централізованого керування користувачами. Можливо налаштувати параметри LDAP, перейшовши до Адміністрація ➤ LDAP.

Також OpenVAS може бути налаштований для аутентифікації на сервері RADIUS. Це можна зробити, налаштувавши параметри сервера RADIUS в розділі Адміністрація ➤ RADIUS.

Dashboard

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

По графіку

В корпоративному середовищі може статися так, що скани потрібно запускати після робочих годин. У такому випадку планувальник OpenVAS може бути корисним. Планувальник можна використовувати для запуску сканів о певний час і доступний за адресою Configuration ➤ Schedules.

Смітник

Якщо ви випадково видалили яку-небудь сутність в OpenVAS і пізніше потребуєте її відновити, ви можете зробити це через смітник. Ви можете отримати доступ до нього за адресою Extras ➤ Trashcan

Сканування вразливостей

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

Наступним кроком є створення нового завдання для сканування. Щоб створити нове завдання для сканування, перейдіть до Розділу Task.

Тепер ви можете вибрати, чи розпочати швидке завдання, чи використовувати розширений майстер завдань, який надає більше можливостей для сканування. Зараз я розпочну з швидким налаштування. Все, що вам потрібно зробити, - це ввести IP-адресу цільової системи та натиснути «Start Scan».

Зверніть увагу, що у OpenVAS є кілька попередньо налаштованих профілів сканування. Залежно від конкретних вимог, ви можете вибрати один з наступних профілів сканування:

• Повний і швидкий
• Повний і швидкий Ultimate
• Повний і дуже глибокий
• Повний і дуже глибокий Ultimate
• Пошук хостів
• Пошук систем

Для стандартного скану вибрано профіль "Повний і швидкий". Сканування запускається, і ви можете побачити, що стан скану встановлено як «Виконується», як показано на рисунку 2-25. Вкладка дії скану надає різні способи призупинення та відновлення скану за потреби.

Після завершення скану ви можете перейти до пункту Scans ➤ Results, щоб переглянути виявлені вразливості під час скану. Тепер, коли скан завершено, ви можете просто переглянути результати скану в веб-консолі OpenVAS або завантажити звіт у форматі, який вам до вподоби.

Також можливо відфільтрувати результати вразливостей. Наприклад, ви можете хотіти побачити лише вразливості, пов'язані з HTTP. Просто перейдіть до Scans ➤ Results, і на вкладці Фільтр введіть критерії фільтрації.

Додаткові налаштування OpenVAS

Досі ви дізналися, як налаштувати віртуальну машину OpenVAS і розпочати сканування на вразливості. OpenVAS - це гнучка система управління вразливостями, яка пропонує багато налаштувань на вибір для конфігурації згідно з вашими потребами. У цьому розділі розглянуто деякі додаткові налаштування OpenVAS, які ви можете налаштувати за своїми потребами.

Продуктивність

OpenVAS - це, безумовно, інструмент, який вимагає великих ресурсів. Він може споживати багато пам'яті та обчислювальних ресурсів. Тому, скануючи кілька систем, корисно слідкувати за його продуктивністю. Щоб переглянути дані щодо продуктивності, перейдіть в Extras ➤ Performance. Ви можете переглянути дані щодо продуктивності за вказаний період часу, фільтруючи дати.

Калькулятор CVSS

Спільна система оцінки вразливостей (CVSS) є базовим стандартом, який використовується багатьма засобами безпеки для розрахунку важкості вразливості. CVSS враховує численні параметри перед обчисленням оцінки вразливості. OpenVAS пропонує готовий калькулятор CVSS, який можна використовувати для розрахунку оцінок вразливості. Доступ до калькулятора CVSS можна отримати в розділі Extras ➤ Калькулятор CVSS. Докладніше про CVSS можна дізнатися за посиланням https://www.first.org/cvss/.

Налаштування

OpenVAS - це високорівнева система з численними налаштуваннями. Дуже корисно мати огляд всіх налаштувань та їх значень в одному місці. Ви можете перейти в Меню ➤ Configuration, щоб отримати огляд налаштувань, налаштованих до цього часу.

Звітність

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

• Анонімний XML
• ARF
• CPE
• CSV для хостів
• CSV результатів
• HTML
• ITG
• LaTeX
• NBE
• PDF
• Topology SVG
• TXT
• Verinice ISM
• Verinice ITG
• XML

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

Підсумок

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

Metasploit

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

• Введення в Metasploit
• Огляд структури Metasploit
• Основні команди та конфігурація
• Виклик NMAP та OpenVAS з Metasploit
• Сканування служб з Metasploit
• Основи Meterpreter

Введення в Metasploit

Metasploit був випущений у 2003 році, коли H.D. Мур розробив переносний мережевий інструмент на Perl. У 2007 році він був перероблений з використанням Ruby. Проект Metasploit отримав комерційне визнання та популярність, коли компанія Rapid 7 придбала його у 2009 році.

Metasploit - це не просто один інструмент. Це повноцінна рамка. Вона дуже міцна та гнучка і має безліч інструментів для виконання різних простих і складних завдань. У нього є унікальна можливість виконувати майже всі основні завдання на різних етапах тестування на проникнення. Деякі з головних завдань, які ви можете виконати за допомогою Metasploit, включають:

• Збір інформації
• Сканування вразливостей
• Використання вразливостей
• Генерація завантажень
• Післяпроникненська обробка
• Звітність Фреймворк

Metasploit (MSF) - це відкрита платформа для розробки, тестування та використання коду використання. Він широко використовується професіоналами з безпеки, пентестерами і хакерами для виявлення та виправлення вразливостей в комп'ютерних системах. MSF має велику колекцію використань, завантажень і допоміжних модулів, які регулярно оновлюються і розширюються великою та активною спільнотою розробників і учасників. Це робить MSF одним з найпотужніших та найгнучких інструментів, доступних для тестування на проникнення та оцінки вразливостей. Metasploit призначено використовувати у законних завдань, пов'язані з життєвим циклом тестування на проникнення.

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

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

Metasploit має три доступні редакції.

• Metasploit Pro
• Metasploit Community
• Metasploit Framework

Ми будемо використовувати редакцію Metasploit Framework.

Анатомія та структура Metasploit

Перш ніж переходити до фактичних команд, вам спершу потрібно розібратися в структурі Metasploit. Найкращий і найпростіший спосіб познайомитися з загальною структурою Metasploit - це просто переглянути його каталог. В Kali Linux за замовчуванням Metasploit розташований за шляхом /usr/share/metasploit-framework.

На діаграмі видно, що Metasploit має чітку структуру, яка класифікує його різні компоненти за різними категоріями. На вищому рівні Metasploit можна візуалізувати так.

Допоміжні модулі (Auxiliaries) - це модулі, які роблять Metasploit таким гнучким. Допоміжні модулі Metasploit - це ніщо інше, як шматок коду, спеціально написаний для виконання певного завдання. Наприклад, вам може бути цікаво перевірити, чи дозволяє певний FTP-сервер анонімний доступ або чи є ваш веб-сервер вразливим до атаки на серцевий викидень. Для всіх цих завдань існують допоміжні модулі.

Насправді, Metasploit має понад 1 000 допоміжних модулів, які класифіковані у 19 категоріях. Ось перелік категорій допоміжних модулів:

  1. admin: Модулі, що використовуються для адміністративних завдань і тестування прав доступу.

  2. brute: Модулі для перебору паролів і авторизації.

  3. database: Модулі для роботи з базами даних та даними.

  4. dos: Модулі для виконання атак Denial of Service (DoS) і заборони обслуговування.

  5. evasion: Модулі для ухилення від виявлення та обхіду захисних заходів.

  6. exploit: Модулі для використання вразливостей і отримання контролю над системою.

  7. fuzzers: Модулі для генерації та відправки фузійних запитів для пошуку вразливостей.

  8. malware: Модулі для обробки шкідливих програм та аналізу вірусів.

  9. misc: Різноманітні допоміжні модулі та інші корисні інструменти.

  10. multi: Модулі для роботи з багатьма хостами або протоколами одночасно.

  11. network: Модулі для роботи з мережами, перехоплення трафіку і аналізу мережових протоколів.

  12. post: Модулі для пошукової інформації та аналізу даних на компрометованих системах.

  13. scanner: Модулі для сканування мереж та виявлення вразливостей.

  14. sniffer: Модулі для перехоплення трафіку і аналізу пакетів.

  15. spoof: Модулі для підробки адреси і ідентифікації.

  16. tunnel: Модулі для створення і керування тунелями та VPN-з'єднаннями.

  17. web: Модулі для тестування веб-застосунків і виявлення вразливостей в них.

  18. windows: Модулі, що працюють в операційних системах Windows.

  19. wireless: Модулі для атак на бездротові мережі і пристрої.

Payloads

Ви вже дізналися, що експлойт - це код, який буде використовуватися проти вразливого компонента. Код експлойта може виконатися успішно, але те, що ви хочете зробити після успішного виконання експлойта, визначається вантажем (payload). Простими словами, вантаж - це дія, яку потрібно виконати після виконання експлойта. Наприклад, якщо ви хочете створити зворотний оболонку до вашої системи, то вам потрібно вибрати відповідний вантаж Metasploit для цього. У Metasploit є приблизно 42 вантажі в наступних категоріях:

  • Singles

  • Stagers

  • Stages

Exploits

Експлойти є дуже важливою частиною Metasploit. Вся мета цього фреймворку - це надання експлойтів для різних вразливостей. Експлойт - це самий код, який виконуватиметься на цільовій системі для використання вразливості. У Metasploit є понад 42000 експлойтів у 17 категоріях. Ось різні категорії експлойтів, доступні у Metasploit:

  • Aix

  • Android

  • Apple_ios

  • Bsdi

  • Dialup

  • Firefox

  • Freebsd

  • Hpux

  • Irix

  • Linux

  • Mainframe

  • Multi

  • Netware

  • Osx

  • Solaris

  • Unix

  • Windows

Encoders

Metasploit допомагає створювати широкий спектр використання навантажень, які можна відправити на цільову систему різними способами. У процесі цього дуже можливо, що ваше навантаження виявить антивірусне програмне забезпечення або будь-яке з програмного забезпечення безпеки, що присутнє на цільовій системі. Саме тут можуть допомогти кодувальники. Кодувальники використовують різні техніки та алгоритми для заміщення навантаження таким чином, що його не виявить антивірусне програмне забезпечення. У Metasploit є близько 40 кодувальників у десяти категоріях, як показано тут:

  • Cmd

  • Generic

  • Mipsbe

  • Mipsle

  • Php

  • Ppc

  • Ruby

  • Sparc

  • X64

  • X86

Post-Exploitation Activities (Post)

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

• Підвищення привілеїв користувача до рівня root або адміністратора
• Отримання облікових даних системи
• Викрадання файлів cookie та збережених облікових даних
• Захоплення натисканих клавіш на цільовій системі
• Виконання власних сценаріїв PowerShell для виконання додаткових завдань
• Забезпечення постійного доступу

Модулі:

  • Aix

  • Android

  • Cisco

  • Firefox

  • Hardware

  • Juniper

  • Linux

  • Multi

  • Osx

  • Solaris

  • Windows

Basic Commands and Configuration

Тепер, коли ви знайомі з основною структурою та будовою Metasploit, ви можете почати використовувати його інтерфейс. Щоб отримати доступ до Metasploit, відкрийте термінал і введіть команду msfconsole.

Help

Після відкриття MSFconsole ви можете отримати інформацію про всі основні команди за допомогою команди help.

Version

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

Connect

Ми всі знаємо про такі утиліти, як Telnet, SSH та Netcat, які допомагають нам у віддаленому адмініструванні. У Metasploit є вбудована утиліта під назвою connect, яку можна використовувати для встановлення з'єднання та взаємодії з віддаленою системою. Вона підтримує SSL, проксі, переадресацію трафіку та передачу файлів. Для використання команди connect потрібно мати дійсну IP-адресу та порт для підключення.

History

MSFconsole повністю працює в командному рядку, і для виконання кожного завдання потрібно вводити певну команду. Щоб переглянути команди, які ви використовували раніше в MSFconsole, ви можете використовувати команду history.

Set та Setg

У Metasploit є деякі змінні, які потрібно встановити перед виконанням будь-якого модуля чи експлойту. Ці змінні мають два типи.

• Локальні: Локальні змінні обмежені і дійсні лише для одного екземпляра.

• Глобальні: Глобальні змінні, якщо вони визначені, є застосовними до всього фреймворку і можуть бути використані в будь-якому місці за потреби.

Команда set використовується для визначення значень локальних змінних, в той час як команда setg використовується для визначення значень глобальних змінних.

Get та Getg

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

Unset та Unsetg

Команда unset використовується для видалення значень, призначених для локальної змінної, в той час як команда unsetg використовується для видалення значень, призначених для глобальної змінної

Save

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

irb

Metasploit базується на Ruby. Він пропонує інтерактивний Ruby (irb) оболонку, в якій ви можете виконувати свій набір власних команд. Цей модуль покращує можливості пост-експлуатації Metasploit. Просто введіть команду irb, щоб потрапити в оболонку irb. Для отримання додаткової інформації щодо програмування на Ruby дивіться https://www.ruby-lang.org/en/.

Show

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

Spool

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

db_initiate

Беручи до уваги складну природу Metasploit, тривіально, що повинна існувати деяка база даних, яку можна використовувати для зберігання даних завдань. За замовчуванням Metasploit інтегрований із базою даних PostgreSQL. Спершу вам потрібно запустити службу бази даних, виконавши команду systemctl start postgresql, а потім команду msfdb init.

db_status

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

workspace

Часом може виникнути ситуація, коли вам потрібно працювати над декількома проектами з тестування на проникнення одночасно. Ви, безумовно, не хочете змішувати дані з декількох проектів. Metasploit пропонує ефективний управління робочим простором. Для кожного нового проекту ви можете створити новий робочий простір і таким чином обмежити дані проекту лише цим робочим простором. Команда workspace, перераховує доступні робочі простори. Ви можете створити новий робочий простір, використовуючи команду workspace -a <ім'я>.