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


Reklama


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.1
User-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.txt

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

Naszym oczom uka¿e siê informacja w stylu:

HTTP/1.1 400 Bad Request
Date: 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-80

W 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/bash

Liczba 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.txt

Nastê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.txt

W 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

Autor: Unknow

Uwa¿asz, ¿e prezentowane przez nas informacje s± u¿yteczne? Pomó¿ nam je wypromowaæ!

  • dodaj do flakera
  • blipnij o tym
Kana³ RSS
Co na forum?
Jak odzyskaæ...
Pêtla foreach
poszukuje po...
Problem z fu...
poszukuje do...
ServerShell status: dzia³a
[zaló¿ konto]
Subskrypcja
Je¶li chcesz byæ powiadamiany o nowo¶ciach na stronie, wpisz tu swój e-mail

RSS

Dodaj do Google