Netcat для создания соединений с открытыми портами

11.12.2019

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

Соединение с открытым портом на атакуемой системе тривиально и выполняется при помощи команды. Вы можете подумать: «Хорошо, я мог бы просто использовать telnet для соединения с открытыми портами», - и будете правы. Несмотря на то что клиент telnet обычно посылает данные в ТСР- порт 23 адресата, telnet легко заставить направлять данные в любой ТСР-порт. Однако Netcat намного более мощен при создании таких соединений по следующим причинам:

вывод от Netcat легче переадресовать в файл. При помощи символа переадресации > в UNIX и Windows NT/2000 любой вывод Netcat будет выгружен в файл;

гораздо проще преднамеренно заставить Netcat сбросить соединение, чем вынудить клиента telnet рассоединиться. После взаимодействия с открытым портом посылкой и приемом данных простая комбинация Ctrl+C заставит Netcat разорвать соединение, остановив всякую передачу по сети и обеспечив чистый выход из программы. Когда клиент telnet соединяется с портом и получает незнакомые символы от атакуемой системы, то часто зависает, вообще не отвечая на нажатия клавиш. Если клиент telnet перестает подавать признаки жизни, атакующий должен вручную уничтожать его процесс для установления нового соединения, что довольно утомительно;

telnet вставляет некоторые управляющие данные и переменные среды в соединение с открытым портом. Такой дополнительный ввод может загрязнять поток связи, которым пользуется атакующий. Хакеру нужно, чтобы вся информация, посланная атакуемой системе, исходила от него - без какого-либо дополнительного хлама от программы, применяемой для пересылки этих данных. Netcat предназначен для передачи чистых, необработанных данных без лишнего хлама, введенного в их поток;

telnet помещает собственные сообщения об ошибках в поток стандартного вывода, в частности «соединение закрыто чужим хостом». Единственный вывод от Netcat - данные, которые приходят из открытого порта. Netcat, в отличие от telnet, ничего не вставляет в выходной поток;

telnet не может создавать UDP-соединения. Netcat обрабатывает их как профессионал! Если хакер находит открытый UDP-порт на атакуемой системе и предполагает с ним взаимодействовать, то telnet использовать нельзя. Netcat в состоянии создать соединение с любым открытым TCP- или UDP- портом.