Kurs: IT-Security
2.x Zugangsschutz (Authentikation und Authentifizierung)

Authentisierung über Name und Passwort (Sequenzdoku 4.x)
2.1
  • Der Kunde wünscht nun einen "möglichst" sicheren Zugangs-Schutz seiner sub-Verzeichnisse (durch eine Kombination sinnvoller Mechanismen)
    Die Benutzername/Passwort-Abfragen nach RFC 2617 sind per "Basic Authentification" oder Digest-Authentifikation möglich.

    Schütze zunächst das Unterverzeichnis:
    - http://localhost/~skurs/sub1/ mit einer Basic-Authentifikation über Direktiven in einem <Location...> oder <Directory ...> Bereich ...
    AuthType Basic
    AuthName "Restricted Files"
    AuthUserFile /usr/local/apache/passwd/passwords
    Require user rbowen
    
    - und dann das Verzeichnis http://localhost/~skurs/sub2/ mit einer Digest-Authentifikation in einer .htaccess-Datei ...
    AuthType Digest
    AuthName "private area"
    AuthUserFile /web/auth/.digest_pw
    Require valid-user
    
      gegen unerlaubte Zugriffe. Schütze die Unterverzeichnisse ./sub1 und ./sub2 durch unterschiedliche Kennungen

  • Zeichne die Login-Vorgänge mit wireshark auf und analysiere die Sicherheit der Kommunikation.
    Bewerte zuvor ob ein Einsatz von Dual-Use-Software nach §202c StGB (Hackerparagraf) erlaubt ist.
    • Wie sicher werden die Login-Kennungen übertragen?
    - Siehe auch https://www.code-maze.com/http-series-part-4/ (Vergleich Basic/Digest-Auth.)

