Actualmente estoy ejecutando Vista y me gustaría completar manualmente las mismas operaciones que mi Servicio de Windows. Como el servicio de Windows se ejecuta con la cuenta del sistema local, me gustaría emular este mismo comportamiento. Básicamente, me gustaría ejecutar CMD.EXE bajo la cuenta del sistema local.
Encontré información en línea que sugiere iniciar CMD.exe utilizando el comando AT del Programador de tareas DOS, pero recibí una advertencia de Vista de que "debido a mejoras de seguridad, esta tarea se ejecutará en el momento exceptuado pero no de manera interactiva". Aquí hay un comando de muestra:
AT 12:00 /interactive cmd.exe
Otra solución sugirió crear un Servicio de Windows secundario a través del Control de Servicio (sc.exe) que simplemente inicia CMD.exe.
C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA
En este caso, el servicio no se inicia y le da el siguiente mensaje de error:
FAILED 1053: The service did not respond to the start or control request in a timely fashion.
La tercera sugerencia fue iniciar CMD.exe a través de una tarea programada. Aunque puede ejecutar tareas programadas en varias cuentas, no creo que la cuenta del sistema local sea una de ellas.
También he intentado usar Runas, pero creo que me encuentro con la misma restricción que se encuentra al ejecutar una tarea programada.
Hasta ahora, cada uno de mis intentos ha terminado en fracaso. ¿Alguna sugerencia?
fuente
-d
agregado, para que pueda seguir usando la consola desde la que la inicié.cd \
. Esto lo ubica en el directorio raíz de su unidad, donde se encuentra psexec.psexec -i -s cmd.exe
donde -i es para interactiva y -s es para cuenta del sistema.whoami
; dirá "sistema"start explorer.exe
.Los usuarios que intentan cambiar el nombre o eliminar archivos del sistema en cualquier directorio protegido de Windows deben saber que todos los archivos de Windows están protegidos por DACLS mientras que al cambiar el nombre de un archivo debe cambiar el propietario y reemplazar TrustedInstaller que posee el archivo y hacer que cualquier usuario sea un usuario que pertenece al grupo de administradores como propietario del archivo, luego intente cambiarle el nombre después de cambiar el permiso, funcionará y mientras está ejecutando Windows Explorer con privilegios de kernel, está algo limitado en términos de acceso a la red por razones de seguridad y sigue siendo un tema de investigación para que tenga acceso de nuevo
fuente
Encontré una respuesta aquí que parece resolver el problema agregando / k start al parámetro binPath. Entonces eso te daría:
sc create testsvc binpath= "cmd /K start" type= own type= interact
Sin embargo, Ben dijo que eso no funcionó para él y cuando lo probé en Windows Server 2008 creó el proceso cmd.exe en el sistema local, pero no era interactivo (no podía ver la ventana).
No creo que haya una manera fácil de hacer lo que pides, pero me pregunto por qué lo estás haciendo. ¿Estás tratando de ver qué sucede cuando ejecutas tu servicio? Parece que podría usar el registro para determinar qué está sucediendo en lugar de tener que ejecutar el exe como sistema local ...
fuente
HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices
debe establecer como 0 (Predeterminado 1)Le recomendaría que calcule el conjunto mínimo de permisos que su servicio realmente necesita y lo use, en lugar del contexto de sistema local demasiado privilegiado. Por ejemplo, servicio local .
Los servicios interactivos ya no funcionan, o al menos, ya no muestran la interfaz de usuario, en Windows Vista y Windows Server 2008 debido al aislamiento de la sesión 0 .
fuente
Usando Secure Desktop para ejecutar
cmd.exe
comosystem
Podemos obtener acceso al núcleo a través
CMD
de Windows XP / Vista / 7 / 8.1 fácilmente conectando un depurador:Ejecutar
CMD
como administradorLuego use este comando en Elevated:
Luego, ejecuta
osk
(teclado en pantalla). Todavía no se ejecuta con el nivel de integridad del sistema si revisa el explorador de procesos, pero si puede usar OSK en la sesión de servicio, se ejecutará comoNT Authority\SYSTEM
así que tuve la idea de que tienes que ejecutarlo en Secure Desktop.
Inicie cualquier archivo como administrador. Cuando aparezcan los avisos de UAC, simplemente presione Win+ Ue inicie
OSK
y comenzará en suCMD
lugar. Luego, en el símbolo del sistema elevado, escribawhoami
y obtendráNT Authority\System
. Después de eso, puede iniciar el Explorador desde el shell de comandos del sistema y usar el perfil del Sistema, pero tiene algunas limitaciones sobre lo que puede hacer en la red a través de los privilegios del SISTEMA por razones de seguridad. Agregaré más explicaciones más tarde como las descubrí hace un año.Una breve explicación de cómo sucede esto
Ejecutar
Cmd.exe
bajo la cuenta del sistema local sin usarPsExec
. Este método ejecuta la técnica de trampa de depurador que se descubrió anteriormente, bueno, esta técnica tiene sus propios beneficios, puede usarse para atrapar algún gusano o malware malicioso / malicioso en el depurador y ejecutar algún otro exe para detener la propagación o el daño temporal. aquí esta clave del registro atrapa el teclado en pantalla en el depurador nativo de Windows y ejecuta cmd.exe en su lugar, pero cmd seguirá ejecutándose con privilegios de Usuarios registrados, sin embargo, si ejecutamos cmd en session0, podemos obtener el shell del sistema. así que agregamos aquí otra idea, abarcamos el cmd en el escritorio seguro, recuerda que el escritorio seguro se ejecuta en la sesión 0 bajo la cuenta del sistema y obtenemos el shell del sistema. Por lo tanto, cada vez que ejecute algo tan elevado, debe responder la solicitud de UAC y las solicitudes de UAC en un escritorio oscuro y no interactivo y una vez que lo vea, debe presionar Win+ Uy luego seleccionarOSK
comenzará aCMD.exe
correr bajo los privilegios del sistema local. Hay incluso más formas de obtener acceso al sistema local conCMD
fuente
una alternativa a esto es Process hacker si se ejecuta como ... (Interactivo no funciona para las personas con mejoras de seguridad, pero eso no importa) y cuando se abre box, ponga Service en el tipo box y ponga SYSTEM en la carpeta user y ponga C : \ Users \ Windows \ system32 \ cmd.exe deje el resto, haga clic en Aceptar y verifique que tiene una ventana con cmd y ejecute como sistema ahora haga los otros pasos por usted mismo porque sugiero que los conozca
fuente
Hay otra manera Hay un programa llamado PowerRun que permite ejecutar cmd elevado. Incluso con los derechos TrustedInstaller. Permite comandos de consola y GUI.
fuente
Si puede escribir un archivo por lotes que no necesita ser interactivo, intente ejecutar ese archivo por lotes como un servicio, para hacer lo que debe hacerse.
fuente
Uso la utilidad RunAsTi para ejecutar como TrustedInstaller (alto privilegio). La utilidad se puede usar incluso en el modo de recuperación de Windows (el modo que ingresas haciendo
Shift
+Restart
), la utilidad psexec no funciona allí. Pero debe agregar sus rutasC:\Windows
yC:\Windows\System32
(noX:\Windows
yX:\Windows\System32
) a laPATH
variable de entorno, de lo contrario RunAsTi no funcionará en modo de recuperación, solo imprimirá: AdjustTokenPrivileges for SeImpersonateName: no todos los privilegios o grupos a los que se hace referencia se asignan a la persona que llama .fuente
Usando el programador de tareas, programe una ejecución de CMDKEY que se ejecute en SYSTEM con los argumentos apropiados de / add: / user: y / pass:
No es necesario instalar nada.
fuente