Netcat
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
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
- http://www.catonmat.net/blog/unix-utilities-netcat
- http://www.ol-service.com/sikurezza/doc/netcat_eng.pdf
- http://www.g-loaded.eu/2006/11/06/netcat-a-couple-of-useful-examples/
- http://www.securitydocs.com/library/3376
- http://www.terminally-incoherent.com/blog/2007/08/07/few-useful-netcat-tricks/
- http://vallaste.ee/
- http://en.wikipedia.org/wiki/Netcat
- " Hakin9 " Aprilli 2011 number
Autor
Rasmus Linnamäe Ak22 2011