Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Kaxperday en 21 Septiembre 2014, 01:44 am



Título: Ayuda obtener permisos administrador
Publicado por: Kaxperday en 21 Septiembre 2014, 01:44 am
Buenas gente, estaba escribiendo algún malware y llegado el momento de instalarse necesito que se copie en el directorio "C:\Windows" y necesito permisos de root, he estado buscando bastante por google, y parece que hay funciones para unix, a través de las cuales puedes adquirir el root para ejecutar el programa, yo solo quiero que mi programa al ejecutar tenga permisos de root para poder copiarse en ese directorio, ahora estoy trabajando el C++, soy nuevo pero me adaptaré rápido espero xD.

Confío en que sepáis algo sobre el tema, toda ayuda es bienvenida.

Edito: He estado mirando cosas para hacerlo, quizás con chmod() podría eliminar privilegios del directorio en cuestión. Pero seguramente necesite permisos para usarla no se si windows me pondra en el .exe la opción de correr como administrador, estaría bien.

Edito: No entiendo, si tengo este código:

Código
  1. #include <sys/types.h>
  2. #include <sys/stat.h>
  3. #include <io.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <errno.h>
  7. #include <windows.h>
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.    int permisos;
  13.    permisos=_chmod("C:\\Users\\...\\programa.exe",_S_IWRITE);
  14.    if(permisos==-1)
  15.    {
  16.        printf("Error al dar permisos al archivo.");
  17.    }
  18.    else
  19.    {
  20.        printf("Éxito al dar permisos al archivo.");
  21.    }
  22.    system("move programa.exe C:\\Windows");
  23.    getchar();
  24.    return 0;
  25. }
  26.  
  27.  

No entiendo porque para poder ejecutar el move hacia el directorio necesito clicar botón derecho en el programa y ejecutar como administrador, eso ya lo tenía sin hacer nada, lo que quiero es que no tengas que dar al botón derecho, que directamente el programa al darlo click te diga que va a ser ejecutado como administrador (aunque eso solo la primera ejecución luego estaría ya copiado y no necesitaría permisos).

Se supone que le di permisos de escritura al archivo, y me los concedió entonces ¿por qué tengo que ejecutarlo como administrador para hacer el move?

Yo quiero que salga igual que cuando vamos a instalar un programa nos pide permisos, (no se puede correr sin los permisos), y que cuando se instale ya no necesite pedir permisos más, como cualquier programa que instalamos vamos.

Edito: He encontrado esto, ¿cómo debería aplicarlo al código para que me funcionara?

http://msdn.microsoft.com/en-us/library/bb756929.aspx (http://msdn.microsoft.com/en-us/library/bb756929.aspx)

También mediante makefiles se puede incrustar el manifiesto:

http://msdn.microsoft.com/es-es/library/ms235591.aspx (http://msdn.microsoft.com/es-es/library/ms235591.aspx)

Saludos.


Título: Re: Ayuda obtener permisos administrador
Publicado por: patilanz en 21 Septiembre 2014, 18:24 pm
Hola yo tambien quiero hacer lo mismo para el mismo fin  ;D
He encontrado esto y ahora lo voy a probar :

http://www.codeease.com/force-windows-form-application-to-run-as-administrator-on-windows-7.html

@Edit:

Vale he encontrado la respuesta:

