[BRAINSTORMING] KPC v3 (Karcrack Project Crypter)

Iniciado por Karcrack, 20 Enero 2011, 22:23 PM

0 Miembros y 3 Visitantes están viendo este tema.

_katze_

pero seria bueno como reto jejeje y no digo q sea comunitario

xpro

Para mi beneficio, te diría que buscaras alternativas a las típicas cadenas que todos usamos, como por ejemplo..

El típico Split, se podría crear una función nueva o alguna alternativa a esto ( que no sea el resource, que salta kav. ). Por otra parte se podría intentar aquello de ejecutar las strings desde memoria..

Lo de ofuscar las api's, pues es una muy buena idea espero que funcione perfectamente. Por otro lado, puesto que este programa casi siempre se utiliza para ofuscar el code de crypters ( generalmente ), buscaría alguna manera de ofuscar los ya imposible de Fuddear runpe's.. y bueno, poco más te puedo decir creo que cualquier idea que se te ocurra a tí siempre será mucho mejor que lo que yo pueda decir.

Un saludo !


PD: Aquí, yo al menos en vb6 te echaba de menos..

The Swash

Bueno Karcrack, digamos que puedo dar una pequeña idea que no reemplazaria al ofuscamiento de API pero depronto sea útil.

Recuerdo que hace un tiempo cuando usaba VB (pasado) un día Avira detectaba DllFunctionCall, que justamente iba en el invoke, al modificar la libreria MSVBVM60 uno de sus caracteres Avira se iba, pero todo quedaba no funcional.

Pero resulta que la declaración de esa DLL no se ocupa hasta llamar la función entonces digamos que se puede hacer algo al abrir el ejecutable, sería cambiar en la declaración la libreria por xDDD.DLL un ejemplo, y cuando ejecuten el archivo llamar a un pequeño Copy(Encryptado("MSVBVM60.DLL"),"xDDD.DLL").

Te recalco algunas funciones que en si son detectadas
Split - Kaspersky
LOF - Avira, A-squared
App.Path + App.ExeName + ".exe", Avira creo.

Strings detectadas como "Stub", "HKCU../CurrentVersion/Run"

Espero de algo te sirva, Animo con eso Karcrack!

Como te digo es una pequeña experiencia que quizás sirva.
Un saludo y gran iniciativa como siempre Karcrack!

PD: Que detalle el de Kruzty  ;D

mixer

Ideas para considerar:

- Agregar funciones alternativas a Split, LOF y Apertura, lectura de archivos.
- Que pueda agregar una buena cantidad de API reales pero inofensivas, o API falsas
- Varios modulos o forms con código Basura
- Reemplazar cadenas de Constantes
- Algo que muchos AV detectan la asignacion de valores constantes  podriamos ofuscarlo un poco

Por ejemplo si me detecta Var1 = &H4
puedo usar:

Var2 = &H4 + 15
Var1 = Var2 - 15

al final Var1 tomará el mismo valor. Con esos sacas a Nod, MSEssentials y varios más.

Karcrack

Es interesante la ofuscación de constantes :) Aunque lo de agregar módulos/funciones basura no me gusta la verdad... para mi es importante que el codigo resultante tenga una lectura tan sencilla como estaba antes... aunque lo que dices de meter APIs a diestro y siniestro puede ser útil :)

Ah! Otra idea que tuve es permitir el cambio de convención a la hora de llamar a las APIs, es decir, en vez de importarlas directamente desde el código (DllFunctionCall) hacerlo desde la IAT (TypeLiBrary)

Ya tengo una buena lista :) Creo que este fin de semana empezaré con los algoritmos :)

F3B14N

#15
Buenas, algo chiquito pero bueno seria, remplazar cualquier valor numérico por su equivalente string, pero llamando a la funcion Val() para que retorne lo que se necesita:

bB(0) = &H1 >>> bB(0) = Val("&H1")
call dd(1,2) >>> call dd(Val("&H1"),Val("&H2")
, y agregarle la posibilidad de cifrar ese string tambien :P

Despues estaria muy bueno agregale algo que limpie la ***** que agrega VB6, jugar con las estructuras que utilizo BlackZero (sino me equivoco), lo pensé hace tiempo, y creo que seria posible.

Que anden bien, Saludos  :)

Karcrack

Cita de: F3B14N en 26 Enero 2011, 16:07 PM
Despues estaria muy bueno agregale algo que limpie la ***** que agrega VB6, jugar con las estructuras que utilizo BlackZero (sino me equivoco), lo pensé hace tiempo, y creo que seria posible.
Ese tipo de modificaciones serian sobre el fichero compilado y en este proyecto me intereso en el codigo :)

Por cierto, estuve haciendo un poco de research :P y lanzo una buenisima idea para aquel que tenga tiempo :P... Desde el header de un fichero compilado de VB6 se puede acceder a las cadenas de las APIs importadas, se cifran, se modifica tambien el header para que haga al Loader de VB6 ejecutar una pequeña shellcode que descifrará las cadenas de las APIs... para que quede mas claro:

  • Abrimos el fichero compilado
  • Leemos la cabecera del VB6 y recorremos las cadenas de las APIs cifrando cada una
  • Inyectamos una shellcode en uno de los muchos huecos que quedan en el ejecutable
  • Modificamos la cabecera del VB6 para que haga ejecutar al Loader nuestra shellcode primero
  • La shellcode se encargará de descifrar las cadenas y saltar al EntryPoint original que había en el header del VB6

De esta forma las APIs serian descifradas en Runtime y en Scantime nuestras APIs serian irreconocibles :)

79137913

HOLA!!!

MMM, no se si es una buena idea pero otra forma no seria:

CODIGO ORIGINAL:
Código (vb) [Seleccionar]
Private Sub Form_Load()
        MsgBox "hola"
End Sub



CODIGO OFUSCADO:
Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim hola As Boolean
    hola = False ' por las dudas XD
    If hola Then
hola:
        MsgBox "hola"
    End If
    GoTo hola
End Sub


Espero una respuesta para ver si sirvio o no.

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

F3B14N

Cita de: Karcrack en 26 Enero 2011, 16:52 PM
Ese tipo de modificaciones serian sobre el fichero compilado y en este proyecto me intereso en el codigo :)

Por cierto, estuve haciendo un poco de research :P y lanzo una buenisima idea para aquel que tenga tiempo :P... Desde el header de un fichero compilado de VB6 se puede acceder a las cadenas de las APIs importadas, se cifran, se modifica tambien el header para que haga al Loader de VB6 ejecutar una pequeña shellcode que descifrará las cadenas de las APIs... para que quede mas claro:

  • Abrimos el fichero compilado
  • Leemos la cabecera del VB6 y recorremos las cadenas de las APIs cifrando cada una
  • Inyectamos una shellcode en uno de los muchos huecos que quedan en el ejecutable
  • Modificamos la cabecera del VB6 para que haga ejecutar al Loader nuestra shellcode primero
  • La shellcode se encargará de descifrar las cadenas y saltar al EntryPoint original que había en el header del VB6

De esta forma las APIs serian descifradas en Runtime y en Scantime nuestras APIs serian irreconocibles :)

Es facil para los que saben como hacer shellcodes, yo sé muy pocas instrucciones y por ahi me quedo.. :-(

BlackZeroX

.
@Karcrack.

Se podria usar parte del codigo de [Zero] ( End Analisis de Malware lo publico ). Eso lo podria hacer quien supiera ASM para que ese pequeño "Stub" no pesara tanto.

Dulces Lunas!¡.
The Dark Shadow is my passion.