El avira me sigue ganando aun no lo he logrado sacar he prodabado de todo y nda ,,el stub esta fud a todos menos al gran amigo avira ,,algo q me desconcierta mucho es q al hacer dsplit al stub y analizar todo es igual detectado lo mejor es q puse como offset incial el 1 y ni asi me deja uno sin ser detectado lo q me marca es la firma TR/Dropper.Gen ,, asi q nse como saltarlo ya q no hay offset q cambiar ,le cambie el icono y la descripcion del stub pero tmp hubo resultado ,,alguna ayuda plsss!
Es una detección genérica del Avira... Es un antivirus muy paranoico...
Lo más probable es que te detecte una cabecera PE de más... o tal vez tengas el PE sin alinear...
No es el caso de realinear lamentablemente ya q no es el encryptado sino q es el stub una vez creado desde el proyecto ,,pero se q viene por el lado de la caebecera ahora q tocar nse
En ese caso es el sistema que utilizas para almacenar la información en el stub... Cual usas? EOF?
lo q hago es lo mas basico pongo un separador la informacion cifrada y luego otro separadaro con la key y por ultimo un serparador mas ,,ojo q ya me detecta el stub sin la informacion agregada (seguro q el ecryptado tmb detecta pero ya el stub es detectado)
avira detecta laa apis,pero para sacarlo de archivos binarios es un poco complicado,los metodos que se usan son todos privados,o si no los que no saben metodos,usan compresores y un par de cositas mas ::)
Cita de: lucasluks1004 en 2 Septiembre 2011, 02:48 AM
lo q hago es lo mas basico pongo un separador la informacion cifrada y luego otro separadaro con la key y por ultimo un serparador mas ,,ojo q ya me detecta el stub sin la informacion agregada (seguro q el ecryptado tmb detecta pero ya el stub es detectado)
Esa técnica es
EOF, es decir, que añades la información al final del fichero (End Of File)... Y es una técnica muy detectada...
Pero bueno, si te detecta ya el Stub sin configurar es cosa de heuristica.. es decir, que debes cifrar tus APIs... Doy por hecho que lo estas haciendo en VB6... Usa el buscador hay muchos códigos sobre el tema...
Y sí, de acuerdo con Karcrack la detección está casi segura en la sección de importaciones (Pero en VB la estructura cambia). Cifralas con algún modulo (Call API) que use como mucho RtlMoveMemory y luego mueve la referencia de esta cadena en cualquier hueco de la cabecera PE y adiós firma ;)
Lo siento por no responder antes estuve con algunos problemas en el trabajo..
Desde ya gracias por contestar!!
Karcrack ,,siempre se aprende algo nuevo jaja no sabia q se llamaba asi lo q hacia,,q otro metodo existe para insertar el codigo en el stub?.
Y si estoy usando un callapi desde el comienzo gracias a eso me quedo el avira detectando mi stub ,The Swash me gustaria q me orientes un poco si es posible obviamente como se mueve la referencia de la cadena a cualquier hueco de la cabecera PE ,,SALUDOS.
Que código utilizas para hacer las llamadas de forma dinámica? Tal vez uses uno muy quemado... te recomiendo modificar un poco esos códigos ya que enseguida los AVs les ponen firmita...
Utilizo :
Private cCall As New Clas222
Public Function CallAPI(ByVal strLib As String, ByVal strMod As String, ParamArray Params()) As Long
Dim Params2()
Params2 = Params
CallAPI = cCall.Invoke(strLib, strMod, Params2())
End Function
Private Type tAPICall
ptsLIB As Long
ptsProc As Long
lReserved As Long
lPointer As Long
lpBuffer(3) As Long
End Type
Private c_lVTE As Long
Private c_lOldVTE As Long
Private c_bvASM(&HFF) As Byte
Private Declare Function DllFunction Lib "MSVBVM60" Alias "DllFunctionCall" (ByRef typeAPI As tAPICall) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal dlen As Long)
Public Function zDoNotCall() As Long
End Function
Public Function Invoke(ByVal sLib As String, ByVal sFunc As String, Params()) As Long
Dim lPtr As Long
Dim i As Long
Dim sData As String
Dim sParams As String
Dim lMod As Long
lMod = GetAPIPtr(sLib, sFunc)
If lMod = 0 Then Exit Function
For i = UBound(Params) To 0 Step -1
sParams = sParams & "68" & GetLong(CLng(Params(i)))
Next
lPtr = VarPtr(c_bvASM(0))
lPtr = lPtr + (UBound(Params) + 2) * 5
lPtr = lMod - lPtr - 5
sData = "8B4C240851<PATCH1>E8<PATCH2>5989016631C0C3"
sData = Replace(sData, "<PATCH1>", sParams)
sData = Replace(sData, "<PATCH2>", GetLong(lPtr))
Call PutThunk(sData)
Invoke = PatchCall
End Function
Private Function GetAPIPtr(ByVal sLib As String, ByVal sProc As String) As Long
On Error Resume Next
Dim tAPI As tAPICall
Dim bvLib() As Byte
Dim bvMod() As Byte
Call Unicode2ANSI(sLib, bvLib)
Call Unicode2ANSI(sProc, bvMod)
With tAPI
.ptsLIB = VarPtr(bvLib(0))
.ptsProc = VarPtr(bvMod(0))
.lReserved = &H40000
.lPointer = VarPtr(.lpBuffer(0))
End With
GetAPIPtr = DllFunction(tAPI)
End Function
Private Sub Unicode2ANSI(ByVal sUNICODE As String, ByRef bvANSI() As Byte)
Dim i As Long
ReDim bvANSI(Len(sUNICODE))
For i = 1 To Len(sUNICODE)
bvANSI(i - 1) = Asc(Mid$(sUNICODE, i, 1))
Next i
End Sub
Private Function GetLong(ByVal lData As Long) As String
Dim bvTemp(3) As Byte
Dim i As Long
CopyMemory bvTemp(0), lData, &H4
For i = 0 To 3
GetLong = GetLong & Right("0" & Hex(bvTemp(i)), 2)
Next
End Function
Private Sub PutThunk(ByVal sThunk As String)
Dim i As Long
For i = 0 To Len(sThunk) - 1 Step 2
c_bvASM((i / (1 + 1))) = CByte("&h" & Mid(sThunk, i + 5 - 4, 1 + 1))
Next i
End Sub
Private Function PatchCall() As Long
CopyMemory c_lVTE, ByVal ObjPtr(Me), &H4
c_lVTE = c_lVTE + &H1C
CopyMemory c_lOldVTE, ByVal c_lVTE, &H4
CopyMemory ByVal c_lVTE, VarPtr(c_bvASM(0)), &H4
PatchCall = zDoNotCall
CopyMemory ByVal c_lVTE, c_lOldVTE, &H4
End Function
Lo q tmb probe es hacer un TLB para sacar esas apis del codigo pero no lo e logrado
Utiliza un código más reciente, ese esta quemadisimo
Gracias por molestarte en seguir con mis dudas!!..
Uso el el codigo q has expuesto en http://foro.elhacker.net/programacion_visual_basic/asmvb6invoke_llamas_apis_sin_declararlas_kinvokebas-t290072.0.html (http://foro.elhacker.net/programacion_visual_basic/asmvb6invoke_llamas_apis_sin_declararlas_kinvokebas-t290072.0.html) ,o ya es muy viejo?
Igual Karcrack mi stub es solo detectado por el Avira asi q aunque este quemado lo modifique lo suficiente como para q no sea detectado por la mayoria ,,pero el avira no me detecta el codigo ya q le puse 00 a todo el codigo con el hex y aun asi es detectado
Utiliza esta pequeña modificación:
http://foro.elhacker.net/programacion_visual_basic/asmvb6invoke_llamas_apis_sin_declararlas_kinvokebas-t290072.0.html;msg1489017#msg1489017
Esta mucho menos quemada :)
Si dices que te lo detecta antes de agregar la información debe ser con total seguridad cuestión de las importaciones de VB6... Ves quitando APIs a ver cuales te detecta... o mételas todas en un TLB...
Sin duda alguna cuando lo tenga fud ,,tu nombre estara entre los mas agradecidos al subirlo al foro,,intente sacar las apis con TLB las cuales solo logre sacar una sola me quedan estas q probe de mil formas y no obtuve buen resultado
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal dlen As Long)
Private Declare Function DllFunction Lib "MSVBVM60" Alias "DllFunctionCall" (ByRef typeAPI As tAPICall) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal dlen As Long)
CopyMemory esta dos veces por q la uso en distintos modulos
Edito:carge tu modulo y lo probe funciona excelente pero es mas detectado q el q tenia antes
http://cobein.com/wp/?p=567
Aquí tienes otro método para cargas las APIs dinámicamente y abajo del todo esta el TLB que necesitas :) Por cierto, no necesitas declarar dos veces RtlMoveMemory() aunque la utilices en distintos módulos... desde el TLB queda como función Public ;)
Gracias Karcrack realmente viendo los codigos q creas me doy cuenta q me esta ayudando uno de los grandes en este tema en español aunque tmb vi tu nombre en varios foros en ingles ,pero buen el link del TLB esta caido igual el codigo funciona sin el TLB ya q no sustituiste las apis ,,si me puedes pasar el .tlb se agradeceria !
http://www.cobein.com/wp/wp-content/2010/08/Zombie.zip
El dominio advancevb se cayó pero sigue estando toda la copia en el de Cobein :)
Gracias Karcrack ,estoy rehaciendo todo mi stub y cargando nuevas ideas q tenia desde antes como doble encryptacion , cargar los datos en una nueva sección y mezclar el archivo a encryptar con codigo limpio ,ahora quiero darle una alternativa a Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal dlen As Long)
Con un .tlb no se puede cargar no?
La otra opcion es reemplzarla lei tu post (http://foro.elhacker.net/programacion_visual_basic/vb6asm_alternativa_copymemoryrtlmovememorycopybytes-t300862.0.html (http://foro.elhacker.net/programacion_visual_basic/vb6asm_alternativa_copymemoryrtlmovememorycopybytes-t300862.0.html))
pero no me funciona ,o nose bien como llamarlo ,,si me podes dar una mano se agradece,,saludos
No te recomiendo esa alternativa, ya que CallWindowProc() esta bastante taggeada. Te recomiendo usar __vbaCopyBytes() con TLB ya que es como si la importase el propio VB6 y no tú.
Siento si te estoy volviendo loco con la preguntas pero no te comprendi bien q pongo Private Declare Sub CopyBytes Lib "MSVBVM60" Alias "__vbaCopyBytes" (ByVal Sz As Long, Dest As Any, Source As Any)
en un .tlb hasta ahi no hay problema pero ahora q hago tengo por ejemplo esto :
Call CopyMemory(tIMAGE_DOS_HEADER, bvBuff(0), SIZE_DOS_HEADER)
Call CopyMemory(tIMAGE_NT_HEADERS, bvBuff(tIMAGE_DOS_HEADER.e_lfanew), SIZE_NT_HEADERS)
CopyMemory tIMAGE_SECTION_HEADER, bvBuff(tIMAGE_DOS_HEADER.e_lfanew + SIZE_NT_HEADERS + SIZE_IMAGE_SECTION_HEADER * i), Len(tIMAGE_SECTION_HEADER)
Lo q hago es transformar esos codigos para usarlos con CopyBytes ,pero al ejecutarlo no hace nda pero tmp me tira ningun error
uso por ejemplo:
CopyBytes Len(tIMAGE_SECTION_HEADER), tIMAGE_SECTION_HEADER, bvBuff(tIMAGE_DOS_HEADER.e_lfanew + SIZE_NT_HEADERS + SIZE_IMAGE_SECTION_HEADER * i)
EDITO: si pongo como api en el source:
Private Declare Sub CopyBytes Lib "MSVBVM60.DLL" Alias "__vbaCopyBytes" (ByVal Size As Long, Dest As Any, Source As Any)
funciona perfecto,,pero si lo uso con .tlb hace q carga algo pero al final no hace nda ,,alguien sabe por q?
Revisa la declaración que tienes en el TLB... Es cosa de los punteros... ByRef/ByVal.. esas cosas... revisa el TLB
Gracias Karcrack ,,realmente no se en q me equivoco hice varios .tlb varie el orden en el copybytes y demas y nda siempre me carga pero no sale nda al final si puedes ver mi .tlb te lo agredecia mucho:
http://www.multiupload.com/UQ5IKACWP2 (http://www.multiupload.com/UQ5IKACWP2)
Desde ya gracias !!
Con ese TLB debería irte perfectamente :-\
Gracias Karcrack ,,seguire probando entonces me es raro ya q si la declaro en el codigo si anda cuando la borro y cargo el .tlb al ejecutarlo se queda como cargando pero al final no hace nda ,,pero buen seguire probando ..
Realemnte te estoy volviendo loco con preguntas pero tengo una mas jaja ,,al cargar tu modulo en mi stub me queda en el codigo final una importacion de la libreria MSVBVM60.DLL la cual es :"Zombie_AddRef" ,ahora mi pregunta es como puedo cambiar el nombre desde el codigo ya q no puedo sacar esa firma con ningun metodo probe moviendo de lugar la importacion y nda me sigue detectando el avast ahora el lugar nuevo en donde la movi ,,tmb probe hacer con el olly un mov byte ptr para limpiar lo cual me lo deja indetectado pero tmb no me lo deja funcional