Отже приступимо! NMAP — інструмент-утиліта для дослідження мережі.(простіше сканер). З’явився на світ завдяки людині, якого в мережі знають під ніком Fyodor. Розшифровується як Network Mapper. Про неї: Утиліта NMAP призначена для сканування машин і мереж з різною кількістю комп’ютерів, визначення стану хостів сканованій мережі і до того ж портів і служб. NMAP є одним з найшвидших сканерів портів. Для використання своїх можливостей програма реалізує різні методи сканування,
UDP, TCP connect(), TCP SYN (напіввідкритий), FTP proxy (прорив через ftp), Reverse-ident, ICMP (ping), ACK, Xmas tree,SYNиNULL,
сканування. Одна з важливих функцій сканера — визначення ОС, під якою працює вам потрібна машина.
Наступний плюс NMAP — це функція, з допомогою якої створюється запит, який у 90%-му випадку не залишить логів на сканованій машині. Отже, якщо ви хочете швидко отримати результат — ця утиліта для вас виявиться незамінною.
Забігаючи вперед, про програму під Win-системи, скажу наступне: Називається Nmap, остання доступна версія під Віндовс — 3.30, під Unix — також.
Підтримувані платформи:AIX, BSDI, FreeBSD, HP-UX, IRIX, Linux, NetBSD, OpenBSD, Solaris,
SunOS, Windows 98/Me/2000/XP.
Сканер Nmap має багато опцій методів сканування, які вам прийдеться вивчити або
постійно дивитися в цю інструкцію.
Поїхали!
Використання: nmap {режим сканування}{опція}{ip-адреса хоста або ціла мережа}
Якщо говорити про *nix-системи, то краще працювати під root, так як деякі методи сканування
вимагають прав адміністратора.
-sT (scan TCP) — використовувати метод TCP connect(). Найбільш загальний метод сканування TCP-портів.
Функція connect(), присутня в будь-якій ОС, дозволяє створити з’єднання з будь-яким портом віддаленої
машини. Якщо зазначений в якості аргументу порт відкритий і прослуховується сканованій машиною, то результат
виконання connect() буде успішним (тобто з’єднання буде встановлено), в іншому разі зазначений порт
є закритим, або доступ до нього заблоковано засобами захисту.
Для того, щоб використовувати цей метод, користувач може не мати ніяких привілеїв на скануючому
хості. Цей метод сканування легко виявляється цільовим (тобто об’єкту сканування) хостом, оскільки його log-файл
буде містити запротокольовані численні спроби з’єднання і помилки виконання даної операції.
Служби, обробні підключення, негайно заблокують доступ адресою, що викликав ці помилки.
-sS (scan SYN) — використовувати метод TCP SYN. Цей метод часто називають «напіввідкритим» скануванням,
оскільки при цьому повне TCP-з’єднання з портом сканованій машини не встановлюється. NMAP посилає
SYN-пакет, як би маючи намір відкрити даний з’єднання, і чекає на відповідь. Наявність прапорів SYN|ACK у відповіді вказує на те, що порт віддаленої машини відкритий і прослуховується. Прапор RST у відповіді означає
зворотне. Якщо Nmap прийняв пакет SYN|ACK, то у відповідь негайно відправляє RST-пакет для скидання ще не встановленого з’єднання (реально цю операцію виконує сама ОС). Дуже небагато сайтів здатні виявити таке сканування. Користувач повинен мати статус root для формування підробленого SYN-пакет.
Для прискорення процесу опитування портів при скануванні великих мереж спільно з опцією -sS ви можете використовувати ярлик, що дозволяє опитати який-небудь порт на усіх активних об’єктах сканованій вами
мережі набагато швидше, ніж при використанні однієї опції-p. Це можна зробити за допомогою ярлика -PS .
Наприклад, якщо буде виявлена нова уразливість в sendmail, вам може знадобитися за короткий час
виявити, на яких машинах sendmail встановлений. Команда запуску Nmap буде виглядати наступним чином
(приклад):
nmap -n -sS -p25 -PS25 21.0.0.0/8
-sF,-sX,-sN (scan FIN, scan Xmas, scan NULL) — «невидиме» FIN, Xmas Tree і NULL-сканування. Ці методи
використовуються у разі, якщо SYN-сканування з якихось причин виявилося непрацездатним. Так,
деякі файрволли і пакетні фільтри «очікують» підроблені SYN-пакети на захищені ними порти, та програми
типу Synlogger або Courtney здатні відстежити SYN-сканування.
Ідея полягає в наступному. У FIN-скануванні в якості запиту використовується FIN-пакет. У Xmas Tree використовується пакет з набором прапорів FIN|URG|PSH, а NULL-сканування використовує пакет без прапорів. Согласнорекомендации RFC 973 п. 64, ОС сканованого хоста повинна відповісти на такий, який прибув на закритий
порт, пакетом RST, в той час як відкритий порт повинен ігнорувати ці пакети.
Розробники Microsoft Windows, як завжди, вирішили повністю ігнорувати загальноприйняті стандарти і піти
своїм шляхом. Тому будь-яка ОС сімейства Windows не посилає у відповідь RST-пакет, і ці методи не будуть працювати з цими ОС. Однак у всьому є свої плюси, і в NMAP ця ознака є основною для розрізнення операційних систем, що володіють такою властивістю.
Якщо в результаті FIN-сканування ви отримали список відкритих портів, то це не Windows. Якщо ж всі ці методи видали результат, що всі порти закриті, а SYN-сканування виявило відкриті порти, то ви скоріше за все маєте справу з ОС Windows. На жаль, Windows не єдина ОС, що володіє цим недоліком. До таких
ОЗ належать також Cisco, BSDI, IRIX, HP/UX і MVS. Всі ці ОС не відправляють RST-пакети.
-sP (scan Ping) — ping-«сканування». Іноді вам необхідно лише дізнатися адреси активних хостів в сканованій мережі. Nmap може зробити це, пославши ICMP-повідомлення «запит луни» на кожен IP-адресу, вказану вами. Хост, який відправив відповідь на ехо, є активним. Деякі сайти (наприклад microsoft.com) блокують ехо-пакети. З цієї причини Nmap також посилає
TCP ACK-пакет на 80-й порт сканованого хоста (за замовчуванням). Якщо у відповідь ви отримали RST-пакет, хост активний. Третій метод використовує SYN-пакет і чекає у відповідь RST або SYN|ACK. Для користувачів,
не володіють статусом root, використовується метод connect().
Для root-користувачів NMAP за замовчуванням використовує паралельно обидва методу — ICMP і ACK. Ви можете змінити це, використовуючи опцію ‘-P’, описану нижче. Зауважимо, що ping-сканування за умовчанням виконується в будь-якому випадку і тільки активні хости піддаються скануванню. Використовуйте цю опцію тільки у випадку, якщо ви
хочете виконати тільки ping-опитування, не виробляючи сканування портів.
-sU (scan UDP) — сканувати UDP-порти. Цей метод використовується для визначення, які UDP-порти (RFC 768) на сканируемом хості є відкритими. На кожен порт сканованій машини відправляється UDP-пакет без даних. Якщо у відповідь було отримано ICMP-повідомлення «порт недоступний», це означає, що порт закритий. В іншому
випадку передбачається, що сканований порт відкритий.
Деякі вважають сканування портів UDP марним заняттям. Ми нагадуємо про відомою
«дірку» в демона rpcbind ОС Solaris. Він може бути виявлений на кожному з документованих UDP-портів з
номером, більше 32770. Якщо ви виявите його, то буде вже не важливо, блокується чи 111-й порт файрволом
чи ні.
На жаль, сканування портів UDP проходить дуже повільно, оскільки практично всі ОС слідують
рекомендації RFC 1812 (розділ 4.3.2.8) по обмеженню швидкості генерування ICMP-повідомлень «порт недоступний».
Наприклад, ядро Linux (каталог net/ipv4/icmp.h) обмежує генерування таких повідомлень до 80 за 4 секунди з простоєм 0,25 секунди, якщо це обмеження було перевищено. В ОС Solaris ще більш жорстке обмеження
(2 повідомлення в секунду), і тому сканування Solaris проходить ще більш повільно.
NMAP визначає параметри цього обмеження, і відповідно зменшує кількість виконаних запитів,
запобігаючи тим самим затоплення мережі непотрібними пакетами, які ігноруються цільової машиною. Як зазвичай,
Microsoft знову все проігнорувала, і не використовує у своїх ОС ніяких обмежень. Тому ви дуже швидко
можете просканувати всі 65535 UDP-портів хоста, що працює під управлінням ОС Windows.
-sO (scan Open protocol) — сканування протоколів IP. Даний метод використовується для визначення IP-протоколів,
підтримуваних об’єкту сканування хостом. Метод полягає у передачі хоста, IP-пакетів без будь-якого заголовка
для кожного протоколу сканованого хоста. Якщо отримано повідомлення «Протокол недоступний», то даний протокол
хостом не використовується. В іншому випадку Nmap передбачає, що протокол підтримується хостом.
Деякі ОС (AIX, HP-UX, Digital UNIX) і файрволли можуть блокувати передачу повідомлень «Протокол недоступний». З цієї причини всі скановані протоколи будуть «відкриті» (тобто підтримуються).
Оскільки описана техніка схожа з методом сканування портів UDP, обмеження швидкості генерації ICMP-повідомлень також буде мати місце. Однак полі «тип протоколу IP-заголовка складається всього лише з
8 біт, тому 256 протоколів будуть відскановані за прийнятний час.
-sA (scan ACK) — використовувати ACK-сканування. Цей додатковий метод використовується для визначення
набору правил (ruleset) файрволла. Зокрема, він допомагає визначить, чи захищений сканований хост файрволом
або просто пакетним фільтром, блокуючим входять SYN-пакети.
У цьому методі на скануючий порт хоста відправляється ACK-пакет (з випадковими значеннями полів acknowledgement
number і sequence number). Якщо у відповідь прийшов RST-пакет, порт класифікується як «нефільтрований». Якщо відповіді не було (або настав ICMP-повідомлення про недоступність порту), порт класифікується як «фільтрується». Зауважимо, що Nmap не видає «нефильтруемые» порти в результатах, тому якщо ви не знайдете жодного відкритого порту при використанні цього типу сканування, це буде означати, що всі порти просканированы
і є нефильтруемыми. Звертаємо вашу увагу, що цей метод ніколи не покаже стан порту «відкрито» в результатах сканування.
-sW (scan Window) — використовувати метод TCP Window. Цей метод схожий на ACK-сканування, за винятком
того, що з його допомогою можна визначати відкриті порти точно так само, як і фильтруемости/нефильтруемые.
Це можна зробити, перевіривши значення поля Initial Window TCP-пакета, що повертається хостом у відповідь на надісланий запит, зважаючи на наявність певних особливостей обробки даного поля у деяких ОС.
Список уразливих операційних систем включає в себе принаймні кілька версій AIX, Amiga, BeOS, BSDI, Cray, Tru64 UNIX, DG/UX, OpenVMS, Digital UNIX, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD,
OpenStep, QNX, Rhapsody, SunOS 4.X, Ultrix, VAX і VxWorks.
-sR (scan RPC) — використовувати RPC-сканування. Цей метод використовується спільно з іншими методами
сканування і дозволяє визначити програму, яка обслуговує RPC-порт, та номер її версії. Для цього всі відкриті TCP/UDP-порти хоста затопляются NULL-командами оболонки SunRPC, після чого
визначаються RPC-порти та закріплені за ними програми. Таким чином, ви легко отримаєте інформацію, яку могли б отримати за допомогою команди ‘rpcinfo -p’, навіть якщо portmapper сканованого хоста закритий
файрволом або TCP-wrapper’ом.
-sL (scan List) — список сканованих адрес. Ця опція дозволяє вам отримати список адрес хостів, які будуть просканированы NMAP, до початку процесу сканування. За замовчуванням визначаються
імена хостів, однак це можна заборонити, використовуючи опцію -n. Опція може використовуватися у випадку, коли
вам необхідно визначити імена великої кількості хостів за їх адресами і т. д.
-b (bounche scan) — використовувати атаку «Прорив через FTP». Цікавою можливістю» протоколу FTP (RFC 959) є підтримка «довірених» (proxy) ftp-з’єднань. Іншими словами, з
довіреної хоста source.com можна з’єднатися з ftp-сервером target.com і відправити файл, що знаходиться на ньому, на будь-яку адресу Internet! Зауважимо, що ця можливість відома з 1985 року (коли був написаний цей RFC). NMAP використовує цю «вразливість» для сканування портів з «довіреної» ftp-сервера.
Отже, ви можете підключитися до ftp-сервера «над» файрволом і потім просканувати заблоковані їм
порти (наприклад 139-й). Якщо ftp-сервер дозволяє читати і записувати дані в який-небудь каталог (наприклад /incoming), ви також можете відправити будь-які дані на ці порти. Аргумент, що вказується після
‘-b’, являє собою URL сервера ftp, використовуваного в якості «довіреного». Формат URL наступний:
ім’я користувача: [email protected]: порт. Адреса сервера треба вказати обов’язково, інше можна не вказувати.
-РО — позначає не пінговать хост перед скануванням, потрібно у випадках з такими серверами, як microsoft.com коли ICMP-запити ігноруються сервером.
-O — Опція дозволяє задіяти систему определния ОС на досліджуваному хості. Завжди в першу чергу необхідно знати під якою ОС-ю працює зацікавив вас хост.
Ще один важливий момент, все що не є опцією або аргументом сканер сприймає як адреса мети.
Приклади:
nmap -v 777.ru

