PS-Hacking – WLAN Passworte auslesen

Ein drahtloser Zugang zu einem Netzwerk ist bequem – auch für potentielle Angreifer. Nur sind die meisten Zugriffspunkte heute mit einem Kennwort geschützt. Nur wie kommt man da heran? Es ist recht einfach: wenn man einen Windows Rechner mit einem WLAN-Netzwerk verbindet, dann speichert das Betriebssystem den Namen und das Kennwort für den nächsten Besuch ab. Das sind dann die bekannten Netzwerke:

PS-Hacking – WLAN Passworte auslesen

Und es ist nun recht einfach, die zugehörigen Kennworte auszulesen. Das hat Microsoft selber so vorgesehen :-). Man benötigt nur eine cmd und den alten Befehl netsh. Mit diesem kann man sich alle gespeicherten Netzwerke anzeigen lassen:

PS-Hacking – WLAN Passworte auslesen

und dann nach dem Kennwort eines Netzes fragen:

PS-Hacking – WLAN Passworte auslesen
In der Zeile „Schlüsselinhalt“ kann man nun einfach das Kennwort auslesen. 🙂

mein Powershell-Script

Mit einer PowerShell kann man nun das Ganze etwas automatisieren und aufhübschen:

$error.Clear()
        
$Output = netsh wlan show profiles

$WLANCreds = $Output | 
    Select-String -Pattern "Profil f.r alle Benutzer :", "All User Profile" |
        ForEach-Object {
                    
            $out = ($_ -split ":")[-1].Trim() -replace '"'
            $profile = netsh wlan show profiles name=$out key=clear
            $pw = $profile | select-string -Pattern "Authentifizierung","Authentication"

            if ($pw) {
                $pw2 = ($pw -split ":")[-1].Trim() -replace '"'
                if ($pw2 -eq "Open") {
                    Write-Output "$out, <open>"
                } else {
                    $key = $profile | select-string -Pattern "Schl.sselinhalt" ,"Key Content"
                    if ($key) {
                        $key = ($key -split ":")[-1].Trim() -replace '"'
                    }

                    $row = New-Object -TypeName psobject
                    $row | Add-Member -MemberType NoteProperty -Name SSID -Value $out
                    $row | Add-Member -MemberType NoteProperty -Name Auth -Value $pw2
                    $row | Add-Member -MemberType NoteProperty -Name Pass -Value $key
                    $row
                }
            }
        } | Sort-Object -Property SSID
            
if ($error) { foreach ($err in $error) {Write-host "   ERROR: $($err.Exception.Message)"} }
$WLANCreds | Format-Table -AutoSize | Out-String

Dann ist auch der Output angenehm übersichtlich:

PS-Hacking &#8211; WLAN Passworte auslesen

Ach ja, das sind natürlich nicht meine aktuellen WLAN-Kennworte, sondern meine PhotoShop-Künste 🙂

Schutzmöglichkeiten

Der Schaden gerade bei größeren Netzwerken ist denkbar groß, da nach dem Auslesen der Kennworte kein „Hausbesuch“ mehr erforderlich ist, um in das Netzwerk zu gelangen! Nur wie schützt man sich davor?

Keine administrativen Kennungen zur Anmeldung verwenden hilft in diesem Fall leider nicht viel, denn auch Standardbenutzer können netsh aufrufen – wie man am Bild oben leicht erkennen kann (was soll denn das @Microsoft??)

OK, was hilft denn nun? Generell sollte man sich überlegen, ob man über Funk überhaupt einen Zugang zum firmeninternen Netzwerk anbieten möchte. Für die vielen tragbaren Geräte wie Smartphones und Tablets genügt ja in der Regel ein WLAN-Segment, dass nur den Zugang zum Internet herstellt. Darüber lassen sich leicht Mails und andere Dinge synchronisieren. 🙂

Sollte eine Anbindung ins Firmennetzwerk wirklich erforderlich sein, dann könnt ihr die (hoffentlich verwalteten)Geräte mit Zertifikaten ausstatten und das WLAN mit WPA-Enterprise über einen Radius-Server absichern. Für AD-integrierte Geräte lässt sich leicht die Konfiguration dafür via GPO verteilen. Meinen Umbau stelle ich demnächst hier vor. 🙂

Mit WPA-Enterprise wird mein Script nur noch das hier auslesen:

PS-Hacking &#8211; WLAN Passworte auslesen

Hier habe ich mein Netzwerk ws-its5 auf zertifikatbasierte Radius-Authentifizierung umgestellt. Daher ist nun das Kennwortfeld leer! 🙂 Natürlich muss nun das Zertifikat geschützt werden – aber das zeige ich euch ein anderes Mal.

Stay tuned!