# Nmap

## Сканирование Одного Хоста или IP Адреса

|     |     |
| --- | --- |
| `nmap 192.168.1.1` | Сканировать Отдельный IP Адрес |
| `nmap server.shellhacks.com` | Сканировать сервер по Имени Хоста |
| `nmap -v server.shellhacks.com` <br>`nmap -vv server.shellhacks.com` | Увеличить Уровень Детализации результатов сканирования |

## Сканирование Множества IP Адресов

|     |     |
| --- | --- |
| `nmap 192.168.1.1 192.168.1.2 192.168.1.3`<br>`nmap 192.168.1.1,2,3` | Сканировать Множество IP Адресов |
| `nmap 192.168.1.0/24`<br>`nmap 192.168.1.*` | Сканировать Подсеть |
| `nmap 192.168.1.0-200` | Сканировать Диапазон IP Адресов |

## Поиск Активных Компьютеров в Сети

|     |     |
| --- | --- |
| `nmap -sn 192.168.1.0/24` | Сканировать сеть в поиске Активных Хостов |

## Сканирование Списка Хостов из Файла

|     |     |
| --- | --- |
| `nmap -iL input.txt` | Сканирование списка хостов/сетей из Файла |

??? note "Формат файла"
    Записи могут быть представлены в любом из форматов, с которыми работает Nmap из командной строки (IP адреса, имена хостов, CIDR, IPv6, или октетные диапазоны). Записи должны разделятся одним или более пробелами, табуляциями или переходами на новую строку.

    ```
    cat input.txt
    server.shellhacks.com
    192.168.1.0/24
    192.168.2.1,2,3
    192.168.3.0-200
    ```

## Исключение IP/Хостов/Сетей из Сканирования

|     |     |
| --- | --- |
| `nmap 192.168.1.0/24 --exclude 192.168.1.1`<br>`nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.5`<br>`nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3` | Исключить Цели из сканирования Nmap-ом |
| `nmap 192.168.1.0/24 --excludefile exclude.txt` | Исключить Список хостов, взятых из файла |

!!! note
    Формат файла с исключенными хостами аналогичен приведенному выше.

## Сканирование Определенных Портов

|     |     |
| --- | --- |
| `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`<br>`nmap --top-ports 10 192.168.1.1` | Сканировать несколько самых Распространенных Портов |

## Определение Поддерживаемых IP Протоколов

|     |     |
| --- | --- |
| `nmap -sO 192.168.1.1` | Определить какие IP Протоколы (TCP, UDP, ICMP, и т.д.) поддерживает сканируемый хост |

## Сканирование TCP/UDP Портов

|     |     |
| --- | --- |
| `nmap -sT 192.168.1.1` | Сканировать все TCP Порты |
| `nmap -p T:80 192.168.1.1` | Сканировать определенные TCP Порты |
| `nmap -sU 192.168.1.1` | Сканировать все UDP Порты |
| `nmap -p U:53 192.168.1.1` | Сканировать определенные UDP Порты |
| `nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.1.1` | Объединение сканирования разных портов |

## Быстрое Сканирование

|     |     |
| --- | --- |
| `nmap -F 192.168.1.1` | Активировать Быстрый Режим сканирования |

!!! note
    Сканирует меньшее кол-во портов, чем при обыкновенном сканировании.

## Показывать Причину Состояния Порта

|     |     |
| --- | --- |
| `nmap –reason 192.168.1.1` | Показать Причину, по которой Nmap считает что порт находится в определенном состоянии |

## Показывать Только Открытые Порты

|     |     |
| --- | --- |
| `nmap –open 192.168.1.1`| Показать Только Открытые Порты (либо возможно открытые) |

## Определение ОС

Одна из наиболее известных функциональных возможностей Nmap — это удаленное определение ОС на основе анализа работы стека TCP/IP.

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

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

|     |     |
| --- | --- |
| `nmap -O 192.168.1.1` | Включить Определение ОС |

## Определение Версии Сервисов

|     |     |
| --- | --- |
| `nmap -sV 192.168.1.1` | Включить Определение Версии Сервисов |

> Определяет версии программ, запущенных на удаленном сервере.

## Обнаружение Фаервола

|     |     |
| --- | --- |
| `nmap -sA 192.168.1.1` | Узнать, защищен ли компьютер какими-либо Пакетными Фильтрами или Фаерволом |

## Подмена MAC Адреса

|     |     |
| --- | --- |
| `nmap –spoof-mac 00:11:22:33:44:55 192.168.1.1` | Подменить MAC Адреса |
| `nmap –spoof-mac 0 192.168.1.1` | Подменить MAC Адрес Случайным MAC-ом |

## Сканирование Фаервола на Уязвимости

Эти три типа сканирования используют незаметную лазейку в TCP RFC, чтобы разделять порты на открытые и закрытые.

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

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

|     |     |
| --- | --- |
|`nmap -sN 192.168.1.1`| TCP Null сканирование - Не устанавливаются никакие биты (Флагов в TCP заголовке 0) |
| `nmap -sF 192.168.1.1` | TCP Fin сканирование - Устанавливается только TCP FIN бит |
| `nmap -sX 192.168.1.1` | TCP Xmas сканирование - Устанавливаются FIN, PSH и URG флаги (пакет светится как новогодняя елка) |

## Скрытое Сканирование

|     |     |
| --- | --- |
| `nmap -sS 192.168.0.1` | TCP SYN сканирование |

> Известное как сканированием с использованием полуоткрытых соединений, так как не отрывает полных TCP соединений.

## Отключение Обнаружения Хостов (No Ping)

|     |     |
| --- | --- |
| `nmap -Pn 192.168.1.1` | Не пинговать хосты перед сканированием |

## Отключение Использования DNS

|     |     |
| --- | --- |
| `nmap -n 192.168.1.1` | Никогда не производить обратное преобразование DNS имен для каждого обнаруженного активного IP адреса |

## Сохранение Результатов Сканирования Nmap в Файл

|     |     |
| --- | --- |
| `nmap 192.168.1.1 > output.txt`<br>`nmap -oN output.txt 192.168.1.1` | Сохранить результат сканирования Nmap в Текстовый Файл |
| `nmap -oX output.xml 192.168.1.1` | Сохранить результат сканирования Nmap в XML Файл |