Сканувати всі зарезервовані TCP-порти на хості Опція ‘-v’ означає включення режиму детального
звіту про хід процесу сканування.
nmap -sS -O 777.ru/24
Запускає SYN-сканування всіх 255 машин з адресами класу C, однією з яких є 777.ru. Крім того, здійснюється визначення ОЗ кожного з сканованих хостів. Для цього вам необхідний, як я вже говорив вище статус суперкористувача.
nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
Здійснює Xmas-сканування першої половини адрес (0-127) кожної з 255 підмереж класу B адресного
простору 128.210.*.*. На цих хостах тестується присутність sshd (22 порт), DNS (53), pop3d (110),
imapd (143) і стан порту 4564. Звертаємо увагу, що Xmas-сканування не буде працювати з ОС Windows,
CISCO, IRIX, HP/UX і BSDI.
nmap -v –randomize_hosts -p80 *.*.2.3-5
Nmap буде шукати всі машини, IP-адреса яких закінчується на .2.3, .2.4 .2.5. Якщо ваш статус root, ви також можете сканувати порти виявлених хостів, вказавши опцію ‘-sS’. Ви знайдете багато цікавих машин, адреси яких починаються на 127. Тому рекомендується замість першої зірочки вказати ‘127-222’.
Спробуйте.
host -l 777.ru |cut ‘-d’ -f 4| ./nmap -v -iL
Просканувати сервери DNS зони і знайти хостів у домені 777.ru, передавши потім в NMAP їх адреси. Так виглядає команда для Linux.

Російська версія програми: www.nmap.ru/
Оригінал Федора(величезне йому спасибі)http://www.insecure.org/
А ось це версія під Win32: www.securitylab.ru/tools/_services/download/?ID=32014

P. S. Ну ось ніби і все, успіхів Вам в освоєнні цього складного, але з іншого боку потужного сканера. Якщо що, інфа по NMAP є тут і завжди можна задати питання вам допоможуть.