Creando editor de servidor VB6

Iniciado por noele1995, 13 Junio 2012, 22:27 PM

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

noele1995

Bueno lo que es es un editor de servidor en vb6 pero que no necesita llevar codigo en stub, no lo he visto nunca nose si ya estara inventado pero bueno me surgio la idea y me puse a ello. No sabia muy bien si publicarlo aqui o en vb6, pero como me parece que es mas orientado a malware lo de editor de servidor y eso pues bueno, lo pongo aqui  ;D ;D

Bueno se trata de hacer constantes en el stub y despues modificar los offset en los que estan escritas estas, las constantes deben ser del tamaño maximo que se introduzca desde el servidor, si una constante solo tiene una longitud para un caracter no puedes ponerle dos...

Bueno vamos a ello

FORMULARIO STUB
Código (vb) [Seleccionar]
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
'               EN EL FORMULARIO                   '
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
Option Explicit

Private Sub Form_Load()
MsgBox variableA 'Comprobamos que las constantes
MsgBox variableB 'han sido modificadas
End Sub

'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
'     EN UN MODULO  LLAMADO mVariablesEdicion      '
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'

Option Explicit

Public Const variableA        As String = "          " 'CONSTANTE DE 10 CARACTERES
Public Const variableB        As String = "          " 'CONSTANTE DE 10 CARACTERES


Guardamos y lo compilamos.

Ahora nos toca irnos a un editor hexadecimal para buscar los offset donde estan escritas las constantes, yo lo hare con WinHex.

Abrimos nuestro Stub ya compilado y le damos a buscar texto, buscamos mVariablesEdicion para encontrar donde esta nuestro modulo.

       

Nos pondra en puntero nuestro modulo y abajo veremos ya nuestras constantes, estas estan escritas de forma que se escribe un caracter y entre medias del siguiente un caracter nulo (00), seleccionamos el primer caracter de nuestra constante y abajo nos aparecera el offset en el que esta, apuntamos el offset , hacemos esto con las dos constates.





Vale ya tenemos los dos offsets: variableA = 17E0 -- EN DECIMAL --> 6112 -- PARA ESCRIBIR LA CADENA --> 6113
                                                  variableB = 17FC -- EN DECIMAL --> 6140 -- PARA ESCRIBIR LA CADENA --> 6141

Ahora para escribir en el exe al offset se le aumenta un  numero ya que los offset empiezan por 0 y en las cadenas el primer puntero es 1.

La longitud de las constantes YA COMPILADAS es de 20 (nuestros 10 caracteres + 10 caracteres nulos (0)).

Asique vamos con editor

Código (vb) [Seleccionar]
Option Explicit

Private Sub Form_Load()
Dim strTemp     As String

Open App.Path & "\Stub.exe" For Binary As #1    'Abrimos el stub
   strTemp = Space$(LOF(1))                    'Creamos un buffer con su tamaño
   Get #1, , strTemp                           'Obtenemos todo el stub en strTemp
Close #1                                        'Cerramos el stub

Kill (App.Path & "\Stub.exe")                   'Eliminamos el stub

'Aqui modificamos la zona donde estan escritas las constantes
       '   Offset Longitud         Lo que queremos introducir pasandolo por una funcion que nos añade loscaracteres nulos
Mid$(strTemp, 6113, 20) = InsertarNulos("VARIABLE A")   'RECORDAR QUE NO SE PUEDEN INTRODUCIR MAS CARACTERES QUE LOS DE LA CONSTANTE
'La segunda constante
Mid$(strTemp, 6141, 20) = InsertarNulos("VARIABLE B")   'RECORDAR QUE NO SE PUEDEN INTRODUCIR MAS CARACTERES QUE LOS DE LA CONSTANTE
   
Open App.Path & "\Stub.exe" For Binary As #1    'Creamos un nuevo stub y lo abrimos
   Put #1, , strTemp                           'Le escribimos la variable strTemp
Close #1                                        'Cerramos y terminamos
End Sub

Function InsertarNulos(ByVal strOriginal As String) As String
Dim Temp        As String
Dim i               As Long
If Not Len(strOriginal) > 0 Then Exit Function

For i = 1 To Len(strOriginal)
   Temp = Temp & Mid$(strOriginal, i, 1) & Chr$(0)
Next i

InsertarNulos = Temp
End Function


Guardamos, copiamos el stub compilado a la carpeta donde hemos guardado el editor, lo ejecutamos, y al ejecutar el stub veremos las constantes cambiadas.

Bueno eso es todo, comenten que les parece.

Karcrack

Es un método que limita el tamaño de los datos a almacenar, pero puede ser útil cuando se busca un método simple y se sabe que lo que quieres almacenar tiene un tamaño máximo determinado.

[Zero]

Está bien que se te haya ocurrido, pero sí, hay bastante software que hace así, de echo la minoría lo hace con un stub (realmente con el stub lo hace solo malware "cutre" en VB6) . El método de hardcodear la dirección de lo que quieres cambiar funciona bien, es la forma más eficiente de hacerlo siempre que la longitud de los datos sea más o menos fija. El método más utilizado es lo de utilizar la sección de recursos para meter los datos de configuración, es la forma más fácil de hacerlo sin añadir stub.

Saludos


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

"El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche

noele1995

Si con este metodo se podria hacer directamente con el servidor de nuestro troyano, la verdad tengo que mirar lo de los archivos de recursos porque aun no lo vi. Este metodo limita el tamaño de los datos pero puedes ponerle si quieres poner una ip bastates mas caracteres. Ademas mw parecio un buen metodo en comparacion con el tipico que se da en los manuales de escribir al final del servidor, aunque este ultimo no limita la cantidad de caracteres.

x64core

 :D eso de hard codear la direccion creo que es seguro no?

pero los troyanos de nivel como lo hacen? por ejemplo el viejo poison ivy que dependiendo del tamaño así crea el server :|

Иōҳ

Hardcodear es seguro? no sé en que sentido lo digas, pero hablando de un ámbito en general, no es bueno si se desea portabilidad.

Saludos,
Nox.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net