Netcat (nc) Tutorial naredbi s primjerima

Netcat je alat koji se koristi za TCP, UDP sockete bazirane na Unix domenama. Netcat može slušati (engl. listen) ili spojiti određene sockete. Netcat je naredba neovisna o platformi koju podržavaju Linux, Unix, Windows, BSD, macOS, itd. Netcata se uglavnom koristi:

  • Za jednostavan TCP proxy
  • Za HTTP klijente i servere bazirane na shell skriptingu
  • Network daemon testiranje
  • SOCKS ili HTTP ProxyCommand za ssh

Sintaksa

Za naredbu `nc` koristit ćemo sljedeću sintaksu:

netcat OPCIJE DESTINACIJA PORT
  • `OPCIJE` se koristi za postavljanje nekih posebnih postavki poput timeouta, helpa, jumbo okvira, itd..
  • `DESTINACIJA` se koristi za postavljanje Hostnamea ili IP adrese udaljenog servera na kojeg se netcat spaja
  • `PORT` je broj porta udaljenog servera na kojeg se netcat spaja ili na kojem sluša

Ako netcat koristiš kao server, vrijedi sljedeća sintaksa:

nc OPCIJE PORT
  • `OPCIJE` se koristi za postavljanje nekih posebnih postavki poput timeouta, helpa, jumbo okvira, itd..
  • `PORT` je broj porta udaljenog servera na kojeg se netcat spaja ili na kojem sluša

Help

Netcat naredba ima puno različitih opcija. Pomoć i informacije o tim opcijama mogu se dobiti opcijom -h na sljedeći način:

nc -h
Slika 1: Help

Možemo vidjeti da naredba netcat pruža puno različitih opcija.

Skeniranje portova

Pen testeri koriste tehnike skeniranja portova za prikupljanje informacija. Nmap je jedan od najpopularnijih alata za pronalaženje otvorenih portova. Netcat može pružiti funkcionalnost skeniranja portova. Prednost netcat-a je to što je jednostavan i ne ovisni o libraryju. Jedan netcat binary dovoljan je za skeniranje portova i može se koristiti za sve operativne sustave (Windows, Linux, Unix, MacOS, BSD).

Koristit ćemo -z opciju za skeniranje portova. U ovom primjeru ćemo skenirati IP adresu 192.168.122.1 (umjesto IP adrese možemo skenirati i naziv domene poput poftut.com). Port range je određen 1-30.

nc -z -v 192.168.122.1 1-30
Slika 2: Skeniranje portova

Screenshot prikazuje detaljan output, samo je port 22 otvoren kao što možemo vidjeti. Ubrzajte IP skeniranje opcijom -n. To će disableati DNS resolutions o targetiranoj IP adresi.

nc -z -v -n 192.168.122. 1-30
Slika 3: Verbose skeniranje

Pokretanje Netcat TCP Servera

Još jedna korisna značajka netcat-a je rad kao TCP server. Netcat može slušati (engl. listen) određeni TCP port. No, kao sigurnosna mjera u Linux sustavima portove 1-1024 mogu slušati samo privilegirani korisnici. U ovom ćemo primjeru slušati (engl. listen) TCP port 30. Za davanje potrebnih privilegija koristimo naredbu sudo.

sudo nc -l -p 30
Slika 4: TCP Server

Screenshot prikazuje da je klijent povezan s našim serverom i pruža nam tekstove “ls” i “test”. Ovaj klijentski alat također može biti i telnet ili netcat. Napominjemo da telnet nije kriptiran protokol te da se kao takav smatra nesiguran, a više o tome možete pročitati ovdje.

Ako ne napišemo sudo naredbu za dobivanje root privilegija, dobit ćemo grešku “Permission denied“.

Povežite Netcat TCP Server

U prethodnom primjeru pregledali smo TCP server. Netcat također pruža mogućnosti klijenta. Da bismo koristili netcat kao klijent, trebamo navesti hostname (hrv. ime hosta) ili IP adresu i broj porta. Ne postoji posebna opcija za korištenje netcata kao klijenta.

nc localhost 30
Slika 5: Povežite Netcat TCP Server

U ovom primjeru povezali smo se s localhostom putem ssh porta (port 22). SSH server nam (klijentu) šalje neki tekst i čeka odgovor.

Slanje datoteka putem Netcata

Još jedna korisna značajka netcat-a je prijenos datoteka. Kao što vidimo u prethodnim primjerima, netcat može prenijeti tekst pomoću server-klijent arhitekture. Ne postoji limit u prijenosu podataka. Ti podaci mogu biti uobičajeni program ili film. Ali imajte na umu da se vrijeme prijenosa mijenja ovisno o veličini podataka. Za prijenos moramo konfigurirati poslužitelj kao odredište. A u konfiguraciji servera dolazne ćemo podatke preusmjeriti u datoteku imefajla.txt

