
Ejecución de código y persistencia en el servicio FAX de NETWORK SERVICE
Una extensión de enrutamiento de fax es una DLL que añade funcionalidad de enrutamiento al servicio de fax. En un servidor pueden residir varias extensiones de enrutamiento de fax. Cuando el servidor de fax recibe una transmisión, enruta el documento recibido a través de cada una de las extensiones de enrutamiento de fax en orden de prioridad. El usuario establece la prioridad de enrutamiento mediante la aplicación de administración del servicio de fax, un componente complementario de Microsoft Management Console (MMC). El servicio FAX se ejecuta manualmente cuando una aplicación solicita una conexión al servicio FAX (por ejemplo, al cargar fxsadmin en MMC). En equipos de escritorio, el servicio está presente, pero se agotará el tiempo de espera al intentar establecer extensiones, ya que requiere configuración y rol. Más información en MSDN. De forma predeterminada, se requieren derechos de administrador para interactuar con el servicio; si un usuario tiene los roles de configuración de FAX en el servicio FAX y está elevado, puede ampliar el servicio FAX. Este exploit requiere el rol de servidor FAX, que no está disponible en estaciones de trabajo de forma predeterminada. Se instala en servidores que habilitan Servicios de fax e impresión.
Los usuarios del grupo FAX que tienen el rol de configuración de FAX también pueden agregar o quitar extensiones que quizás estén configuradas con programas de fax de terceros. El rol de configuración de FAX se otorga de forma predeterminada a los usuarios de los grupos Administradores locales o Administradores de dominio; los usuarios adicionales deben haber sido definidos explícitamente en la configuración de usuarios del servicio FAX si se usa como parte de una ruta de escalada de privilegios en Active Directory.
Más información: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/fax/-mfax-fax-routing-extension
También podemos persistir dentro del servicio FAX: nuestra DLL se llamará cada vez que se inicie el servicio, que no se llama automáticamente al reiniciar, por lo que solo ofrecería persistencia en servidores que utilizan activamente las funciones de FAX. También ofrece a un atacante una vía alternativa hacia SYSTEM desde privilegios de Administrador, ya que se puede escalar desde Network Service a SYSTEM.
Amplía el servicio FAX para ejecutar cualquier comando en c:\temp\run.bat una vez y limpia el FXSSVC. Utiliza una DLL de extensión de fax con las devoluciones de llamada adecuadas para iniciar/detener el servicio FAX de forma fiable; la extensión lanza comandos desde un archivo bat. Puede evitar la eliminación de la DLL con fines de "persistencia", lo que ejecutará el archivo de comandos por lotes cada vez que se utilice el servicio FAX, por ejemplo, al abrir, enviar o recibir un fax.
Compile este proyecto con Visual Studio 22; se generarán binarios estáticos tanto x86 como x64 que deben estar en el mismo directorio.
C:\Windows\system32>whoami
nt authority\network service
C:\Windows\system32>whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token Disabled
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeAuditPrivilege Generate security audits Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
Estos archivos están disponibles bajo la licencia BSD de 3 cláusulas.