elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 [386] 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 ... 629
3851  Programación / Ingeniería Inversa / Re: [Resuelto | Copy me] hkFuzzer v1.0 en: 12 Noviembre 2014, 18:53 pm
MCKSys Argentina, por cierto a que te refieres con "IN" podrías explicar este truco?

Sería algo como esto (detección del Hypervisor de VMWare):

Código
  1. function IsInsideVMware: Boolean;
  2. begin
  3.  Result := True;
  4.  
  5.  try
  6.    asm
  7.      push edx;
  8.      push ecx;
  9.      push ebx;
  10.  
  11.      mov eax, 'VMXh';
  12.      mov ebx, 0;
  13.      mov ecx, 10;
  14.      mov edx, 'VX';
  15.  
  16.      in eax, dx;
  17.  
  18.      cmp ebx, 'VMXh';
  19.      setz [Result];
  20.  
  21.      pop ebx;
  22.      pop ecx;
  23.      pop edx;
  24.    end;
  25.  except
  26.    Result := False;
  27.  end;
  28. end;
  29.  

Lo que se busca es el 'VMXh' o el 'VX'. En el caso de Enigma, copia el string 'VMXh' en la sección .data y luego lo compara con lo devuelto por el comando IN. Creo que hace eso para ocultar la comparación. De todas formas, entre una cosa y otra hay varias instrucciones, lo que te permite buscar el valor en memoria, cambiarlo y chau detección...  :P

Saludos!

EDIT:

Me olvidé de decir que esta detección se puede quitar desde el mismo VMWare (editando el .vmx): click.

Pero como te jode las VMTools (te quita el copy/paste entre OS host y OS emulado), no las uso (excepto con VMProtect  :P ).
3852  Programación / Ingeniería Inversa / Re: Cómo intercambiar depurador al depurar? en: 12 Noviembre 2014, 06:47 am
Entonces no existe algun tipo de mecanismo o alguna manera solo si existe la opcion en el depurador o si alguien ha creado algun plugin? :P

Si existe. Revisa estas APIs: DebugActiveProcessStop, DebugSetProcessKillOnExit

Saludos!
3853  Programación / Ingeniería Inversa / Re: Cómo intercambiar depurador al depurar? en: 12 Noviembre 2014, 04:59 am
Hola!

Si usas Olly2, puedes des-atacharte del programa con el comando File-Detach.
Olly1 no tiene esa opcion, pero creo que existe un plugin que te permite hacerlo.

Saludos!
3854  Programación / Ingeniería Inversa / Re: [Resuelto | Copy me] hkFuzzer v1.0 en: 12 Noviembre 2014, 00:51 am
Si fueses tú el que pone el reto, qué habrías cambiado para hacerlo más difícil?

Creo que el nivel de "maldad" en un crackme depende directamente del tiempo empleado en el mismo. Mayor tiempo = mayor dificultad.

Por lo pronto, creo que hacer la rutina mucho mas larga, compleja (y tediosa) haría una gran diferencia.

Siempre hay que tener en cuenta que la finalidad no es hacer algo incrackeable, sino que sea lo suficientemente "hostil", aburrido y tedioso como para tomarse el tiempo en resolverlo.

Por supuesto, si hay determinación, no hay mucho por hacer (así se han roto los packers más complejos, no?)  :P

Saludos!
3855  Programación / Ingeniería Inversa / Re: [Resuelto | Copy me] hkFuzzer v1.0 en: 12 Noviembre 2014, 00:36 am
Podrías explicar un poco cómo lo has hecho? Qué programas has usado? Has usado IDA para ver pseudocódigo, o con asm era suficiente?

Abrí el exe con Olly (y un par de plugines) en una VM con XP.

Lo primero fue hacer que corra enigma en una VM, lo cual se soluciona cambiando el valor de compara al momento de detectar VMWare (la técnica del "IN").

Una vez que el EXE corría, sólo basta con ver el ASM. Es bastante straightforward la cosa.

Incluso, para corroborar algunas cosas, desempaque el exe (a medias, pues la IAT no estaba 100% terminada), pero para ver las funciones importantes en IDA fue suficiente.

De todas formas, el algoritmo lo saqué desde Olly. IDA sólo lo usé para ver "cómo se veía" decompilado.

Saludos!
3856  Seguridad Informática / Análisis y Diseño de Malware / Re: duda sobre troyanos virus malware spyware bho physing etc... en: 12 Noviembre 2014, 00:12 am
Hola!

Aqui tienes información acerca de lo que preguntas.

Saludos!
3857  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: TomTom Go Basic en: 11 Noviembre 2014, 19:39 pm
Gracias por tu comentario, pero me gustaria que fuese... "gratis" ya me entiendes, jejejje

El registro en la web del vendor ES gratis (al menos lo era hace un tiempo). Creo que solo necesitas el numero de serie del aparato...
3858  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: TomTom Go Basic en: 11 Noviembre 2014, 19:28 pm
Hola!

En el manual te vienen las indicaciones acerca de lo que debes hacer.

Si mal no recuerdo, viene con un cd de instalacion, el cual te instala la aplicacion que mantiene el GPS actualizado.

Tambien creo que debes crear una cuenta en la pagina del vendor (www.tomtom.com/es_ar/) para poder descargar las actualizaciones (aunque no estoy seguro de esto).

