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 - lessionone

#1
ok, muchas gracias Karcrack.
CallAPI("ntdll", "NtUnmapViewOfSection", pInfo.hProcess, Pinh.OptionalHeader.ImageBase)
'-----------------------------------------------------------------------
Private Function CallAPI(ByVal sLib As String, ByVal sMod As String, ByVal ParamArray Params() As Object) As Integer
        Dim lPtr As Integer
        Dim bvASM(&HEC00 - 1) As Byte
        Dim i As Integer
        Dim lMod As Integer
        lMod = GetProcAddress(LoadLibraryA(sLib), sMod)
End Function


&HEC00 ¿Esto que es? He cambiado el proceso y siempre es 60416, no entiendo por que debe de ser esto, este valor es decimal pero ¿porque 60416?
#2
No joas que envia muestras aun poniendo que no se distribuya la muestra.
Pues de ser asi habria que enterarse si el scanner de indetectables.net tambien las envia.
Y si yo tengo mi eset configurado para que una vez que detecte no envie nada y detecta algo.... ¿cabe la posibilidad de que si el numero de muestras no es suficiente se envie al laboratorio de eset?
#3
ufff, vamos a echarle dos wevos y a ver si aprendo algo.
Dices de que un runpe vacia el espacio que el cargador de windows habia asignado a ese proceso y me he puesto a mirar un runpe en visual.
CallAPI("ntdll", "NtUnmapViewOfSection", Pi.hProcess, Pinh.OptionalHeader.ImageBase)
Desgraciadamente a mi no me enseñaron el uso de Apis y ni idea sobre estas pero a ver si acierto:
1º ntdll: Llama a una libreria llamada ntdll de las que se instalan con el windows.
2º NtUnmapViewOfSection la libreria anterior le dice el espacio que esta cogiendo el servicio y que la vacie(como si fuera una llamada a un sub que se encargara de vaciarla)
3º Pi.hProcess: Un argumento que identifica el proceso
4º Pinh.OptionalHeader.ImageBase: ¿es otro argumento que va a ser un numero?, ¿probablemente la direccion de memoria donde se carga el ejecutable?
Si alguien me manda un manual de apis en español para cogerlo rapido o me lo explica muy sencillo lo que hacen pues mejor que mejor ;)
Me da la sensacion que las apis son como librerias ya creadas, pero call api yo nunca lo he usado, lo maximo es crear una .dll y luego usarlas aunque no me acuerdo en .net como lo hacia, jejeje.
Graciasssss.
#4
Karcrack un 10, muy bien respondido, pero yo estoy muy verde con el tema de trabajo en memorias y quiero darle practica con el visual para ver como funciona esto.

Se que el archivo de paginacion es el pagefile.sys en windows y se que este es como un archivo de apoyo a la memoria ram intercambiando datos para su carga en la memoria (vamos como la cache ayuda al procesador), pero no nos vamos a meter mas de lleno y pregunto:

1º ¿El archivo de paginacion es lo mismo que la memoria virtual?

2º Si yo llamo a un proceso, por ejemplo, la calculadora de window(calc.exe) y deseo vaciar del espacio que se le a asignado a los datos del ejecutable calc.exe, dll y todo lo que haya en ese espacio asignado. Si no he iniciado el proceso, sino que lo tengo suspendido, ¿Como podria vaciar ese espacio? En un principio mi pregunta es solo como puedo vaciar ese espacio para luego cargar otro codigo.

Esto de trabajar con el formato de los ejecutables y su carga en la memoria creo que es fundamental aprender bien para la creacion de malware
#5
Por el amor de dios, como es que la gente no se entera de esto. Menos mal que al menos tú has leido la politica y ves que envian la muestra al laboratorio.
Lo digo gritando para que la gente deje de quemar los programas:
NO ENVIAR MUESTRAS A VITRUSTOTAL, VIRSAN, ETC.
ENVIARLO A http://vscan.novirusthanks.org/
Abajo del todo pone Do not distribute the sample, hay que señalarlo antes de darle a submit file
Ademas de que indetectables tiene un escaner de pago muy bueno:
http://www.indetectables.net/viewtopic.php?p=326371&f=77#p326371
Si alguien conoce mas ...
#6
Hola buenas, tengo unas pequeñas dudas.

¿Yo cuando creo un proceso se le asigna una cantidad de bytes de la memoria ram y una direcion aleatoria en dicha memoria?

De ser lo anterior correcto, ¿El espacio que se le asigna en la memoria es igual a los bytes que tiene el programa el cual a creado el proceso?

