середа, 13 лютого 2013 р.

Мережевий сканер Nmap. Частина 1

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

Nmap - безкоштовне відкрите програмне забезпечення для дослідження та аудиту безпеки мереж та виявлення активних мережевих сервісів. [nmap вікі]. Дана утиліта є надзвичайно потужною, гнучкою, комплексною, простою в використанні і одночаcно складною в освоєнні через чисельність її параметрів та методів сканування. Довідка по даній програмі складає приблизно 150 сторінок А4. Автором даної програми є програміст Гордон Ліон, більш відомий як Fyodor.

Скачати дану утиліту, думаю, не виникне проблеми ні у кого. Вона доступна в операційних системах Windows та Linux. В Windows є її графічне представлення під назвою Zenmap. В даній же статті всі приклади будуть демонструватись в Linux Backtrack 5. Nmap поставляється майже зі всіма Linux-дистрибутивами. Якщо це не так, тоді обов'язково повинна бути наявна в репозиторіях дистрибутиву. І встановити її можна, наприклад, в Ubuntu-системах виконавши команду:

apt-get install nmap

Якщо і в репозиторії її не знайшлось, тоді можна скачати вихідні коди програми на офіційному сайті та зібрати її самому:


Після завантаження виконайте наступні команди для компіляції:

bzip2 -cd nmap-6.25.tar.bz2 | tar xvf - cd nmap-6.25 
./configure 
make 
su root 
make install

Отже, Nmap встановлено. Давайте по-порядку розберемось з його можливостями. Мережеве сканування - це процес визначення відкритих мережевих сервісів на цільовій комп'ютерній системі з метою тестування безпеки. Процес мережевого сканування сканерами безпеки є цілком легітимною дією, якщо не викликає якогось роду атак. В якості ресурсу, що будемо сканувати, виберемо відомий український торрент-трекер ex.ua.
Для того, аби провести найпростіше сканування без параметрів, слід виконати наступну команду:

nmap ex.ua 

На рисунку 1 зображено вивід даної команди

  Рисунок 1 - Результат виконання команди

Як бачимо, найперше, що виконав nmap - це розв'язав доменне ім'я ex.ua до IP адреси, на якій розміщується ресурс. Далі виводиться інформація про те, що хост доступний. Таке твердження базується на можливості пінгування даної IP-адреси. А це в свою чергу означає, що наявні відкриті порти, які відповідають на запити пінгу. Тоді відповідно відбувається сканування TCP! портів на стан відкритості. Як видно з рисунка 1, на сервері з IP адресою 77.120.115.185 доступні відкриті порти 22, 80 та 443 (стан: відкритий), а також вказані сервіси, які працюють на цих портах: ssh, http та https відповідно. 

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

 nmap -O -sV ex.ua

На рисунку 2 представлено вивід даної команди
Рисунок 2 - Сканування ОС та версій ПЗ

Як видно з рисунка 2, крім інформації, що ми вже бачили раніше, тепер відображається інформація про версії ПЗ мережевих сервісів. Так, демоном ssh сервера є OpenSSH 5.8p2_hpn13v11. А веб-сервером, що обслуговує порти 80 та 443 є nginix 1.3.12. Крім цього сканування операційної системи дало нам інформацію про те, що скоріш за все на сервері встановлено FreeBSD 7.0 STABLE та ще декілька можливих варіантів. 

Крім цього є можливість просканувати лише 100 найбільш відомих TCP портів, замість 1000, що прискорить процес сканування в 10 разів. Увага! Сканування лише 100 портів може виключити можливість віднаходження якогось активного мержевого сервісу. Для найбільш вірогідного і точного сканування слід вказувати усі 65535 портів командою:


nmap -p1-65535 [ip]


Зараз же, як було сказано вище, виконаємо сканування лише 100 портів, добавивши параметр -F, а також виведемо найбільш детальну інформацію про процес сканування, додавивши параметр -vvv (параметри -v та -vv дають менш детальну інформацію).Виконаємо наступну команду:

nmap -F -vvv -sV -O ex.ua

На рисунку 3 показано швидке детальне сканування

Рисунок 3 - Швидке детальне сканування 

Також існує можливість сканування разом із трасуванням (traceroute), слід виконати команду:

nmap -F -O -A -T4 -sV ex.ua

На рисунку 4 представлено агресивне сканування з трасуванням

Рисунок 4 - Агресивне сканування з трасуванням

До цього часу відбувалось мережеве сканування лише ТСР портів. Для того, аби просканувати UDP, слід додати параметр -sU.

nmap -sU ex.ua

На рисунку 5 зображено вивід сканування UDP

Рисунок 5 - Сканування UDP портів

Як бачимо з рисунка 5, на зовсім нових, недоступних при скануванні раніше портах, працюють служби dhcp, ntp та VPN L2TP. На даному етапі, цих параметрів буде достатньо. Продовження знайомства з nmap шукайте у інших статтях присвячених даній утиліті. 

Тепер же, базуючись на отриманих знаннях зі статті, а також знання мови сценаріїв bash в Linux, спробуймо написати автоскрипт, який сканує підмережу, в якій Ви знаходитесь на наявність "онлайн-хостів" (ті що в мережі в даний час, хоча, насправді це не зовсім так, тому що хост може бути в мережі, але пінгування вимкнуто, але зрештою...). І після цього добавляє IP адреси "онлайн-хостів" в файл. А потім сканує з отриманої бази хостів кожного, визначаючи відкриті ТСР, UDP порти, а також операційну систему. 

Даний скрипт сканує підмережу ХХХ.ХХХ.ХХХ.ХХХ з префіксом ХХ і додає доступних хостів в файл hostlist:

nmap -sP ХХХ.ХХХ.ХХХ.ХХХ/ХХ | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' > hostlist

Нижче приведений скрипт вибирає кожну ІР з утвореної бази хостів, сканує для кожного спочатку ТСР порти та ОС, а потім UDP порти і створює загальну звітність в документ general_scan:

 for i in $(cat hostlist); do echo "-----------------------------------------------------------------" >> general_scan; echo "SCAN FOR $i" >> general_scan; nmap -F -sV -O $i >> general_scan; nmap -sU $i >> general_scan; echo "-----------------------------------------------------------------" >> general_scan; done

Написані мною скрипти автоматизують, спрощують та прискорюють роботу сканування цілої підмережі комп'ютерів.

На разі, це все. Практикуйтесь і ставайте професіоналами своєї справи.
Успіхів!

Немає коментарів:

Дописати коментар