netcat -l -p 4444 > imefajla.txt

Sada možemo poslati datoteku s klijenta. Čitat ćemo datoteku imefajla.txt na strani klijenta preusmjeravanjem na netcat datoteku na serveru sljedećom naredbom:

nc 192.168.122.239 4444 < imefajla.txt

Nakon dovršetka prijenosa obje instance (i klijentska i serverska) će se zatvoriti.

Jednostavan Web Server pomoću Netcata

Netcat ima još jednu zanimljivu značajku (engl. feature). Netcat se može koristiti kao jednostavan web server. Zapravo su web serveri vrlo jednostavni ako nema posebnih zahtjeva konfiguracije. Web serveri samo šalju HTML stranice putem HTTP protokola. Netcat također može poslati HTML kôd s preusmjeravanjem (engl. redirection).

nc -l 4444 < index.html
Slika 6: Jednostavan Web Server pomoću Netcata

Na strani klijenta koristit ćemo Google Chrome za navigaciju po serveru na IP adresi 192.168.122.239 po portu 4444.

Slika 7: Jednostavan Web Server pomoću Netcata

Sprječavanje DNS Lookupa

Kada se koristi netcat, DNS Lookup može se onemogućiti opcijom -n. To će ubrzati rad netcata.

netcat -n google.com 80
Slika 8: Sprječavanje DNS Lookupa

Nastavite slušanje nakon što se klijent disconnectao

Po defaultu, Netcat će prestati slušati na specificiranom portu i IP adresi nakon što klijent završi konekciju. To znači da netcat radi kao server listener (hrv. slušatelj poslužitelja). Upisom opcije -k, netcat će nastaviti slušati specificirani port i IP adresu čak i ako udaljeni klijent prekine konekciju.

nc -k -l 4444

Postavljanje timeouta

Nakon uspostavljanja konekcije s udaljenim serverom, prenosimo neke podatke. Ako nema određenog prijenosa podataka tijekom određenog vremena koje se naziva timeout, konekciju možemo prekinuti ili zatvoriti. Kako bi postavili taj timeout tijekom kojeg dopuštamo da nema prijenosa podataka, a konekcija ostane i dalje otvorena i spremna za prijenos podataka, koristit ćemo opciju -w uz vrijednost timeout-a koji želimo postaviti. U ovom primjeru postavit ćemo vrijednost timeouta na 120.

nc -w 120 192.168.1.10 8888

Koristi samo IPv4

Netcat je alat koji podržava i IPv4 i IPv6, a u nekim slučajevima ćemo možda htjeti omogućiti samo IPv4 protokol. Ovo je posebno korisno za slušanje određenog porta. Da omogućimo samo IPv4 protokol, koristit ćemo -4 kao opciju.

nc -k -4 -l 4444

Koristi samo IPv6

S druge strane, možemo omogućiti i samo IPv6 protokol. To je vrlo rijedak slučaj, ali možda ćete se naći u situaciji kada vam baš to treba. Da omogućimo samo IPv6 protokol, koristit ćemo -6 kao opciju.

nc -k -6 -l 4444

Banner Grabbing

Netcat se koristiti za Banner Grabbing (engl. hvatanje banera) različitih portova poput SSH, HTTP, HTTPS, VNC, FTP itd. Netcat će inicirati konekciju s portom udaljenog servera i ispisati vraćeni odgovor (engl. response) kao tekst na konzolu naredbom echo.

nc 172.104.31.121.443

Zatim ćemo izdati sljedeću HTTP naredbu kako bismo postavili zahtjev (engl. request) udaljenom HTTP serveru. Server će na to odgovoriti informacijom ili svojim bannerom.

GET / HTTP 2.0
Slika 9: Banner Grabbing

Tekst je nastao na temelju članka sa portala Poftut te je djelomično preveden. Iz originalnog članka su izdvojene najbitnije misli kako bi budućim čitateljima skratili vrijeme čitanja i učenja. Moguće je da su neki dijelovi teksta parafrazirani te da su neke teme detaljnije ili drugačije objašnjene unutar teksta. Referenca na originalni članak: https://www.poftut.com/netcat-nc-command-tutorial-examples/. Također, ovaj članak je moguće koristiti u vlastite komercijalne i nekomercijalne svrhe. Ukoliko je članak javno dostupan, obavezno je navođenje izvora uz objavu loga na početku i kraju članka.

Komentiraj