Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: **Aincrad** en 21 Julio 2018, 03:11 am



Título: Buscar valores en el Registro de windows....
Publicado por: **Aincrad** en 21 Julio 2018, 03:11 am
Hola foro, Como dice el titulo quiero Buscar valores en el regedit,

Ejemplo :

Código:
Virus >> wscript.exe //B "C:\Users\S4LXenox\AppData\Local\Temp\VirusUSB.vbs"

agrego un virus que se auto inicio. por medio una app quiero Que si en el valor:

wscript.exe //B "C:\Users\S4LXenox\AppData\Local\Temp\VirusUSB.vbs"

sea detectado por mi app y me pregunte si quiere que elimine esa entrada, para el vbs no se ejecute.



Bueno lo primero que imagino es listar en un listbox mis app que se auto inician, Bueno eso es facil ya que es casi lo mismo que la duda que tenia hace tiempo de como verificar los programas instalados
(link (https://foro.elhacker.net/net/como_saber_si_tengo_un_programa_instalado_vbnet-t479845.0.html)).



1)   En-listo mis apps que se auto inician:

Código
  1. Imports Microsoft.Win32
  2.  
  3. Public Class Form1
  4.    Private Sub ListarHKCU()
  5.        Dim key As RegistryKey
  6.        Dim valueNames As String()
  7.        Dim currentUser As RegistryKey = Registry.CurrentUser
  8.        Dim name As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
  9.        Dim str2 As String = "Software\Microsoft\Windows\CurrentVersion\Runonce"
  10.        Try
  11.            key = currentUser.OpenSubKey(name, True)
  12.            valueNames = key.GetValueNames
  13.            Dim str3 As String
  14.            For Each str3 In valueNames
  15.                Try
  16.  
  17.                    ListBox1.Items.Add((str3 & " >> " & key.GetValue(str3).ToString))
  18.                Catch ex As Exception
  19.                End Try
  20.            Next
  21.        Catch ex As Exception
  22.        End Try
  23.        Try
  24.            key = currentUser.OpenSubKey(str2, True)
  25.            valueNames = key.GetValueNames
  26.            Dim str3 As String
  27.            For Each str3 In valueNames
  28.                Try
  29.                    ListBox1.Items.Add((str3 & " >> " & key.GetValue(str3).ToString))
  30.                Catch ex As Exception
  31.                End Try
  32.            Next
  33.        Catch ex As Exception
  34.        End Try
  35.    End Sub
  36.  
  37.  
  38.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  39.        ListBox1.Items.Clear()
  40.        ListarHKCU()
  41.    End Sub
  42. End Class


Lo segundo seria Buscar en ese listbox la cadena de texto "Wscript.exe"

Bueno en esta parte ya he intentado con : FindMyString pero no logra reconocer ese string.

Busque una solución algo floja, osea use un textbox en vez de el Listbox. y para detectar el virus use el siguiente codigo:

Código
  1. Dim APP_string As String() = {"wscript", "Cmd"}
  2.        For Each elemento As String In APP_string
  3.            If TextBox1.Text.Contains(elemento) Then
  4.                'AQUI VA EL CODIGO DEL MENSAJE Y LA OPCION PARA BORRAR EL VIRUS DEL REGISTRO
  5.            End If
  6.        Next

Ahora Es la parte en la que necesito ayuda, es en la que borra el auto inicio del vbs, osea borra esa entrada del regedit.



Bueno he puesto como lo he intentado haber si me pueden echar una mano.

Basicamente lo que quiero es Buscar en donde inician las app por medio del regedit :

Código:
SOFTWARE\Microsoft\Windows\CurrentVersion\Run

y hay busca archivos script , Que por lo general usan en los valores : "CMD /C" o "wscript.exe //B" para ejecutarse y cuando encuentre ese string en el regedit elimine esa entrada.

Gracias de antemano. si logro hacerlo lo posteare.


PD: Si se preguntan para que estoy haciendo esto , es por que llevo ya un tiempo desarrollando un motor de antiviurs . y apenas he logrado esto :
https://ibb.co/geS69J (https://ibb.co/geS69J) Cuando lo termine , (si es q lo termino subire el codigo fuente aqui)




Título: Re: Buscar valores en el Registro de windows....
Publicado por: Eleкtro en 29 Julio 2018, 13:09 pm
¿Buscar y eliminar valores del registro de Windows?, de nuevo te invito a que le eches un ojo a...:

  • Librería de Snippets para VB.NET !! (https://foro.elhacker.net/net/indice_de_la_libreria_de_snippets_para_vbnet-t485444.0.html;msg2167235#msg2167235)

concretamente en el año 2015...

  • https://foro.elhacker.net/net/libreria_de_snippets_para_vbnet_compartan_aqui_sus_snippets-t378770.0.html;msg2003658#msg2003658

Este código de aquí abajo lo he hecho usando mi librería comercial ElektroKit, lo comento por que los nombres de los miembros de la clase cambian un poco con la clase que publiqué en el año 2015 en ese post, pero supongo que se entenderá igualmente el modo de empleo que se debe aplicar:

Código
  1. Imports Microsoft.Win32
  2. Imports ElektroKit.Core.System.Types
  3. Imports ElektroKit.Core.System.Tools

Código
  1. Dim regInfos As IEnumerable(Of RegInfo) =
  2.    RegistryUtil.FindValue(RegistryView.Default,
  3.                           rootKeyName:="HKCU",
  4.                           subKeyPath:="Software\Microsoft\Windows\CurrentVersion\Run",
  5.                           valueName:="WScript",
  6.                           matchFullValueName:=False,
  7.                           ignoreCase:=True,
  8.                           searchOption:=SearchOption.TopDirectoryOnly)
  9.  
  10. For Each regInfo As RegInfo In regInfos
  11.    Dim sb As New StringBuilder()
  12.    sb.AppendLine(regInfo.RootKeyName)
  13.    sb.AppendLine(regInfo.SubKeyPath)
  14.    sb.AppendLine(regInfo.ValueName)
  15.    sb.AppendLine(regInfo.ValueData?.ToString())
  16.    Console.WriteLine(sb.ToString())
  17. Next regInfo

...eso devolvería cualquier valor que contenga el nombre "WScript". (ojo, el nombre a buscar no acepta el uso de *wildcards* como en la CMD)

Si quieres algo más sencillito, menos tedioso, pues... sinceramente solo con buscar en Google puedes encontrar miles de resultados sobre como buscar valores de registro en .NET.

Saludos!


Título: Re: Buscar valores en el Registro de windows....
Publicado por: **Aincrad** en 30 Julio 2018, 19:13 pm
Citar
Código
  1. Dim regInfos As IEnumerable(Of RegInfo) =
  2.    RegistryUtil.FindValue(RegistryView.Default,
  3.                           rootKeyName:="HKCU",
  4.                           subKeyPath:="Software\Microsoft\Windows\CurrentVersion\Run",
  5.                           valueName:="WScript",
  6.                           matchFullValueName:=False,
  7.                           ignoreCase:=True,
  8.                           searchOption:=SearchOption.TopDirectoryOnly)
  9.  
  10. For Each regInfo As RegInfo In regInfos
  11.    Dim sb As New StringBuilder()
  12.    sb.AppendLine(regInfo.RootKeyName)
  13.    sb.AppendLine(regInfo.SubKeyPath)
  14.    sb.AppendLine(regInfo.ValueName)
  15.    sb.AppendLine(regInfo.ValueData?.ToString())
  16.    Console.WriteLine(sb.ToString())
  17. Next regInfo


Justo lo q necesitaba gracias de nuevo!

PD:  estaba apunto en hacer un post preguntando que era de ti? ya que es raro que te desaparezcas por tanto tiempo XD  ;D. me imagino que estarías muy ocupado! . Gracias por el code!  ;-)