Excel Macro Notificaties: Signed Only

πŸ’Ό Management Samenvatting

Excel Macro Notification 'Schakel uit alle except digitally signed macros' voorkomt uitvoering van unsigned macros, waardoor 80%+ van Office-based malware (ransomware, banking trojans) geblokkeerd wordt terwijl vertrouwde signed macros toegestaan blijven voor bedrijfskritische werkboeken.

Aanbeveling
Implementeer
Risico zonder
Critical
Risk Score
9/10
Implementatie
3u (tech: 1u)
Van toepassing op:
βœ“ Microsoft Excel
βœ“ Office

Office macros zijn #1 initial access vector voor ransomware (Emotet, TrickBot, Dridex): gebruiker opent Excel-bestand uit email, klikt 'Schakel in Macros', malicious VBA code downloadt ransomware. Unsigned macros zijn ALTIJD verdacht. Alleen digitally signed macros door vertrouwde publisher zijn veilig (code signing certificaat verifieert uitgever en integrity). Deze setting blokkeert: Email attachments met macro's, Downloaded Excel files met macro's, USB stick spreadsheets met macros. Uitzonderingen: Alleen intern-ontwikkelde macros die code-signed zijn door corporate certificaat.

Implementatie

Registry: HKCU/HKLM\Software\beleidsregels\Microsoft\Office\16.0\Excel\Security β†’ VBAWarnings is 3 (Schakel uit alle except digitally signed). Effect: Unsigned macros Schakelt uit de automatische (no 'Schakel in Macros' button), Signed macros prompt user alleen FIRST time (trust publisher), vertrouwde publishers persisted (no repeated prompts). Implementeerment: Intune Configuration Profile (Settings Catalog) of GPO ADMX.

Vereisten

  1. Office 365 of Office 2016+
  2. Intune configuration profile of GPO
  3. Code signing certificaatn (if internal macros gebruikt)
  4. User communication (macro beleid changes)

Implementeeratie

Intune: Settings Catalog β†’ Office\Excel\Security β†’ Macro Notification Settings: 'Schakel uit alle except digitally signed macros'. GPO: Computer/User Config β†’ Administrative Templates β†’ Microsoft Excel β†’ Security β†’ Vertrouwenscentrum β†’ Macro Settings: 'Schakel uit alle except digitally signed macros'.

monitoring

Gebruik PowerShell-script macro-notification-signed-only.ps1 (functie Invoke-Monitoring) – Controleren.

Verifieer registry key: VBAWarnings is 3. monitoren blocked macro attempts (Office telemetry).

Remediatie

Gebruik PowerShell-script macro-notification-signed-only.ps1 (functie Invoke-Remediation) – Herstellen.

Als business-critical macro workbooks: sign macros met corporate code signing certificaat, add publisher to vertrouwde Publishers.

Compliance en Auditing

