You are on page 1of 23

1

МЕТОДИ ЗАХИСТУ РОЗПОДІЛЕНИХ ІНФОРМАЦІЙНИХ РЕСУРСІВ

Кафедра безпеки інформаційних технологій

ЛАБОРАТОРНА РОБОТА №4

АНАЛІЗ МЕХАНІЗМІВ СКАНУВАННЯ МЕРЕЖІ ТА ПРОНИКНЕННЯ.

ТЕСТУВАННЯ НА ПРОНИКНЕННЯ (ЗАДАЧА CTF PWNED)

ХАРКІВ, «ХНУРЕ», 2021


2

ЛАБОРАТОРНА РОБОТА №4

Аналіз механізмів сканування мережі та проникнення. Тестування на

проникнення (задача CTF Pwned)

1.1 Мета роботи

Перевірити теоретичні знання та дослідити (набути практичних навичок)

механізми збору інформації (сканування мережі та проникнення до цільової

машини), визначення дійсних користувачів та отримання їх облікових даних.

1.2 Методичні вказівки для самостійної роботи

При підготовці до виконання лабораторної роботи необхідно:

- вивчити та проаналізувати матеріали лекцій № 10 – 14;

- підготувати бланк звіту до лабораторної роботи;

- надати відповіді на контрольні питання.

1.3 Опис лабораторної установки

Для виконання лабораторної роботи, на вашому ПК необхідно встановити

програмне забезпечення щодо роботи з віртуальними машинами (наприклад

Oracle VirtualBox), підготовлені (завантажені) образ Pwned для роботи (на основі

Kali Linux), які далі потрібно встановити та налаштувати.

Завантаження здійснити за посиланням

https://www.vulnhub.com/entry/pwned-1,507/ (розмір образу 802 Мб).


3

1.4 Теоретичні відомості.

1. Kali Linux - GNU / Linux-LiveCD, що виник як результат злиття WHAX і

Auditor Security Collection. Призначений насамперед для проведення тестів на

безпеку. Найбільщ популярними є інструменти: Bluesniff, Bluetooth Scanner

(btscanner), John the Ripper, Metasploit Framework, nmap, Shellshock і Wget.

Kali Linux має понад 600 встановлених програм тестування проникнення, в

тому числі Armitage (графічний інструмент управління кібератакою), nmap

(сканер портів), Wireshark (аналізатор трафіку), зломщик паролів John the Ripper,

Aircrack-ng (програмний пакет для тестування бездротових локальних мереж),

Burp Suite і сканер безпеки веб-додатків OWASP ZAP.

Підтримує платформу Metasploit Framework та Metasploit Project, основний

інструмент для розробки і виконання експлойтів безпеки.

2. Плаґін (англ. plug-in - підключати) - додаток, незалежно скомпільований

програмний модуль, що динамічно підключається до основної програми.

Основне призначення - розширення або більш повне використання можливостей

основної програми. Належить до загального програмного класу додатків.

Плаґіни, зазвичай, виконуються у вигляді динамічних бібліотек.

Плаґіном до графічного редактора може бути фільтр, який змінює

зображення, палітру, дозволяє роботу з додатковими форматами та ін.

Наприклад, Acrobat-Reader Plug-in - дозволяє бачити на екрані документи PDF-

формату.

В програмах обробки звуку плаґіни виконують обробку і створення

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

динамічного діапазону.
4

В браузерах плаґіни використовуються для забезпечення показу форматів

даних, які не мають вбудованої підтримки браузером (наприклад Adobe Flash або

SVG), для налаштування можливостей під вимоги користувача та інше.

Основна програма надає сервіси, які плаґін може використовувати. До них

належить надана плаґіну можливість зареєструвати себе в основному додатку, а

також протокол обміну даними з іншими плаґінами. Плаґіни є залежними від

сервісів, що надаються основною програмою, і переважно окремо не

використовуються. Основна програма незалежно оперує плаґінами, надаючи

користувачам можливість динамічно додавати й оновлювати плаґіни без

