Webseidon archiv blog Lukáš Adámek Webseidonův archív článek proč mít web

Instant Wi‑Fi Audit: Export všech SSID i hesel z Group Policy do 30 sekund<

Instant Wi‑Fi Audit: Export všech SSID i hesel z Group Policy do 30 sekund

Instant Wi‑Fi Audit: Export všech SSID i hesel z Group Policy do 30 sekund

„Kdo sakra zná heslo k Warehouse‑2G a proč to pořád visí v Group Policy?“ Když potřebuješ vyčistit Wi‑Fi nastavení nebo ověřit, že všichni používají WPA2‑Enterprise, sáhni po tomto PowerShell skriptu. Za půl minuty zjistíš, jaké SSID distribuují GPO, jaké PSK mají uživatelé v profilech, kde leží slabá šifra a kolik duplikátů klíčů koluje po firmních laptopech.



1 · Proč Wi‑Fi audit

  • Bezpečnost. Staré PSK = bývalý zaměstnanec = otevřené dveře.
  • Správa. Zjistíš, kolik SSID vlastně žije a kým jsou distribuovány.
  • Compliance. PCI‑DSS, ISO 27001 vyžadují řízené klíče a evidence.
  • UX. Méně SSID = rychlejší roaming, méně rušení.

2 · Odkud čteme data

  • GPO Wireless Policies – \\SYSVOL\...\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf
  • WLAN profiles v systému – netsh wlan show profile
  • RegistryHKLM\SOFTWARE\Microsoft\Wlansvc\Interfaces

3 · Skript Get‑WifiAudit.ps1

param(
  [string]$OutPath = "C:\WifiAudit",
  [switch]$DecryptPSK,
  [switch]$ReportOnly
)

function Get‑LocalProfiles {
  netsh wlan show profile | Select‑String 'All User Profile' | ForEach‑Object {
     ($_ -split ':')[1].Trim()
  } | ForEach‑Object {
     $xml = netsh wlan show profile name="$_" key=clear
     $ssid = $_
     $psk  = ($xml | Select‑String 'Key Content').Line.Split(':')[1].Trim()
     [pscustomobject]@{Source='Local';SSID=$ssid;PSK=$psk}
  }
}

function Get‑GpoProfiles {
  Get‑GPO -All | ForEach‑Object {
     $path="\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\{$($_.Id)}\MACHINE\Microsoft\Wifi\"
     if(Test‑Path $path){
        Get‑ChildItem $path -Filter *.xml | ForEach‑Object {
           [xml]$x = Get‑Content $_.FullName
           [pscustomobject]@{
             Source = "GPO-$($_.BaseName)"
             SSID   = $x.WLANProfile.SSIDConfig.SSID.name
             PSK    = if($DecryptPSK){$x.WLANProfile.MSM.Security.sharedKey.keyMaterial}else{'***'}
           }
        }
     }
  }
}

$profiles = Get‑GpoProfiles + Get‑LocalProfiles
$profiles | Export‑Csv "$OutPath\wifi_$((Get-Date).ToString('yyyyMMdd_HHmm')).csv" -NoTypeInformation

Parametr -DecryptPSK vyžaduje lokální práva a zobrazí klíč (dbejte na GDPR).


4 · HTML report + CSV pro SIEM

Import-Module PSWriteHTML
New‑HTML -FilePath "$OutPath\wifi_report.html" -Title "Wi‑Fi Audit" {
  New‑HTMLTable -DataTable $profiles
} -Show:$false

CSV putuje do ELK Splunk index=wifi_audit.


5 · Analytika

  • Duplicitní PSK: $profiles | Group PSK | Where { $_.Count -gt 1 }
  • Slabé šifry: v GPO XML hledej authenticationMode="open" nebo wep".
  • Age klíčů: z file timestampu GPO nebo netsh wlan show profile LastModified.

6 · Rychlá náprava – úprava GPO skriptem

function Update‑GpoPsk($GpoName,$Ssid,$NewPsk){
  $gpo = Get‑GPO -Name $GpoName
  $xmlPath = "\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\{$($gpo.Id)}\MACHINE\Microsoft\Wifi\profile.xml"
  [xml]$xml = Get‑Content $xmlPath
  $xml.WLANProfile.MSM.Security.sharedKey.keyMaterial = $NewPsk
  $xml.Save($xmlPath)
  Invoke‑GpUpdate -Target Computer
}

7 · Automatizuj a spouštěj měsíčně

$act = New‑ScheduledTaskAction -Execute 'pwsh' `
 -Argument '-File C:\Scripts\Get‑WifiAudit.ps1 -DecryptPSK'
$trg = New‑ScheduledTaskTrigger -Monthly -DaysOfMonth 1 -At 04:00
Register‑ScheduledTask -TaskName 'WifiAudit' -Action $act -Trigger $trg -RunLevel Highest

8 · Bezpečnost: dešifrování PSK a GDPR

  • Dešifrované PSK uchovávej max 24 h v NTFS složce s ACL Admins only.
  • HTML report bez hesel (maskuj PSK slovem ***).
  • Audit event ID 8003 (WLAN profile) forward do SIEM.

9 · Case study: 22 SSID → 6, PSK stáří –80 %

MetrikaPřed auditPo úkliduZlepšení
Počet SSID v GPO226‑73 %
Klíče starší 2 let153‑80 %
Slabá šifra (WEP)20‑100 %

10 · FAQ

Zobrazí skript Wi‑Fi profily z Intune?
Intune profily nejsou v GPO, ale Get‑IntuneWiFiConfiguration přes Graph API.
Lze klíče rovnou zašifrovat jako WPA‑Enterprise?
Pro WPA‑EAP není PSK, ale certifikáty/NPS. Audit script označí SSID bez EAP.
Funguje na Windows 11?
Ano, netsh a registry cesty zůstaly. Pro ARM/Surface stačí správný PS.

11 · Závěr

Wi‑Fi profily v doméně žijí vlastním životem. S PowerShellem je zkrotíš za 30 sekund – zjistíš, co kde visí, jaké klíče jsou staré a kde číhá WEP dinosaurus. Následný úklid GPO je pak otázkou pár řádků XML. Instantní audit = klidný spánek admina.


Klíčová slova

wifi audit, powershell wlan, group policy wireless, export ssid, pre‑shared key decrypt, wlan profile xml, security compliance, gpo wireless settings, wifi governance

↥ Zpět nahoru

Sdílejte na sítích

Webseidon
Webseidon
Articles: 32