Overwrite Technique In The Registry[Dirigido A Expertos Del VBS].

Iniciado por Leminy, 20 Septiembre 2011, 03:59 AM

0 Miembros y 1 Visitante están viendo este tema.

Leminy

Hola A Todos, Hoy Quiero Compartirles Una "Tecnica" Que Estuve Intentando Sacar Desde Hace Ya Varios Meses.

Una Vez Pense Que, En Lo Que Respecta Windows Vista y Windows 7, No Se Puede Escribir En El Registro(Regedit/Regedt32) Mediante Batch ó VBS Si No Se Le Dan Los Permisos Necesarios Al Programa("BAT,CMD,VBS,VBE"), Simplemente No Te Lo Dejara Hacer, Asi Que Debia Haber Algun Metodo... Asi Que Me Puse A Penser Durante Meses(Obvio No Todo El Dia, Tenia Que Ir A Clases y Demas):
"¿Como Se Puede Escribir Una Valor En El Registro Sin Los Permisos Necesarios Para El Programa?", Hasta Que Se Me Ocurrio Esto:

1; Necesitaba Una Referencia De, Por Ejemplo, Todos Los Valores Que Existen Dentro De La Subclave "Run".

2; Necesitaba Listarlo... ¿Pero Como?, Si Ni En BATCH ó VBS Existe Una Función Asi.

Entonces Haciendo Uso De La Combinación De Los Lenguajes, Obtuve Algo Como Lo Que Uds. Podran Obtener Si Prestan Atención:

1; Copien El Codigo BATCH Siguiente En Un Archivo y Ese Mismo Ponganlo En Un Lugar Donde Pueda Crear Archivos.
(Ejemplo:"%Temp%\Su_Carpeta\ACA_El_BAT.BAT" ó "%Desk%\Su_Carpeta\ACA_El_BAT.BAT").
Nota: %Temp%="C:\Users\Nombre_De_Usuario\AppData\Local\Temp"
Nota: %Desk%="C:\Users\Nombre_De_Usuario\Desk"


1; @ECHO OFF
2; REG EXPORT HKLM\Software\Microsoft\Windows\CurrentVersion\Run GL.TXT /y
3; TYPE GL.TXT>LS.TXT
4; DEL /F /Q GL.TXT
5; @EXIT


Explico... La 2° Linea Sirve Para Exportar Los Valores y Las Subclaves Dentro de "Run"(Solo Nos Importa Los Valores En Si) Al Archivo: "GL.TXT".
Como Todos Sabran En VBS "No Deja Leer Lineas" De Archivos UNICODE y Para Mala Suerte En Ese Formato Nos Arrojan "GL.TXT", Para Lo Cual Recurrimos A La 3° Linea: Se "Leera" El Contenido De "GL.TXT" Y Lo Pasara Al Archivo "LS.TXT" En Formato ANSI! - La 4° Linea Es Solo Para Borrar El Archivo "UNICODE" No Legible Para VBS.

Asi Es Como Se Veria El Archivo: "LS.TXT":


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"egui"="\"C:\\Program Files\\ESET\\ESET Smart Security\\egui.exe\" /hide /waitservice" rem Salta Hasta Esta Linea.
"vmware-tray"="\"C:\\Program Files\\VMware\\VMware Workstation\\vmware-tray.exe\""
"BCSSync"="\"C:\\Programs\\Microsoft Office\\Office14\\BCSSync.exe\" /DelayServices"
"RTHDVCPL"="C:\\Program Files\\Realtek\\Audio\\HDA\\RtHDVCpl.exe -s"
"NeroFilterCheck"="C:\\Program Files\\Common Files\\Ahead\\Lib\\NeroCheck.exe" rem Llega A Esta Linea[Antes Del Espacio En Blanco].

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents]
@=""

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\IMAIL]
"Installed"="1"
@=""

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\MAPI]
"NoChange"="1"
"Installed"="1"
@=""

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\MSFS]
"Installed"="1"
@=""


