id: hard-disk-default-share info: name: Hard Disk Default Share Removal Check author: nukunga[SungHyunJeon] severity: medium description: | Ensure default administrative shares (e.g., C$, D$, Admin$) are disabled by verifying that the AutoShareServer registry value is set to 0. Leaving these shares enabled can expose system resources to unauthorized access. impact: | If the AutoShareServer registry value is set to 1 or default administrative shares (excluding IPC$) are present, attackers may exploit them to gain unauthorized access to system resources. remediation: | Permanently disable default administrative shares by setting the AutoShareServer registry value to 0 at: - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters - Additionally, remove any non-essential default shares using the appropriate system management tools. reference: - https://isms.kisa.or.kr/main/csap/notice/?boardId=bbs_0000000000000004&mode=view&cntId=85 tags: ftp,iis,code,windows-audit,kisa,share-permissions self-contained: true code: - pre-condition: | IsWindows(); engine: - powershell - powershell.exe args: - -ExecutionPolicy - Bypass pattern: "*.ps1" source: | $vulnerable = $false # Check the AutoShareServer registry value $regPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters' $autoShare = (Get-ItemProperty -Path $regPath -Name AutoShareServer -ErrorAction SilentlyContinue).AutoShareServer if ($autoShare -eq 1) { $vulnerable = $true } # Retrieve list of shared folders using 'net share' $netShares = net share | Out-String $lines = $netShares -split "`n" $shareNames = @() $startParsing = $false foreach ($line in $lines) { if ($line -match "^-+") { $startParsing = $true continue } if ($startParsing -and $line.Trim() -ne "" -and $line -notmatch "The command completed successfully") { $tokens = $line.Trim() -split "\s+" if ($tokens.Count -gt 0) { $shareNames += $tokens[0] } } } # Define default shares to check (excluding IPC$) $defaultShares = @("C$", "D$", "Admin$") foreach ($share in $shareNames) { if ($defaultShares -contains $share) { $vulnerable = $true break } } if ($vulnerable) { "DEFAULT_SHARE_VULNERABLE" } else { "DEFAULT_SHARE_COMPLIANT" } matchers: - type: word words: - "DEFAULT_SHARE_VULNERABLE" # digest: 4a0a004730450221009ebdc7c1aef05392bad7dfec19455d19a49841b9c5450289066663f12f7cf7b702205fc2205ef3699f0479d05c18f6ba580269db8bfb3265cd700a7084fbe01794e2:922c64590222798bb761d5b6d8e72950