Netcat Tutorial - The Swiss Army Knife Of Networking - Reverse Shell
Spisu treści:
- Składnia Netcat
- Skanowanie portów
- Wysyłanie plików przez Netcat
- Tworzenie prostego serwera czatu
- Wykonanie żądania HTTP
- Wniosek
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
:
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 NetcatUruchom polecenie Docker z przykładami

Polecenie Uruchom dokera tworzy kontener z danego obrazu i uruchamia kontener za pomocą danej komendy. Jest to jedno z pierwszych poleceń, które powinieneś poznać, kiedy zaczynasz pracę z Dockerem.
Polecenie echa w systemie Linux z przykładami

Polecenie echo jest jednym z najbardziej podstawowych i często używanych poleceń w systemie Linux. Argumenty przekazywane do echa są wypisywane na standardowe wyjście.
Polecenie Curl w systemie Linux z przykładami

Curl to narzędzie wiersza polecenia do przesyłania danych z lub na serwer zaprojektowane do pracy bez interakcji użytkownika. W tym samouczku pokażemy, jak korzystać z narzędzia do zwijania, poprzez praktyczne przykłady i szczegółowe objaśnienia najczęściej używanych opcji zwijania.