
Un Bind Shell utilizando el Servicio de Fax y un DLL Hijack
Un shell de enlace de prueba de concepto que utiliza el servicio Fax y un secuestro de DLL basado en Ualapi.dll.
Consulte nuestro análisis en: https://windows-internals.com/faxing-your-way-to-system/

Ualapi.dll y colócalo en c:\windows\system32Fax, que cargará la DLL y llamará a la exportación UalStart. UalStart pondrá en cola un elemento de trabajo del grupo de subprocesos que abrirá un identificador para RpcSs, buscará un token SYSTEM y luego lo suplantará. Después, creará un socket en la dirección del punto final local, lo vinculará al puerto 9299, y luego esperará asincrónicamente una conexión usando un puerto de finalización de E/S del grupo de subprocesos.nc(at).exe <ip> 9299) y luego escribe let me in y presiona ENTER. Si estás escribiendo código personalizado, asegúrate de enviar la cadena let me in\n.Cmd.exe bajo el servicio DcomLaunch con privilegios SYSTEM, vinculando sus identificadores de entrada y salida al socket recién creado.SYSTEM, volviendo a NETWORK SERVICE muy rápidamente y después de realizar solo una llamada API. Esto ayuda a reducir la posibilidad de ser detectado por varios escáneres.DcomLaunch (que ya es un servicio SYSTEM) y no bajo el servicio Fax, haciendo que parezca mucho más natural y evitando un árbol de procesos de aspecto muy sospechoso.Fax, y no a DcomLaunch o Cmd.exe. Si matamos el servicio Fax, parece que el socket pertenece a System.No está destinado a ser un shell de inserción directa, indetectable, malicioso y armado:
80 o 443 funcionaría mejor.Spooler, también cargan Ualapi.dll. Aunque el sistema se comporta bien si el servicio Fax está "atascado" en el estado SERVICE_START_PENDING, esto causará problemas en Spoolsv.exe.