Saludos!
3859  Programación / Ingeniería Inversa / Re: Crackme bugger3.exe en: 11 Noviembre 2014, 17:24 pm
Bueno, me he bajado la lección 21 del curso de ricnar y en la primer imagen se ve lo que relatas y el problema:

Si miras la imagen, en 401000 hay un MOV ECX, DWORD PTR [ESP+24]. Ahora, Olly muestra como comentario, que en esa direccion está el valor 7C816D58. Además, te dice a quién pertenece dicha dirección: kernel32.

Entonces, el programa está obteniendo una dirección de kernel en el EP. Y como has escrito:

Comienzo a correrlo
F8 en 401000 pone ECX a 0

Ahí está tu problema. Te recomiendo nuevamente usar una VM y Windows XP. Si en SP3 no te funciona (que debería  :P) puedes probar con SP2.

Saludos!
3860  Programación / Ingeniería Inversa / Re: [Copy me] hkFuzzer v1.0 en: 11 Noviembre 2014, 17:11 pm
Hola!

Gracias por la recompilada. Voy a tratar de mirarlo este finde, si hago tiempo. Ya veremos de qué se trata...  ;)

Saludos!

EDIT: Me hice un tiempito y lo miré. Con un HBP quitamos la proteccion antiVM de Enigma y podemos correr el soft sin problemas (no hace falta desempacar).

Dejo mi programa que cifra en python (no hago el descifra por falta de tiempo y F1ACA):

Código
  1. #!/usr/bin/env python
  2.  
  3. import sys
  4. import os
  5. import random
  6. import struct
  7.  
  8. def randdw ():
  9.    return struct.pack('<B',random.randrange(0,255)) + struct.pack('<B',random.randrange(0,255)) + struct.pack('<B',random.randrange(0,255)) + struct.pack('<B',random.randrange(0,255))
  10.  
  11. def checksum (cadena):
  12.    i = 0
  13.    chksum = 0
  14.    for x in cadena:
  15.        chksum *= 101
  16.        chksum += ord(x)
  17.    return struct.pack('<L', chksum & 0xFFFFFFFF)
  18.  
  19. def encrypt(fin, fout):
  20.    f = open(fin, 'rb')
  21.    buff = f.read()
  22.    f.close()
  23.    dw1 = randdw()
  24.    dw2 = randdw()
  25.    largo = len(buff)
  26.    resto = largo % 8
  27.    if resto != 0:
  28.        buff += '\x00' * (8-resto)
  29.    chksum = checksum(buff)
  30.    i = 0
  31.    buff2 = ''
  32.    for j in range (0, len(buff)):
  33.        n1 = (ord(dw1[i]) ^ 0xFF)# - 1
  34.        n2 = (ord(buff[j]) ^ 0xFF)# - 1
  35.        buff2 += struct.pack('<B',n1 ^ n2)
  36.        i += 1
  37.        if i == 4:
  38.            i = 0
  39.    i = 0
  40.    buff3=''
  41.    for j in range (0, len(buff2)):
  42.        n1 = (ord(dw2[i]) ^ 0xFF) #- 1
  43.        buff3 += struct.pack('<B',ord(buff2[j]) ^ (n1 ^ ord(dw1[i])))
  44.        i += 1
  45.        if i == 4:
  46.            i = 0
  47.    header = dw1 + dw2 + chksum + struct.pack('<L', largo)  #Estructura del archivo: Header + Data
  48.    finalheader = ''
  49.    for j in range (0, 16):
  50.        sar = (0xABCDEF00 >> (8 * (4 - ((j + 1) % 4)))) & 0xFF
  51.        finalheader += struct.pack('<B', ord(header[j]) ^ ord(struct.pack('<B', sar)))
  52.    f = open(fout, 'wb')
  53.    f.write(finalheader + buff3)
  54.    f.close()
  55.    print fin + ' encrypted into ' + fout
  56.  
  57. def decrypt(fin, fout):
  58.    print 'Too much 989898. This should decrypt ' + fin + ' into ' + fout
  59.    print "It's the oposite of encrypt anyway ;)"
  60.  
  61. def usage():
  62.    print 'Usage:'
  63.    print 'hkfuzzer.py [option] fileIN fileOUT'
  64.    print 'option values:'
  65.    print '    e : Encrypt fileIN into fileOUT. If fileOUT exists, will be overwritten.'
  66.    print '    d : Dencrypt fileIN into fileOUT. If fileOUT exists, will be overwritten.'
  67.    print 'Sample 1: Encrypt a.txt into b.txt'
  68.    print '        hkfuzzer.py e a.txt b.txt'
  69.    print 'Sample 2: Dencrypt b.txt into c.txt'
  70.    print '        hkfuzzer.py d b.txt c.txt'
  71.  
  72. if __name__ == '__main__':
  73.    args=[]
  74.    brutus = False
  75.    largs = sys.argv
  76.    for x in largs:
  77.        args.append(x.lower())
  78.    brutus &= len(largs) != 4
  79.    brutus &= (args[1] != 'e') or (args[1] != 'd')
  80.    brutus &= os.path.exists(args[2]) and os.path.isfile(args[2])
  81.    if brutus:
  82.        usage()
  83.    else:
  84.        if (os.path.exists(args[3]) and os.path.isfile(args[3])):
  85.            os.remove(args[3])
  86.        if args[1] == 'e':
  87.            encrypt(args[2], args[3])
  88.        else:
  89.            decrypt(args[2], args[3])
  90.  
Páginas: 1 ... 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 [386] 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 ... 629
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines