Ejecutar como Administrador y evitar que se cierre

Iniciado por Segurida, 3 Junio 2011, 09:45 AM

0 Miembros y 1 Visitante están viendo este tema.

Segurida

Hola, he decidido poner este tema aquí, no estoy intentando crear ningún tipo de virus, pero lo que necesito es típico de los virus y antivirus, por eso decido ponerlo aquí, lo que necesito es que mi aplicación al abrirse tome permisos de Administrador sin que aparezca la UAC y sin desactivarla, simplemente que tome permisos administrativos, y también necesito evitar que el proceso se cierre, no hacer algo para que si se cierra se vuelva a abrir, sino evitar que se cierre incluso si matas el proceso (como por ejemplo hacen los antivirus) utilizo Visual Basic 2010 (wpf), no sé si esto que pido se puede hacer en este lenguaje, de no ser así, necesitaría poder hacerlo en otro lenguaje cualquiera pero guardándolo en dll y utilizándolo desde visual basic, he puesto lo de wpf porque hay muchas cosas de vb.net que en wpf no funcionan (por desgracia), si me podéis ayudar os lo agradezco mucho, llevo bastante tiempo con esto y sigo sin encontrar respuesta alguna, muchas gracias y saludos!

dimitrix

Yo conseguía escalar privegios sin saber la clave del Admin con aplicación que hice con VB 6... así que por lo menos en el XP se tiene que poder.

Por otra parte lo de cerrar sesión, recuerdo (en el XP también), que nombrabas el proceso con un nombre 'exacto' no se podía cerrar pues se utilizaba para el sistema.




Segurida

Yo creo que si se puede, los antivirus lo hacen, se ejecutan con los permisos mas altos que existen (en el usuario que lo ejecutó pone SYSTEM) y no se pueden cerrar (por lo menos yo no lo he conseguido desde una cuenta de usuario) lo de ejecutar con permisos administrativos no es una prioridad (en otra parte del foro me dijeron algo del kernel, no se si será ejecutar la aplicación como kernel o algo así) pero lo de evitar que se cierre si es prioritario, conseguí un código para vb.net que cambia el proceso a proceso crítico, pero cuando le das a terminar proceso, aparece una pantalla azul (bsod = blue screen of dead), lo que necesito es evitar como sea que se cierre a no ser que se este apagando el sistema (reiniciando o cerrando sesión), si no es una de esas causas, que no se cierre, pero por mas que lo intento no lo consigo, por cierto, este código que digo si no lo ejecutas como administrador, no funciona (por eso lo de coger permisos administrativos por si mismo), esta aplicación es principalmente para windows vista y 7, la estoy haciendo con ventanas transparentes, por eso digo para vista/7, en xp no deja usar pantallas transparentes :) si sabéis cómo poder coger permisos administrativos (o de kernel si se pudiera) o evitar que se cierre la aplicación, os lo agradecería, saludos!

Segurida

¿Alguien sabe cómo poder hacerlo?
(siento hacer 2 posts seguidos, pero estoy dando a editar el anterior y me tira error)
muchas gracias
saludos!

[Zero]

Puedes echarle una ojeada a ésto, es lo que hacen los AV, aunque en VB.NET va a ser que no:
http://foro.elhacker.net/analisis_y_diseno_de_malware/introduccion_a_la_programacion_de_drivers_en_windows-t231193.0.html

Saludos

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

AlxSpy

quise hacer algo parecido, intente copiar las claves de spool.exe (proceso de sistema) sustituyendo la ruta de spool.exe por la ruta de mi .exe, en una maquina virtual con win xp, y al reiniciarlo mi .exe se veia como system en el taskmrg, pero se podia cerrar como cualkier otro .exe y sino se  cerraba solo a los 30 segundos.

43H4FH44H45H4CH49H56H45H

Cita de: Segurida en  3 Junio 2011, 09:45 AM
Hola, he decidido poner este tema aquí, no estoy intentando crear ningún tipo de virus, pero lo que necesito es típico de los virus y antivirus, por eso decido ponerlo aquí, lo que necesito es que mi aplicación al abrirse tome permisos de Administrador sin que aparezca la UAC y sin desactivarla, simplemente que tome permisos administrativos, y también necesito evitar que el proceso se cierre, no hacer algo para que si se cierra se vuelva a abrir, sino evitar que se cierre incluso si matas el proceso (como por ejemplo hacen los antivirus) utilizo Visual Basic 2010 (wpf), no sé si esto que pido se puede hacer en este lenguaje, de no ser así, necesitaría poder hacerlo en otro lenguaje cualquiera pero guardándolo en dll y utilizándolo desde visual basic, he puesto lo de wpf porque hay muchas cosas de vb.net que en wpf no funcionan (por desgracia), si me podéis ayudar os lo agradezco mucho, llevo bastante tiempo con esto y sigo sin encontrar respuesta alguna, muchas gracias y saludos!

Supongo que todavia no deseas entrar a la creacion de drivers, puesto que estas utilizando .NET puedes crear una aplicación como servicio y especificar en la aplicacion que no pueda detenerse ni pausarse, ademas se puede indicar que en caso de error el servicio vuelva a iniciarse, esto lo puedes hacer en .NET o C++ (supongo que tb se puede hacer en otros lenguajes).
Esta aplicación debe ser hecha en consola y debes tener otra aplicación con la GUI que se comunique con la primera, esto lo puedes hacer de varias formas como archivos de texto, bd, xml u otros, en mi caso utilizo sockets, porque me dieron mejor resultado.

Saluos.

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W

Segurida

Cita de: 43H4FH44H45H4CH49H56H45H en 13 Junio 2011, 04:57 AM
Supongo que todavia no deseas entrar a la creacion de drivers, puesto que estas utilizando .NET puedes crear una aplicación como servicio y especificar en la aplicacion que no pueda detenerse ni pausarse, ademas se puede indicar que en caso de error el servicio vuelva a iniciarse, esto lo puedes hacer en .NET o C++ (supongo que tb se puede hacer en otros lenguajes).
Esta aplicación debe ser hecha en consola y debes tener otra aplicación con la GUI que se comunique con la primera, esto lo puedes hacer de varias formas como archivos de texto, bd, xml u otros, en mi caso utilizo sockets, porque me dieron mejor resultado.

Saluos.

Pues si me explicas cómo hacerlo, perfecto, ya me estoy volviendo loco, ¿el servicio se puede hacer algo para evitar que se pueda modificar, es decir, impedir que se pare e impedir cambiar el tipo de inicio?
muchas gracias y saludos

43H4FH44H45H4CH49H56H45H

En .NET puedes buscar:

Código (csharp) [Seleccionar]
CanStop
Código (csharp) [Seleccionar]
CanPauseAndContinue

y otras opciones mas en los proyectos de servicios en Visual Studio o hacerlo directamente  por codigo.

Para que no puedan cambiar el tipo de inicio, se puede hacer con hooks o puedes crear otro servicio que se encargue de cambiar las modificaciones hechas por el usuario.

Saluos.

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W