Показ дописів із міткою Linux. Показати всі дописи
Показ дописів із міткою Linux. Показати всі дописи

середа, 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

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

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

вівторок, 12 лютого 2013 р.

Знайомство з Pyrit

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

Pyrit - утиліта невеликих розмірів, що використовується для тестування безпеки Вашої безпровідної мережевої інфраструктури за допомогою методу перебору. Аналогами утиліти Pyrit  є більш відомі програми Aircrack-ng та Cowpatty. Проте, саме Pyrit так сильно привертає мою увагу і використовується особисто мною в аудиті безпеки завдяки тому, що дозволяє підключати практично усі обчислювальні ресурси, доступні в цільовій комп'ютерній системі, а не лише процесор. В даній статі я розпочну знайомство з утилітою Pyrit.

Розпочати, напевне, слід з того, з чим же все таки працює дана програмка? А працює вона із перехопленими WPA2 хендшейками (handshake), що складається з 4 мережевих пакетів. І містить в собі PSK-фразу, тобто пароль до Wi-Fi точки доступу, над якою здійснюється перехоплення. Детальніше про те, що таке handshake, PSK, PMK, WPA2 і процес перехоплення описано в іншій моїй статті. Припускається, що читач уже ознайомлений із даною тематикою, тому на даному етапі детальніше зупинятись не буду. Отже, отримавши WPA2-хендшейк, та підготувавши базу паролів для перебору, ми теоретично готові для того, аби здійснювати перебір (bruteforce).

Скачати утиліту pyrit можна тут:


На сторінці за посиланням вище розміщено архіви tar.gz з відкритими кодами програми. Так, авжеж, з відкритими, тому що Pyrit - це вільне програмне забезпечення, яке розповсюджується за ліцензією GNU GPL.Тестування утиліти та приклади в даній статті здійснюватимуться в операційній системі Linux Backtrack 5. Як встановити Linux взагалі та Linux Backtrack 5 зокрема, описано в іншій моїй статті блогу. Також отримати вихідні коди програми можна, здійснивши в командній стрічці термінала Linux команду:

svn checkout http://pyrit.googlecode.com/svn/trunk/ pyrit_svn

Я рекомендую використовувати svn. Будьте певні тоді в отриманні останньої версії програмного забезпечення та всіх його релізів. Скачана директорія розміщується по замовчуванню за тим шляхом, з якого виконувалась вищезгадана команда. Перейдемо в директорію pyrit_svn:

cd pyrit_svn

Набравши команду ls бачимо директорії з реалізаціями pyrit для підтримки в переборі різних типів відеокарт. Про використання відеокарти для перебору описано в іншій статті. На даному етапі потрібна загальна версія Pyrit, оскільки ми лише знайомимось з даною утилітою. Для компіляції вихідних кодів буде необхідна бібліотека та компілятор Python, а також інші додаткові бібліотеки для розробників. Встановити їх можна виконавши в терміналі дані команди:

apt-get install g++
apt-get install python-dev
apt-get install zlib1g-dev
apt-get install libssl-dev

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

cd pyrit
python setup build
python setup install
Все, Pyrit встановлено. Для перевірки коректності роботи, та того, чи правильно Pyrit бачить ядра вашого процесора, слід здійснити в терміналі команду:

pyrit list_cores

На рисунку 1 зображено вивід даної команди
Рисунок 1 - Вивід команди pyrit list_cores

Як бачимо з рисунка, Pyrit знайшов 4 потоки мого двох ядерного процесора Intel Core i5. Для того, аби здійснити тестування обчислювальних можливостей Вашого процесора для перебору ключів WPA2 слід виконати наступну команду:

pyrit benchmark

Процес здійснення тесту може зайняти від 1 до 3 хвилин. На рисунку 2 зображено вивід даної команди:
Рисунок 2 - Вивід команди pyrit benchmark

З рисунка 2 видно, що кожне ядро мого процесора може здійснювати перебір з пропускною здатністю приблизно 400 PMK / сек. Про PMK, збільшення даного числа, та оптимізацію перебору детальніше буде описано в наступних статтях, присвячених Pyrit. Тепер, спробуємо здійснити реальний перебір ключів за допомогою нашої утиліти та словника паролів. Виконаємо команду:

pyrit -r WPA2-01.cap -i wordlist.txt attack_passthrough

де 
-r WPA2-01.cap вказує на те, що в якості вхідного хендшейка використовується хендшейк WPA2-01.cap
-i wordlist.txt - задання словника з ключами. В даному випадку в мене це словник на 10001 ключ.
attack_passthrough - параметр, що вказує Pyrit здійснювати зовнішній перебір по текстовому файлі.

На рисунку 3 представлено виконання даної команди
 
Рисунок 3 - Робота програми Pyrit

Як бачимо з рисунка 3, пароль (ключ) було знайдено: igorigor
Детальнішу інформацію про параметри програми Pyrit можна отримати з довідки, набравши в терміналі команду:

pyrit ?

На даному етапі все. Детальніше знайомство з Pyrit - в наступних статтях. Побажання та ідеї щодо написання навчальних статтей присилайте на пошту: ukraineitblog@gmail.com

Успіхів!