Esta configuración permite evitar advertencias de Safe Browsing en Mozilla Firefox durante campañas de phishing simulado. Utiliza Group Policy Objects en Active Directory.
A diferencia de Chrome y Edge, Firefox no aplica la preferencia urlclassifier.skipHostnames si se distribuye mediante Registry/Preferences GPO (la preferencia aparece en about:policies pero no en about:config en Firefox 140+). El único método que funciona es escribir un archivo user.js directamente en la carpeta del perfil de usuario, distribuido mediante un script PowerShell como Startup Script de la GPO.
Requisitos previos
- Active Directory Domain Services (AD DS) funcionando
- Credenciales de Domain Admin
- Mozilla Firefox instalado en los clientes (versión 102 ESR o posterior)
- Acceso a Group Policy Management Console (gpmc.msc)
- Capacidad de habilitar la ejecución de scripts PowerShell mediante GPO
ℹ️ Nota: Para esta configuración no son necesarios los templates ADMX de Firefox. La preferencia urlclassifier.skipHostnames se gestiona completamente mediante un script PowerShell que escribe el archivo user.js en los perfiles de usuario.
Paso 1: Habilitar la ejecución de scripts PowerShell mediante GPO
Por defecto, Windows bloquea la ejecución de scripts PowerShell no firmados. Sin esta configuración, el script de whitelist no se ejecutará.
- Abrir Group Policy Management Console (gpmc.msc)
- Crear o modificar la GPO de destino (ver Paso 2 para crearla)
- Navegar a:
Computer Configuration → Policies → Administrative Templates
→ Windows Components → Windows PowerShell
- Abrir Turn on Script Execution → Seleccionar Enabled → Elegir
Allow all scripts→ OK - Volver a:
Computer Configuration → Policies → Administrative Templates
→ System → Scripts
- Abrir Allow logon scripts when NetBIOS or WINS is disabled → Enabled → OK
Paso 2: Crear y vincular la GPO
- Abrir Group Policy Management Console (gpmc.msc)
- Navegar a la OU (Organizational Unit) de destino
- Hacer clic derecho en OU → Create a GPO in this domain, and Link it here
- Escribir el nombre:
Cyber Guru SafeBrowsing Whitelist - Firefox - Hacer clic en OK
Paso 3: Crear el script PowerShell y copiarlo a SYSVOL
El script escribe el archivo user.js en todos los perfiles de Firefox de todos los usuarios del cliente. Debe almacenarse en la carpeta SYSVOL de la GPO (NO en una ruta local del Domain Controller, de lo contrario los clientes no podrán alcanzarlo).
- Desde la consola GPMC, hacer clic derecho en la GPO
Cyber Guru SafeBrowsing Whitelist - Firefox→ Edit - Navegar a:
Computer Configuration → Policies → Windows Settings → Scripts (Startup/Shutdown)
- Doble clic en Startup → Hacer clic en la pestaña PowerShell Scripts → Hacer clic en Show Files...
- Se abrirá la carpeta SYSVOL de la GPO (ej.
\\<dominio>\SysVol\<dominio>\Policies\{GUID}\Machine\Scripts\Startup\) - En esta carpeta, crear un nuevo archivo llamado
CyberGuru_Firefox_SafeBrowsing.ps1con el siguiente contenido:
# CyberGuru_Firefox_SafeBrowsing.ps1
# Distribuye user.js en todos los perfiles de Firefox de todos los usuarios
$logFile = "C:\Windows\Temp\CyberGuru_Firefox.log"
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Add-Content -Path $logFile -Value "--- Ejecución: $timestamp ---"
$domini = '10eurodisconto.com,admin-help.info,agenziaesattoriale.it,amazonn.cloud,amazonws.it,antifrodi.it,apple-cl0ud.com,bn-k.eu,bn-k.org,bolletta-digitale.it,bulanmisa.com,comunicazioni-sicure.it,courierxpress.eu,cyberguru.eu,cyberguru.it,dropcloud.it,er9.es,er9.eu,er9.it,faceb00k.it,fast-shipping.it,fotocloud.net,g0ogle.eu,go0gle.store,goolge-secure.com,human-resource.tech,icloud-secure.eu,iscrizionigratuite.it,lnkedin.eu,macrosotf.com,mastercardz.com,netfliix.org,newsupdate.cloud,oultook.cloud,pagamenti-f24.it,remote-otp.com,security-service.cloud,securetracking.online,spotfy.org,telecomunicazioniitaliane.it,tribunaleroma.eu,urgente.eu,w0rld.info'
$userJsContent = 'user_pref("urlclassifier.skipHostnames", "' + $domini + '");'
Get-ChildItem "C:\Users" -Directory | ForEach-Object {
$profilesDir = Join-Path $_.FullName "AppData\Roaming\Mozilla\Firefox\Profiles"
if (Test-Path $profilesDir) {
Get-ChildItem $profilesDir -Directory -Filter "*.default*" | ForEach-Object {
$userJs = Join-Path $_.FullName "user.js"
try {
Set-Content -Path $userJs -Value $userJsContent -Force
Add-Content -Path $logFile -Value "OK: $userJs"
} catch {
Add-Content -Path $logFile -Value "ERROR: $userJs - $_"
}
}
}
}
Add-Content -Path $logFile -Value "--- Fin ---"
- Volver a la ventana Startup Properties → Hacer clic en Add... → Browse... → Seleccionar
CyberGuru_Firefox_SafeBrowsing.ps1dentro de la ruta\\<dominio>\SysVol\<dominio>\Policies\{GUID}\Machine\Scripts\Startup\recién creada. - Hacer clic en OK dos veces para guardar
⚠️ IMPORTANTE: El archivo
.ps1debe encontrarse en la carpeta SYSVOL abierta desde "Show Files...". Si se referencia una ruta local del DC (ej.C:\Users\Administrator\Downloads\firefox.ps1), los clientes no podrán alcanzarla y el script no se ejecutará.
Paso 4: Verificación en endpoint
- En un cliente Windows con Firefox instalado, aplicar la política y reiniciar el PC (el Startup Script se ejecuta solo al arranque,
gpupdate /forceno lo re-ejecuta):
gpupdate /force
shutdown /r /t 0
- Después del reinicio, verificar que el script se haya ejecutado abriendo:
C:\Windows\Temp\CyberGuru_Firefox.log
Deben aparecer líneas OK: C:\Users\<usuario>\AppData\Roaming\Mozilla\Firefox\Profiles\<perfil>.default-release\user.js
- Abrir Firefox y navegar a:
about:config
Buscar urlclassifier.skipHostnames — debe contener la lista de 43 dominios de Cyber Guru.
- Navegar a un dominio en whitelist (ej.
dropcloud.it) → sin advertencia de Safe Browsing roja.
Resolución de problemas
urlclassifier.skipHostnames aparece en about:policies pero NO en about:config:
- El método Registry/Preferences GPO no funciona en Firefox 140+. Usar obligatoriamente el script PowerShell con
user.js(Paso 3) - Verificar que el archivo
user.jsexista en el perfil en uso (comprobar cuál es el activo desdeabout:profiles) - Cerrar completamente Firefox (también desde el Task Manager) y reabrirlo
El script PowerShell no se ejecuta (log ausente):
- Verificar que
.ps1se haya copiado en la carpeta SYSVOL de la GPO (no en rutas locales del DC). Reabrir "Show Files..." para comprobar - Verificar que la Execution Policy se haya habilitado mediante GPO (Paso 1)
-
gpupdate /forcerecarga las políticas pero no re-ejecuta los Startup Scripts: se requiere un reinicio completo del cliente - Ejecutar
gpresult /h report.htmlen el cliente para confirmar que la GPO se haya aplicado
El script se ejecuta pero user.js no se escribe:
- El script se ejecuta como SYSTEM:
$env:APPDATAapunta al perfil del sistema, no al de los usuarios. El script proporcionado (Paso 3) escanea correctamenteC:\Users\para cada perfil - Verificar los permisos en las carpetas de usuario (normalmente SYSTEM tiene acceso completo)
Advertencias de Safe Browsing aún presentes en subdominios:
-
urlclassifier.skipHostnamesrequiere coincidencia exacta del dominio. Agregar los subdominios específicos a la lista (ej.ciao.dropcloud.it)
user.js existe pero se ignora:
- Verificar que Firefox se haya cerrado completamente antes de abrirlo. El
user.jsse lee solo al inicio - Verificar que el perfil modificado sea efectivamente el que está en uso (
about:profiles→ "This is the profile in use")