Nmap – це потужний інструмент для кібербезпеки, що допомагає аналізувати мережі та виявляти вразливості. Якщо ви тільки починаєте знайомитися з Nmap, ця стаття стане для вас справжньою знахідкою. Ми розглянемо 10 корисних функцій, які зроблять ваше тестування більш ефективним та швидким.
Nmap Scripting Engine (NSE) – це ефективний інструмент, що значно розширює стандартний функціонал Nmap завдяки використанню спеціальних скриптів. Ці скрипти, написані мовою Lua, дозволяють автоматизувати різноманітні завдання, пов’язані як із пентестом, так і зі збором інформації (OSINT). Завдяки NSE можна виконувати поглиблений аналіз мереж, перевіряти вразливості та оптимізувати процеси тестування безпеки.
Скрипти NSE можна розбити на кілька категорій:
Discovery: Виявлення додаткової інформації про цільові системи, такі як відкриті порти, запущені служби та програми.
Safe: Безпечні скрипти, які не взаємодіють безпосередньо з цільовими системами, а лише аналізують отриману інформацію.
Intrusive: Скрипти, що вторгаються, які можуть викликати нестабільність або збої в роботі цільових систем.
Vuln: Скрипти виявлення вразливостей в цільових системах. Вони допомагають виявити відомі вразливості та недоліки у конфігурації.
Auth: Скрипти для тестування автентифікації та авторизації. Ці скрипти можуть бути використані для перевірки сили паролів, виявлення слабких конфігурацій та виявлення можливостей для атак з використанням брутфорсу.
Exploit: Скрипти для експлуатації виявлених уразливостей. Ці скрипти використовують для отримання несанкціонованого доступу до цільових систем.
Malware: Скрипти для виявлення та аналізу шкідливого програмного забезпечення.
Для запуску скриптів NSE використовують опцію –script під час сканування за допомогою Nmap. Наприклад, щоб запустити скрипт для виявлення вразливостей у веб-серверах, можна використати таку команду:
nmap --script http-vuln* -p 80,443 <target>
Ця команда виконає всі скрипти з префіксом http-vuln, застосовуючи їх до цільового веб-сервера на портах 80 і 443.
Щоб знайти сервери, що використовують SMB (Server Message Block), а також перевірити їх на можливі вразливості, можна застосувати таку команду:
nmap --script smb-vuln* -p 139,445 <target>
Ця команда запустить усі скрипти, що починаються з префікса smb-vuln, проти цільового сервера на портах 139 і 445 .
nmap --script ssl-heartbleed -p <port> <target>
Тут потрібно вказати конкретний порт, на якому запущено вразливий сервіс (зазвичай 443 HTTPS).
Виявлення веб-застосунків за допомогою WAF (Web Application Firewall): Для виявлення веб-додатків, захищених за допомогою WAF, можна використати таку команду:
nmap --script http-waf-* -p 80,443 <target>
Ця команда запустить усі скрипти, що починаються з префікса http-waf, проти цільового веб-сервера на портах 80 і 443.
nmap --script http-shellshock -p 80,443 <target>
Ця команда запустить скрипт http-shellshock проти цільового веб-сервера на портах 80 та 443.
Nmap Scripting Engine надає гнучкий та потужний інструмент для автоматизації та розширення функціональності Nmap, що дозволяє ефективно вирішувати різні завдання, пов’язані з ІБ.
Однією з найважливіших функцій Nmap є можливість визначення операційної системи (ОС) та її версії на цільовому пристрої. Ця інформація може бути використана для виявлення вразливостей, планування тестування та адаптації стратегії атаки.
Nmap використовує кілька методів для визначення операційної системи:
TCP/IP stack fingerprinting: Аналіз особливостей стека TCP/IP, таких як значення TTL, опції TCP та інші параметри. Ці особливості дозволяють Nmap зробити припущення про тип операційної системи.
Порт і протокол скан: Аналіз відкритих портів та запущених протоколів, які можуть бути характерними для певних операційних систем.
Версія програми: Аналіз версій запущених програм та служб, які можуть вказувати на конкретну операційну систему.
Для визначення операційної системи за допомогою Nmap можна використовувати такі опції:
-O: Включає визначення операційної системи. Ця опція може бути використана в поєднанні з опцією -v збільшення рівня подробиці виведення.
–osscan-limit: Обмежує визначення операційної системи лише активними хостами, для яких було виявлено відкриті порти. Це дозволяє зменшити час сканування та кількість помилкових позитивних результатів.
–osscan-guess: Показує найбільш вірогідну операційну систему, навіть якщо рівень впевненості в результаті нижче заданого порога.
Приклад використання Nmap для визначення операційної системи:
nmap -O -v --osscan-limit <target>
Ця команда запустить сканування із включеним визначенням операційної системи, обмежить його лише активними хостами та збільшить рівень подробиці виведення.
Для збільшення точності визначення операційної системи можна використовувати опцію –osscan-guess. Ця опція показує найбільш вірогідну операційну систему, навіть якщо рівень впевненості в результаті нижчий від заданого порога.
nmap -O --osscan-guess <target>
Для більш детальної інформації про операційну систему, включаючи версію ядра, можна використовувати опцію -A. Ця опція включає визначення операційної системи, версії додатків, скан портів і скан служб.
nmap -A <target>
В деяких випадках може знадобитися визначити операційну систему без надсилання ICMP-пакетів (пінг). Для цього можна використовувати опцію Pn.
nmap -O -Pn <target>
Якщо ви вже виконали сканування портів і зберегли результати у файл, можна використовувати цей файл для визначення операційної системи без повторного сканування. Для цього можна використовувати опцію –osscan-guess у поєднанні з опцією -iX для читання результатів сканування з файлу XML.
nmap --osscan-guess -iX <scan_results.xml>
За замовчуванням Nmap використовує базу даних підписів операційних систем, яка містить інформацію про багатьох відомих ОС. Однак, якщо ви хочете використовувати власний файл підписів, можна вказати його за допомогою опції –datadir.
nmap -O --datadir=<custom_signature_file> <target>
Ці приклади демонструють гнучкість і потужність Nmap під час аналізу операційних систем. За допомогою різних опцій та комбінацій можна отримати точну та докладну інформацію про цільові системи, що є важливим елементом пентесту та OSINT.
Однією з ключових функцій Nmap є скан портів, який дозволяє визначити відкриті порти та запущені служби на цільовому пристрої. При проведенні пентесту або збору інформації (OSINT) важливо зберігати дискретність та уникати виявлення. Для цього Nmap надає кілька методів прихованого сканування портів, які допомагають мінімізувати ризик виявлення.
SYN-скан (-sS): SYN-скан є одним із найпопулярніших методів прихованого сканування портів. При цьому метод Nmap відправляє SYN-пакети на цільові порти, але не завершує повне TCP-рукостискання. Якщо порт відкритий, цільовий хост відправить SYN-ACK пакет, і Nmap завершить скан, відправивши пакет RST. Цей метод сканування важко виявити, оскільки він не встановлює повне з’єднання TCP.
Connect-скан (-sT): Connect-скан є традиційнішим методом сканування портів, у якому Nmap встановлює повне TCP-з’єднання з цільовим портом. Цей метод менш прихований, ніж SYN-скан, але він може бути надійнішим при проходженні через мережні екрани та засоби захисту.
ACK-скан (-sA): ACK-скан є найбільш прихованим методом сканування портів, при якому Nmap відправляє лише ACK-пакети на цільові порти. Цей метод не дозволяє визначити, чи відкритий порт, але він може допомогти виявити фільтруючі мережні екрани та засоби захисту.
Приклади використання прихованих методів сканування портів Nmap:
SYN-скан: Для виконання SYN-скана можна використовувати наступну команду:
nmap -sS <target>
Ця команда виконає SYN-скан усіх 1000 найпоширеніших портів на цільовому пристрої.
Connect-скан: Для виконання Connect-скану можна використовувати таку команду:
nmap -sT <target>
Ця команда виконає Connect-скан усіх 1000 найпоширеніших портів на цільовому пристрої.
ACK-скан: Для виконання ACK-скану можна використовувати наступну команду:
nmap -sA <target>
Ця команда виконає ACK-скан усіх 1000 найпоширеніших портів на цільовому пристрої. Як бачимо з результатів, кожен метод дає індивідуальний висновок.
Однією з важливих завдань під час проведення пентесту є ідентифікація версій запущених цільовому пристрої додатків і служб. Знання точних версій може допомогти виявити вразливість та планувати подальші дії з експлуатації. Nmap надає функцію ідентифікації версій програм за допомогою прапора -sV.
Прапор -sV дозволяє Nmap виконувати скан версій програм та служб, запущених на відкритих портах. При цьому Nmap відправляє спеціально сформовані пакети та аналізує відповіді цільового пристрою, намагаючись визначити запущені служби та їх версії.
Для сканування версій програм для всіх відкритих портів можна використовувати наступну команду:
nmap -sV <target>
Ця команда виконає скан версій програм для всіх відкритих портів на цільовому пристрої.
Для сканування версій програм для конкретного порту можна використати таку команду:
nmap -sV -p <port> <target>
Замініть <port> на номер порту, для якого потрібно виконати сканування версій програм.
Для збільшення точності ідентифікації версій програм можна використовувати таку команду:
nmap -sV --version-all <target>
Ця команда виведе всі можливі варіанти версій додатків, а не лише найімовірнішу.
За замовчуванням Nmap використовує базу даних підписів програм, яка містить інформацію про багато відомих програм і служб. Однак, якщо ви хочете використовувати власний файл підписів, можна вказати його за допомогою опції –datadir.
nmap -sV --datadir=<custom_signature_file> <target>
Nmap є не лише потужним інструментом для сканування мереж та збору інформації, але й чудовим засобом для автоматизації тестування безпеки. Завдяки гнучким опціям командного рядка, підтримці скриптів та можливості інтеграції з іншими інструментами, Nmap дозволяє фахівцям з безпеки автоматизувати багато рутинних завдань та покращити ефективність тесту.
Нижче наведено декілька способів автоматизації тестування безпеки з використанням Nmap:
Створення скриптів для автоматизації сканування : Nmap Scripting Engine (NSE) надає можливість створювати власні скрипти мовою Lua для автоматизації різних завдань, пов’язаних із тестуванням безпеки. Скрипти можна використовувати для автоматичного виявлення вразливостей, виконання спеціальних тестів та збору додаткової інформації про цільові системи.
Інтеграція Nmap з іншими інструментами: Nmap може бути інтегрований з іншими інструментами для тестування безпеки, такими як Metasploit, Nessus та Burp Suite. Це дозволяє автоматизувати процес тестування, комбінуючи можливості різних інструментів та отримуючи повнішу картину безпеки цільових систем.
Автоматизація за допомогою утиліти cron: Утиліта cron у Unix-подібних операційних системах дозволяє планувати періодичне виконання команд. За допомогою cron можна налаштувати автоматичне сканування мережі за допомогою Nmap у заданий час або з певною періодичністю.
Використання Zenmap для створення графічних звітів: Zenmap є графічною оболонкою Nmap, яка надає зручний інтерфейс для управління скануванням і візуалізації результатів. Zenmap дозволяє створювати графічні звіти у форматі HTML або XML, які можна використовувати для автоматизації документування та подання результатів тестування.
Використання API Nmap для інтеграції з програмами: Nmap надає API для інтеграції з програмами мовами Python, Perl, Ruby та інших. Це дозволяє створювати власні програми для автоматизації тестування безпеки, використовуючи можливості Nmap.
Для налаштування автоматичного сканування мережі за допомогою cron необхідно додати наступний рядок до crontab:
0 0 * * * nmap -sS -sV -O -oA scan_result <target>
Ця команда буде виконувати скан портів, версій програм та визначення операційної системи щодня опівночі, зберігаючи результати у файл з ім’ям scan_result.
Для автоматичного виявлення вразливостей за допомогою Nmap можна використовувати наступну команду:
nmap --script vuln <target>
Ця команда виконає скрипти категорії vuln для виявлення вразливостей цільового пристрою.
Можна створити bash-скрипт для автоматизації сканування кількох цілей, виконання різних типів сканів та збереження результатів у файли. Нижче наведено приклад такого скрипту:
Bash:Копіювати в буфер обміну
#!/bin/bash
targets=("192.168.1.1" "192.168.1.100" "example.com")
for target in "${targets[@]}"
do
echo "Scanning target: $target"
nmap -sS -sV -O -oA "scan_results/$target" $target
done
Цей скрипт виконує скан портів, версій додатків та визначення операційної системи для кожної мети зі списку targets та зберігає результати у файлах у каталозі scan_results.
Nmap можна інтегрувати з Metasploit для автоматизації виявлення та експлуатації вразливостей. Для цього необхідно імпортувати результати сканування Nmap у Metasploit за допомогою команди db_import:
msfconsole db_import /path/to/nmap/scan/results.xml
Після імпорту результатів сканування Metasploit автоматично виявляє вразливість та пропонує відповідні експлойти.
Zenmap надає графічний інтерфейс для керування скануванням та візуалізації результатів. Можна створити профілі сканування із заданими опціями та автоматично виконувати їх для різних цілей. Для цього необхідно:
a. Створити новий профіль сканування, вказавши необхідні опції та налаштування.
b. Зберегти профіль.
c. Вибрати цільовий хост чи мережу.
d. Виберіть збережений профіль сканування та запустіть його.
Nmap надає API для інтеграції з програмами мовами Python, Perl, Ruby та інших. Наприклад, можна створити програму Python для автоматичного сканування мережі та надсилання повідомлень про виявлені вразливості електронною поштою. Нижче наведено приклад використання API Nmap у Python:
Python:Копіювати в буфер обміну
import nmap
nm = nmap.PortScanner()
nm.scan('192.168.1.1', '22-443')
for host in nm.all_hosts():
print('Host : %s (%s)' % (host, nm[host].hostname()))
print('State : %s' % nm[host].state())
for proto in nm[host].all_protocols():
print('Protocol : %s' % proto)
lport = nm[host][proto].keys()
for port in lport:
print('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
Цей скрипт виконує скан портів 22-443 для хоста 192.168.1.1 і виводить інформацію про відкриті відкриті порти.
При проведенні OSINT (Open Source Intelligence) часто потрібно сканувати великі діапазони IP-адрес або мереж для збору інформації про цільові об’єкти. Однак, у деяких випадках можуть бути певні обмеження, такі як білі списки IP-адрес, які не повинні скануватися.
Nmap надає опцію –exclude для виключення конкретних IP-адрес, діапазонів або хостів із сканування. Це дозволяє фахівцям з безпеки дотримуватись вимог до білих списків та покращувати ефективність OSINT, уникаючи непотрібного сканування.
Для виключення конкретної IP-адреси зі сканування можна використовувати таку команду:
nmap -sS -sV -O --exclude 192.168.1.100 192.168.1.0/24
Ця команда виконує скан портів, версій програм та визначення операційної системи для всіх хостів у мережі 192.168.1.0/24, за винятком хоста 192.16.
Для виключення діапазону IP-адрес із сканування можна використовувати наступну команду:
nmap -sS -sV -O --exclude 192.168.1.100-200 192.168.1.0/24
Ця команда виконує скан для всіх хостів у мережі 192.168.1.0/24, за винятком хостів з IP-адресами від 192.168.1.100 до 1.8.
Для виключення декількох IP-адрес і діапазонів із сканування можна використовувати наступну команду:
nmap -sS -sV -O --exclude 192.168.1.100,192.168.1.200,192.168.1.300-400 192.168.1.0/24
Ця команда виконує скан для всіх хостів у мережі 192.168.1.0/24, за винятком хостів з IP-адресами 192.168.1.1.2. 68.1.300 до 192.168.1.400.
Якщо білий список містить велику кількість IP-адрес або діапазонів, можна створити файл з цими даними та використовувати його з опцією –exclude_file:
nmap -sS -sV -O --exclude_file whitelist.txt 192.168.1.0/24
Файл whitelist.txt повинен містити список IP-адрес або діапазонів, розділених пробілами, переносами рядків або комами.
Віртуальні приватні мережі (VPN) широко використовуються організаціями для забезпечення безпечного доступу до ресурсів мережі та передачі даних через публічні мережі, такі як Інтернет. Nmap можна використовувати для виявлення та аналізу VPN-з’єднань з метою виявлення потенційних вразливостей та покращення безпеки.
Виявлення VPN-серверів
Nmap може використовуватися для виявлення VPN-серверів в мережі шляхом сканування портів, які зазвичай використовуються VPN-протоколами, такими як PPTP (TCP 1723), L2TP (UDP 500, 1701, 4500), IPSec (UDP 501, 4 . Для цього можна використати таку команду:
nmap -p 1723,500,1701,4500,1194 -sS -sV -O <target>
Ця команда виконує скан портів, версій програм та визначення операційної системи для зазначених портів, пов’язаних з VPN.
Nmap також може бути використаний для аналізу VPN-клієнтів, підключених до мережі. Для цього можна виконати скан відкритих портів та знайти служби, пов’язані з VPN-клієнтами. Наприклад, можна використовувати наступну команду для виявлення клієнтів Cisco AnyConnect:
nmap -p 443 --script ssl-cert -sV <target>
Ця команда виконує скан порту 443 (за промовчанням використовується Cisco AnyConnect) і аналізує SSL-сертифікат, щоб визначити, чи є клієнтом частиною VPN-з’єднання.
Однією з ключових завдань під час проведення пентестингу чи збору інформації (OSINT) є виявлення хостів у мережі. Nmap надає кілька методів сканування для виявлення активних пристроїв у мережі, включаючи скан ARP та DNS.
Скан ARP дозволяє швидко виявляти активні хости в локальній мережі шляхом надсилання ARP-запитів та аналізу отриманих відповідей. Цей метод працює тільки для пристроїв, підключених до однієї і тієї ж широкомовної мережі, і не вимагає надсилання пакетів на цільові порти. Для сканування ARP Nmap можна використовувати наступну команду:
nmap -sP <target>
Ця команда виконує скан ARP для вказаного діапазону IP-адрес або мережі.
Скан DNS дозволяє виявляти хости в мережі шляхом дозволу доменних імен та аналізу отриманих IP-адрес. Цей метод може бути корисним для виявлення хостів, недоступних через скан ARP, або для отримання додаткової інформації про пристрої в мережі. Для виконання сканування DNS у Nmap можна використовувати наступну команду:
nmap -sL <target>
Ця команда виконує скан DNS для вказаного списку доменів або мережі.
Для отримання більш повної інформації про хости в мережі можна використовувати комбінований скан ARP та DNS. Цей метод поєднує результати сканування ARP та DNS, надаючи більш детальну картину мережі. Для виконання комбінованого сканування ARP та DNS у Nmap можна використовувати наступну команду:
nmap -sn -n -PR -PE -PP -PM <target>
Ця команда виконує скан ARP (-PR), ICMP echo (-PE), ICMP timestamp (-PP) та ICMP netmask (-PM) для виявлення активних хостів, а також відключає дозвіл доменних імен (-n) і виконує лише скан портів (-sn).
Системи виявлення вторгнень (IDS) та системи запобігання вторгненням (IPS) є важливими компонентами безпеки мережі, які можуть виявляти та запобігати зловмисній діяльності, включаючи сканування портів та експлуатацію вразливостей. Під час проведення пентесту може знадобитися обійти ці системи, щоб уникнути виявлення та блокування.
Nmap надає кілька методів та опцій для обходу IDS та IPS, включаючи фрагментацію пакетів, зміну послідовності пакетів, затримку пакетів та інші техніки. Нижче наведено кілька способів використання Nmap для обходу систем виявлення вторгнень:
Фрагментація пакетів полягає в поділі мережевих пакетів на дрібніші фрагменти, щоб уникнути виявлення IDS. Nmap дозволяє фрагментувати пакети за допомогою опцій -f (фрагментувати на 8-байтні фрагменти), -ff (фрагментувати на 16-байтні фрагменти) або –mtu <value> (встановити довільне значення MTU). Наприклад:
nmap -sS -f <target>
Ця команда виконує SYN-скан (-sS) із фрагментацією пакетів на 8-байтні фрагменти (-f) для зазначеної мети.
Зміна послідовності пакетів полягає в зміні порядку надсилання пакетів, щоб ускладнити виявлення IDS. Nmap дозволяє змінювати послідовність пакетів за допомогою опції –scan-delay <time>, яка встановлює затримку між пакетами, або –badsum, яка надсилає пакети з неправильною контрольною сумою. Наприклад:
nmap -sS --scan-delay 100ms <target>
Ця команда виконує SYN-скан (-sS) із затримкою в 100 мілісекунд між пакетами (–scan-delay 100ms) для зазначеної мети.
Зміна тайм-аутів та повторів пакетів може допомогти уникнути виявлення IDS, ускладнюючи аналіз трафіку. Nmap дозволяє налаштовувати тайм-аути та повтори за допомогою опцій –host-timeout <time>, –initial-rtt-timeout <time>, –max-retries <number> та іншими. Наприклад:
nmap -sS --host-timeout 60s --max-retries 3 <target>
Ця команда виконує SYN-скан (-sS) з тайм-аутом очікування відповіді хоста в 60 секунд (–host-timeout 60s) і максимальною кількістю повторів в 3 рази (–max-retries 3) для зазначеної мети.
Декои є підробленими цілями, які можуть бути використані для відволікання IDS від реальної мети сканування. Nmap дозволяє використовувати деко за допомогою опції -D <decoy1, decoy2, …>. Наприклад:
nmap -sS -D 192.168.1.100,192.168.1.101 <target>
Ця команда виконує SYN-скан (-sS) з використанням двох декоїв (192.168.1.100 та 192.168.1.101) для зазначеної мети.
Оптимізація таймінгу та продуктивності при скануванні за допомогою Nmap є важливим аспектом пентестингу та збору інформації (OSINT). Налаштування таймінгу та продуктивності дозволяє фахівцям з безпеки покращити ефективність сканування, зменшити час виконання та уникнути виявлення.
Nmap надає кілька опцій для налаштування таймінгу та продуктивності, включаючи опції рівня таймінгу, опції паралелізму та інші. Нижче наведено кілька способів використання Nmap для оптимізації сканування:
Nmap надає шість рівнів таймінгу (від 0 до 5), які можна використовувати для налаштування швидкості та точності сканування. Рівень 0 забезпечує найбільшу швидкість, але меншу точність, тоді як рівень 5 забезпечує максимальну точність, але меншу швидкість. Можна використовувати опцію -T <level> для вибору рівня таймінгу. Наприклад:
nmap -sS -T4 <target>
Ця команда виконує SYN-скан (-sS) з рівнем таймінгу 4 (агресивний) для зазначеної мети.
Nmap дозволяє налаштовувати кількість пакетів, що одночасно відправляються, за допомогою опцій –min-parallelism <number>, –max-parallelism <number> і –host-timeout <time>. Наприклад:
nmap -sS --min-parallelism 10 --max-parallelism 50 <target>
Ця команда виконує SYN-скан (-sS) з мінімальним паралелізмом в 10 пакетів (–min-parallelism 10) і максимальним паралелізмом в 50 пакетів (–max-parallelism 50) для зазначеної мети.
Nmap дає змогу налаштовувати кількість повторів пакетів за допомогою опції –max-retries <number>. Це може бути корисним для покращення точності сканування в мережах з високим рівнем перешкод або за наявності IDS/IPS. Наприклад:
nmap -sS --max-retries 3 <target>
Ця команда виконує SYN-скан (-sS) з максимальною кількістю повторів у 3 рази (–max-retries 3) для зазначеної мети.
Nmap дозволяє налаштовувати тайм-аути за допомогою опцій –initial-rtt-timeout <time>, –min-rtt-timeout <time>, –max-rtt-timeout <time>, –host-timeout <time> та іншими. Наприклад:
nmap -sS --initial-rtt-timeout 50ms --host-timeout 60s <target>
Ця команда виконує SYN-скан (-sS) з початковим тайм-аутом RTT в 50 мілісекунд (-initial-rtt-timeout 50ms) і тайм-аутом очікування відповіді хоста в 60 секунд (-host-timeout 60s) для зазначеної мети.
Nmap – це потужний інструмент для пентесту та OSINT, який дозволяє автоматизувати сканування, виявляти вразливості, аналізувати операційні системи та обходити захист. Використовуючи NSE-скрипти, приховані методи сканування та оптимізуючи таймінг, можна значно підвищити ефективність тестування безпеки. Інтеграція з іншими інструментами та автоматизація процесів роблять Nmap незамінним у сфері кібербезпеки.