Nota: Varia Dependiendo De Sus Programas Instalados.

Ya Obtenido El Archivo "LS.TXT", Proseguimos A "Leerlo", Para Ello Es El Siguiente Script(Archivo.vbs), Que Debe De Ser Creado Junto Al Archivo: "LS.TXT"(Deben Estar En La Misma Carpeta).


On Error Resume Next
Dim LOCKUP()
ReDim LOCKUP(256)
Set shell = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.Filesystemobject")
LOCAL = fso.GetAbsolutePathName(".\")
Set HD = fso.OpenTextFile(LOCAL & "\" & "LS.TXT",1,True)
r = 0
While(r < 3)
TADM = HD.SkipLine
r = r + 1
Wend
Do
TADM = HD.ReadLine
VAR = Len(TADM)
If VAR<>0 Then
If Err.Number=0 Then
LOCKUP(c) = TADM
c = c + 1
Else
Err.Clear
Exit Do
End If
Else
Exit Do
End If
Loop
e = c
u = c * 2
ua = u
For i=0 To c-1 Step 1
FS = InStr(1,LOCKUP(i),"=")
LOCKUP(e) = FS - 3
AX = Mid(LOCKUP(i),2,LOCKUP(e))
LOCKUP(u) = AX
u = u + 1
e = e + 1
Next
For t=ua To u-1 Step 1
EAV = shell.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\Run\" & LOCKUP(t))
MsgBox EAV,vbOKOnly+vbInformation,LOCKUP(t)
Next
HD.Close
On Error GoTo 0


Explicación:
1; Lo Que Se Hace Es Abrir El Archivo "LS.TXT" En Modo Lectura.
2; Despues Salta Tres Lineas Del Archivo("LS.TXT").
3; Usa Una Tecnica Para "Saber Cuando Terminar Las Lineas Importantes".
4; Mientras No Encuentre Una Linea En Blanco Seguira Leyendo.
5; Al Encontrarla Sale Del: "Do" Y ¡Empieza Lo Interesante!.
6; Se Inicia Un "For" Que Contara Hasta El Numero De Lineas Que Se Leyó Antes De Encontrar Una Linea En Blanco.
Dentro De Ese "For" Se Buscara El Caracter "=" Que Indica Que Hasta Alli Llega La Lectura De La Linea "1" De "c-1" Lineas Que Se Leyeron.
7; Ahora, Se Le Restan 3 Espacios A La Variable "FS" Mientras Se Guarda En "LOCKUP(e)" Ya Que No Queremos Contar Los Caracteres (=) & ("), También Se Empezara A Leer Desde El 2° Caracter De Cada Linea Por La Misma Razon.
8; Por Ende En LOCKUP(u) Se Escribira La Variable Que Almacena La Parte De La Linea Que Se Leyó(Ejemplo ---> Se Tenia: ""egui"=...." - Al Solo Leer Desde El 2° Caracter Y Restar Los 3 Espacios Desde "=", Solo Se Alamacenara: "egui" En LOCKUP(u), Sin Doble Comillado) Y Asi Lo Hara Para Cada Linea Que Se Extrajo Del Archivo: "LS.TXT".

Ahora... Si Ejecutan El "Script" Les Saldran En Un "MsgBox": 1; El Nombre De Los "Valores" Como Titulo. - 2; Su Valor En Si Como El Mensaje.

Ya Saben, Podran Tomar Los Valores Que Tenga LOCKUP(u), Haciendo Referencia Que "u" Son Las Ultimas Posiciónes Donde Se Guardaron Los Nombres De Los Valores Encontrados, Para Hacer Lo Que Querais, Como Sobreescribir El Valor De, En Mi Caso, "egui" y Poner Otra Ruta.

Esta Tecnica Va Más Orientada Para Los Programadores De Malware En VBS.  :xD

Dudas Y Sugerencias, Favor De Comentar... ;D