[BRAINSTORMING] KPC v3 (Karcrack Project Crypter)

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

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

Karcrack

Hola, hola!

Ya hace mucho que no acabo ningún proyecto en VB6... tengo una gran cantidad a medias... y se me ocurrió reanudar el Karcrack Project Crypter...
Más información sobre el proyecto:
http://foro.elhacker.net/programacion_vb/sourceactualizado_karcrack_project_crypter_encripta_tus_proyectos_en_vb-t221869.0.html
http://foro.elhacker.net/analisis_y_diseno_de_malware/karcrack_project_crypter_v21_kpc-t256127.0.html


Y se me ocurrió que la mejor forma de saber que necesita la gente a la hora de hacer indetectables sus proyectos era iniciar una lluvia de ideas :)

Simplemente propongan :P Por ahora tengo esta lista:

  • Ofuscación de APIs (Varios métodos, un par secretos :P)
  • Cifrado de cadenas (Varios métodos, se me ocurrió añadir la posibilidad de usar algoritmos propios)
  • Cifrado de APIs (AKA Invoke/Zombie_Invoke/CallByName/CallByHash...)
  • Ofuscación de funciones (GoTo y añadir basurilla :P)
  • Cambio 'avanzado' de opciones del proyecto :rolleyes:

Alguna sugerencia?! Un saludo :D

_katze_

y que otros metodos se pueden hacer pero atraves de code....yo ni idea de esto pero creo q los av's t colocan firma tambien donde compilas el proyecto seria modificar esto,agregar variantes al split,LOF y demas q tienen firmass... :S

BlackZeroX

#2
.
Solo se me ocurrio una.

* dividir la funcione donde se encuentren sentencias if then, Select Case, u otras, pero sin perder la congruencia de la misma.

es decir:

Código (Vb) [Seleccionar]

Private Sub Form_Load()
Dim i       As Integer
Dim str_v   As String
    If Caca_Malware(6, 6, 6) = Pedos_frijoleros(6, 9) Then
        str_v = o4215(i)
    Else
        str_v = awuiwiche(45) + i
    End If
   
    MsgBox str_v
End Sub


Pasarlo a funciones:

Código (Vb) [Seleccionar]


Private Sub Form_Load()
Dim i       As Integer
Dim str_v   As String
    Call compareifthen(str_v, i)
    MsgBox str_v
End Sub

Private Sub compareifthen(ByRef str_v As String, ByRef i As String)
    If Caca_Malware(6, 6, 6) = Pedos_frijoleros(6, 9) Then
        Call icacamalware_frijolero(str_v, i)
    Else
        Call strv_wilwuicho
    End If
End Sub
Private Sub icacamalware_frijolero(ByRef str_v As String, ByRef i As Integer) ' // esto es trivial pero bueno
    str_v = o4215(i)
End Sub
Private Sub strv_wilwuicho(ByRef str_v As String, ByRef i As Integer) ' // esto es trivial pero bueno
    str_v = awuiwiche(45) + i
End Sub



Nota: En mi forma de pensar este tema es OFF-Topic, citando las reglas le pese a quien le pese.

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

raul338

Y que pasa con lo basico de todo protector, ofuscacion de variables? Es una pequeña trabita mas, pero es pesada al menos :xD

Cita de: BlackZeroX▓▓▒▒░░ en 21 Enero 2011, 00:54 AM
Nota: En mi forma de pensar este tema es OFF-Topic, citando las reglas le pese a quien le pese.
Para mi deberia ir mejor en criptografia, pero nose :rolleyes:

BlackZeroX

Cita de: raul338 en 21 Enero 2011, 01:06 AM
Para mi deberia ir mejor en criptografia, pero nose :rolleyes:

Foro Libre, hay nadie no vera feo.

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

LeandroA

Muy buena iniciativa Karcrack, realmente no se me ocurren muchas ideas para aportar si no mas bien preguntas, yo con el tema de mi proyecto estoy investigando un poco de todo esto de la indetectabilidad, la pregunta es si vos vas a utilizar Ofuscación de APIs, que garantía hay de que esto pueda ser seguro con todas las apis, me refiero al funciona miento, osea algunas apis utilizan byref, y otras byval para los parámetros, si no me equivoco cuando es byref se utiliza VarPtr entonces el crypter seria capaz de reconocer cada parámetro de cada api y hacer que esto funcione automaticamente?

