it-swarm-es.tech

¿Cómo ejecuta CMD.exe en la cuenta del sistema local?

Actualmente estoy ejecutando Vista y me gustaría completar manualmente las mismas operaciones que mi Servicio de Windows. Dado que el servicio de Windows se está ejecutando bajo 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 lanzar el CMD.exe con el comando Programador de tareas de DOS AT, pero recibí una advertencia de Vista de que "debido a mejoras de seguridad, esta tarea se ejecutará en el momento exento pero no de manera interactiva. " Aquí hay un comando de muestra:

AT 12:00 /interactive cmd.exe

Otra solución sugirió la creación de 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 da como resultado 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 lanzar 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 las Runas, pero creo que me encuentro con la misma restricción que encontré al ejecutar una tarea programada.

Hasta ahora, cada uno de mis intentos ha fracasado. ¿Alguna sugerencia?

130
Ben Griswold

Aunque no lo he probado personalmente, tengo buenas razones para creer que la solución AT COMANDO que se indica más arriba funcionará para XP, 2000 y Server 2003. Según mis pruebas y las de Bryant, hemos identificado lo mismo El enfoque no funciona con Vista o Windows Server 2008, probablemente debido a una mayor seguridad y al desactivo del interruptor/interactivo.

Sin embargo, encontré este artículo que demuestra el uso de PSTools from SysInternals (que fue adquirido por Microsoft en julio de 2006). Lanzé la línea de comandos a través de lo siguiente y de repente estaba corriendo bajo la cuenta de administrador local como magia:

psexec -i -s cmd.exe

PSTools funciona bien. Es un conjunto de herramientas ligero y bien documentado que proporciona una solución adecuada para mi problema.

Muchas gracias a los que ofrecieron ayuda.

202
Ben Griswold
  1. Descarga psexec.exe desde Sysinternals .
  2. Colóquelo en su unidad C: \.
  3. Inicie sesión como usuario estándar o administrador y use el siguiente comando: cd \. Esto lo coloca en el directorio raíz de su unidad, donde se encuentra psexec.
  4. Use el siguiente comando: psexec -i -s cmd.exe donde -i es para interactivo y -s es para la cuenta del sistema.
  5. Cuando el comando se complete, se iniciará un shell cmd. Escriba whoami; dirá 'sistema'
  6. Abra el administrador de tareas. Matar Explorer.exe.
  7. Desde un comando elevado Shell escribe start Explorer.exe.
  8. Cuando se inicie Explorer, observe el nombre "sistema" en la barra de menú de inicio. Ahora puede eliminar algunos archivos en el directorio system32, que como administrador no puede eliminar o como administrador tendría que esforzarse por cambiar los permisos para eliminar esos archivos.

Los usuarios que intentan renombrar o borrar los archivos del sistema en cualquier directorio protegido de Windows deben saber que todos los archivos de Windows están protegidos por DACLS. Al cambiar el nombre de un archivo, debe cambiar el propietario y reemplazar TrustedInstaller, que posee el archivo y hacer que a cualquier usuario le guste 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 ejecuta el Explorador de Windows con privilegios del kernel, está limitado en términos de acceso a la Red por razones de seguridad y aún es un tema de investigación para que yo tenga acceso de vuelta

40
raven

Encontré una respuesta aquí que parece resolver el problema agregando/k start al parámetro binPath. Así que eso te daría:

sc create testsvc binpath= "cmd /K start" type= own type= interact

Sin embargo, Ben dijo que no funcionó para él y cuando lo probé en Windows Server 2008 creó el proceso cmd.exe en el sistema local, pero no fue interactivo (no pude ver la ventana).

No creo que haya una forma fácil de hacer lo que pides, pero me pregunto por qué lo haces en absoluto. ¿Estás tratando de ver qué sucede cuando ejecutas tu servicio? Parece que puedes usar el registro para determinar lo que está sucediendo en lugar de tener que ejecutar el exe como sistema local ...

10
Bryant