lokale Passwortsicherheit (Sequenzdoku 4.2.2)
2.2
  • Überprüfe nun die Sicherheit der .htpasswd Dateien (und deren Hash Werte) mit John the Ripper (http://openwall.info/wiki/john). John The Ripper ist in der Lage DES, Traditional, BSDI, Kerberos, Microsoft LM, MD5 und Blowfish Hashwerte durch Wörterbuch/Brute-Force-Angriffe zu überprüfen bzw. zu knacken.
    Hinweis: Der Apache kann Passwortdateien in folgenden Formaten lesen: https://httpd.apache.org/docs/2.4/misc/password_encryptions.html
    Passwort lesbar?
    geheim
    secret
    username
    username123
    dt. Tastaturkürzel
    eng. Tastaturkürzel  

    • Wo sucht der Apache nach Usernamen und Passwörtern?
    • In welcher Datei können extern (ausserhalb der httpd.conf) Direktiven abgelegt werden?
      Welche Direktive aktiviert/deaktiviert diese externe Datei?
    • Unter welchen Bedingungen sind Kennungen (user:passwort) ermittelbar?
    • Welche Alternativen zur Passwortablage werden in der Praxis verwendet
      und welche Folgen hat das für den Client, PW-Transport, Server und Angreifer?

  • Ein kleines Rechenbeispiel zur Passwortsicherheit (wenn die Passwörter als MD5-Hash vorliegen).
    Anzahl_nutzbarer_ZeichenPW-Länge = Kombinationsmöglichkeiten

    z.B. Anzahl_nutzbarer_Zeichen
      a-z=26 (Alphabet nur mit Kleinbuchstaben)
      a-z A-Z=52 (Alphabet mit Klein/Gross-Buchstaben)
      a-z A-Z 0-9=62 (Klein/Gross-Buchstaben mit Zahlen)

    Bei einem Brute-Force-Angriff nach folgender Tabelle:
    Maximale Rechenzeit eines Brute-Force-Angriffs bei 1 Milliarde Schlüsseln pro Sekunde

    266 = 308 Mio (6-Zeichen Kleinbuchstaben in 1/3 Sekunde knackbar)
    268 = 208.827 Mio (8-Zeichen Kleinbuchstaben in 4 Min. knackbar)
    628 = 218.340.105 Mio (8-Zeichen klein+gross+Zahlen in 3 Tagen knackbar)
    john --test (Benchmarking) zeigt wie schnell das akt. System Passwörter prüfen kann

  • Vergleiche die Sicherheit der AuthBasic-Passwortdatei mit dem unter Windows genutzten SAM-Verfahren (Security Accounts Manager).
    Führe dazu eine Windows-Sam-Passwortüberprüfung durch.
    - mit Wörterbüchern/Dictionarys (1. Dump-Tools: samdump2, pwdump 2. PW-Prüfung: hashcat und john)
      z.B. john --format=nt --wordlist=/var/lib/john/wordlists/all SAM-Hashdump.txt
      z.B. hashcat --force -m 0 -a 0 -o cracked.txt hashes.txt /var/lib/john/wordlists/all
    - mit Hash-Tabellen/Rainbow-Tables (mit Tools wie ophcrack)

    Die Windows-Passwortüberprüfung kann
    - direkt an installierten Systemen ...
    - in einer virtuellen gebooteten Umgebung (Virtualbox/VM-Ware) ...
    - an einer gemounteten (mit qemu) virtuellen .vmdk oder .vdi BS-Festplatte ...
    - mit Hilfe der SAM-Datei (+system) aus %systemroot%\System32\config\ ...
    - oder durch bereits zur Verfügung stehende Hashdump’s der SAM (im sub3-Ordner) durchgeführt werden

    - Welche Unterschiede (zur Basic-Authentification) existieren und welche Auswirkungen hat das?
  • Überprüfe auch die Modifikations-Sicherheit der Passwortdateien
    Ein schreibender Zugriff auf die SAM nicht gebooteter Systeme ist über ein
    - PXE-Netzwerkboot
    - DVD-Boot (WinPE/Linux-Livesystem)
    - USB-Boot
    - Bei virt. Systemen über ein mounten der LW-Datei
      modprobe nbd max-part=4
      qemu-nbd -c /dev/nbd0 Meine.vmdk (o. Meine.vdi)
      mount /dev/nbd0p2 /mnt/ (für 2. Partition)
    möglich
    z.B. ermöglichen die Programme chntpw und sampasswd einen direkten Zugriff auf die SAM
    Ein schreibender Zugriff auf gebootete Systeme ist über ein Ersetzen der Utilman.exe durch cmd.exe möglich - Nach abgesichertem Neustart ohne Schutzfunktion startet "Ease of access" cmd.exe - Ein net user ... kann Userkonten bearbeiten - Ein PwDump7.exe kann die PW-Hashwerte extrahieren - Ein mimiKatz.exe ermöglicht den Zugriff auf Tickets und PW-Hashwerte ebenso wie ein Meterpreter-Payload (mit Kiwi's mimiKatz) ein lsa_dump_sam
    - Unter welchen Bedingungen war es möglich Passwörter zu modifizieren?
    - War es möglich neue Kennungen anzulegen?
    - Wie ist es möglich dieses in der Praxis zu verhindern?

Zugriff nur für festgelegte Absenderadressen (Sequenzdoku 4.x)
2.3
  • Schütze den Ordner ./sub3/ (mit einer Client IP-Adressauswertung) gegen unerlaubte Zugriffe.
    Schränke den Zugriffa auf [d]einen Arbeitsplatz ein.

    Info: Bisher wurde der Client-Zugriff ausschließlich mit Allow und Deny reglementiert.
    Ab dem Apache 2.4 steht aber die Require Direktive nicht nur für user's und group's, sondern auch für ip's zur Verfügung.
    - Was konnte/kann Require (Beispiele)?
    Require valid-user
    Require user userid [userid] ...
    Require group group-name [group-name] ...
    Require env env-var [env-var] ...
    Require method http-method [http-method] ...
    Require expr expression
    
    Require ip 10.1.2.3 Require ip 10 172.20 192.168.2 Require ip 10.1.0.0/255.255.0.0 10.2.0.0/16 Require ip 2001:db8::a00:20ff:fea7:ccea Require ip 2001:db8:1:1::a Require ip 2001:db8:2:1::/64 Require ip 2001:db8:3::/48
    Require host example.org Require host .net example.edu Require all granted Require all denied Require local
     Siehe dazu auch: Konfigurationsänderungen vom Apache-2.2 -> 2.4 https://httpd.apache.org/docs/2.4/upgrading.html#run-time
    Apache mit mod_access_compat-Modulalternativ ab Apache 2.4
    Deny from all
    Allow from all
    Allow from 10 192.168 172.16.0.0/12 
    Allow from 127.0.0.1 ::1 172.20.x.y fc00:x::y 
    Require all denied
    Require all granted
    Require ip 10 192.168 172.16.0.0/12 
    Require local

Meinolf Mühlenjost 2022