Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Manibal_man en 23 Julio 2005, 18:59 pm



Título: Proyecto "Registry Stealth"
Publicado por: Manibal_man en 23 Julio 2005, 18:59 pm
Buenas gente... A alguien se le ocurre como hacer en vb para crear un programa que "vele" x el registro?, es decir, que proteja las entradas Run, Run-, RunOnce, etc.... que quede residente y que avise cuando un prog quiere escribir algo alli...

la verdad no se me ocurre como hacerlo... pero vi que el bitdefender lo trae y me gustó la idea

Saludos!


Título: Re: Proyecto "Registry Stealth"
Publicado por: Xpeed en 23 Julio 2005, 20:58 pm
pues aki te cito un texto que creo que te puede ayudar en el momento de crear tu aplicacion .... no es especificamente que proteja las entradas que mencionas pero puede que te ayude

Citar
Algunas veces puede que sea necesario bloquear el registro de Windows para impedir que otros usuarios accedan a él y puedan modificar configuraciones.
Esta opción es un poco complicada ya que al hacerlo tampoco nos dejará acceder al registro, pero no hay que preocuparse porque primero veremos como hacer para bloquear el registro y luego como haremos para desbloquearlo.
 
Para deshabilitar el registro de Windows:
Hacemos clic en el botón Inicio y luego en Ejecutar
Escribimos la palabra Regedit y pulsamos el botón Aceptar
Ahora en el registro de Windows buscamos la clave HKEY_CURRENT_USER/Software Microsoft/Windows/CurrentVersion/Policies/System.
En la ventana de la derecha creamos un nuevo valor DWORD y le damos el nombre DisableRegistryTools
Hacemos doble clic sobre él y le damos el valor  "1" para deshabilitar las funciones de edición del registro.
Una vez realizada esta operación ya nadie podrá acceder al registro de Windows, hasta que no lo volvamos a activar
 
Para habilitar el registro de Windows:
Abrimos el bloc de notas y escribimos lo siguiente:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\system] "DisableRegistryTools"=dword:00000000


Ahora guardamos el bloc de Notas con el nombre unlock.reg y a partir de ahora cuando queramos habilitar el registro de Windows, después de haberlo deshabilitado solo tendremos que hacer doble clic sobre el archivo que acabamos de crear unlock.reg.
 
Así de esta forma mi consejo es que primero crees el archivo unlock.reg y luego deshabilites el registro.

un saludo ;)


Título: Re: Proyecto "Registry Stealth"
Publicado por: Manibal_man en 23 Julio 2005, 21:43 pm
bueno, gracias... el tema es que lo que mas me interesa es saber como "interceptar" el pedido de "agregado de clave" para frenarlo, avisar, y despues dejarlo agregarse o no...

espero que alguien me pueda dar una mano... porque la verdad estoy medio en bolas... igual sigo buscando, si encuentro algo lo posteo

saludos!


Título: Re: Proyecto "Registry Stealth"
Publicado por: Manibal_man en 23 Julio 2005, 22:07 pm
Bueno, creo que me voy acercando, estuve buscando en el MSDN, y encontre una api "advapi32.dll" que con la funcion "RegNotifyChangeKeyValue Lib" podria llegar a servir, el tema es que no se si con esta funcion puedo encontrar modificaciones hechas x otro programa, o solo con otra funcion de la API... se entiende?
se supone que la funcion hace esto: The RegNotifyChangeKeyValue function notifies the caller about changes to the attributes or contents of a specified registry key.

Esta buenisimo, pero cuando la clave a agregar es creada x otro prog tambien?

confundido... :S

Saludos


Título: Re: Proyecto "Registry Stealth"
Publicado por: Slasher-K en 24 Julio 2005, 00:16 am
Con RegNotifyChangeKeyValue cada vez que se modifique la clave que se está monitoreando te va a avisar. Necesitas crear un objeto Event con CreateEvent, entonces lo usas en la llamada a RegNotifyChangeKeyValue. Luego con WaitForSingleObject esperas a que el objeto Event esté en signaled (cuando WaitForSingleObject devuelva WAIT_OBJECT_0), esto significa que se realizó una modificación en el registro entonces podrás tomar las desiciones necesarias.

No te olvides de volver el evento a su estado original usando ResetEvent para poder seguir monitoreando la clave.

Saludos.


Título: Re: Proyecto "Registry Stealth"
Publicado por: Manibal_man en 24 Julio 2005, 02:06 am
okkkkkkkkkkkkas, ya lo hice en C++, veremos como queda en visual.

chas gracias

Saludos


Título: Re: Proyecto "Registry Stealth"
Publicado por: Manibal_man en 24 Julio 2005, 02:11 am
Otra pregunta, tengo que abrirla primero con RegOpenKey?


