Это официальная документация OldTeam по nmap
, в этой документации мы делаем упор именно на NETSTALKING
,
но и даже так документация будет очень большая, и информативная. Тут будет даже в целом про сканирование портов.
Зачем это надо? Что мы получаем? Как это работает? Тут мы постараемся ответить на все вопросы. Такая короткая
первая страница.. У меня никогда не получалось лить воду).
Как вы знаете весь интернет построен на отправке и принятие пакетов, для отправки которых,
используеться один из протоколов транспортировки, среди них TCP
,UDP
,и другие.
Они отправляют пакет на указанный IP адрес
. Но тут встаёт вопрос, а что делать с ним дальше,
кому он принадлежит, может Телеграму
, может FTP
серверу. Именно в этот момент в дело вступает порт.
Можно привести метафору, если IP
адрес выступает как адрес до дома, то порт выступает в качестве
номера квартиры. Порт определяет, какому приложению, нужен отправленный пакет.
Как вы понимаете его главная фишка, и есть его главная ошибка. Благодаря тому что у приложений или протоколов, уже чётко определены свои порты. К примеру:
у HTTP это порт 80
у HTTPS это порт 443
Мы можем узнать что скрываеться за этим хостом.
Для начала стоит понять, что данные могут передаваться только через ОТКРЫЙ порт.
Если он закрыт, значит хост не имеет никакого отношения к приложению которое использует этот закрытый порт.
Например у IP адреса
: 1.2.3.4
Открыт порт 80
, но закрыт порт 20
.
Порт 80
это порт протокола HTTP
именно за счёт этого протокола,
вы можете открыть сайты. Ну если более точно принимать сайты.
Порт 20
это порт протокола FTP
именно за счёт этого протокола,
вы можете обмениваться файлами в сети. Когда вы что-то скачиваете, скорее всего,
это что-то скачиваеться с FTP
сервера.
Итак, первый порт открыт, воторой закрыт. Как мы помним данные могу передаваться только по открытому порту. Поэтому мы можем сделать вывод, посмотрев на статус этих портов.
Для чего чаще всего используеться HTTP
? Для сайтов! Собственно говоря, мы можем сказать что за этим IP адресом
, скрываеться именно сайт.
PS: Порт 20 мы даже не берём во внимание он закрыт.
Всего существует 65535
портов, начиная с 0
, тоесть (0-65535
).
Тут приведён лишь очень маленький список, если вам нужны все порты то вам сюда.
HTTP/tcp,udp 80,8080,8081
SMTP/tcp,udp 25,465,587
RVI/tcp 37777
FTP/tcp 20,21
HIKVISION/tcp,udp 8000
HTTPS/tcp,udp 443
SSH/tcp,udp 22
DNS/tcp,udp 53
Что можно сказать? Порт для нетсталкеров, служит в качестве сортировки, и обозначения того что скрываеться за IP адресом
.
За ним может быть всё что угодно, камера
, сайт
, FTP
. Но зная какие порты у него открыты мы можем сказать
что это такое.
Также например зная порты можем к ним подключиться, и даже попытаться что-то отправить. Ну вообще эта тема уже блэкхэтов
.
Прежде всего nmap это сканер портов, в который засунули всё что можно.
- Например он может сканировать порты методами:
TCP
,UDP
,SYN
,FIN
,XMAS
,NULL
. - Может определить версию софта на порту, например:
nginx 1.24.0
. - И ещё очень очень много всего, а точнее.
Очень много функциональный инструмент, который стал уже классическим.
sudo apt install nmap
sudo pacman -S nmap
Скачать nmap
на виндус можно тут - download
Для виндуса, всё не так однозначно. Тут у консольного nmap
-(а) есть графическая оболочка
zenmap
. После того как вы выбрали, нужен ли вам интерфейс.
Если вы рисковый чувак то можете его скомпилировать вручную.
Для этого выполните эти команды:
git clone https://github.com/nmap/nmap
cd nmap
./configure
make
make install
Вначале просто показываеться IP адреса и DNS сканируемого сервера.
Запуск:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-04-20 14:31 MSK
Сообщение о отправки запроса на указанный хост:
Nmap scan report for google.com (64.233.162.101)
Состояние хоста, и время ответа:
Host is up (0.019s latency).
Другие айпи этого сервер, которые не были просканированы:
Other addresses for google.com (not scanned):64.233.162.100 64.233.162.139 64.233.162.138
64.233.162.102 64.233.162.113 2a00:1450:4010:c08::8b
2a00:1450:4010:c08::64 2a00:1450:4010:c08::8a 2a00:1450:4010:c08::71
Днс записи:
rDNS record for 64.233.162.101: li-in-f101.1e100.net
Порты которые он тоже просканировал но не вывел на экран:
Not shown: 998 filtered ports
а уже внизу идут строчки по типу:
PORT STATE SERVICE
21/tcp closed ftp
22/tcp filtered ssh
80/tcp open http
В начале идёт порт, и через /
, его протокол.
Вторым значение идёт состояние порта, их бывает несколько:
(open) открыт
(closed) закрыт
(filtered) фильтруется
(unfiltered) не фильтруется
(open|filtered) открыт|фильтруется
(closed|filtered) закрыт|фильтруется
Все filtered
означают что nmap не смог определить состояние порта.
Он может быть как открыт, так и закрыт.
Третим идёт сервис, тоесть протокол или приложение этого порта.
ftp
ssh
http
IPaddress это IP адрес
IPrange это IP диапазон
DNS это Домен
CIDR это Подсеть
nmap google.com
nmap 62.131.130.0/24
nmap 127.0.0.1
nmap 62.131.130.0-255
PS: Ссылки, (URL), указывать нельзя!
PS: Потому что URL изначально имеет протокол (http://, https://).
PS: А это и есть порты 80 и 443.
Для того что-бы просканировать все цели из файла, нужно использовать аргумент -iL
.
А потом указать путь к файлу с целями.
nmap -iL ФАЙЛ
В файле, каждая новая цель должна быть на новой строчке.
Пример файла:
google.com
yandex.ru
youtube.com
github.com
PS: Формат файла не важен, но, я использую txt.
В nmap как мы уже говорили выше, есть очень много методов для сканирования портов. Но чем они отличаються, и какой же из них самый лучший.
PS: Некоторые методы работают только есть вы запускаете nmap с правами администратора! (sudo)
-
SYN
-sS
- также известное как полуоткрытое сканирование, является самым популярным методом сканирования портов вNmap
. Этот метод используетTCP
пакеты типаSYN
. Nmap отправляет пакетыSYN
на каждый порт, который нужно проверить. Если порт открыт, то удаленный хост отправляет ответное сообщениеSYN-ACK
. В этом случае, Nmap знает, что порт открыт и записывает его в список открытых портов. Если порт закрыт, то удаленный хост отправляет сообщениеRST
, а если порт фильтруется (например, брандмауэр блокирует пакетыSYN
), то удаленный хост не отправляет никакого ответа.SYN
сканирование очень эффективно и быстро определяет открытые порты. -
TCP
-sT
- это сканирование использует пакетыTCP
с установленным флагомACK
для определения открытых портов. Как и в методеSYN
сканирования, Nmap отправляет пакеты на каждый порт, который нужно проверить. Если порт открыт, то удаленный хост отправляет ответное сообщениеRST-ACK
. Если порт закрыт, то удаленный хост отправляет только сообщениеRST
. Если порт фильтруется, то удаленный хост не отправляет никакого ответа.TCP
сканирование может быть полезным при обнаружении хостов, на которых нельзя использовать полуоткрытое сканирование. -
UDP
-sU
- это сканирование отправляет пакетыUDP
на каждый порт, который нужно проверить. Если порт открыт, то удаленный хост не отправляет ответное сообщение. В этом случае, Nmap считает, что порт открыт. Однако, многие хосты настроены таким образом, что не отправляют ответы на закрытые порты, поэтому этот метод может быть медленным и не очень точным. Если порт закрыт или фильтруется, то удаленный хост отправляетICMP
сообщение типаPort Unreachable
.UDP
сканирование может быть полезным при обнаружении служб, которые используютUDP
вместоTCP
. Ведь порты могут быть не толькоTCP
. -
FIN
-sF
- это сканирование отправляет пакетыTCP
с установленным флагомFIN
на каждый порт, который нужно проверить. Если порт открыт, то удаленный хост не отправляет ответное сообщение. Если порт закрыт, то удаленный хост отправляет сообщениеRST
. Если порт фильтруется, то удаленный хост отправляетICMP
сообщение типаDestination Unreachable
.FIN
сканирование может быть полезным при обнаружении служб, которые реагируют на такие пакеты, например, некоторыеWindows
системы. -
NULL
-sN
- это сканирование отправляет пакетыTCP
без установленных флагов на каждый порт, который нужно проверить. Если порт открыт, то удаленный хост не отправляет ответное сообщение. Если порт закрыт, то удаленный хост отправляет сообщениеRST
. Если порт фильтруется, то удаленный хост отправляетICMP
сообщение типаDestination Unreachable
.NULL
сканирование может быть полезным при обнаружении служб, которые реагируют на такие пакеты, например, некоторыеUNIX
системы. -
XMAS
-sX
- это сканирование отправляет пакетыTCP
с установленными флагамиFIN
,PSH
иURG
на каждый порт, который нужно проверить. Если порт открыт, то удаленный хост не отправляет ответное сообщение. Если порт закрыт, то удаленный хост отправляет сообщениеRST
. Если порт фильтруется, то удаленный хост отправляетICMP
сообщение типаDestination Unreachable
.XMAS
сканирование может быть полезным при обнаружении служб, которые реагируют на такие пакеты, например, некоторыеLinux
системы.
PS: Какой лучший та? Я считаю SYN
, но стоит понимать что всё зависит от ваших целей!
Многие методы сканирования портов, которые поддерживает Nmap
, могут быть обнаружены системами защиты, такими как брандмауэры, IPS/IDS
и другие системы мониторинга трафика. Некоторые методы могут быть более "анонимными", чем другие, и могут обходить определенные виды защиты, но никакой метод сканирования не может гарантировать полную анонимность.
Для примера, сканирование SYN
является одним из наиболее анонимных методов сканирования портов. Поскольку Nmap
не завершает установление соединения, удаленный хост не отправляет ответное сообщение, если порт открыт. Это может помочь избежать обнаружения, основанного на контроле соединений, таком как IDS
. Однако, если на удаленном хосте работает система мониторинга трафика, то она может обнаружить сканирование на основе количества SYN
пакетов, направленных на различные порты.
Другие методы сканирования, такие как FIN
, XMAS
и NULL
сканирования, также могут быть более анонимными, чем SYN
сканирование, так как они не отправляют пакеты SYN
, которые могут быть обнаружены системами защиты. Однако, эти методы сканирования также могут быть обнаружены на некоторых сетях. Тут всё зависит от хоста который вы сканируете.
Методы сканирования портов в TCP
и UDP
не отличаются существенно по своей анонимности,у обоих плохая. Как правило, методы сканирования портов в TCP
и UDP
могут быть обнаружены системами защиты на основе анализа трафика.
В случае UDP
сканирования, его аннонимность можно увеличить использыванием опции "зеркального сканирования" --scanflags IPID
, при сканировании портов. Она основана на отправке специальных пакетов UDP
на закрытые порты, которые могут вызвать ответное сообщение от удаленного хоста с определенным значением поля IP ID
. Это может помочь обойти некоторые системы защиты, которые мониторят только трафик на открытых портах.
Наконец, для обеспечения максимальной анонимности при сканировании портов в TCP
и UDP
рекомендуется использовать методы сканирования, которые могут обойти конкретные типы систем защиты и производить сканирование внутри VPN
, или аннонимной сети, например такой как Tor
. Я например в случаях необходимости используя proxy
, для этого в nmap можно использывать аргумент --proxies
и указать прокси типа SOCK4
,SOCK5
,HTTP
, в таком формате протокол://айпи:порт
.
Если вы по жизни рисковый, то например при сканирование айпи диапазона пинтагона, вас может забанить IDS
или брандмауэр
. Мы об этом уже говорили немного выше. Но в nmap
есть способы обойти их.
-f
- этот аргумент, позволяет фрагментироватьIP
пакеты, он разбиваетTCP
заголовок, на части, и посылает их в разных пакетах, что-бы защита, не смогла понять что вы мутите. Но поаккуратнее с этой опцией).
sudo nmap -f
--data-length
- этот аргумент, позволяет добавлять к пакетам произвольные данные. Рандомная информация, которая нужно просто что-бы увеличить размер пакета. Например размерTCP
пакета вnmap
состовляет40
байтов, аICMP
пакеты,28
байтов. Для дудоса маловато, но для обхода неплохо.
nmap --data-length 100
--ttl
- этот аргумент, позволяет установитьIPv4
поле вtime-to-live
в отправленных пакетах.
nmap --ttl 255
--badsum
- этот аргумент, позволяет посылась пакеты с неправильнымиTCP
иUDP
контрольными суммами пакетов.
nmap --badsum
--open
: показывать только открытые (или возможно открытые) порты.
nmap --open
-sV
: включить определение версий софта на портах.
nmap -sV
-p
: позволяет указать порты.
// Сканирует только на порт 80
nmap -p 80
// Сканирует только на порты от 0 до 100
nmap -p 0-100
// Сканирует только на порты 80,21,22
nmap -p 80,21,22
-O
: включить определение ОС
nmap -O
Nmap не очень и быстрый, но его можно сильно ускорить этими аргументами:
-T
: установить количество потоков, от 0 до 5, чем больше тем быстрее.
nmap -T5
nmap -T4
// и так далее.
-n
: не производить разрешение DNS имен.
nmap -n
-Pn
: не использовать пинг сканирование, полностью пропускает этап обнаружения хостов.
nmap -Pn
-sS
: использывать SYN сканирование.
nmap -sS
--min-hostgroup
: позволяет установить размер групп для параллельного сканирования.
nmap --min-hostgroup 10
nmap --min-hostgroup 9
// и так далее.
--min-parallelism
: позволяет установить количество параллельных запросов.
nmap --min-parallelism 10
nmap --min-parallelism 9
// и так далее.
Также, для увелечения скорости можно ограничить количество проверяемых портов.
Это очень сильно повлияет на скорость выполнение, ведь стандартно он проверяет 1000
самых популярных портов.
Давайте изменим это число на 50
.
Например поставить топ 50 самых популярных: --top-ports 50
// Пресет для максимальной скорости.
sudo nmap -T5 -n -sS --min-hostgroup 10 --min-parallelism 10 --top-ports 50
PS: Но помните что использывание -Pn
, -n
понижает точность сканирования.
Когда результатов очень много, то они могут не помещаться в терминал, поэтому их можно сохранить в файл, используя следующие аргументы.
-oN
: сохранение в txt файл.
nmap -oN ИМЯ_ФАЙЛА
-oX
: сохранение в xml файл.
nmap -oN ИМЯ_ФАЙЛА
Теперь поговорим про то как его эффективно использывать для нетсталкинга.
-iR
: генерация рандомных IP для сканирования.
nmap -iR КОЛИЧЕСТВО_IP
Очень интересная функция которая позволяет не перебирать в ручную айпи диапазоны.
Я её ещё совмещаю с, сохранением в файл. Ну и накидываю настроек для скорости.
И у меня выходит вот такая вот команда:
nmap -T5 -n -iR 1000000 --min-hostgroup 10 --min-parallelism 10
--top-ports 200 -oN output.txt --script=http-title --open
Можете использывать)).
Ну не зря же они движок для этого писали.
Для использывания скриптов используется аргумент --script=
.
nmap --script=ИМЯ_СКРИПТА
Скриптов очень много, среди них есть даже для тестирования уязвимостей сайта, и тд.
Для нетсталкинга полезней всего будет скрипт http-title
который показывает заголовок станицы.
Благодаря заголовку, мы можем сразу понять, мы нашли интересное, или как обычно страницу роутера.
// Использывание скрипта http-title
nmap --script=http-title