NSE скрипти. Довідковий посібник Nmap (Man Page). Які категорії скриптів NSE існують

Nmap – це дуже популярний сканер мережі з відкритим вихідним кодом, який може використовуватися як у Windows, так і Linux. Програма Nmap або Network Mapper була розроблена Гордоном Луоном та на даний моментвикористовується спеціалістами з безпеки та системними адміністраторами по всьому світу.

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

Наприклад, за допомогою скриптів можна автоматично виявляти нові вразливості безпеки у вашій мережі. Namp може використовуватися з хорошими та поганими намірами, будьте обережні, щоб не використовувати nmap проти закону. У цій інструкції ми розглянемо як користуватися namp для сканування портів у операційній системі Linux. Але спочатку потрібно спробувати зрозуміти, як працює ця утиліта.

В комп'ютерних мережахвсі підключені пристрої мають свою ip адресу. Кожен комп'ютер підтримує протокол ping, за допомогою якого можна визначити, чи він підключений до мережі. Ми просто надсилаємо ping запит комп'ютеру, і якщо він відгукується, то вважаємо, що він підключений. Nmap використовує трохи інший підхід. Комп'ютери також певним чином реагують на ті чи інші мережеві пакети, утиліта просто відправляє потрібні пакети та дивиться які хости надіслали відповідь.

Але про це ви, мабуть, знаєте. Цікавіше те, як Nmap дізнається які послуги запущені на машині. Суть роботи всіх мережевих програм ґрунтується на портах. Щоб отримати повідомлення з мережі, програма повинна відкрити порт на вашому комп'ютері та чекати на вхідні з'єднання. А для надсилання повідомлення по мережі потрібно підключитися до іншої програми (адресатом) порту. Потім програмі необхідно буде відкрити порт, на якому вона чекатиме відповіді.

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

Синтаксис Nmap

Команда запуску Nmap дуже проста для цього достатньо передати їй у параметрах цільову IP-адресу або мережу, а також вказати опції при необхідності:

$nmap опції адреса

Тепер розглянемо основні опції, які знадобляться нам у цій статті.

  • -sL- просто створити список хостів, що працюють, але не сканувати порти nmap;
  • -sP- тільки перевіряти чи доступний хост за допомогою ping;
  • -PN- уважати всі хости доступними, навіть якщо вони не відповідають на ping;
  • -sS/sT/sA/sW/sM- TCP сканування;
  • -sU- UDP сканування nmap;
  • -sN/sF/sX- TCP NULL та FIN сканування;
  • -sC- запускати скрипт за замовчуванням;
  • -sI- ліниве Indle сканування;
  • -p- вказати діапазон портів для перевірки;
  • -sV- Детальне дослідження портів для визначення версій служб;
  • -O- Визначати операційну систему;
  • -T- швидкість сканування, що більше, то швидше;
  • -D- маскувати сканування за допомогою фіктивних IP;
  • -S- змінити свою IP адресу на вказану;
  • -e- Використовувати певний інтерфейс;
  • --spoof-mac- встановити свою MAC адресу;
  • -A- Визначення операційної системи за допомогою скриптів.

Тепер, коли ми розглянули всі основні опції, поговоримо про те, як виконується сканування портів nmap.

Як користуватися Nmap для сканування портів у Linux

Далі розглянемо приклади Nmap. Спочатку розглянемо як знайти всі підключені до мережі пристрої, для цього достатньо використовувати опцію -sL і вказати маску нашої мережі. у моєму випадку це 192.168.1.1/24. Маску вашою локальної мережіви можете знайти, виконавши команду:

З виводу для використовуваного інтерфейсу візьміть число після сліша, а до сліша вкажіть ip вашого роутера. Команда на сканування мережі nmap виглядатиме так:

nmap -sL 192.168.1.1/24

Іноді це сканування може не дати результатів, тому що деякі операційні системи мають захист від сканування портів. Але це можна обійти, використовуючи для сканування ping всіх ip адрес мережі, для цього є опція -sn:

nmap -sn 192.168.1.1/24

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

sudo nmap 192.168.1.1

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

Щоб дізнатися більш детальну інформацію про машину та запущені на ній сервіси, ви можете використовувати опцію -sV. Утиліта підключиться до кожного порту та визначить всю доступну інформацію:

sudo nmap -sV 192.168.1.1

На нашій машині запущено ftp, тому ми можемо спробувати розглянути цю службу докладніше за допомогою стандартних скриптів nmap. Скрипти дозволяють перевірити порт детальніше, знайти можливі вразливості. Для цього використовуйте опцію -sC і -p, щоб задати порт:

sudo nmap -sC 192.168.56.102 -p 21

Ми виконували за замовчуванням скрипт, але є ще й інші скрипти, наприклад, знайти всі скрипти для ftp ви можете командою:

sudo find /usr/share/nmap/scripts/ -name "*.nse" | grep ftp

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

sudo nmap --script-help ftp-brute.nse

Цей скрипт намагатиметься визначити логін та пароль від FTP на віддаленому вузлі. Потім виконайте скрипт:

sudo nmap --script ftp-brute.nse 192.168.1.1 -p 21

