Android

Komenda Netcat (nc) z przykładami

Netcat Tutorial - The Swiss Army Knife Of Networking - Reverse Shell

Netcat Tutorial - The Swiss Army Knife Of Networking - Reverse Shell

Spisu treści:

Anonim

Netcat (lub nc) to narzędzie wiersza polecenia, które odczytuje i zapisuje dane w połączeniach sieciowych przy użyciu protokołów TCP lub UDP. Jest to jedno z najpotężniejszych narzędzi w arsenale administratorów sieci i systemów i jest uważane za szwajcarski scyzoryk narzędzi sieciowych.

Netcat jest wieloplatformowy i jest dostępny dla systemów Linux, macOS, Windows i BSD. Za pomocą Netcat można debugować i monitorować połączenia sieciowe, skanować w poszukiwaniu otwartych portów, przesyłać dane, jako serwer proxy i nie tylko. Pakiet Netcat jest wstępnie zainstalowany w systemie macOS i popularnych dystrybucjach systemu Linux, takich jak Ubuntu.

Składnia Netcat

Najbardziej podstawowa składnia narzędzia Netcat ma następującą postać:

nc host port

W systemie Ubuntu możesz używać netcat lub nc . Oba są dowiązaniami symbolicznymi do wersji NetBS openBSD.

Domyślnie Netcat będzie próbował nawiązać połączenie TCP z określonym hostem i portem. Jeśli chcesz ustanowić połączenie UDP, użyj opcji -u :

nc -u host port

Skanowanie portów

Skanowanie portów jest jednym z najczęstszych zastosowań Netcat. Możesz skanować pojedynczy port lub zakres portów.

Na przykład, aby przeskanować w poszukiwaniu wolnych portów w zakresie 20–80, należy użyć następującego polecenia:

nc -z -v 10.10.8.8 20-80

Opcja -z każe nc skanować tylko w poszukiwaniu otwartych portów, bez wysyłania do nich żadnych danych, a opcja -v zapewnia więcej pełnych informacji.

Dane wyjściowe będą wyglądać mniej więcej tak:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

Możesz także użyć Netcat do znalezienia oprogramowania serwera i jego wersji. Na przykład, jeśli wyślesz polecenie „EXIT” do serwera na domyślnym porcie SSH 22:

echo "EXIT" | nc 10.10.8.8 22

Dane wyjściowe będą wyglądać mniej więcej tak:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.

Aby skanować w poszukiwaniu portów UDP, po prostu dodaj opcję -u do polecenia, jak pokazano poniżej:

nc -z -v -u 10.10.8.8 20-80

W większości sytuacji Nmap jest lepszym narzędziem niż Netcat do kompleksowego skanowania portów.

Wysyłanie plików przez Netcat

Netcat może być używany do przesyłania danych z jednego hosta na inny, tworząc podstawowy model klient / serwer.

Działa to poprzez ustawienie Netcata, aby nasłuchiwał na określonym porcie (przy użyciu opcji -l ) na hoście odbierającym, a następnie ustanowienie regularnego połączenia TCP z drugiego hosta i przesłanie pliku przez niego.

Na odbierającym uruchom następujące polecenie, które otworzy port 5555 dla połączenia przychodzącego i przekieruje dane wyjściowe do pliku:

nc -l 5555 > file_name

Z hosta wysyłającego połącz się z hostem odbierającym i wyślij plik:

nc receiving.host.com 5555 < file_name

Aby przenieść katalog, możesz użyć tar do zarchiwizowania katalogu na hoście źródłowym i wypakowania archiwum na hoście docelowym.

Na hoście odbierającym ustaw narzędzie Netcat, aby nasłuchiwało połączenia przychodzącego na porcie 5555. Przychodzące dane są przesyłane do komendy tar, która wypakuje archiwum:

nc -l 5555 | tar xzvf -

Na hoście wysyłającym spakuj katalog i wyślij dane, łącząc się z procesem nasłuchującym nc na hoście odbierającym:

tar czvf - /path/to/dir | nc receiving.host.com 5555

Możesz obserwować postęp transferu na obu końcach. Po zakończeniu wpisz CTRL+C aby zamknąć połączenie.

Tworzenie prostego serwera czatu

Procedura tworzenia czatu online między dwoma lub więcej hostami jest taka sama jak w przypadku przesyłania plików.

Na pierwszym hoście uruchom proces Netcat, aby nasłuchiwał na porcie 5555:

nc -l 5555

Z drugiego hosta uruchom następującą komendę, aby połączyć się z portem nasłuchującym:

nc first.host.com 5555

Teraz, jeśli wpiszesz wiadomość i naciśniesz ENTER , zostanie ona wyświetlona na obu hostach.

Aby zamknąć połączenie, wpisz CTRL+C

Wykonanie żądania HTTP

Chociaż istnieją znacznie lepsze narzędzia do żądań HTTP, takie jak curl, możesz również używać Netcat do wysyłania różnych żądań do zdalnych serwerów.

Na przykład, aby pobrać stronę podręcznika Netcat ze strony internetowej OpenBSD, wpisz:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

Pełna odpowiedź, w tym nagłówki HTTP i kod HTML, zostaną wydrukowane w terminalu.

Wniosek

W tym samouczku nauczyłeś się korzystać z narzędzia Netcat do nawiązywania i testowania połączeń TCP i UDP.

Aby uzyskać więcej informacji, odwiedź stronę podręcznika Netcat i przeczytaj o wszystkich innych potężnych opcjach polecenia Netcat.

terminal Netcat