необхідності внесення змін в основну програму.

3. Task-Based CTF Exploit. Exploit - експлуатація різних вразливостей.

Частіше за все в завданні CTF цього типу потрібно знайти вразливість в

бінарному коді для Linux. Як правило, це вразливість із серії переповнення стека

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

включені захисні функції, на зразок ASLR, DEP або Canary, які теж треба обійти.

Web CTF - завдання на веб-безпеку. В завданні CTF цього типу потрібно

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

може бути що завгодно - починаючи від SQL Injection, XXE і RCE, закінчуючи

XSS (де за посиланнями необхідно переходити до спеціальних ботів) і знаходити

вразливості в процесі виконання програми (її логіки). Причому вразливості

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

Розробники такого типу завдань додають своєрідні WAF, які значно

ускладнюють процес їх рішення.

Захоплення прапора (CTF) — традиційне змагання, в якому хакери


5

шукають вразливості та вирішують крутиголовні задачі у пошуках «прапорів» —

бітових даних, які повідомляють системі, що ви виконали поставлені завдання.

Зазвичай прапор є рядком випадкових даних або тексту в певному форматі.

Існують два основні стилі CTF: атака/захист (Attack/defense) та Jeopardy!,

також існує і змішане вирішення завдання.

Атака/захист (Attack-Defence, атака-захист, напад-захист) кожна команда

отримує власну мережу (або лише один хост) з Vulnarable services (при цьому

надається час для команд для патчення своїх сервісів та розробки експлойтів).

В визначений термін організатори з'єднують учасників змагань - і

починається суперництво. Необхідно захистити власні сервіси у визначених

точках захисту (здійснити протидію) та хакнути опонентів у визначених точках

атаки (або знайти ці точки).

Залежно від характеру конкретної гри команди можуть намагатися захопити

прапор суперника або підсадити свій прапор на його машину.

Jeopardy! - змагання зазвичай включають декілька категорій завдань (Web,

Forensic, Crypto, Binary чи щось інше), кожна з яких містить різноманітні

завдання різних типів та рівнів складності. Команди намагаються заробити

найбільшу кількість балів у визначені часові терміни (наприклад, за 24 години),

а не атакують одна одну.

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

підходів до викликів та визначає пріоритетною кількість правильних відповідей

за часом. Команда може отримати декілька балів за кожну вирішену задачу.

Зазвичай складніші завдання приносять більше балів. Наступне завдання в

ланцюжку можна виконувати лише за умови, що вирішено попереднє завдання.


6

Переможцем (CTF Winer) стає той, хто назбирає найбільше балів за ігровий

час. Ігри CTF є видом змагань з інформаційної безпеки та практичної підготовки

фахівців, стосуються багатьох аспектів: криптографії, стеганографії, бінарного

аналізу, зворотної інженерії, мобільної безпеки та інших.

4. Збірка PWNED (індуїстський еквівалент Пекла) - зручна зборка для

виконання CTF завдання.

Це подібно квест грі. Ви використовуєте свої навички злому щоб здійснити

тестування на проникнення. Ваше завдання - знайти всі 3 прапори (user.txt,

user2.txt та root.txt).

Перевірена працездатність на VirtualBox.

1.5 Завдання

Заняття проводиться в формі Capture the Flag (CTF) - гри, в якій учасники

(окремі студенти або групи/команди) в контексті інформаційної безпеки

намагаються здійснити тестування на проникнення.

Відповідно до процедур і послідовності дій провести згідно опису ходу

роботи:

- налаштування віртуальної машини та мережі;

- сканування створеної мережі;

- аналіз портів, додатків, плагінів;

- перевірки на проникнення та визначення можливих вразливостей (плагінів

та основної програми);

- експлоїт визначених вразливостей (з визначенням параметрів користувачів, їх

прав щодо доступу до інформаційних ресурсів, підвищення їх прав – до рівня root,

отримання доступу та читання визначених прапорів).


7

Для отримання підвищеного балу зробити (за прикладом опису роботи)

для власних параметрів - самостійний аналіз вразливостей будь-якого Web