(http://i.stack.imgur.com/soXvJ.jpg)

He visto que si en "Habilitar Control de cuentas de usuario(UAC)" lo cambias por No luego al abrir el siguiente codigo:

Código
  1. ofstream file("c:\\test.txt");
  2. file << "hola :)";
  3. if (file.good())
  4. printf_s("nice");
  5. else
  6. printf_s("bad");
Siempre muestra nice aunque no crea el archivo. Sabéis porque y que hace exactamente esta opción?

Un saludo


Título: Re: Ayuda obtener permisos administrador
Publicado por: Kaxperday en 22 Septiembre 2014, 10:28 am
Vaya, yo uso codeblocks y no me aparece esa opción por ninguna parte, que editor usaste?

Aún así espero que haya alguna alternativa para codeblocks, aunque no lo encuentro por ninguna parte, lo que quiero es embeber el manifest dentro del ejecutable.

Saludos.


Título: Re: Ayuda obtener permisos administrador
Publicado por: eferion en 22 Septiembre 2014, 10:43 am
Buenas gente, estaba escribiendo algún malware y llegado el momento de instalarse necesito que se copie en el directorio "C:\Windows" y necesito permisos de root, he estado buscando bastante por google, y parece que hay funciones para unix, a través de las cuales puedes adquirir el root para ejecutar el programa, yo solo quiero que mi programa al ejecutar tenga permisos de root para poder copiarse en ese directorio, ahora estoy trabajando el C++, soy nuevo pero me adaptaré rápido espero xD.

Lo que quieres hacer no lo vas a conseguir de una forma "legal". Es decir, tu pretendes que tu código se instale en el ordenador y empiece a toquetear cosas del sistema operativo. Si hubiese una forma clara de saltarse las protecciones entonces éstas no tendrían sentido. Si quieres conseguir acceso root "a escondidas" vas a tener que lidiar con posibles fallos de seguridad del sistema operativo.

Desde luego no esperes que una función tipo "chmod" te de acceso... eso sería demasiado sencillo. Piensa que no puedes cambiar los permisos de acceso de un recurso si no tienes unos privilegios mínimos, al igual que no puedes cambiar la cerradura de una puerta si no la abres antes.


Título: Re: Ayuda obtener permisos administrador
Publicado por: Eternal Idol en 22 Septiembre 2014, 11:44 am
Lo que quieres hacer no lo vas a conseguir de una forma "legal". Es decir, tu pretendes que tu código se instale en el ordenador y empiece a toquetear cosas del sistema operativo. Si hubiese una forma clara de saltarse las protecciones entonces éstas no tendrían sentido. Si quieres conseguir acceso root "a escondidas" vas a tener que lidiar con posibles fallos de seguridad del sistema operativo.

Desde luego no esperes que una función tipo "chmod" te de acceso... eso sería demasiado sencillo. Piensa que no puedes cambiar los permisos de acceso de un recurso si no tienes unos privilegios mínimos, al igual que no puedes cambiar la cerradura de una puerta si no la abres antes.

En realidad en versiones modernas de Windows lo que el propone mediante el manifest se puede hacer perfectamente, no es saltar ninguna proteccion, es lo que se ve cuando uno intenta ejecutar un programa y sale el pop-up por fuera del escritorio pidiendo autorizacion (y que pongas el nombre de usuario y clave si no esta loggeado un administrador).


Título: Re: Ayuda obtener permisos administrador
Publicado por: eferion en 22 Septiembre 2014, 11:52 am
En realidad en versiones modernas de Windows lo que el propone mediante el manifest se puede hacer perfectamente, no es saltar ninguna proteccion, es lo que se ve cuando uno intenta ejecutar un programa y sale el pop-up por fuera del escritorio pidiendo autorizacion (y que pongas el nombre de usuario y clave si no esta loggeado un administrador).

Ya, pero ese mecanismo, por el simple echo de ser legal, implica que al usuario, salvo que haya desactivado las notificaciones, recibirá un aviso pidiendo su autorización para permitir que el programa realice cambios en ese directorio... y no se, no creo que sea la filosofía de un malware... bueno, salvo que el programa tenga apariencia legal y el malware actúe en segundo plano, pero aún así creo que no es la idea original.


Título: Re: Ayuda obtener permisos administrador
Publicado por: Eternal Idol en 22 Septiembre 2014, 11:59 am
Ya, pero ese mecanismo, por el simple echo de ser legal, implica que al usuario, salvo que haya desactivado las notificaciones, recibirá un aviso pidiendo su autorización para permitir que el programa realice cambios en ese directorio... y no se, no creo que sea la filosofía de un malware... bueno, salvo que el programa tenga apariencia legal y el malware actúe en segundo plano, pero aún así creo que no es la idea original.

El hecho es que el usuario pide usar un manifest para no tener que forzar manualmente que se ejecute su programa como administrador y esa es una forma "legal" de hacerlo.

Pero seguramente necesite permisos para usarla no se si windows me pondra en el .exe la opción de correr como administrador, estaría bien.

No entiendo porque para poder ejecutar el move hacia el directorio necesito clicar botón derecho en el programa y ejecutar como administrador, eso ya lo tenía sin hacer nada, lo que quiero es que no tengas que dar al botón derecho, que directamente el programa al darlo click te diga que va a ser ejecutado como administrador (aunque eso solo la primera ejecución luego estaría ya copiado y no necesitaría permisos).


Título: Re: Ayuda obtener permisos administrador
Publicado por: eferion en 22 Septiembre 2014, 12:37 pm
El hecho es que el usuario pide usar un manifest para no tener que forzar manualmente que se ejecute su programa como administrador y esa es una forma "legal" de hacerlo.

Un programa que requiera privilegios de administrador en los windows actuales implica mostrar al usuario un mensaje en el que se le pide autorización. Obviamente el programa puede indicar en el manifiesto que necesita de antemano esos permisos, pero no va a evitar que al usuario le aparezca el correspondiente aviso.

No estoy entrando en detalles acerca de si esta información puede ir en el manifiesto o no... simplemente remarco que las formas legales de hacer esto conllevan el inconveniente del mensaje al usuario... y que ese puede ser un efecto indeseado a la hora de desarrollar un programa tipo troyano, virus, spyware, etc.

Si en vez de malware estuviese desarrollando una calculadora, por ejemplo, no habría echo ningún comentario al respecto de los permisos.


Título: Re: Ayuda obtener permisos administrador
Publicado por: Eternal Idol en 22 Septiembre 2014, 12:59 pm
Un programa que requiera privilegios de administrador en los windows actuales implica mostrar al usuario un mensaje en el que se le pide autorización. Obviamente el programa puede indicar en el manifiesto que necesita de antemano esos permisos, pero no va a evitar que al usuario le aparezca el correspondiente aviso.

En realidad en versiones modernas de Windows lo que el propone mediante el manifest se puede hacer perfectamente, no es saltar ninguna proteccion, es lo que se ve cuando uno intenta ejecutar un programa y sale el pop-up por fuera del escritorio pidiendo autorizacion (y que pongas el nombre de usuario y clave si no esta loggeado un administrador).

No estoy entrando en detalles acerca de si esta información puede ir en el manifiesto o no... simplemente remarco que las formas legales de hacer esto conllevan el inconveniente del mensaje al usuario... y que ese puede ser un efecto indeseado a la hora de desarrollar un programa tipo troyano, virus, spyware, etc.

No entiendo porque para poder ejecutar el move hacia el directorio necesito clicar botón derecho en el programa y ejecutar como administrador, eso ya lo tenía sin hacer nada, lo que quiero es que no tengas que dar al botón derecho, que directamente el programa al darlo click te diga que va a ser ejecutado como administrador (aunque eso solo la primera ejecución luego estaría ya copiado y no necesitaría permisos).

Yo quiero que salga igual que cuando vamos a instalar un programa nos pide permisos, (no se puede correr sin los permisos), y que cuando se instale ya no necesite pedir permisos más, como cualquier programa que instalamos vamos.

Si en vez de malware estuviese desarrollando una calculadora, por ejemplo, no habría echo ningún comentario al respecto de los permisos.

El hecho es que existe una forma "legal" de hacerlo y es la que propuso el mismo usuario.


Título: Re: Ayuda obtener permisos administrador
Publicado por: eferion en 22 Septiembre 2014, 13:06 pm
Bueno entonces nos abstendremos de comentar cosas que nos parecen oportunas, como detalles que puedan pasar desapercibidos, y nos ceñiremos única y exclusivamente a la duda que tenga el usuario. ¿es eso?

Me parece totalmente surrealista esta conversación.


Título: Re: Ayuda obtener permisos administrador
Publicado por: Eternal Idol en 22 Septiembre 2014, 13:22 pm
Bueno entonces nos abstendremos de comentar cosas que nos parecen oportunas, como detalles que puedan pasar desapercibidos, y nos ceñiremos única y exclusivamente a la duda que tenga el usuario. ¿es eso?

Me parece totalmente surrealista esta conversación.

Podes hacer lo que quieras, como siempre, aunque es siempre recomendable - en realidad esta en las reglas del sub-foro leer el hilo antes de responder - simplemente leer TODO el mensaje del usuario, asi uno sabe distinguir si algo paso desaparecibido o se detallo.

Esto no es surrealista, es erroneo y punto:
Lo que quieres hacer no lo vas a conseguir de una forma "legal".



Kaxperday: patilanz uso Visual Studio, aca tenes informacion util para tu IDE:
http://stackoverflow.com/questions/8139480/c-console-application-prompt-run-as-admin-to-run-as-administrator
http://forums.codeblocks.org/index.php?topic=6867.0


Título: Re: Ayuda obtener permisos administrador
Publicado por: eferion en 22 Septiembre 2014, 13:43 pm
Este es mi último mensaje en esta cadena porque no lleva a ninguna parte y veo que ninguno de los dos vamos a ceder. Si hay más que decir creo que es mejor por privado.

Lo que quieres hacer no lo vas a conseguir de una forma "legal". ... Si quieres conseguir acceso root "a escondidas" vas a tener que lidiar con posibles fallos de seguridad del sistema operativo.

Si pongo todo el contexto creo que la cosa cambia... yo ya estoy partiendo de la base de que eso se debería hacer sin que el usuario se entere... ahora, si quieres hacerlo de forma que sepa que tu programa va a escribir en zonas protegidas allá cada uno.

Se me puede tachar de que el mensaje no deje una idea demasiado clara de que eso es una sugerencia... pero los siguientes mensajes matizan mi postura y ahí ya no hay lugar a dudas sobre la intención de mi comentario, por lo que no entiendo que se le siga dando bombo:

Ya, pero ese mecanismo, por el simple echo de ser legal, implica que al usuario, salvo que haya desactivado las notificaciones, recibirá un aviso pidiendo su autorización para permitir que el programa realice cambios en ese directorio... y no se, no creo que sea la filosofía de un malware... bueno, salvo que el programa tenga apariencia legal y el malware actúe en segundo plano, pero aún así creo que no es la idea original.

No estoy entrando en detalles acerca de si esta información puede ir en el manifiesto o no... simplemente remarco que las formas legales de hacer esto conllevan el inconveniente del mensaje al usuario... y que ese puede ser un efecto indeseado a la hora de desarrollar un programa tipo troyano, virus, spyware, etc.

Si en vez de malware estuviese desarrollando una calculadora, por ejemplo, no habría echo ningún comentario al respecto de los permisos.

No se, lo mismo son mis mensajes los que no se leen completamente.

Y, en serio, creo que lo mejor es dar este tema por zanjado, ensucia el foro y no aporta nada a este hilo.

Un saludo.


Título: Re: Ayuda obtener permisos administrador
Publicado por: Eternal Idol en 22 Septiembre 2014, 13:49 pm
Este es mi último mensaje en esta cadena porque no lleva a ninguna parte y veo que ninguno de los dos vamos a ceder.

Se nota desde tu primer mensaje, sos incapaz de reconocer tus errores, no importa, nadie es perfecto.

Si pongo todo el contexto creo que la cosa cambia... yo ya estoy partiendo de la base de que eso se debería hacer sin que el usuario se entere... ahora, si quieres hacerlo de forma que sepa que tu programa va a escribir en zonas protegidas allá cada uno.

La cosa entonces seria saber si el contexto es el de la duda del usuario o el de la pelicula que te armaste vos ... vaya uno a saber.

No se, lo mismo son mis mensajes los que no se leen completamente.

Idem al anterior, vos pone los requerimientos que quieras a tus respuestas, da igual si entran en contradiccion directa y evidente con lo que pretende hacer el que tiene la duda.


Título: Re: Ayuda obtener permisos administrador
Publicado por: Kaxperday en 22 Septiembre 2014, 17:09 pm
Citar
Lo que quieres hacer no lo vas a conseguir de una forma "legal". Es decir, tu pretendes que tu código se instale en el ordenador y empiece a toquetear cosas del sistema operativo. Si hubiese una forma clara de saltarse las protecciones entonces éstas no tendrían sentido. Si quieres conseguir acceso root "a escondidas" vas a tener que lidiar con posibles fallos de seguridad del sistema operativo.

Madre mía los comentarios tiene uno que leer, pero vamos a ver cabeza de cántaro, lee lo que estaba buscando, quiero que mi programa al ser ejecutado obtenga los permisos del administrador para poder copiarse en directorios protegidos y anclarse al registro, pero claro lo que busco es que salga el mensaje de si el programa quiere instalarse o no, para que así pueda obtener los privilegios de administrador y es por esto por lo que creé este hilo, haz el favor de leer antes de responder.

Gracias Eternal Idol, por tu respuesta y por saber leer.

Saludos.



Título: Re: Ayuda obtener permisos administrador
Publicado por: Eternal Idol en 22 Septiembre 2014, 17:42 pm
Gracias Eternal Idol, por tu respuesta y por saber leer.

De nadas, ahi detallan varias formas de hacerlo con Code::Blocks, aunque no las probe debido a que yo tambien uso Visual Studio, te lo recomiendo para trabajar bajo Windows.


Título: Re: Ayuda obtener permisos administrador
Publicado por: eferion en 22 Septiembre 2014, 18:07 pm
Madre mía los comentarios tiene uno que leer, pero vamos a ver cabeza de cántaro, lee lo que estaba buscando, quiero que mi programa al ser ejecutado obtenga los permisos del administrador para poder copiarse en directorios protegidos y anclarse al registro, pero claro lo que busco es que salga el mensaje de si el programa quiere instalarse o no, para que así pueda obtener los privilegios de administrador y es por esto por lo que creé este hilo, haz el favor de leer antes de responder.

Gracias Eternal Idol, por tu respuesta y por saber leer.

Saludos.



Mira que he dicho que iba a dejarlo ya... pero venga vamos a seguir... esto ya parece una broma pesada:

Entendí perfectamente tu duda, y sí, tu mensaje lo leí completamente, es más, vi que ya habías puesto una solución en tu primer hilo (la de msdn). De echo, si miras las fechas, tu solución es anterior a mi respuesta. Como ya habías publicado una respuesta me limité a poner un comentario que consideré útil.

No creo que sea tan complicado de entender.... no se, si lo prefieres te hago un esquema.


Título: Re: Ayuda obtener permisos administrador
Publicado por: 0xDani en 23 Septiembre 2014, 16:55 pm
Siento meterme donde no me llaman, pero si el usuario explicita en el primer mensaje que quiere crear malware, no creo que sea tan descabellado por parte de @eferion sugerir que quizá no le interese que se avise al usuario de que el programa requiere permisos de administrador. Digamos que canta un poco.

Ahora, que te da igual que se dé ese aviso, nada más indícalo, pero no reacciones como si te hubiese dicho algo que no tiene nada que ver con lo que has preguntado.

Saludos.


Título: Re: Ayuda obtener permisos administrador
Publicado por: patilanz en 23 Septiembre 2014, 19:31 pm
Y alguien sabe como pedir permisos de administrador en tiempo de ejecución ?
Yo creo que la mayoría de los usuario dan permiso a cualquier programa.


Título: Re: Ayuda obtener permisos administrador
Publicado por: eferion en 23 Septiembre 2014, 21:11 pm
Y alguien sabe como pedir permisos de administrador en tiempo de ejecución ?

Si quieres meterte en un sistema sin permiso te toca forzar cerraduras... no pedir permiso.

Yo creo que la mayoría de los usuario dan permiso a cualquier programa.

Aun así encontrarás pocos virus que te avisen de que te van a infectar


Título: Re: Ayuda obtener permisos administrador
Publicado por: patilanz en 23 Septiembre 2014, 22:33 pm
Citar
Si quieres meterte en un sistema sin permiso te toca forzar cerraduras... no pedir permiso.
Hablas del UAC Bypass ?

http://foro.elhacker.net/programacion_cc/conseguir_permisos_de_administrador-t414465.0.html#new

Todavía estoy intentando ver como funciona pero si alguien sabe como pedir permiso sin el archivo de manifiesto y en tiempo de ejecución ?

Citar
Aun así encontrarás pocos virus que te avisen de que te van a infectar
Bueno el mensaje de windows es que si permitas al programa editar el equipo, esto lo hace cualquier programa o juego no tiene porque infectarte.


Título: Re: Ayuda obtener permisos administrador
Publicado por: eferion en 23 Septiembre 2014, 22:42 pm
Bueno el mensaje de windows es que si permitas al programa editar el equipo, esto lo hace cualquier programa o juego no tiene porque infectarte.

Cierto, pero si alguien quiere instalar malware en tu ordenador, o lo consigue adjuntar a alguna distribución de algún producto que estés buscando... en cuyo caso se instalará sin que te des cuenta pensando que únicamente estás instalando el programa que querías... o aprovecha vulnerabilidades y fallos en tu sistema operativo para colarse sin que te des cuenta y en el momento más inesperado (navegando por internet, abriendo un correo electrónico, .... ) en este caso dudo mucho que veas una alerta de windows.


Título: Re: Ayuda obtener permisos administrador
Publicado por: Eternal Idol en 23 Septiembre 2014, 22:45 pm
Es imposible patilanz, imposible.

UAC self-elevation (http://code.msdn.microsoft.com/windowsapps/CppUACSelfElevation-5bfc52dd).

ShellExecute/Ex con runas.