Le recomendaría que establezca el conjunto mínimo de permisos que su servicio realmente necesita y use eso, en lugar del contexto privilegiado del Sistema Local. 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 a aislamiento de la sesión 0 .

6
Mike Dimmick

Uso de Secure Desktop para ejecutar cmd.exe como system

Podemos obtener acceso al kernel a través de CMD en Windows XP/Vista/7/8.1 fácilmente adjuntando un depurador:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. Ejecuta CMD como Administrador

  2. Luego usa este comando en Elevado:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. Luego ejecute osk (en pantalla). Todavía no se ejecuta con el nivel de integridad del sistema si verifica el proceso Explorer, pero si puede usar OSK en la sesión de servicio, se ejecutará como NT Authority\SYSTEM

así que tuve la idea de que tienes que ejecutarlo en Secure Desktop.

Inicie cualquier archivo como administrador. Cuando aparezcan las indicaciones de UAC, simplemente presione Win+U e inicie OSK y se iniciará CMD en su lugar. Luego, en la solicitud elevada, escriba whoami y obtendrá NT Authority\System. Después de eso, puede iniciar Explorer desde el comando del sistema Shell y usar el perfil del sistema, pero de alguna manera tiene limitaciones en 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 adelante como lo descubrí hace un año.

Una breve explicación de cómo sucede esto

Ejecutar Cmd.exe en la cuenta del sistema local sin usar PsExec. Este método ejecuta la técnica de trampa del depurador que se descubrió anteriormente, además, esta técnica tiene sus propios beneficios, se puede usar para atrapar algunos gusanos o malware malintencionado/malintencionados en el depurador y ejecutar otro exe en lugar de detener la propagación o el daño temporal. aquí, esta clave de registro atrapa el teclado en pantalla en el depurador nativo de Windows y ejecuta cmd.exe en su lugar, pero cmd todavía se ejecutará con los privilegios de usuarios registrados, sin embargo, si ejecutamos cmd en session0 podemos obtener el sistema Shell. así que agregamos aquí otra idea: extendemos el cmd en el escritorio seguro. Recuerde que el escritorio seguro se ejecuta en la sesión 0 en la cuenta del sistema y obtenemos el Shell del sistema. Por lo tanto, cada vez que ejecute algo tan elevado, tendrá que responder a la solicitud de UAC y las indicaciones de UAC en un escritorio oscuro y no interactivo, y una vez que lo vea, deberá presionar Win+U y luego seleccione OSK obtendrá CMD.exe ejecutándose bajo los privilegios del sistema local. Hay incluso más formas de obtener acceso al sistema local con CMD

3
raven

una alternativa a esto es el pirata informático de procesos si se ejecuta como ... (Interactivo no funciona para las personas con mejoras de seguridad, pero eso no importa) y cuando se abre el cuadro, coloque Servicio en el tipo de casilla y ponga SISTEMA en la casilla de usuario y coloque C :\Users\Windows\system32\cmd.exe deje el resto, haga clic en ok y boch, tiene una ventana con cmd y se ejecuta como el sistema. Ahora, haga los otros pasos por usted mismo, porque le sugiero que los conozca.

3
James5001

Hay otra manera. Hay un programa llamado PowerRun que permite ejecutar un cmd elevado. Incluso con los derechos TrustedInstaller. Permite tanto la consola como los comandos GUI.

2
Alexander Haakan

Uso el RunAsTi utility para ejecutar como TrustedInstaller (alto privilegio). La utilidad se puede usar incluso en el modo de recuperación de Windows (el modo que ingresa haciendo Shift + Restart), la utilidad psexec no funciona allí. Pero debe agregar sus rutas C:\Windows y C:\Windows\System32 (no X:\Windows y X:\Windows\System32) a la variable de entorno PATH, de lo contrario RunAsTi no funcionará en modo de recuperación, solo imprimirá: AdjustTokenPrivileges para SeImpersonateName: No todos los privilegios o grupos a los que se hace referencia se asignan al llamante.

0
anton_rh