додатку (на власний вибір) з реалізацією всіх завдань роботи.

1.6 Форма звіту:

- аналіз завдання;

- опис його вирішення (що, і як ви будете виконувати, які функції та події

застосовувати, чому саме так, які обрали параметри);

- аналіз вразливостей і результати їх експлоїту;

- скрін-шоти дій;

- висновки за етапи та загальні висновки.

1.7 Хід роботи

1. Завантажити збірку Pwned (посилання -

https://www.vulnhub.com/entry/pwned-1,507/ ).

Filename: narak.ova; File size: 802 MB;

MD5: 5A0AF6E9B8172312432F6345E26BE456;

SHA1: C7AF1E3F7F6004408197EFC3295D6D24C568B4E1.

Налаштувати збірку Pwned в Virtual Box.

2. Запустити команду netdiscover для визначення IP-адреси цільової

машини. Використовуємо команду: netdiscover

На наведеному нижче рисунку результат виконання команди, яка дає нам

список всіх доступних діючих IP-адрес хостів в мережі.


8

В виділеній області на скриншоті вище ми бачимо IP-адресу цільової

машини. IP-адреса цільової машини - 192.168.1.26, і я буду використовувати

192.168.1.27 у якості IP-адреси зловмисника.

Примітка. IP-адреса цільової машини може бути іншою у вашому

випадку, якщо він призначений мережевим DHCP.

3. На цьому етапі ми запустимо сканування портів, щоб визначити

відкриті порти і служби на цільовій машині.

Використовуємо інструмент Nmap для сканування портів, оскільки він

працює ефективно і за замовчуванням доступний в Kali Linux. Однак ви

можете використовувати будь-який метод або інструмент сканування портів,

який дає результати.

Використовуємо команду: nmap 1-sV -p- 92.168.1.26

Вихідні дані Nmap показують два порти на цільовій машині, які були

ідентифіковано як відкриті. У команді nmap ми використовуємо перемикач


9

-sV для перерахування версій, параметр - p для повного сканування портів. За

цими параметрами Nmap проводить сканування всіх 65535 портів на цільовій

машині (за замовчуванням Nmap виконує перевірки зв'язків 1024 портів). Тому

особливо важливо провести повне сканування портів під час пентеста або CTF

для отримання максимального результату.

Однак в нашому випадку ми знайшли тільки два порти. Перший

використовується для SSH, а другий - для HTTP. Тому на наступному етапі ми

почнемо з HTTP-порту 80 (але кожен повинен діяти виходячи зі своїх умов

обстановки).

4. Далі відкриваємо IP-адресу цільової машини в браузері, щоб побачити

веб-додаток. Результат наведено на рисунку.

Ми бачимо сторінку за замовчуванням на сайті з гарним дизайном Pwned.

Також є записка зловмисника: «Я Аннлінн. Я хакер зламав ваш сервер разом з

вашими співробітниками, але вони не знають, як я їх використав »....

Це повідомлення означає, що цей сервер був зламаний хакером на ім'я


10

Аннлінн. Оскільки на веб-сайті є тільки статична сторінка, ми

використовували утиліту Dirb для визначення інших прихованих каталогів.

5. Далі здійснюється сканування Dirbuster, щоб визначити внутрішні

файли і папки в корені документів на цільовій машині.

Використовуємо команду: dirb http://192.168.1.26/

Результат наведено на скріншоті.

В результаті Dirb показує, що тільки три файли були ідентифіковані

інструментом. Перевіряємо файл robots.txt, але він не дає нам ніяких корисних

підказок.

6. Далі використовуємо Dirbuster для більш докладного перерахування на

веб-сайті цільової машини.


11

Сканування зайняло якийсь час, але очікування того варте. Після

очікування від 5 до 10 хвилин він показує каталог «hidden_test» на цільовому

веб-сайті, який можна побачити в виділеної області вище. На наступному

кроці ми пронумеруємо каталог.

Ми відкрили вказаний каталог в браузері і виявили, що список каталогів

на веб-сайті включений. Ми знайшли в каталозі ще один файл, який можна

побачити на наступному скріншоті.

При відкритті файлу secret.dic побачимо його зміст. Він показує безліч

шляхів до каталогів на цільовій машині, що можна побачити на наведеному

нижче знімку екрана.


12

Потрібно перевіряти всі ідентифіковані каталоги один за іншим, і

більшість з них перенаправляє нас на сторінки з помилками 403 або 404.

Однак один каталог спрацював, і була доступна сторінка входу в систему,

яку можна побачити на скріншоті нижче.

Може здатись, що якийсь хакер завантажив цю сторінку на цільовий

комп'ютер, але це схоже на просту сторінку входу.

Спробуйте кілька випадкових комбінацій імені користувача і пароля для

входу в цільову систему.

Далі спробуйте застосувати SQL-ін'єкцію, щоб обійти сторінку входу

(наведіть Ваші спроби, зробіть висновки).

7. Перевіряємо HTML-вміст сторінки, з метою аналізу вихідного PHP

коду.
13

Виявляємо в вбудованому в HTML-сторінку коді - ім'я користувача та

пароль FTP. Це видно наведено на скріншоті.

Ім'я користувача: ftpuser Пароль: B0ss_B! TcH

Таким чином здійснено аналіз веб-додатку, знайдено ім'я користувача та

пароль FTP. З процедур сканування портів визначено, що порт FTP був

відкритий на нашій цільовій машині.

На наступному кроці ми аналізуємо FTP-сервіс.

8. Оскільки ми вже знаємо ім'я користувача і пароль FTP з попереднього

кроку, ми увійшли в цільову систему:

Використовуємо команду: ftp 192.168.1.26

На наведеному вище знімку екрану показано, що ми використовували


14

команду FTP з IP-адресою нашої цільової машини.

Система запросила ім'я користувача і пароль, тому ми ввели визначені на

попередніх кроках облікові дані, і наші облікові дані є правильними.

9. Далі здійснюємо вхід до FTP, щоб побачити вміст поточної папки.

Використовуємо команду:

ls cd shsre ls get note.txt get id_rsa

Команда ls показує, що в поточному каталозі є загальна папка; командf cd

для зміни каталог. В каталозі було два файли, які ми завантажили на машину

зловмисника за допомогою команди get. Команда підтверджує, що файли були

успішно завантажені на машину зловмисника.

Використовуємо команду: cat id_rsa


15

Коли ми перевірили завантажені файли, ми зрозуміли, що один з них був

закритим ключем сервера. Результат обох файлів можна побачити на

скріншоті вище.

Як відомо з матеріалу лекцій порт SSH також був відкритий на цільовій

машинію Відповідно до цього ми можемо використовувати закритий ключ для

входу на нашу цільову машину.

В файлі note.txt згадується ім'я користувача. Необхідно визначимти

більше імен користувачів для входу по SSH. Перевіряємо всі папки з

користувачами FTP і в домашньому каталозі знайдемо кілька імен


16

користувачів, які можна побачити на наступному скріншоті.

В виділеній області на скріншоті вище ми бачимо, що на цільовій машині

визначено - чотири користувача. На наступному етапі ми будемо

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

10. З попереднього кроку ми знаємо, що існує чотири імені користувачів

і один ключ. Тому ми будемо перевіряти кожне ім'я користувача одне за

другим на наявність входу по SSH. Однак перед використанням ключа ми

повинні змінити дозвіл ключа на 400 (пояснити чому).

Використовуємо команду chmod, щоб змінити права доступу до файлів, а

потім здійснюємо вхід на цільовий комп'ютер через SSH.

Використовуємо команди:

chmod 400 id_rsa та ssh -i id_rsa ariana@192.168.1.26


17

Ми бачимо, що ім'я користувача ariana спрацювало, і ми успішно

увійшли на цільовий комп'ютер через SSH.

Використовуємо команду: cat user1.txt

Ми знайшли перший прапор в домашньому каталозі:

Поки що у нас є доступ до цільової машині (з визначеними для

користувача правами). Однак наша головна мета - отримати root-доступ для

завершення CTF. На наступному кроці ми аналізуємо далі цільову машину

далі, щоб запустити локальний експлойт та отримати root-доступ.

11. Під час подальшого аналізу (перебору) виявляємо ще один файл, в

який було записано повідомлення.

Використовуємо команду: cat ariana-personal.diary

Це можна прочитати на скріншоті вище.

Як ми бачимо, повідомлення не означає нічого істотного. Перевіряємо

операційну систему і версію ядра (це допомагає отримати root права).

Використовуємо команду: sudo -l


18

Однак в нашому випадку на цій цільовій машині це не працює. Отже, ми

почали перевірку команд, які можна запускати від імені користувача root, що

видно на скріншоті вище.

Команда sudo -l показує, що користувач ariana може запускати файл

messenger.sh як користувач Selena.

Використовуємо команду: bash -i

За допомогою sudo використовуємо bash- i, який дає нам доступ


19

користувача Selena. Це наведено на скріншоті.

12. Оскільки у нас є доступ іншого користувача до цільової машині, ми на

крок ближче до отримання root доступу.

Далі аналізуємо цільову машину.

Використовуємо команду: cat /home/selena/user2.txt

Знаходимо другий призначений для користувача прапор (user2.txt), який

можна побачити на скріншоті.

13. Під час аналізу ми визначили, що Docker використовується на цільовій

машині. Ми спостерігаємо це в вихідних даних команди id.

Використовуємо команду: id

Використовують різні методи використання Docker для отримання

кореневого доступу до цільової машині.

Застосовуємо наступне (Ви можете обрати свій шлях вирішення цього

етапу).
20

Використовуємо команду: docker run -v /: / mnt –rm -it alpine chroot / mnt sh

Згідно деталей обраного методу використання Docker, ми можемо просто

скопіювати команди і запустити їх в цільовій системі, в результаті виконання

система надає - root-доступ.

Перевіряємо статус користувача, запустивши команду id.

Таким чином отримали є root-доступ до цільової машині. Для виконання

завдання необхідно прочитати файл кореневого прапора.

Використовуємо команду: cat root.txt


21

Таким чином, ми можемо прочитати файл кореневого прапора (наведено

на скріншоті вище). Завдання CTF - виконано.

На цьому CTF завершено!


22

Контрольні питання

1. Що називають системою виявлення вторгнень (IDS – intrusion detection

system)? Яка її основна задача?

2. Які основні типи IDS існують?

3. Наведіть стисло опис функціонування IDS на рівні мережі (NIDS –

network-based IDS).

4. Наведіть стисло опис функціонування IDS на рівні вузла (IDS – host-based

IDS, HIDS).

5. Які основні типи HIDS і NIDS Вам відомі?

6. Що розуміють під динамічною фільтрацією пакетів.

7. Які мережні пастки Вам відомі?

8. Наведіть стисло опис функціонування Honeypot.

9. Які варіанти розташування honeypot в локальній мережі Вам відомі?

10. Назвіть основні прийоми, які використовуються при проведенні атак

в локальній мережі.

11. Як працює протокол визначення адреси на канальному рівні ARP

(Address Resolution Protocol)?

12. Для чого використовують мережний протокол DHCP (Dynamic Host

Configuration Protocol)?

13. Які способи розподілу IP-адрес надає протокол DHCP?

14. Що розуміють під процесом перехопленні TCP з’єднання?

15. Які пасивні атаки перехоплення на рівні TCP Вам відомі?

16. Назвіть основні потенційні слабкі місця та вразливості веб-серверів та


23

веб-застосувань. Дайте опис будь-якої вразливості.

17. Дайте опис атаки з розділенням HTTP запитів/відповідей.

18. Дайте опис атаки з розділенням відповідей HTTP.

19. Дайте опис атаки некоректної передачі запитів HTTP.

20. Назвіть основні механізми захисту веб-серверів та веб-застосувань.

You might also like