Netcat

From EIK wiki

Netcat

Netcat väljastati ametlikult aastal 1996 ja seda on tihti võrreldud kui Šveitsi armee noaga. Netcat on üks versioon cat programmist, erinevusega et cat kirjutab ja loeb infot failidest, siis netcat teeb seda sama, aga üle võrgu ühenduste. Netcat kirjutati algselt UNIXI jaoks, aga tänapäeval saab teda kasutada ka paljude teiste OP süsteemide all. Netcati saamiseks tuleb minna http://Netcat.sourceforge.net või http://nc110.sourceforge.net. Netcat sisaldab mõningaid erinevusi ka GNU/Linuxi ja Windowsi versioonide vahel. Näiteks parameeter Lin on Windowsi all püsiv kuulamis režiim, aga Linuxi all on see tunneldus režiim. Veel -V Linuxi all kuvab versiooni informatsiooni, aga Windowsi all sellist parameetrit ei eksisteeri. Netcat on utiliit mis võimaldab kirjutada ja saata andmeid üle TCP ja UDP võrgu protokollide. Netcati saab kasutada portide skannimiseks, failide ülekandmiseks,(banner grabbing?) tagauksena, portide suunajana, portide kuulamiseks ja veel paljuteks erinevateks võimalusteks.
Mõned Netcati tähtsamad omadused on :

  • Outbound or inbound connections, TCP or UDP, to or from any ports
  • Full DNS forward/reverse checking, with appropriate warnings
  • Ability to use any local source port
  • Ability to use any locally-configured network source address
  • Built-in port-scanning capabilities, with randomizer
  • Built-in loose source-routing capability
  • Can read command line arguments from standard input
  • Slow-send mode, one line every N seconds
  • Hex dump of transmitted and received data
  • Optional ability to let another program service established connections
  • Optional telnet-options responder

Kuidas Netcati paigaldada

Kui sa kasutad Debiani või Debiani baasil loodud distrodel nagu Ubuntu, siis järgnev käsk aitab sul seda paigaldad :

 sudo aptitude install netcat

Fedora ja Fedoral põhinevatel distrodel nagu CentOs :

 sudo yum install netcat

Kui ka kasutad Slackware, FreeBSD, NetBSD, Solaris või maci tõmba alla lähtekood http://netcat.sourceforge.net/download.php ja :

 tar -zxf nc-version.tar.gz
 cd nc-version
 ./configure && sudo make install

Netcati süntaks

connect to somewhere:   nc [-options] hostname port[s] [ports] ...
listen for inbound:     nc -l -p port [-options] [hostname] [port]
options:
       -e prog		program to exec after connect [dangerous!!]
       -b		allow broadcasts
       -g gateway	source-routing hop point[s], up to 8
       -G num		source-routing pointer: 4, 8, 12, ...
       -h		this cruft
       -i secs		delay interval for lines sent, ports scanned
       -l		listen mode, for inbound connects
       -n		numeric-only IP addresses, no DNS
       -o file		hex dump of traffic
       -p port		local port number
       -r		randomize local and remote ports
       -q secs		quit after EOF on stdin and delay of secs
       -s addr		local source address
       -t		answer TELNET negotiation
       -u		UDP mode
       -v		verbose [use twice to be more verbose]
       -w secs		timeout for connects and final net reads
       -z		zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive]


Kasutamine

Netcati serveri režiimi panemiseks kasutame

nc -l

lihtsalt nc jooksutab netcati kliendi režiimis. Netcati tagataustal jooksutamiseks on parameeter -d.

Portide skänner

Netcat võib olla ka edukas portide skännimiseks. Selleks tuleb sisestada süntaksit :

nc –[options] hostname [ports]

Näiteks:

nc –v 192.168.1.4 21, 80, 443
nc –v 192.168.1.4 1-200
nc –v 192.168.1.4 http

Esimesel juhul skäneeritakse adressi 192.168.2.4 porte 80 ja 443, teisel juhul portide vahemiku 1-20 ja kolmandal juhul vaid http paketi liiklust. parameeter -v paneb netcati verbose režiimi. Kasulik on ka parameeter -z mis ei loo ühendust serveriga, vaid teavitab kui on leidnud mõne vaba pordi. See on kasulik kiireks skännimiseks.

Proxy server

Üks vähekasutatud võimalusi on kasutada netcati ka proxy serverina nii porte kui ka hoste saab suunata. Näiteks :

 nc -l -p 12345 | nc www.google.com 80

Siin algab liiklus netcati serverist pordist 12345 ja suunataks google.com porti 80. Tehes päringu pordile 12345 ei saa sa andmeid tagasi kuna tehtud toru on ühesuunaline. Selleks et toru kahesuunaliseks teha :

 nc -l -p 12345 | nc www.google.com 80 | nc -l -p 12346

Jutuserveri režiim

Netcat on loodud andmete saatmiseks ja vastuvõtmiseks üle erinevate ühenduste. Lihtsaim viis selleks on saata lihtsat teksti kahe arvuti vahel. Selleks peab ühed arvutid Netcati serveri režiimile panema :

nc –l –p 12345

