Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: noele1995 en 13 Junio 2012, 22:27 pm



Título: Creando editor de servidor VB6
Publicado por: noele1995 en 13 Junio 2012, 22:27 pm
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
  1. '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
  2. '               EN EL FORMULARIO                   '
  3. '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
  4. Option Explicit
  5.  
  6. Private Sub Form_Load()
  7. MsgBox variableA 'Comprobamos que las constantes
  8. MsgBox variableB 'han sido modificadas
  9. End Sub
  10.  
  11. '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
  12. '     EN UN MODULO  LLAMADO mVariablesEdicion      '
  13. '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
  14.  
  15. Option Explicit
  16.  
  17. Public Const variableA        As String = "          " 'CONSTANTE DE 10 CARACTERES
  18. 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.

(http://desmond.imageshack.us/Himg543/scaled.php?server=543&filename=50806847.png&res=landing)         (http://desmond.imageshack.us/Himg267/scaled.php?server=267&filename=74332260.png&res=landing)

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.

(http://desmond.imageshack.us/Himg855/scaled.php?server=855&filename=80205241.png&res=landing)

(http://desmond.imageshack.us/Himg839/scaled.php?server=839&filename=44990078.png&res=landing)

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
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4. Dim strTemp     As String
  5.  
  6. Open App.Path & "\Stub.exe" For Binary As #1    'Abrimos el stub
  7.    strTemp = Space$(LOF(1))                    'Creamos un buffer con su tamaño
  8.    Get #1, , strTemp                           'Obtenemos todo el stub en strTemp
  9. Close #1                                        'Cerramos el stub
  10.  
  11. Kill (App.Path & "\Stub.exe")                   'Eliminamos el stub
  12.  
  13. 'Aqui modificamos la zona donde estan escritas las constantes
  14.        '   Offset Longitud         Lo que queremos introducir pasandolo por una funcion que nos añade loscaracteres nulos
  15. Mid$(strTemp, 6113, 20) = InsertarNulos("VARIABLE A")   'RECORDAR QUE NO SE PUEDEN INTRODUCIR MAS CARACTERES QUE LOS DE LA CONSTANTE
  16. 'La segunda constante
  17. Mid$(strTemp, 6141, 20) = InsertarNulos("VARIABLE B")   'RECORDAR QUE NO SE PUEDEN INTRODUCIR MAS CARACTERES QUE LOS DE LA CONSTANTE
  18.  
  19. Open App.Path & "\Stub.exe" For Binary As #1    'Creamos un nuevo stub y lo abrimos
  20.    Put #1, , strTemp                           'Le escribimos la variable strTemp
  21. Close #1                                        'Cerramos y terminamos
  22. End Sub
  23.  
  24. Function InsertarNulos(ByVal strOriginal As String) As String
  25. Dim Temp        As String
  26. Dim i               As Long
  27. If Not Len(strOriginal) > 0 Then Exit Function
  28.  
  29. For i = 1 To Len(strOriginal)
  30.    Temp = Temp & Mid$(strOriginal, i, 1) & Chr$(0)
  31. Next i
  32.  
  33. InsertarNulos = Temp
  34. 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.


Título: Re: Creando editor de servidor VB6
Publicado por: Karcrack en 14 Junio 2012, 11:39 am
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.


Título: Re: Creando editor de servidor VB6
Publicado por: [Zero] en 14 Junio 2012, 11:44 am
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.


Título: Re: Creando editor de servidor VB6
Publicado por: noele1995 en 14 Junio 2012, 14:45 pm
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.


Título: Re: Creando editor de servidor VB6
Publicado por: x64core en 15 Junio 2012, 20:19 pm
 :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 :|


Título: Re: Creando editor de servidor VB6
Publicado por: Иōҳ en 16 Junio 2012, 04:45 am
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.