В результаті скрипт підібрав логін та пароль, admin/admin. Тому не потрібно використовувати параметри входу за замовчуванням.

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

sudo nmap -A 192.168.1.1

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

Висновки

У цій статті ми розглянули, як виконується сканування портів nmap, а також кілька простих прикладів використання цієї утиліти. Ці команди nmap можуть бути корисними багатьом системним адміністраторам, щоб покращити безпеку їхніх систем. Але це далеко не всі можливості утиліти. Продовжуйте експериментувати з утилітою, щоб дізнатися більше не в чужих мережах!

про автора

Засновник та адміністратор сайту сайт, захоплююсь відкритим програмним забезпеченням та операційною системою Linux. Як основна ОС зараз використовую Ubuntu. Крім Linux цікавлюся всім, що пов'язано з інформаційними технологіямита сучасною наукою.

  • Виявлення служб та їх версій
  • Визначення ОС
  • Опції керування часом та продуктивністю
  • Різні опції
  • Взаємодія під час виконання
  • Приклади
  • Інформація про скрипти Nmap (англійською):

    Приховано від гостей


    Остання версія документації по Nmap (англійською):

    Приховано від гостей


    Офіційна книга Nmap від творців Nmap (англійською):

    Приховано від гостей

    Преамбула

    nmap - Утиліта для дослідження мережі та сканер портів

    Nmap (“Network Mapper”) – це утиліта з відкритим вихідним кодом для дослідження мережі та перевірки безпеки. Вона була розроблена для швидкого сканування великих мереж, Хоча чудово справляється і з одиничними цілями. Nmap використовує сирі IP пакети оригінальними способами, щоб визначити які хости доступні в мережі, які служби (назва програми та версію) вони пропонують, які операційні системи (і версії ОС) вони використовують, які типи пакетних фільтрів/брандмауерів використовуються та ще дюжини інших характеристик . У той час як Nmap зазвичай використовується для перевірки безпеки, багато мережевих і системних адміністраторів знаходять її корисною для звичайних завдань, таких як контролювання структури мережі, управління розкладами запуску служб і облік часу роботи хоста або служби.

    Nmap це список просканованих цілей з додатковою інформацієюза кожною залежно від заданих опцій. Ключовою інформацією є "таблиця важливих портів". Ця таблиця містить номер порту, протокол, ім'я служби та стан. Стан може мати значення open (відкритий), filtered (фільтрується), closed (закритий) або unfiltered (не фільтрується). Відкритий означає, що програма на цільовій машині готова для встановлення з'єднання/прийняття пакетів на цей порт. Фільтрується означає, що брандмауер, мережевий фільтр або якась інша перешкода в мережі блокує порт, і Nmap не може встановити цей порт відкритий або закритий. Закриті порти не пов'язані з жодною програмою, так що вони можуть бути відкриті в будь-який момент. Порти розцінюються як не фільтровані, коли вони відповідають запити Nmap, але Nmap неспроможна визначити відкриті вони чи закриті. Nmap видає комбінації відкритий|фільтрується і закрыт|фильтрируется, коли може визначити, який із цих двох станів описує порт. Ця таблиця також може надавати деталі про версію програмного забезпечення, якщо це було запрошено. Коли здійснюється сканування по IP протоколу (-sO), Nmap надає інформацію про підтримувані IP протоколи, а не про відкриті порти.

    На додаток до таблиці важливих портів Nmap може надавати подальшу інформацію про цілі: перетворені DNS імена, припущення про операційну систему, типи пристроїв і MAC адреси.

    Типове сканування з використанням Nmap показано в Прикладі 1. Єдині аргументи, використані в цьому прикладі -A, для визначення версії ОС, сканування з використанням скриптів і трасування; -T4 для швидшого виконання; потім два цільові хости.

    Приклад 1. Типовий приклад сканування за допомогою Nmap:

    # nmap -A -T4 scanme.nmap.org playground Starting Nmap (https://nmap.org/) Interesting ports on scanme.nmap.org (64.13.134.52): (The 1663 ports scanned but not shown below are in state : filtered) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99) 53/tcp open domain 70/tcp closed gopher 80/tcp open http Apache httpd 2.0.52 ((e type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Interesting ports on playground.nmap.org ): (The 1659 ports scanned but not shown below are in state: closed) PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 389/tcp open ldap? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp open windows-icfw? 1025/tcp Open msrpc Microsoft Windows RPC 1720/tcp Open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp Open vnc-http RealVNC 4.0 (Resolution 400x250; VNC port: 580/50 Address: 00:A0:CC:63:85:4B (Lite-on Communications) Device type: general purpose Running: Microsoft Windows NT/2K/XP , Windows XP Nmap завершено: 2 IP-адреси (2 hosts up) scanned in 88.392 seconds

    Зведення опцій

    Використання:
    nmap [Тип(и) сканування] [Опції] (задані мети)

    ВИЗНАЧЕННЯ МЕЦІ СКАНУВАННЯ:

    Може працювати з іменами хостів, IP-адресами, мережами і т.д.
    Наприклад: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
    -iL<ввести_имя_файла>: Імпорт зі списку хостів/мереж
    -iR<количество хостов>: Вибір випадкових цілей
    -exclude : Виключити хости/мережі
    -excludefile<файл_с_исключениями>: Виключити список із файлу

    ВИНАХОДЖЕННЯ ХОСТІВ:

    SL: Сканування для складання списку – просто скласти список цілей для сканування
    -sn: Пінг сканування – просто визначити, чи працює хост
    -Pn: Розцінювати всі хости як працюючі – пропустити виявлення хостів
    -PS/PA/PU/PY[список_портів]: TCP SYN/ACK, UDP або SCTP пінгування заданих хостів
    -PE/PP/PM: Пінгування з використанням ICMP ехо запитів, запитів тимчасової мітки та мережевої маски
    -PO[список_протоколів]: Пінгування з використанням IP протоколу
    -n/-R: Ніколи не робити DNS дозвіл/Завжди робити дозвіл [за замовчуванням: іноді]
    -dns-servers<сервер1[,сервер2],…>: Задати власні DNS сервери
    –system-dns: Використовувати системний DNS перетворювач
    –traceroute: Провести трасування (простежити шлях) до кожного хоста

    РІЗНІ ПРИЙОМИ СКАНУВАННЯ:

    SS/sT/sA/sW/sM: TCP SYN/з використанням системного виклику Connect()/ACK/Window/Maimon сканування
    -sU: UDP сканування
    -sN/sF/sX: TCP Null, FIN та Xmas сканування
    -scanflags<флаги>: Задати власні TCP прапори.
    -sI<зомби_хост[:порт]>: "Ліниве" (Idle) сканування
    -sY/sZ: SCTP INIT/COOKIE-ECHO сканування
    -sO: Сканування протоколу IP
    -b : FTP bounce сканування

    ВИЗНАЧЕННЯ ПОРТІВ І ПОРЯДКУ СКАНУВАННЯ:

    P<диапазон_портов>: Сканування лише певних портів
    Приклад: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
    -F: Швидке сканування– Сканування обмеженої кількості портів
    -r: Сканувати порти послідовно – не використовувати випадковий порядок портів
    -top-ports<количество_портов>: Сканувати<количество_портов>найбільш поширених портів
    -port-ratio<рейтинг>: Сканувати порти з рейтингом більшим<рейтинг>

    ВИЗНАЧЕННЯ СЛУЖБ ТА ЇХ ВЕРСІЙ:

    SV: Дослідити відкриті порти для визначення інформації про службу/версію
    -version-intensity<уровень>: Встановлювати від 0 (легке) до 9 (пробувати усі запити)
    –version-light: Обмежитись найлегшими запитами (інтенсивність 2)
    -version-all: Використовувати кожен одиничний запит (інтенсивність 9)
    -version-trace: Виводити детальну інформацію про процес сканування (для налагодження)

    СКАНУВАННЯ З ВИКОРИСТАННЯМ СКРИПТІВ:

    SC: еквівалентно опції -script = default
    -script = : це розділений комами список директорій, файлів скриптів або категорій скриптів
    -script-args =<имя1=значение1,[имя2=значение2,…]>: Передача аргументів скриптам
    -script-args-file=filename: Передача NSE скриптам аргументів у файлі
    –script-trace: Виводити всі отримані та надіслані дані
    -script-updatedb: Оновити базу даних скриптів
    -script-help = : Показ допомоги про скрипти розділений комою список скриптів або список категорій скриптів.

    ВИЗНАЧЕННЯ ОС:

    O: Активувати функцію визначення ОС
    –osscan-limit: Використовувати функцію визначення ОС лише для "перспективних" хостів
    –osscan-guess: Вгадати результати визначення ОС

    ОПЦІЇ УПРАВЛІННЯ ЧАСОМ І ПРОДУКТИВНІСТЮ:

    Опції, що приймають аргумент<время>, задаються в мілісекундах, доки ви не додаєте "s" (секунди), "m" (хвилини), або "h" (годинник) до значення (напр. 30m).
    -T<0-5>: Встановити шаблон налаштування керування часом (більше – швидше)
    -min-hostgroup/max-hostgroup<кол_хостов>: Встановити розмір груп для паралельного сканування
    –min-parallelism/max-parallelism<кол_хостов>: Регулює розпаралелювання запитів.
    –min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout<время>: Регулює час очікування відповіді на запит.
    -max-retries<количество_попыток>: Задає максимальну кількість повторних передач запиту
    -host-timeout<время>: Припиняє сканування повільних цілей
    –scan-delay/–max-scan-delay<время>: Регулює затримку між запитами.
    -min-rate<число>: Надсилати запити з інтенсивністю не менше ніж<число>за секунду
    -max-rate<число>: Надсилати запити з інтенсивністю не більше ніж<число>за секунду

    ОБХІД БРАНДМАУЕРІВ/IDS:

    F; -mtu<значение>: Фрагментувати пакети (опціонально із заданим значенням MTU)
    -D<фикт_хост1,фикт_хост2[,ME],…>: Маскування сканування за допомогою фіктивних хостів.
    -S : Змінити вихідну адресу
    -e<интерфейс>: Використовувати конкретний інтерфейс.
    -g/–source-port<номер_порта>: Використати заданий номер порту
    -proxies : Ретранслювати з'єднання через проксі HTTP/SOCKS4
    -data-length<число>: Додати довільні дані до пакетів, що посилаються
    -ip-options<опции>: Надсилати пакет із заданим ip опціями
    -ttl<значение>: Встановити IP поле time-to-live (час життя)
    -spoof-mac : Задати власну MAC адресу
    –badsum: Надсилати пакети з фіктивними TCP/UDP/SCTP контрольними сумами

    ВИСНОВОК РЕЗУЛЬТАТІВ:

    ON/-oX/-oS/-oG Виводити результати нормального, XML, s| -oA<базовове_имя_файла>: Використовувати відразу три основні формати виводу.
    -v: Збільшити рівень вербальності (задати двічі чи більше збільшення ефекту)
    -d: Збільшити або встановити рівень налагодження (до 9)
    –reason: Показати причину перебування порту у певному стані
    –open: Показувати лише відкриті (або, можливо, відкриті) порти
    –packet-trace: Відстеження прийнятих та переданих пакетів
    –iflist: Вивести список інтерфейсів та роутерів (для налагодження)
    –log-errors: Записувати помилки/попередження у вихідний файл нормального режиму
    –append-output: Додавати до кінця, а не перезаписувати вихідні файли
    –resume<имя_файла>: Продовжити перерване сканування
    –stylesheet<путь/URL>: Встановлює XSL таблицю стилів для перетворення XML виводу на HTML
    –webxml: Завантажує таблицю стилів із Nmap.Org
    –no-stylesheet: Прибрати оголошення XSL таблиці стилів із XML

    РІЗНІ ОПЦІЇ:

    6: Увімкнути IPv6 сканування
    -A: Активувати функції визначення ОС та версії, сканування з використанням скриптів та трасування
    -datadir<имя_директории>: Визначає розташування файлів Nmap
    –send-eth/–send-ip: Використовувати сирий рівень ethernet/IP
    –privileged: Передбачати, що користувач має всі привілеї
    –unprivileged: Передбачати, що користувач не має привілеїв для використання сирих сокетів
    -V: Вивести номер версії
    -h: Вивести цю сторінку допомоги

    ІНТЕРАКТИВНІ КОМАНДИ:

    ДОВІДКА: Не працюватиме з “sudo nmap”, тому використовуйте “sudo –i”
    Під час роботи ви можете робити запити у nmap такими ключами:
    ? Показати цю інформацію
    v/V збільшити/зменшити вербальність
    d/D збільшити/зменшити налагодження
    p/P увімкнути/вимкнути трасування пакетів
    та інші ключі, які будуть надруковані у статусі

    ПРИКЛАДИ:
    Визначення мети сканування

    У командному рядку Nmap все, що не опція (або аргументом опції), розглядається як мета сканування. У найпростішому випадку для сканування використовується IP адреса або ім'я мережі цільової машини.

    Іноді потрібно просканувати цілу мережу. Для цього Nmap підтримує адресу CIDR. Ви можете додати /<кол-во бит>до IP адреси або мережного імені та Nmap просканує кожну IP адресу, для якої перші<кол-во бит>такі ж, як і у заданого хоста. Наприклад, 192.168.10.0/24 просканує 256 хостів між 192.168.10.0 (бінарне: 11000000 10101000 00001010 00000000) і 192.1001001 192.168.10.40/24 зробить абсолютно те саме. Знаючи, що IP адреса scanme.nmap.org 64.13.134.52, при записі типу scanme.nmap.org/16 буде проведено сканування 65,536 IP адрес між 64.13.0.0 і 64.13.255.255. Найменше допустиме значення /0, при якому буде проскановано весь Інтернет. Найбільше значення /32, у якому буде просканований лише заданий хост чи IP адресу, т.к. всі адресні біти заблоковані.

    CIDR нотація коротка, проте не завжди досить гнучка. Наприклад, ви хочете просканувати 192.168.0.0/16, але пропустити всі IP-ки, що закінчуються на.0 або.255, т.к. зазвичай це широкомовні адреси. Nmap може здійснити таке сканування шляхом завдання діапазонів в октетах. Замість визначення звичайної IP адреси, ви можете визначити для кожного октету або розділений комами список чисел, або діапазон. Наприклад, 192.168.0-255.1-254 пропустить всі адреси в діапазоні, що закінчуються.0 і.255. Діапазони не обов'язково ставити лише в останніх октетах: при записі 0-255.0-255.13.37 буде проведено сканування всіх адрес в Інтернеті, що закінчуються на 13.37. Такий тип сканування може бути корисним для огляду просторів Інтернету та різноманітних досліджень.

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

    Ви можете передавати в командному рядку Nmap різні варіанти визначення цілей не обов'язково одного типу. Команда nmap scanme.nmap.org 192.168.0.0/16 10.0.0,1,3-7.0-255зробить те, що ви очікуєте.

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

    IL<имя_файла>(Введення зі списку)

    Зчитує цілі з<имя_файла>. Хоча передача великого списку хостів для сканування є звичайним явищем, це не зручно. Наприклад, ваш DHCP сервер надсилає вам список з 10,000 адрес, що використовуються на даний момент, і ви хочете його просканувати. Або, можливо, ви хочете просканувати всі IP-адреси, крім переданих ним, щоб виявити несанкціоноване використання статичних IP-адрес. Просто згенеруйте список хостів для сканування і передайте ім'я файлу Nmap як аргумент для -iL опції. Записи у файлі можуть бути в будь-якій прийнятній для Nmap формі (IP адреси, мережеві імена, CIDR, IPv6, або діапазони в октетах). Кожен запис повинен бути відділений пробілом або кількома символами табуляції або символами переходу на новий рядок. Ви можете передати як аргумент дефіс(-) як ім'я файлу, якщо хочете, щоб Nmap зчитувала список хостів зі стандартного введення, а не з файлу.

    IR<кол-во хостов>(Вибирає довільні цілі)

    Для сканування в межах усього Інтернету або будь-яких досліджень, можливо, знадобиться вибрати цілі довільно. Аргумент<кол-во хостов>визначає скільки потрібно згенерувати IP адрес. Невідповідні адреси IP, такі як приватні, широкомовні або нелокалізовані діапазони адрес автоматично пропускаються. Аргумент 0 може бути переданий для нескінченного сканування. Майте на увазі, що деяким системним адміністраторам може не сподобатися сканування їх мереж, і вони можуть поскаржитися. Використовуйте цю опцію на свій страх та ризик! Якщо в дощовий день вам буде нудно, спробуйте команду nmap -sS -PS80 -iR 0 -p 80 для сканування довільних веб-серверів.

    -exclude<хост1>[,<хост2>[,…]] (Виключити хости/мережі)

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

    -excludefile<имя_файла>(Виключити список із файлу)

    Ця опція робить те саме, що і –exclude, за винятком того, що цілі для виключення знаходяться в розділеному пробілами, символами табуляції або символами переходу на новий рядок<файле>, а не в командному рядку.

    Там є чотири типи NSE scripts, namely:

    • Prerule scripts– scripts that run before any of Nmap's scan operations, they are executed when Nmap hasn’t gathered any information про target yet.
    • Host scripts– є scripts executed after Nmap has performed normal operations таке як host discovery, port scanning, version detection, і OS detection against a target host.
    • Service scripts– are scripts run через specific services listening on a target host.
    • Postrule scripts– are scripts run after Nmap має сканувати всі target hosts.

    These scripts are grouped under diverses categories including those for authentication ( auth), discovering of hosts ( broadcast), brute force attacks to guess authentication credentials ( brute), discovering more about a network ( discovery), causing a denial of service ( dos), exploiting some vulnerability ( exploit), etc. Кількість scripts belong to default category.

    Note: Безперервно, будь ласка, ви повинні помітити ці key points:

    • Do not execute scripts from third parties without critically looking through them or only if you trust the authors. Це означає, що ці підписи не йдуть у шпильці і це може бути невідповідно або дуже погано вашого системи або введення вашої привілеї.
    • Secondly, багато цих scripts може possibly run as either a prerule or postrule script. Сприймає це, це recommend, щоб скористатися пристосуваннями для consistency.
    • Nmap uses the scripts/script.db Database to figure out the available default scripts and categories.

    Знайдіть місцезнаходження всіх наявних scripts NSE, беріть на кінець, як це:

    $locate *.nse/usr/share/nmap/scripts/acarsd-info.nse /usr/share/nmap/scripts/address-info.nse /usr/share/nmap/scripts/afp-brute.nse /usr/share/nmap/scripts /afp-ls.nse /usr/share/nmap/scripts/afp-path-vuln.nse /usr/share/nmap/scripts/afp-serverinfo.nse /usr/share/nmap/scripts/afp-showmount.nse /usr/share/nmap/scripts/ajp-auth.nse /usr/share/nmap/scripts/ajp-brute.nse /usr/share/nmap/scripts/ajp-headers.nse /usr/share/nmap/scripts /ajp-methods.nse /usr/share/nmap/scripts/ajp-request.nse /usr/share/nmap/scripts/allseeingeye-info.nse /usr/share/nmap/scripts/amqp-info.nse /usr /share/nmap/scripts/asn-query.nse ...

    NSE scripts є loaded using the --script flag, which also allows you to run your own scripts by providing categories, script file names, або name of directories where your scripts located.

    The syntax for enabling scripts is as follows:

    $ namp -sC target #load default scripts OR $ nmap --script filename|category|directory|expression,... target

    Ви можете побачити опис script with --script-help option. Додатково, ви можете прослухати звуки до деяких scripts за допомогою ---script-args і --script-args-file options, які містяться в наведеному файлі name-name, тому що літера арг.

    Для виконання сканування з найбільшою кількістю scripts, використовуючи -sC flag or alternatively use --script=default as shown.

    $nmap -sC scanme.nmap.org OR $nmap --script=default scanme.nmap.org OR $nmap --script default scanme.nmap.org

    Sample Output
    Starting Nmap 7.01 (https://nmap.org) at 2017-11-15 10:36 IST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.0027s latency). Немає shown: 999 filtered ports PORT STATE SERVICE 80/tcp Open http |_http-title: Go ahead and ScanMe! Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds

    Для того, щоб використовувати script для відповідного purpose, ви можете першим отримати все, що зображено на те, що це фактично для вас, для додатку http-headers.

    $nmap --script-help http-headers scanme.nmap.org

    Sample Output
    Starting Nmap 7.01 (https://nmap.org) at 2017-11-15 10:37 IST http-headers Categories: discovery safe https://nmap.org/nsedoc/scripts/http-headers.html для керування folder ("/") of web server and displays HTTP headers returned.

    Loading NSE Scripts To Perform Nmap Scans

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

    Using Script Name

    Після того, як знаєте, що script does, ви можете зробити, використовуючи його. Ви можете використовувати один script або ввійти в comma-separated list of script names. Підтримка нижче буде досягнута для перегляду HTTP headers configured on the web server at the target host.

    $nmap --script http-headers scanme.nmap.org

    Scan HTTP Headers

    Starting Nmap 7.01 (https://nmap.org) at 2017-11-15 10:39 IST Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up (0.27s latency). Немає shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http | http-headers: | Date: Wed, 15 Nov 2017 05:10:04 GMT | Server: Apache/2.4.7 (Ubuntu) | Accept-Ranges: bytes Vary: Accept-Encoding Connection: close | Content-Type: text/html | |_ (Треба типу: HEAD) 179/tcp filtered bgp 31337/tcp Open Elite Nmap done: 1 IP address (1 host up) scanned in 20.96 seconds

    Using Categories

    Ви можете також завантажити дописи від однієї категорії або від comma-separated list of categories. У цьому прикладі, ми використовуємо всі scripts в деталі і broadcast категорії до carry out a scan on the host 192.168.56.1 .

    $nmap --script default,broadcast 192.168.56.1

    Using * Wildcard

    Це useful when you want to select scripts with given name pattern. Для того, щоб завантажити всі scripts with names starting with ssh, run the command below on the terminal:

    $nmap --script "ssh-*" 192.168.56.1

    Using Boolean Expressions

    You can also select scripts using boolean expressions which you can build using the and, or, and notОператори. And names in a Boolean expression може бути в категорії, a filename from script.db, or all.

    Наступні комбінації будуть load scripts from the default or broadcast categories.

    $ nmap --script "default or broadcast" 192.168.56.10

    Which is equivalent to:

    $nmap --script default,broadcast 192.168.56.10

    Для того, щоб load all scripts omitting those in the vulnкатегорії, run this command on the terminal.

    $ nmap --script "not vuln" 192.168.56.10

    Next command looks a little complicated but is easy to understand, it selects scripts in the default, or broadcast categories, leaving out those with names starting with ssh-:

    $nmap --script "(default or broadcast) and not ssh-*" 192.168.56.10

    Важливо, це можливо, щоб комбінувати категорії, script name, directory, що містять ваші custom scripts або boolean expression to load scripts, як це:

    $ nmap --script broadcast,vuln,ssh-auth-methods,/path/to/custom/scripts 192.168.56.10

    Passing Arguments to NSE Scripts

    Below is an example showing how to pass arguments to scripts with the -script-args option:

    $nmap --script mysql-audit --script-args "mysql-audit.username="root", \mysql-audit.password="password_here", mysql-audit.filename="nselib/data/mysql-cis. audit""

    Для того, щоб pass a port number, use the -p nmap option:

    $ nmap -p 3306 --script mysql-audit --script-args "mysql-audit.username="root", \ mysql-audit.password="password_here" , mysql-audit.filename="nselib/data/mysql -cis.audit""

    Це нижче command runs an audit of the MySQL database server security configuration після parts of the CIS MySQL v1.0.2 benchmark. Ви можете добре створювати ваші власні useful custom audit files для інших MySQL audits.

    That's it for now. Ви можете дізнатися більше про інформацію в nmap page or check out NSE Usage .

    Щоб отримати started with writing your owns NSE scripts, check out this guide: https://nmap.org/book/nse-tutorial.html

    Conclusion

    Nmap is a really powerful and useful tool that every system or network administrator needs in his/her security arsenal – NSE simply adds more efficiency to it.

    In this article, we introduced you to the Nmap Script Engine, і зображено на те, як досліджувати і використовувати різні scripts під різними категоріями. Якщо ви маєте будь-які запитання, ви не можете повідомити про те, щоб скористатися повідомленнями нижче.

    Нижче ви знайдете 20 базових прикладів використання команди Nmap.

    Ви дізнаєтеся, як використовувати Nmap з командного рядка в Linuxдля пошуку активних хостів у мережі та сканування відкритих портів.

    Ви побачите, як віддалено визначити операційну системуза допомогою відбитків стека TCP/IP і як дізнатися версію програмного забезпеченнязапущеного на віддаленому сервері.

    Я також покажу як за допомогою Nmap здійснити приховане сканування, як визначити фаєрволі як підмінити MAC адресу.

    1. Сканування Одного Хосту чи IP Адреси

    Сканувати Окрема IP Адреса:

    $nmap 192.168.1.1

    Сканувати сервер по Ім'я Хоста:

    $nmap server.сайт

    Збільшити Рівень Деталізаціїрезультатів сканування:

    $nmap -v server..сайт

    2. Сканування множини IP адрес

    Сканувати Безліч IP адрес:

    $ nmap 192.168.1.1 192.168.1.2 192.168.1.3 $ namp 192.168.1.1,2,3

    Сканувати Підсіти:

    $nmap 192.168.1.0/24 $nmap 192.168.1.*

    Сканувати Діапазон IP Адреса (192.168.1.0 — 192.168.1.200):

    $nmap 192.168.1.0-200

    3. Пошук Активних Комп'ютерів у Мережі

    Дільна Рада:Скануйте мережу за допомогою однієї лише команди ping! Обчисліть усі активні комп'ютери!

    Сканувати мережу у пошуку Активних Гостів:

    $nmap -sn 192.168.1.0/24

    4. Сканування Списку Хостів із Файлу

    Сканування списку хостів/мереж з Файла:

    $nmap -iL input.txt

    Формат файлу:

    # Записи можуть бути представлені в будь-якому з форматів, з якими працює Nmap з командного рядка (IP адреси, імена хостів, CIDR, IPv6, або октетні діапазони). Записи повинні розділятися одним або більше пробілами, табуляціями # або переходами на новий рядок. $ cat input.txt server.сайт 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

    5. Виключення IP/Хостів/Мереж із Сканування

    Виключити Цілііз сканування Nmap-ом:

    $ nmap 192.168.1.0/24 --exclude 192.168.1.1 $ nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.5 $ nmap 192.168.1.2,2 .

    Виключити Списокхостів, взятих з файлу:

    $ nmap 192.168.1.0/24 --excludefile exclude.txt

    Формат файлу з виключеними хостами аналогічний наведеному вище.

    6. Сканування Певних Портів

    Сканувати Один Порт:

    $nmap -p 80 192.168.1.1

    Сканувати Декілька Портів:

    $nmap -p 80,443 192.168.1.1

    Сканувати Діапазон портів:

    $nmap -p 80-1000 192.168.1.1

    Сканувати Всі порти:

    $nmap -p "*" 192.168.1.1

    Сканувати кілька самих Поширених портів:

    $nmap --top-ports 5 192.168.1.1 $nmap --top-ports 10 192.168.1.1

    7. Визначення підтримуваних IP протоколів

    Визначити які IP Протоколи(TCP, UDP, ICMP, тощо) підтримує сканований хост:

    $nmap -sO 192.168.1.1

    8. Сканування TCP/UDP Портів

    Сканувати всі TCP Порти:

    $nmap -sT 192.168.1.1

    Сканувати певні TCP Порти:

    $ nmap -p T:80 192.168.1.1

    Сканувати усі UDP Порти:

    $nmap -sU 192.168.1.1

    Сканувати певні UDP Порти:

    $ nmap -p U:53 192.168.1.1

    Об'єднання сканування різних портів:

    $ nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1

    9. Швидке Сканування

    Активувати Швидкий режимсканування:

    $nmap -F 192.168.1.1

    * Сканує меншу кількість портів, ніж при звичайному скануванні.

    10. Показувати причину стану Порту

    Показати Причину, за якою Nmap вважає, що порт знаходиться в певному стані:

    $nmap --reason 192.168.1.1

    11. Показувати Тільки Відкриті Порти

    Показати Тільки Відкриті Порти(або можливо відкриті):

    $nmap --open 192.168.1.1

    12. Визначення ОС

    Одна з найбільш відомих функціональних можливостей Nmap – це віддалене визначення ОС на основі аналізу стека TCP/IP.

    Nmap посилає серію TCP та UDP пакетів на віддалений хост та вивчає відповіді.

    Після проведення безлічі тестів Nmap порівнює результати зі своєю базою даних і, при знаходженні відповідностей, виводить інформацію про ОС.

    увімкнути Визначення ОС:

    $nmap -O 192.168.1.1

    13. Визначення Версії Сервісів

    увімкнути Визначення Версії Сервісів:

    $nmap -sV 192.168.1.1

    * Визначає версії програм, запущених на віддаленому сервері.

    14. Виявлення Фаєрвола

    Дізнатися, чи захищений комп'ютер будь-якими Пакетними Фільтрамиабо Фаєрволом:

    $nmap -sA 192.168.1.1

    15. Підміна MAC Адреси

    Підмінити MAC Адреси:

    $nmap --spoof-mac 00:11:22:33:44:55 192.168.1.1

    Підмінити MAC Адреса Випадковим MAC-ом:

    $nmap --spoof-mac 0 192.168.1.1

    16. Сканування Фаєрвола на Вразливості

    Ці три типи сканування використовують непомітну лазівку в TCP RFC, щоб розділяти порти на відкриті та закриті.

    Коли сканується система, що відповідає вимогам RFC, будь-який пакет, що не містить встановленого біта SYN, RST або ACK, спричинить за собою відправку RST у відповідь у випадку, якщо порт закритий, або не спричинить жодної відповіді, якщо порт відкритий.

    Т.к. жоден з цих бітів не встановлений, то будь-яка комбінація трьох, що залишилися (FIN, PSH і URG) буде правильною.

    TCP Nullсканування:

    $nmap -sN 192.168.1.1

    * Не встановлюються ніякі біти (Прапорів у заголовку TCP 0).

    TCP Finсканування:

    $nmap -sF 192.168.1.1

    * Встановлюється лише TCP FIN біт.

    TCP Xmasсканування:

    $nmap -sX 192.168.1.1

    * Встановлюються FIN, PSH та URG прапори (пакет світиться як новорічна ялинка).

    17. Приховане Сканування

    Дільна Рада:Зберігайте анонімність під час сканування портів! Використовуйте Nmap + Tor + ProxyChains! Безпечне та просте тестування на проникнення!

    TCP SYNсканування:

    $nmap -sS 192.168.0.1

    * Відоме як сканування з використанням напіввідкритих з'єднань, тому що не відриває повних TCP з'єднань.

    18. Відключення Виявлення Хостів (No Ping)

    Не пінгувати хости перед скануванням:

    $nmap -Pn 192.168.1.1

    19. Вимкнення Використання DNS

    Дільна Рада:Потрібно посилити безпеку в Linux? Шифруйте DNS трафік для захисту від спуфінгу!

    Ніколи не здійснювати зворотне перетворення DNS імен для кожної виявленої активної IP-адреси.

    nmap [ <Тип сканирования> ...] [ <Опции> ] { <цель сканирования> }

    Опис

    Nmap (« Network Mapper ») - це утиліта з відкритим вихідним кодом для дослідження мережі та перевірки безпеки. Вона була розроблена для швидкого сканування великих мереж, хоча чудово справляється і з одиничними цілями. Nmap використовує "сирі" IP пакети оригінальним способом, щоб визначити які хости доступні в мережі, які служби (назва програми та версію) вони пропонують, які операційні системи (і версії ОС) вони використовують, які типи пакетних фільтрів/брандмауерів використовуються і ще багато інших параметрів. У той час, як Nmap зазвичай використовується для перевірки безпеки, багато системних адміністраторів знаходять її корисною для звичайних завдань, таких як контроль структури мережі, управління розкладами запуску служб та облік часу роботи хоста або служби.

    Вихідні дані Nmap – це список просканованих цілей з додатковою інформацією по кожній з них залежно від заданих опцій. Ключовою інформацією є « таблиця важливих портів» . Ця таблиця містить номер порту, протокол, ім'я служби та стан. Стан може мати значення open (відкритий), filtered (фільтрується), closed (закритий) або unfiltered (не фільтрується). Відкритий означає, що програма на цільовій машині готова для встановлення з'єднання/прийняття пакетів на цей порт. Фільтрується означає, що брандмауер, мережевий фільтр, або якась інша перешкода в мережі блокує порт, і Nmap не може встановити цей порт відкритий або закритий. Закриті порти не пов'язані з жодним додатком, але можуть бути відкриті будь-якої миті. Порти розцінюються як не фільтровані , коли вони відповідають запити Nmap, але Nmap неспроможна визначити відкриті вони чи закриті. Nmap видає комбінації відкритий|фільтрується і закрыт|фильтрируется , коли неспроможна визначити, який із цих двох станів описує порт. Ця таблиця також може надавати деталі про версію програмного забезпечення, якщо це було запрошено. Коли здійснюється сканування по IP протоколу (-sO), Nmap надає інформацію про протоколи, що підтримуються, а не про відкриті порти.

    На додаток до таблиці важливих портів Nmap може надавати подальшу інформацію про цілі: перетворені DNS імена, припущення про операційну систему, типи пристроїв і MAC адреси.

    Типове сканування за допомогою Nmap показано в Прикладі 1 . Єдині аргументи, використані в цьому прикладі - це -A для визначення версії ОС, сканування з використанням скриптів і трасування; -T4 для швидшого виконання; потім два цільові хости.

    Приклад 1. Типовий приклад сканування за допомогою Nmap

    # nmap -A -T4 scanme..org) Interesting ports on scanme.сайт (64.13.134.52): (The 1663 ports scanned but not shown in state: filtered) PORT STATE SERVICE VERSION 22/tcp Open ssh OpenSSH (protocol 1.99) 53/tcp open domain 70/tcp closed gopher 80/tcp open http Apache httpd 2.0.52 ((Fedora)) 113/tcp closed auth Device type: general purpose Running: Linux2. 2.6.X OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Interesting ports on playground..168.0.40): STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 389/tcp open ldap? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp open windows-icfw? 1025/tcp Open msrpc Microsoft Windows RPC 1720/tcp Open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp Open vnc-http RealVNC 4.0 (Resolution 400x250; VNC port: 580/50 Address: 00:A0:CC:63:85:4B (Lite-on Communications) Device type: general purpose Running: Microsoft Windows NT/2K/XP , Windows XP Nmap завершено: 2 IP-адреси (2 hosts up) scanned in 88.392 seconds


    Найновішу версію Nmap можна завантажити з