Indhold - [[#Introduktion til Netcat|Introduktion til Netcat]] - [[#Netcat Grundlæggende Forbindelses- og Dataoverførselsøvelse|Netcat Grundlæggende Forbindelses- og Dataoverførselsøvelse]] - [[#Netcat Grundlæggende Forbindelses- og Dataoverførselsøvelse#Formål|Formål]] - [[#Netcat Grundlæggende Forbindelses- og Dataoverførselsøvelse#Opsætning|Opsætning]] - [[#Opsætning#Topologi|Topologi]] - [[#Øvelse 1:|Øvelse 1:]] - [[#Øvelse 1:#Opsætning af lyttende server|Opsætning af lyttende server]] - [[#Øvelse 1:#Opret forbindelse og send tekst|Opret forbindelse og send tekst]] - [[#Øvelse 2:|Øvelse 2:]] - [[#Øvelse3: Overfør en tekstfil|Øvelse3: Overfør en tekstfil]] # Introduktion til Netcat **Et essentielt værktøj inden for IT-sikkerhed** Netcat, ofte kaldet "nc", er et alsidigt netværksværktøj, der ofte beskrives som "den schweiziske lommekniv" inden for netværkskommunikation. Dette kommandolinje-interface (CLI) værktøj er uundværligt for IT-sikkerhedspersonale af flere grunde: - **Netværksdebugging**: Netcat kan bruges til at oprette og lytte på TCP/UDP-forbindelser, hvilket gør det ideelt til at teste og fejlfinde netværkskonfigurationer. - **Port scanning**: Værktøjet kan udføre simple port scans for at identificere åbne porte på et system, hvilket er afgørende for at vurdere et netværks sikkerhedsstatus. - **Data overførsel**: Netcat kan sende og modtage data over netværk, hvilket gør det nyttigt til at teste dataoverførsel og identificere potentielle sårbarheder. - **Reverse shells**: I penetrationstestscenarier kan Netcat bruges til at oprette reverse shells, hvilket giver indsigt i, hvordan angribere potentielt kan udnytte et system. - **Banner grabbing**: Netcat kan indsamle information om tjenester, der kører på specifikke porte, hvilket hjælper med at identificere potentielle mål for angreb. Når man arbejder med IT-sikkerhed er forståelsen og beherskelsen af Netcat essentiel, da det ikke kun hjælper med at identificere sårbarheder, men også giver indsigt i, hvordan potentielle angribere kan udnytte netværkskommunikation. At have kendskab til og mestre dette værktøj er en styrke og kan højne cybersikkerhed i en virksomhed/institution/organisation og kan forberede en på potentielle trusler. På [[Ubuntu - LAB settings in VM]] er netcat installeret default og kan ses ved at skrive `nc -h` ```shell hans@ubuntu2404-2:~$ nc -h OpenBSD netcat (Debian patchlevel 1.226-1ubuntu2) usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl] [-m minttl] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [destination] [port] Command Summary: -4 Use IPv4 -6 Use IPv6 -b Allow broadcast -C Send CRLF as line-ending -D Enable the debug socket option -d Detach from stdin -F Pass socket fd -h This help text -I length TCP receive buffer length -i interval Delay interval for lines sent, ports scanned -k Keep inbound sockets open for multiple connects -l Listen mode, for inbound connects -M ttl Outgoing TTL / Hop Limit -m minttl Minimum incoming TTL / Hop Limit -N Shutdown the network socket after EOF on stdin -n Suppress name/port resolutions -O length TCP send buffer length -P proxyuser Username for proxy authentication -p port Specify local port for remote connects -q secs quit after EOF on stdin and delay of secs -r Randomize remote ports -S Enable the TCP MD5 signature option -s sourceaddr Local source address -T keyword TOS value -t Answer TELNET negotiation -U Use UNIX domain socket -u UDP mode -V rtable Specify alternate routing table -v Verbose -W recvlimit Terminate after receiving a number of packets -w timeout Timeout for connects and final net reads -X proto Proxy protocol: "4", "5" (SOCKS) or "connect" -x addr[:port] Specify proxy address and port -Z DCCP mode -z Zero-I/O mode [used for scanning] Port numbers can be individual or ranges: lo-hi [inclusive] hans@ubuntu2404-2:~$ ``` Lad os starte med en lille øvelse for at teste forbindelse og se netcat i aktion. # Netcat Grundlæggende Forbindelses- og Dataoverførselsøvelse ## Formål At lære hvordan man bruger Netcat til at etablere forbindelser mellem to maskiner og overføre forskellige typer data. Denne øvelse vil give en grundlæggende forståelse for netværkskommunikation og Netcats funktionalitet. ## Opsætning - To virtualiserede Ubuntu-servere (Server A og Server B) - I dette tilfælde ubuntu2404-1 og ubuntu2404-2 - Netcat installeret på begge servere - Kendskab til IP-adresserne på begge servere - Udform en simpel topologi over din opsætning som indeholder alle relevante oplysninger. Se eksempel herunder: ### Topologi ![[netcat_exercise_1.png]] # Øvelse 1: ## Opsætning af lyttende server På Server B, åbn en terminal og start Netcat i lyttetilstand på port 12345: `nc -l -p 12345` ## Opret forbindelse og send tekst På Server A, brug Netcat til at oprette forbindelse til Server B: `nc <Server B IP> 12345` - Skriv en besked og tryk Enter. Observer, at beskeden vises på Server B. - Prøv at sende flere linjer tekst. - Skriv beskeder skiftevis på begge servere og observer tovejskommunikationen. - Afslut forbindelsen ved at trykke `Ctrl+C` på begge servere. Det kunne se sådan her ud: ![[netcat_exer_1_WindowsTerminal.gif]] Åbner vi endnu en terminal til Server A (ubuntu2404-1) kan vi optage net trafikken med tcpdump, i dette her tilfælde på NIC ens37. `sudo tcpdump -i ens37 -w netcat_capt-pcap` Efterfølgende kan vi foretage analyse i [[Wireshark]] # Øvelse 2: - Start en optagelse af net trafik via tcpdump på enten Server A eller B. - Gennemgå [[#Øvelse 1]] igen. - Afslut tcpdump optagelsen med `Ctrl-C` - Overfør tcpdump optagelsen til din host maskine til analyse i [[Wireshark]] - Kan foreksempel gøres via [[sftp]] - Foretag analyse af data prøv blandt andet: - [Follow TCP stream](https://www.wireshark.org/docs/wsug_html_chunked/ChAdvFollowStreamSection.html) - [Show Packet Bytes](https://www.wireshark.org/docs/wsug_html_chunked/ChAdvShowPacketBytes.html) >[!todo] Opgave >Din opgave er at lave en analyse på en pcap fil. >- Download denne [pcap fil](https://its-eaaa.eu-central-1.linodeobjects.com/iits/netcat_capt_opg.pcap) >- Hvor mange pakker indeholder optagelsen? >- Hvor lang tid strækker optagelsen sig over? >- Hvad er starttidspunkt for optagelsen (dato og tid)? >- Prøv med egne ord at beskrive hvad der foregår i pakke 3-5 > ![[hint_pcap_opg_netcat.png]] > >>[!tip]- Hint (for dem som ikke stoler på qr-codes) >>https://www.perplexity.ai/search/what-is-a-three-way-handshake-Vf..98tRTDaYfSRvjqebWw#0 >- Hvilken maskine (Server A el. Server B) se evt. [[#Topologi]] er henholdsvis: > - Client, starter samtalen? > - Server, leverer en service? >- Find ekstra spørgsmål i pakke nr. 18 og 20 # Øvelse3: Overfør en tekstfil På Server B, start Netcat i lyttetilstand og omdiriger output til en fil: Her bruger vi et par nyttige muligheder i Linux CLI nemlig [[Redirection og Pipe]] `nc -l -p 12345 > modtaget_fil.txt` På Server A (se [[#Topologi]]), send indholdet af en tekstfil: Hvis vi bruger kommandoen `cat` kan vi læse indholdet af en fil, prøv: ```bash cat /etc/hostname ``` Jeg får følgende output på min ubuntu2404-3 maskine: ```bash hans@ubuntu2404-3:~$ cat /etc/hostname ubuntu2404-3 ``` Nu vil jeg gerne have en hash værdi (fingerprint) af netop denne fil for at jeg senere kan kontrollere dens integritet. Læs eventuelt mere her: https://www.redhat.com/sysadmin/hashing-checksums Det gør jeg ved at bruge `sha256sum` ```bash hans@ubuntu2404-3:~$ sha256sum /etc/hostname 426f2445e707ebb91e45f14e0d341d8e4f031c53a4ba9d5c13aa052cccffdbe1 /etc/hostname ``` Altså har jeg nu en værdi som jeg kan verificere senere. Nu er jeg klar til at sende indhold af filen via [[Netcat]] til Server B `cat /etc/hostname | nc <Server B IP> 12345` Verificer på Server B, at filen er modtaget korrekt: `cat modtaget_fil.txt` og vi kan ligeledes lave en integritets test af filen: ```bash hans@ubuntu2404-2:~$ sha256sum modtaget.txt 426f2445e707ebb91e45f14e0d341d8e4f031c53a4ba9d5c13aa052cccffdbe1 modtaget.txt ``` Altså kan jeg ved sammenligning af de to hashværdier udtale mig om, at filernes indhold er identiske.