Kedysi v dobach drevnych, ked gnu tools boli este v plienkach, cp -R, scp -R a podobne veci sa este nenosili, sa na kopirovanie adresarovych stromov pouzival jeden "trik". Ktory sa da v pripade nudze vcelku pohodlne vyuzit, ak je potreba preniest subory odkialkolvek kamkolvek.
Tento trik sa pouzival, pretoze konzolove nastroje na pracu so subormi, ako su napriklad cp, mv a podobne nevedeli prepinac -R (recursive). Cize naraz sa vzdy dal skopirovat len jeden subor, alebo nejaka banda suborov. Co ale robit, ked treba skopirovat cely strom s desiatkami podadresarov?
V tej dobe hojne pouzivany nastroj tar (tape archiver) vzhladom k tomu, ze sluzil na archivaciu filesystemov, vedel rekurzivne preliezat filesystemy, teda s nim bolo mozne preliezt cely tento strom. A ked tento strom tar vedel zbalit, vedel ho aj rozbalit na nove miesto.
Takze stacilo napisat nieco ako
tar -c /home/ventyl/porno | tar -x /mnt/share/porno
a obsah menovaneho adresara sa pekne prekopiroval do noveho uloziska.
Finta ale spociva v tom, ze medzi dvoma tarmi mozu byt v kolone nastrkane dalsie programy. Napriklad by sa tam dal vlozit filter, ktory by z filmov vystrihaval nudne pasaze, ale preto tu dnes nie sme.
Ja som narazil na problem, ze som potreboval prekopirovat obsah pevneho disku jedneho stroja na druhy (virtualny) stroj, kde som nemal k dispozicii take veci, ako rsync, ftp, mc, ssh. Napadla ma teda moznost vrazit do pipy medzi tary netcat.
Netcat je podla svojej manpage TCP/IP swiss army knife. No v skutocnosti je to len program, ktory vsetko, co mu narvete na vstup, posle po sieti na druhy koniec a vsetko, co z druheho konca pride, vam vygrca na standardny vystup. Funguje to skoro ako klient-server, az na to, ze netcatu je bohapuste jedno, kto je klient a kto je server. Netcat vzdy vykeca druhej strane, co ma na srdci (v buffroch).
Ja som si zvolil spojenie cez named pipes, preto som si na oboch strojoch vytvoril pred tarovanim fifo subory:
root@kadibudka:/# mkfifo /tmp/ncfifo
root@krucifix:/# mkfifo /tmp/ncfifo
FIFO je taky fajny subor, ktory umoznuje cez neho programom komunikovat. Jeden program z neho moze citat a jeden (mozno aj viac, neskusal som) program donho moze zapisovat. Taka pipa deluxe.
Potom treba spustit netcat na oboch strojoch. kadibudka je stroj, odkial sa kopirovalo, krucifix je stroj, kam sa kopirovalo. Kedze krucifix bol za NATkou, pripajal som sa netcatom z krucifixu na kadibudku:
root@kadibudka:/# nc -l -p 9999 < /tmp/ncfifo
root@krucifix:/# nc kadibudka 9999 > /tmp/ncfifo
Potom uz len stacilo spustit tar na kadibudke, ktory kopiroval obsah korenoveho zvazku do pipy:
root@kadibudka:/# tar -clvv / > /tmp/ncfifo
root@krucifix:/# tar -xvv < /tmp/ncfifo
Co si chvilu ficalo, a v konecnom dosledku bol filesystem skopirovany. Cela vec sa da v klude riesit aj bez named pipes, priamym napipovanim taru na netcat a netcatu na tar, ja som vsak pouzil named pipes, lebo som najprv skusal, ako celu tu vec rozchodit. Riesenie je to vcelku rychle a elegantne, hlavnou vyhodou je, ze prenos nespomaluju ziadne protokolarne grcy a na realizaciu prenosu netreba nic viac, nez netcat a tar, ktore su pritomne aj na tom najzavsivavenejsom live CD.
I want more.
Dufam ze budes podobne triky publikovat castejsie. Nemal som ani sajny ze tar nieco take dokaze.. Dik :)
----------
tommyhot@hackingmachine:~$ microsoft &> /dev/null
podobnym stylom sa pomocou taru tlacili veci na magneticke pasky. tiez len natvrdo das ako destinaciu device a nestaras sa
______________
nález plný strát
reverse shell s netcatom - http://www.onlamp.com/pub/a/onlamp/2003/05/29/netcat.html
socat - http://www.dest-unreach.org/socat/ - moj oblubenec, oni ho volaju netcat++, a ked si pozries na konci manualovej stranky priklady, tak rychlo zistis ze sa s tym daju robit zaujimave veci :-)
dsh - http://pastebin.com/f43f6cc5a - cez konzolu sa blbo vkladaju "netisknutelne" znaky, alebo sa blbo includuje subor, takze je to blby program, co pozna 3 typy, "ascii", "hexa", a "vloz subor" a s tym je mozne _interaktivne_ vkladat prakticky lubovolny vstup,.. program nie je ziadny zazrak, takze ak niekto ma klony pre ine jazyky sem s nimi :-)
inak verzia netcat-u pre win co sa siri ako nc111nt.zip je bugnuta, takze odporucam radsej cygwin verziu
no ok, bolo to len chvilkove pomatenie mysle, ked som si myslel, ze v dnesnej dobe scp, rsyncu a podobne by to niekomu mohlo pomoct. ked si nejake take skoro geekoviny uvedomim, tak ich sem nacapim.
pre niekoho, kto robi casto v extremnych podmienkach sa mozu zist...
---
Cuchat s nadchou, to je ako sniffovat bez promiscu.
Velmi sa mi pacil Ventylov pisomny styl - kadibudka, protokolarne grcy.
jj, I want more too.
----------------------
Ja len v dobrom.
no tuto fintu s tarom bolo nutne pouzivat na plan9 doteraz pokial niekto nenapisal skript dircp co to robi automaticky. konecne.
Neprodukovalo by ti to chyby, keby ti nieco na ten port (9999) zacalo posielat udaje? Konkretne myslim na nejakeho worma, co by skusal posielat vseliake divne pakety na nahodne porty, v inom pripade by niekto mohol skusat TCP fingerprinting.
____________________________________________________________
Ked niecim nie som takmer uplne presvedceny, nepisem to. Vzdy uvadzajte vecne a najdolezitejsie argumenty, inak ma nepresvedcite. Ked sa mylim, opravte ma; rad sa poucim.
Nem, hento je TCP, cize spojovo orientovana komunikacia a netcat mal spojenie vytvorene s druhym netcatom, cize odpovedou na nahodne zabludeny packet by bolo connection refused, pretoze tam nikto nepocuva. port by sa javil ako zatvoreny.
---
Cuchat s nadchou, to je ako sniffovat bez promiscu.