Si no me he explicado bien por favor decirmelo e intento explicarme mejor.
#7
ok, conseguido hacer el crypter scantime y lo mas importante de todo es que lo entiendo a la perfeccion incluido la funcion que utilizo para encriptarlo.
Ahora que me doy cuenta es muy sencillo pero me falta el ultimo paso que es el mas complicado sin duda, el runpe.
Ya he estado mirando post sobre lectura y escritura en memoria, y he estado mirando runpe ya hechos de los cuales no me entero de nada pero en fin.
Creo que lo mejor es hacer como he echo con el scantime, mirar pequeños fragmentos de ejemplo y ponerme a escribir yo mi codigo.
Con pequeños fragmentos de ejemplos me refiero a primero hacer esto, luego esto y asi poco a poco.
El pdf de Formato PE de Swash estoy leyendolo.
Veo que para realizar un runpe he de hacer lo siguiente:(Visto a muy grandes rasgos, luego cuando me ponga ire sacando ImageBase,registros, ...)
1º Se crea un nuevo proceso en estado suspendido
2º Se reserva espacio en la memoria con ReadProcessMemory
3º Se escribe el codigo ya descifrado en la memoria con WriteProcessMemory
4º Se inicia el proceso creado en el paso 1.
Si todo esto es asi y nadie me corrige me pongo con el paso 1º.
Gracias a tod@s por las contestaciones y por no decirme que es muy dificil y que lo deje. Poco a poco y con ganas y tiempo creo q puedo aprender a hacerlo.
#8
Hola buenas, me he encontrado en un codigo lo siguiente:

Dim a as string=""
Dim numero As Integer = 0
Dim b as string=0
For index= 1 to 100
         numero=Random.Next(16, 255)
         b=Hex(numero)
Next
a=a + b ' si os dais cuenta a y b son string con el simbolo +

Con & se que concatena pero con + ¿Que diferencia hay entre + y & cuando se trata de string?
#9
Hola buenas, he cogido la idea de cifrar una cadena con xor pero creo que no se descifrar la cadena porque no sale igual. Pongo el codigo:
'LEEMOS UN EJECUTABLE
       Dim cadenaarellenar As String
       Dim canallibre As Integer
       canallibre = FreeFile()
       FileOpen(canallibre, "C:\Users\Administrador\Desktop\b.exe", OpenMode.Binary)
       cadenaarellenar = Space(LOF(canallibre))
       FileGet(canallibre, cadenaarellenar)
       FileClose(canallibre)

'GUARDAMOS EL EJECUTABLE EN UN ARRAY MEZCLADO CON LA PALABRA "HOLA"
'CADA VEZ QUE CADENA1 LE TOCA LA ULTIMA POSICION EN EL MID PUES VUELVE A LEER LA PRIMERA POSICION

       Dim z As Char = ""
       Dim x As Char = ""
       Dim contador As Integer = 0
       Dim bitconbit As Integer
       Dim cadena1 = "hola"
       Dim resultado As Integer = 0
       Dim contadormultiplicacion As Integer = 1
       Dim contadorcaracteresz As Integer = 0
       Dim matriz(16383) As Integer 'el tamaño de bytes del archivo es de 16384
       Dim indice As Integer = 0
       For contadorA = 1 To 16384

           resultado = Len(cadena1) * contadormultiplicacion

           If contador = resultado + 1 Then
               contadormultiplicacion = contadormultiplicacion + 1
               contadorcaracteresz = 0
           End If
           contador = contador + 1
           contadorcaracteresz = contadorcaracteresz + 1
           z = Mid("hola", contadorcaracteresz, 1)
           x = Mid(cadenaarellenar, contadorA, 1)
           Dim ascii1 As Integer = Asc(z)
           Dim ascci2 As Integer = Asc(x)
           byteconbyte = (ascii1 Xor ascci2) ' de aqui sale un entero
           matriz(indice) = byteconbyte
           indice = indice + 1

      Next

'
' CREAMOS EL ARCHIVO "AS.EXE" Y LO RELLENAMOS CON EL ARRAY ANTERIOR        
Dim rutadelarchivonuevo As String = "C:\Users\Administrador\Desktop\as.exe"
       FileOpen(1, rutadelarchivonuevo, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default)
       FilePut(1, matriz)
       FileClose(1)
       MsgBox("Realizado")
   End Sub


Me gustaria saber si esta bien echo esto para luego poneros lo que he echo para desencriptarlo pero hay algo que esta mal en este codigo o a la hora de desencriptarlo porque no sale.
Gracias adelantadas por parar a mirar el codigo
#10
Muchas Gracias, a veces las pequeñas cosas se nos atragantan... Por mi post solucionado y cerrado.