por otro lado no seria mejor hacerlo sobre un ejecutable, en vez desde el proyecto? (Pregunto por que no se)
si uno crearía un crypter "indetectable" y enveviera el .exe dentro de si mismo (con alguna encriptacion) ,luego lo extrae y lo ejecuta inyectandolo dentro del mismo crypter, esto podría ser detectado?

bueno por el momento me vienen esas intrigas.

Elemental Code

va a sonar loco pero yo me saque de ensima unas firmas una vez haciendo lo siguiente:

Que siempre haya un form:
al parecer al avast no le gusta que ejecutes codigo desde el sub_main sin mostrar forms.

Que tenga un icono personalizado:
NO PREGUNTEN, cambie el icono de vb y panda no lo detecto.

y este es el mas loco de todos.
Cifre las cadenas estaticas :S
si cuando me tengo que abrir a mi mismo para usar un stub o algo asi lo hago de la sig forma:

Código (vb) [Seleccionar]
MySelf = "exe." & StrReverse(App.EXEName) & "\" & StrReverse(App.Path)

Por alguna razon, Kaspersky le parece menos sospechoso esto que decirle

Código (vb) [Seleccionar]
MySelf = app.path & "\" & app.exename & ".exe"


ahora yo pregunto, el nombre con el que se declara una constante para usar alguna api o funcion

ej:
Private Const INTERNET_CONNECTION_MODEM_BUSY As Long = &H8
Private Const INTERNET_RAS_INSTALLED As Long = &H10
Private Const INTERNET_CONNECTION_OFFLINE As Long = &H20
Private Const INTERNET_CONNECTION_CONFIGURED As Long = &H40

influye en algo?

este... no se me ocurre mas nada.
Cuando me caiga la ficha de algo mas vuelvo.

PD: hay alguna diferencia para un av en compilarlo en P.code o codigo nativo?

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

Karcrack

#7
@_katze_:
Me parece una buena idea el reemplazo automatizado de funciones/metodos como Split, App.Exename... etc :)

@BlackZeroX▓▓▒▒░░:
Es interesante, pero me parece que a la hora de generar el algoritmo se liarian las cosas :-\

@raul338:
Es la parte que mas rabia me da de los ofuscadores, cambiar los nombres de las variables por aswWdsa1sA no sirve para nada, como mucho quita las firmas estáticas que ya tengas en tu proyecto... Y ademas, puedes decirle al compilador que no mete los nombres de variables en el fichero compilado, asi que esa opcion ya esta en mi lista :P

@LeandroA:
Es relativamente sencillo automatizar el cifrado de las APIs (El metodo de Invoke/CallByName...) siempre que tengas la declaracion, aunque tambien habria que fijarse un poquito en como se llama a la función, ya que a pesar de que en la declaracion este ByRef el usuario puede especificar ByVal...
Respecto a lo de crear un crypter... no le veo intereses, lo que mola es modificar el código y dejarlo indetectable :)

@Elemental Code:
Los AVs han abusado muchísimo con sus firmas y detecciones heurísticas, de tal forma que un proyecto vació de VB6 ya es detectado por varios AVs... Lo del formulario es cierto, pero eso es un falso positivo... si que es cierto que algunos AVs detectan el uso de ciertas combinaciones como: Sub Main() + App.Path, pero eso se solucionaria con la idea de _katze_ :)
Respecto a las constantes, hasta donde yo se no aparecen los nombres, solo los de las variables, pero como he dicho antes eso se puede modificar ;)
Y por último, sí, existe diferencia al compilar en P-CODE o N-CODE y también si vas modificando otros parámetros de la compilación... esto es debido a que el fichero compilado varia, y por lo tanto la detección también

@Todos: Gracias por la ayuda :-*

@Mods: Si veis necesario moverlo hacedlo... Lo puse aquí porque es donde más programadores de VB6 lo podrán ver... Ademas no lo veo Off-Topic, por que se están debatiendo temas relacionados con el lenguaje de programación VB6, este subforo no es solo para preguntar y pegar codes :P

Un saludo :)

_katze_

creo q deveriamos abrir un topic y hacer variaciones de funciones que simulen a las mismas para ir ganando tiempo al proyecto hacer split y etc y q las mejorcitas c vallan agregando...

Karcrack

No te preocupes _katze_, ya me encargo yo de la programación :P Esto no es ningún proyecto comunitario ni nada así, solo necesito algunas ideas que nos interesen a los programadores de VB6 :xD