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 |
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 |

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 |

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 |

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 |

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 |

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

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 |

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 |

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.
