8 Netcat (nc) Kommando med eksempler


Netcat (eller kort sagt nc) er et simpelt, men alligevel kraftfuldt netværkskommandolinjeværktøj, der bruges til at udføre enhver operation i Linux relateret til TCP-, UDP- eller UNIX-domænesockets.

Netcat kan bruges til portscanning, omdirigering af port, som en portlytter (til indgående forbindelser); det kan også bruges til at åbne fjernforbindelser og så mange andre ting. Desuden kan du bruge den som en bagdør til at få adgang til en målserver.

I denne artikel forklarer vi Netcat-kommandoer med eksempler.

Sådan installeres og bruges Netcat i Linux

For at installere netcat-pakken på dit system skal du bruge standardpakkehåndteringen til din Linux-distribution.

$ yum install nc                  [On CentOS/RHEL]
$ dnf install nc                  [On Fedora 22+ and RHEL 8]
$ sudo apt-get install Netcat     [On Debian/Ubuntu]

Når netcat-pakken er installeret, kan du gå videre for at lære brugen af netcat-kommandoen i de følgende eksempler.

Netcat kan bruges til havnescanning: at vide, hvilke porte der er åbne og kører tjenester på en målmaskine. Det kan scanne en enkelt eller flere eller en række åbne porte.

Her er et eksempel, indstillingen -z indstiller nc til simpelthen at scanne efter lytte dæmoner uden faktisk at sende nogen data til dem. Indstillingen -v aktiverer den detaljerede tilstand, og -w angiver en timeout for forbindelse, der ikke kan oprettes.

$ nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
$ nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
$ nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Netcat giver dig mulighed for at overføre filer mellem to Linux-computere eller servere, og begge disse systemer skal have nc installeret.

Hvis du f.eks. Vil kopiere en ISO-billedfil fra en computer til en anden og overvåge overførselsforløbet (ved hjælp af pv-hjælpeprogrammet), skal du køre følgende kommando på afsender-/servercomputeren (hvor ISO-filen findes).

Dette kører nc i lyttetilstand (-l flag) på port 3000.

$ tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

Og kør følgende kommando på modtageren/klientcomputeren for at hente filen.

$ nc 192.168.1.4 3000 | pv | tar -zxf -

Du kan også bruge Netcat til at oprette en simpel kommandolinjemeddelelsesserver med det samme. Som i det foregående brugseksempel skal nc installeres på begge systemer, der bruges til chatrummet.

På et system skal du køre følgende kommando for at oprette chatserveren, der lytter til port 5000.

$ nc -l -vv -p 5000

På det andet system skal du køre følgende kommando for at starte en chatsession til en maskine, hvor meddelelsesserveren kører.

$ nc 192.168.56.1 5000

Se med -l-indstillingen for nc-kommando, der bruges til at oprette en grundlæggende, usikker webserver, der serverer statiske webfiler til læringsformål. For at demonstrere dette skal du oprette en .html-fil som vist.

$ vim index.html

Tilføj følgende HTML-linjer i filen.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

Gem ændringer i filen og afslut.

Server derefter ovennævnte fil over HTTP ved at køre følgende kommando, som gør det muligt for HTTP-serveren at køre kontinuerligt.

$ while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

Åbn derefter en webbrowser og få adgang til indholdet ved hjælp af følgende adresse.

http://localhost:8080
OR
http://SERVER_IP:8080

Bemærk, at du kan stoppe Netcat HTTP-serveren ved at trykke på [Ctrl + C].

En anden nyttig brug af Netcat er at foretage fejlfinding af serverforbindelsesproblemer. Her kan du bruge Netcat til at kontrollere, hvilke data en server sender som svar på kommandoer udstedt af klienten.

Den følgende kommando henter hjemmesiden til example.com.

$ printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

Outputtet fra ovenstående kommando inkluderer overskrifter sendt af webserveren, som kan bruges til fejlfindingsformål.

Du kan også bruge Netcat til at få portbannere. I dette tilfælde fortæller den dig, hvilken tjeneste der kører bag en bestemt port. For eksempel for at vide, hvilken type tjeneste der kører bag port 22 på en bestemt server, skal du køre følgende kommando (udskift 192.168.56.110 med målserverens IP-adresse). Flagget -n betyder at deaktivere DNS- eller tjenesteopslag.

$ nc -v -n 192.168.56.110 80

Netcat understøtter også oprettelse af UNIX-domæne streamsockets. Den følgende kommando opretter og lytter til et UNIX-domæne stream-stik.

$ nc -lU /var/tmp/mysocket &
$ ss -lpn | grep "/var/tmp/"

Du kan lige så godt køre Netcat som en bagdør. Dette kræver imidlertid mere arbejde. Hvis Netcat er installeret på en målserver, kan du bruge den til at oprette en bagdør for at få en fjernkommandoprompt.

For at fungere som bagdør skal Netcat lytte til en valgt port (fx port 3001) på målserveren, og derefter kan du oprette forbindelse til denne port fra din maskine som følger.

Dette er kommandoen beregnet til at køre på fjernserveren, hvor indstillingen -d deaktiverer læsning fra stdin, og -e angiver kommandoen, der skal køres på målsystemet.

$ nc -L -p 3001 -d -e cmd.exe 

Sidst men ikke mindst kan Netcat bruges som en proxy til forskellige tjenester/protokoller inklusive HTTP, SSH og mange flere. For mere information, se dens mandside.

$ man nc

I denne artikel har vi forklaret 8 praktiske eksempler på brug af Netcat-kommandoer. Hvis du kender andre praktiske anvendelsestilfælde, så del med os via feedbackformularen nedenfor. Du kan også stille et spørgsmål.