Título: Re: Proyecto "Registry Stealth"
Publicado por: Slasher-K en 24 Julio 2005, 02:27 am
Si no va a ser una de las claves principales (HKLM, HKCU, etc) si hay que abrirla.

Saludos.


Título: Re: Proyecto "Registry Stealth"
Publicado por: Manibal_man en 24 Julio 2005, 06:05 am
Pero no se como llamar a las funciones en vb  :-[... como defino los structs en vb?

sisi.. me da verguenza preguntar esto.. :(

Saludos!


Título: Re: Proyecto "Registry Stealth"
Publicado por: Slasher-K en 24 Julio 2005, 06:29 am
Las estructuras se crean con la palabra clave Type, pero en este caso no necesitas usar ninguna.

Te dejo el código de ejemplo ya que es muy útil y no se había visto antes en el foro.

Código:
'
'Coded by Slasher
'

Option Explicit

Public Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (ByVal lpEventAttributes As Long, ByVal bManualReset As Long, ByVal bInitialState As Long, ByVal lpName As String) As Long

Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long

Public Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long

Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_LOCAL_MACHINE = &H80000002

Public Const KEY_NOTIFY = &H10

Public Const REG_OPENED_EXISTING_KEY = &H2
Public Const REG_NOTIFY_CHANGE_NAME = &H1
Public Const REG_NOTIFY_CHANGE_LAST_SET = &H4

Public Const DEFKEY = "Software\" 'Clave que se quiere monitorear.

Public Cancel As Boolean

Sub RegMon()

        Dim hEvent&
        Dim hKey&
        Dim r&

NewTest:
  'Crea un evento para responder a las modificaciones del registro.
  '
  hEvent = CreateEvent(0&, True, 0, vbNullString)
 
  'Abre la clave.
  '
  r = RegCreateKeyEx(HKEY_CLASSES_ROOT, DEFKEY, 0, vbNullString, 0, _
                     KEY_NOTIFY, 0, hKey, REG_OPENED_EXISTING_KEY)
 
  'Inicia el monitoreo de la clave.
  '
  r = RegNotifyChangeKeyValue(hKey, True, _
                              REG_NOTIFY_CHANGE_NAME Or _
                              REG_NOTIFY_CHANGE_LAST_SET, _
                              hEvent, True)
 
  Do While WaitForSingleObject(hEvent, 10)
    'Espera que se modifique, agregue, o elimine
    'algún valor de la clave.
    '
    If Cancel Then
      'Cancelar la espera.
      '
      Exit Sub
    End If
   
    DoEvents
  Loop
 
  'Si se modifica la clave...
  '
  If Not Cancel Then
    Stop
  End If
 
  r = RegCloseKey(hKey)
  r = CloseHandle(hEvent)
 
GoTo NewTest  'Vuelve a comenzar el monitoreo.

End Sub

El código se ejecutará hasta que se establezca la variable global Cancel a True.

Saludos.


Título: Re: Proyecto "Registry Stealth"
Publicado por: Manibal_man en 24 Julio 2005, 08:36 am
Vos sabes como te quiero Slasher??

Grax, en serio

Manibal_Man


Título: Re: Proyecto "Registry Stealth"
Publicado por: Satanic_Brain en 25 Julio 2005, 00:54 am
Buenas, leyendo esto me surgió una pregunta

Que variable habria que verificar para que indique si se modifico o no el registro? o sea para crear la condicion...



SB


Título: Re: Proyecto "Registry Stealth"
Publicado por: Satanic_Brain en 25 Julio 2005, 17:33 pm
Please si alguien me pudiera contestar....

es muy dificil?

Gracias


Título: Re: Proyecto "Registry Stealth"
Publicado por: Slasher-K en 26 Julio 2005, 00:14 am
Ninguna variable, si sale del bucle es porque se modifico el registro.

Saludos.


Título: Re: Proyecto "Registry Stealth"
Publicado por: Satanic_Brain en 26 Julio 2005, 01:31 am
pero no entiendo... lo hago asi y no me anda...

despues de Loop puse
msgbox "El registro se ha modificado"

pero modifico el registro y no aparece el msgbox...

que puedo estar haciendo mal?


Título: Re: Proyecto "Registry Stealth"
Publicado por: Slasher-K en 26 Julio 2005, 01:34 am
La clave que esta monitoreando es "HKEY_CLASSES_ROOT\" & DEFKEY, que seria "HKEY_CLASSES_ROOT\Software" (no me preguntes por que puse esa de ejemplo xD).

Cambia la clave a la que quieras monitorear y listo.

Saludos.