elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Seguridad windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Seguridad windows  (Leído 3,247 veces)
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Seguridad windows
« en: 13 Junio 2014, 17:21 pm »

Hola quiero aprender el tema de los permisos, privilegios y el uac con la windows api.
Estoy leyendo información en la pagina de microsoft pero todo es muy confuso al principio supongo. Al final quiero conseguir poder comprobar y pedir permisos de administrador, acceder y leer al registro y archivos protegidos.

Yo estoy leyendo esto http://msdn.microsoft.com/en-us/library/windows/desktop/aa374731(v=vs.85).aspx#sspi_functions

Pero si sabéis otro sitio de donde pueda aprender sobre esto?

Saludos


En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Seguridad windows
« Respuesta #1 en: 14 Junio 2014, 17:53 pm »

se que no es la forma correcta de hacerlo lo ideal es haciendo el manifest  pero funciona y eso para mi basta jeje
Código
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. int permisosadm();
  8.  
  9. int main()
  10. {
  11.  
  12.    if(permisosadm()==1)
  13.    {
  14.        cout << "ya tengo permisos de administrador :D" << endl;
  15.    }
  16.    else
  17.    {
  18.        return 0;
  19.    }
  20.    system("pause");
  21.    return 0;
  22. }
  23.  
  24.  
  25.  
  26. int permisosadm()
  27. {
  28.  
  29.    HANDLE archivo;
  30.    // abrimos un archivo en c en esa ubicacion necesitamos permisos de administrador
  31.    archivo=CreateFile("C:\\random",GENERIC_READ|GENERIC_WRITE ,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  32.    //si da error entones no tenemos permisos
  33.    if(archivo==INVALID_HANDLE_VALUE)
  34.  
  35.  
  36.        CloseHandle(archivo);
  37.        TCHAR dir[2045];
  38.        //la ruta del programa que estamos ejecutando
  39.        GetModuleFileName(NULL,dir,2045);
  40.        // luego lo vuelve a abrir pero con runas comando que pide permisos de administrador
  41.        ShellExecute(NULL,"runas",dir,NULL,NULL,SW_SHOWNORMAL);
  42.        // revuelve cero y acaba funcion
  43.        return 0;
  44.    }
  45.    // si llega aca si tiene permisos de admin cierra el archivo y devuelve uno
  46.    CloseHandle(archivo);
  47.    return 1;
  48.  
  49.  
  50. }


« Última modificación: 14 Junio 2014, 18:41 pm por daryo » En línea

buenas
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Seguridad windows
« Respuesta #2 en: 14 Junio 2014, 19:09 pm »

Busca el libro 'Windows internals' capitulo de seguridad, de lo mejor.
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: Seguridad windows
« Respuesta #3 en: 15 Junio 2014, 00:01 am »

Hola daryo yo para saber si soy administrador hice algo parecido pero yo intento escribir en el registro y si no me devuelve error 5 soy administrador pero esto no es nada  ;D A mi no me basta solo con esto quiero mas.

x64Core encontre el libro parte 1 6 edicion pero son cosas de windows y no hay codigo c/c++ o es esto lo que necesito para entender lo luego en c++?

http://infoman.teikav.edu.gr/~stpapad/WindowsInternalsPart16thEdition.pdf

Parece estar bien y se ve que te explican muchas.
Dentro del libro recomiendan esto para saber mas como usar la windows api con c++

http://read.pudn.com/downloads156/ebook/693901/Windows%20via%20C%E3%80%81C%2B%2B,%20Fifth%20Edition.pdf

Todavia no lo he visto pero puede que explican lo que quiero.

Saludos
« Última modificación: 15 Junio 2014, 00:08 am por patilanz » En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Seguridad windows
« Respuesta #4 en: 15 Junio 2014, 01:43 am »

Citar
Hola daryo yo para saber si soy administrador hice algo parecido pero yo intento escribir en el registro y si no me devuelve error 5 soy administrador pero esto no es nada  ;D A mi no me basta solo con esto quiero mas.