viimane variant on mitte local arvuti puhul ja teise ühendama loodud serveriga :

nc localhost 12345  või teades ip aadressit nc 192.168.0.1 12345

nüüd sisestades teksti ühes arvutis ja vajutades seejärel enterit saadetakse see teise arvutisse.

Failide saatmine netcatiga

Netcatiga saab ka saata kui ka vastvõtta faile.

nc –l –p 12345 < file.zip

Selles näites Netcat on käivitatud serveri režiimis ja ta pakub ühte tekstifaili. Klient kes ühendub serveriga ja tahab seda faili kätte saada peab sisestama

nc 192.168.1.4 12345 > file.zip

Netcatiga on ka võimalik jõuga suruda faili teise arvutisse. Kõigepeat alustama netcati serveri režiimis

nc –l –p 12345 > file.zip

siis lülitame netcati klient režiimile ja võtame faili vastu

nc 192.168.1.4 12345 < file.zip

Kuna netcat ei näita mingit saatmiseks kuluvat aega ja see on eriti tüütu suurte failide puhul, siis sellisel puhul on selline utiliit nagu pv väga kasulik. Näide :

nc 192.168.0.1 12345 | pv -b > backup.iso

Banner grabbing on selline mõiste millega saab edukal juhul kindlaks määrata kasutava toote, versiooni, OP süsteemi või rakenduse uuritavas arvutis. Selleks tuleb kasutada lihtsat pordi skännimist ja vajutades kaks korda enterit on võimalik heal juhul teada saada mis teenusega on tegu antud pordi taga. Näiteks 80 pordi taga peaks olema mingi veebi server.

nc -v -n 192.168.10.10 80

Saades teada mis on antud aadressil ja pordi taga tuleks kirjutada HEAD / HTTP/1.0 ja vajutada enterit. Tulev informatsioon on sarnane :

HTTP/1.1 200 OK
Date: Mon, 11 May 2009 22:10:40 EST
Server: Apache/2.0.46 (Unix) (Red Hat/Linux)
Last-Modified: Thu, 16 Apr 2009 11:20:14 PST
ETag: "1986-69b-123a4bc6"
Accept-Ranges: bytes
Content-Length: 1110
Connection: close
Content-Type: text/html

Kõvaketta kloonimine

Netcatiga on võimalik ka üle võrgu kloonida kõvakettaid. Arvuti taga mille ketast sa tahad kloonida kirjuta :

dd if=/dev/sda | nc 192.168.0.1 9000

kus 9000 on suvaline valitud port ja kloonitavaks kettaks sda

Vastuvõtvasse arvutisse kirjuta :

nc -l -p 9000 | dd of=/dev/sda

Muidugi sa pead mõlemad partitsioonid lahti ühendama (unmont). See tähendab, et kui sa kloonid peaksid sa kasutama live cd pealt üles bootitud distrot näiteks Knoppix. Selle sama tehnoloogiaga on võimalik kloonida ka NTFS partitsioone.

Veebi server

Netcat võimaldab üles panna ajutise lihtsa veebiserveri, mis sisaldab vaid ühtelehekülge, näiteks sisaldab teavitust et veebiserveriga on pahad lood. Luues lihtsa scritpi

while true; do nc -l -p 80 -q 1 < error.html; done

kus error.html on lehekülg ise, selle loomine ja ülespanemine võtab kõigest paar minutit aega.

Telnet server

Netcati võimaldab sekunditega üles seada ka telneti serveri. Sa sääd määrata endale sobiva shelli või ükskõik midagi muud mis on käivitavat, mis pannakse tööle edukal telneti ühendusel.

nc -lp 1337 -e /bin/bash

Windowsi puhul

nc -lp 1337 -e cmd.exe

Liides -e tähendab programmi mis on mõeldud käivitamiseks serveri režiimis ja ta käivitatakse kui klient ühendub serveriga. Kui klient ühendub pordi 1337 kaudu saab ta täis ligipääsu shellile, õigustega mis on seda jokksutaval kasutajal.


Kokkuvõte

Kuigi netcat teeb paljusi asju põhineb ta siiski tavalisel Linuxi loogikal, et ta on mõeldud vaid ühe asja tegemiseks ja ta teeb seda paganama hästi. Ta on loodud vaid ühel eesmärgil- kirjutada ja lugeda informatsiooni üle võrgu protokollide. Kuna see on loodud vaid kindlal eesmärgiks saab seda siiski kasutada miljonil erineval viisil. Teistele rakendustele saab küll lisada erinevaid võimalusi, kuid mida rohkem neid on seda spetsiifilisemaks ja keerulisemaks läheb nende kasutamine. Muidugi on GUI kõigesuurem funktsionaalsuse tapja. Kui netcatil oleks ka GUI, arvatavasti ei oleks ta pooltki nii kasulik kui ta on praegu. Socat on küll palju võimsam netcatist, tal on isegi hulga rohkem funktsioone. Kahjuks on tal üpriski keeruline süntaks ja ta ei ole nii tuntud ja kasutussõbralik kui tema eelkäija.


Viited ja kasutatud materjaal

Autor

Rasmus Linnamäe Ak22 2011