Macro restrictions voldoen aan: CIS Office Benchmark (Macro settings), BIO 12.06 (Software installation restrictions), ISO 27001 A.14.2.9 (System acceptance - block ungeautoriseerde code), NIST SP 800-53 SI-3 (Malicious code bescherming).

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# .SYNOPSIS Dwingt alleen digitaal ondertekende macros in Excel .DESCRIPTION Dit script implementeert CIS control O365-EX-000013 voor het instellen van macro meldingen zodat alleen digitaal ondertekende macros zijn toegestaan in Microsoft Excel. Dit voorkomt uitvoering van potentieel schadelijke niet-ondertekende macros. .REQUIREMENTS - PowerShell 5.1 of hoger - Lokale administrator rechten voor registry wijzigingen - Microsoft Excel geΓ―nstalleerd .PARAMETER Monitoring Controleert de huidige compliance status .PARAMETER Remediation Past de aanbevolen configuratie toe .PARAMETER Revert Herstelt de originele configuratie .PARAMETER WhatIf Toont wat er zou gebeuren zonder wijzigingen door te voeren .EXAMPLE .\macro-notification-signed-only.ps1 -Monitoring Controleert of alleen ondertekende macros zijn toegestaan .EXAMPLE .\macro-notification-signed-only.ps1 -Remediation Dwingt alleen digitaal ondertekende macros .NOTES Registry pad: HKCU:\Software\Policies\Microsoft\Office\16.0\Excel\Security Waarde: VBAWarnings = 2 CIS Control: O365-EX-000013 DISA STIG: Microsoft Office 365 ProPlus v3r3 #> #Requires -Version 5.1 param( [switch]$Monitoring, [switch]$Remediation, [switch]$Revert, [switch]$WhatIf ) # Globale variabelen $RegistryPath = "HKCU:\Software\Policies\Microsoft\Office\16.0\Excel\Security" $ValueName = "VBAWarnings" $ExpectedValue = 2 $ControlID = "O365-EX-000013" function Test-Compliance { try { if (-not (Test-Path $RegistryPath)) { return $false } $currentValue = Get-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue return ($currentValue -and $currentValue.$ValueName -eq $ExpectedValue) } catch { return $false } } function Invoke-Monitoring { Write-Host "Monitoring ${ControlID}: Alleen digitaal ondertekende macros toestaan" -ForegroundColor Green try { if (-not (Test-Path $RegistryPath)) { Write-Host "βœ— Registry pad bestaat niet: $RegistryPath" -ForegroundColor Red return $false } $currentValue = Get-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue if ($currentValue -and $currentValue.$ValueName -eq $ExpectedValue) { Write-Host "βœ“ Control compliant: ${ValueName} = $ExpectedValue (Alleen digitaal ondertekende macros toegestaan)" -ForegroundColor Green return $true } else { $actualValue = if ($currentValue) { $currentValue.$ValueName } else { "Not Set" } Write-Host "βœ— Control non-compliant: ${ValueName} = $actualValue (Expected: $ExpectedValue)" -ForegroundColor Red return $false } } catch { Write-Host "βœ— Fout bij controleren registry instelling: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Remediation { Write-Host "Remediating ${ControlID}: Alleen digitaal ondertekende macros toestaan" -ForegroundColor Yellow try { if ($WhatIf) { Write-Host "WhatIf: Zou registry waarde instellen: ${ValueName} = $ExpectedValue" -ForegroundColor Cyan return $true } if (-not (Test-Path $RegistryPath)) { Write-Host "Registry pad aanmaken: $RegistryPath" -ForegroundColor Yellow New-Item -Path $RegistryPath -Force | Out-Null } Set-ItemProperty -Path $RegistryPath -Name $ValueName -Value $ExpectedValue -Type DWord -Force Write-Host "βœ“ Registry waarde succesvol ingesteld: ${ValueName} = $ExpectedValue" -ForegroundColor Green Start-Sleep -Seconds 1 return Invoke-Monitoring } catch { Write-Host "βœ— Fout bij configureren registry instelling: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Invoke-Revert { Write-Host "Reverting ${ControlID}: Macro instellingen herstellen" -ForegroundColor Yellow try { if ($WhatIf) { Write-Host "WhatIf: Zou registry waarde verwijderen: ${ValueName}" -ForegroundColor Cyan return $true } if (Test-Path $RegistryPath) { Remove-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue Write-Host "βœ“ Registry waarde verwijderd: ${ValueName}" -ForegroundColor Green } return $true } catch { Write-Host "βœ— Fout bij herstellen registry instelling: $($_.Exception.Message)" -ForegroundColor Red return $false } } # Hoofd uitvoering try { if ($Monitoring) { $result = Invoke-Monitoring exit $(if ($result) { 0 } else { 1 }) } elseif ($Remediation) { $result = Invoke-Remediation exit $(if ($result) { 0 } else { 1 }) } elseif ($Revert) { $result = Invoke-Revert exit $(if ($result) { 0 } else { 1 }) } else { Write-Host "Gebruik: .\macro-notification-signed-only.ps1 [-Monitoring] [-Remediation] [-Revert] [-WhatIf]" -ForegroundColor Yellow Write-Host " -Monitoring: Controleer huidige compliance status" -ForegroundColor White Write-Host " -Remediation: Pas aanbevolen configuratie toe" -ForegroundColor White Write-Host " -Revert: Herstel originele configuratie" -ForegroundColor White Write-Host " -WhatIf: Toon wat er zou gebeuren" -ForegroundColor White Write-Host "" Write-Host "Handmatige configuratie:" -ForegroundColor Cyan Write-Host "Group Policy: User Configuration > Administrative Templates > Microsoft Excel 2016" -ForegroundColor White Write-Host "> Excel Options > Security > Trust Center > Macro Settings" -ForegroundColor White Write-Host "> Macro Notification Settings: Enabled: Disable VBA macros except digitally signed macros" -ForegroundColor White } } catch { Write-Host "βœ— Onverwachte fout: $($_.Exception.Message)" -ForegroundColor Red exit 1 }

Risico zonder implementatie

Risico zonder implementatie
Critical: KRITIEK: Unsigned macros is primary ransomware delivery method (80%+ Office-based attacks). Single malicious email can compromise entire network.

Management Samenvatting

Excel macro setting: Schakel uit alle except digitally signed. Blokkeert 80%+ Office malware. Sign internal macros met corporate certificaat. Implementeeratie: 1-3 uur. CRITICAL ransomware defense.