leyendo un poco la msdn( lo que hace falta tener un buen nivel de ingles :-'( ) y probando algunas cosas con el  registro como escribir en el. y al parecer funciona :


Código
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. int permisosadm();
  8.  
  9. int main()
  10. {
  11.  
  12.    if(permisosadm()==1)
  13.    {
  14.        HKEY lol;
  15.  
  16.        SECURITY_INFORMATION asd;
  17.        PSECURITY_DESCRIPTOR nw;
  18.        DWORD resultado;
  19.        RegGetKeySecurity(lol,asd,nw,&resultado);
  20.        const char val[]="valor";
  21.        RegCreateKeyEx(HKEY_LOCAL_MACHINE,"software\\nuevo",0,NULL,0,KEY_WRITE,NULL,&lol,NULL);
  22.        //RegSetValue(lol,"jaja",REG_SZ,"prueba",0);
  23.        RegSetValueEx(lol,"prueba",0,REG_SZ,(LPBYTE)val,sizeof(val));
  24.        cout << "ya tengo permisos de administrador :D" << endl;
  25.  
  26.    }
  27.    else
  28.    {
  29.        return 0;
  30.    }
  31.    system("pause");
  32.    return 0;
  33. }
  34.  
  35.  
  36. int permisosadm()
  37. {
  38.  
  39.    HANDLE archivo;
  40.    archivo=CreateFile("C:\\random",GENERIC_READ|GENERIC_WRITE ,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
  41.    if(archivo==INVALID_HANDLE_VALUE)
  42.    {
  43.        CloseHandle(archivo);
  44.        TCHAR dir[2045];
  45.        GetModuleFileName(NULL,dir,2045);
  46.        ShellExecute(NULL,"runas",dir,NULL,NULL,SW_SHOWNORMAL);
  47.        return 0;
  48.    }
  49.    CloseHandle(archivo);
  50.    return 1;
  51.  
  52.  
  53. }

« Última modificación: 15 Junio 2014, 01:45 am por daryo » En línea

buenas
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: Seguridad windows
« Respuesta #5 en: 15 Junio 2014, 01:57 am »

Me refiria a algo como esto:

Código
  1. int result; RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&clave);
  2. result=RegSetValueEx(clave,"windows",0,REG_SZ,(BYTE *)dir,sizeof(dir));
  3. if(result==5)
  4.    cout << "No eres administrador :-(";
  5.  
En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Seguridad windows
« Respuesta #6 en: 15 Junio 2014, 02:02 am »

mm no lo veo demasiado complicado de adaptar jeje ya pudiendo escribir en HKEY_LOCAL_MACHINE.

tambien puedes usar hkey_current_user\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run asi no necesitaras permisos de admin.

En línea

buenas
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Seguridad windows
« Respuesta #7 en: 15 Junio 2014, 03:22 am »

Hola daryo yo para saber si soy administrador hice algo parecido pero yo intento escribir en el registro y si no me devuelve error 5 soy administrador pero esto no es nada  ;D A mi no me basta solo con esto quiero mas.

x64Core encontre el libro parte 1 6 edicion pero son cosas de windows y no hay codigo c/c++ o es esto lo que necesito para entender lo luego en c++?

http://infoman.teikav.edu.gr/~stpapad/WindowsInternalsPart16thEdition.pdf

Parece estar bien y se ve que te explican muchas.
Dentro del libro recomiendan esto para saber mas como usar la windows api con c++

http://read.pudn.com/downloads156/ebook/693901/Windows%20via%20C%E3%80%81C%2B%2B,%20Fifth%20Edition.pdf

Todavia no lo he visto pero puede que explican lo que quiero.

Saludos
Lo que estas buscando es copy-paste?  Ese libro te explica como Windows funciona no hay necesitdad de copy-paste.


Me refiria a algo como esto:

Código
  1. int result; RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&clave);
  2. result=RegSetValueEx(clave,"windows",0,REG_SZ,(BYTE *)dir,sizeof(dir));
  3. if(result==5)
  4.    cout << "No eres administrador :-(";
  5.  
Eso no realmente te dice que eres administrador o no. mejor OpenProcessToken>GetTokenInformation.TokenIsElevated
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: Seguridad windows
« Respuesta #8 en: 15 Junio 2014, 12:40 pm »

daryo gracias ahora no me pide permisos de administrador pero no me entere porque en local_machine si y en el otro no?

x64Core no quiero copy/paste y tienes razón. Ahora al pensar lo creo que es mejor leer me el libro y luego al saber como funciona windows con mas detalles ya supongo que lo podre adaptar al c++ y entonces me leere las funciones de la API.
En línea

daryo


Desconectado Desconectado

Mensajes: 1.071



Ver Perfil WWW
Re: Seguridad windows
« Respuesta #9 en: 15 Junio 2014, 17:38 pm »

Citar
daryo gracias ahora no me pide permisos de administrador pero no me entere porque en local_machine si y en el otro no?

porque key_current_user es solo del usuario no de todo el sistema si inicia desde otro usuario no se va a cargar el programa.
En línea

buenas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Seguridad Windows y VB
Programación Visual Basic
FireFox_New 0 559 Último mensaje 3 Abril 2006, 18:38 pm
por FireFox_New
Seguridad Windows??
Windows
N@5h 2 1,675 Último mensaje 20 Mayo 2010, 12:57 pm
por Randomize
Seguridad windows
Seguridad
VictorJ00 0 2,301 Último mensaje 5 Abril 2012, 21:58 pm
por VictorJ00
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines