Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[ASM-ABUSE] Obtener dirección del PEB sin advertir a los AVs

  • 7 Respuestas
  • 6733 Vistas

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

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« en: Junio 16, 2013, 06:12:07 pm »
Debido a que la forma habitual de obtener el puntero del PEB estaba haciendo que me saltasen los AVs he diseñado otra que se los salta :-* :-*

Forma habitual:
Código: ASM
  1.         xor eax, eax
  2.         mov eax, [FS:eax+$30]

Forma que he ideado:
Código: ASM
  1.         push $30
  2.         pop  esi
  3.         db $64
  4.         lodsd
(Ambas establecen EAX al puntero del PEB)
Utiliza un byte menos :P :P

Añado más métodos:

Forma ofuscada:
Código: ASM
  1.    push $30     ;v
  2.    pop  ebx     ;>EBX = 0x30
  3.    mov  cl, 4   ;>CL  = 4
  4.  
  5. @@:mov  al, cl  ;>AL  = CL        <<<
  6.    db   $64     ;v                  ^
  7.    xlatb        ;>AL  = FS:[EBX+AL] ^
  8.    shl  eax, 8  ;>EAX <<= 8         ^
  9.    loop @B      ;>>>>>>>>>>>>>>>>>>>^ (--ECX>0)?
Forma muy similar pero con opcodes diferentes :D (Se podría variar con muchos otros movs condicionales):
Código: ASM
  1.    xor   eax, eax
  2.    cmovz eax, [FS:eax+$30]

Saludos :D
« Última modificación: Julio 10, 2013, 10:27:22 am por Expermicid »
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Arkangel

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Julio 10, 2013, 09:18:48 am »
Muy buena karcrack.

Se podria hacer tambien usando LEA?

Saludos

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #2 en: Julio 10, 2013, 11:20:06 am »
No creo ya que lea no lee de memoria nada :-\ Igualmente he visto un par de instrucciones que pueden ser interesantes si tengo tiempo les echare un vistazo y actualizo :D
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #3 en: Julio 10, 2013, 04:19:18 pm »
Otra sencillita

Código: ASM
  1. push dword[fs:0x30]
  2. pop eax

Desconectado Vermillion

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Julio 10, 2013, 06:03:34 pm »
Otra sencillita

Código: ASM
  1. push dword[fs:0x30]
  2. pop eax

Demasiado explícito. El concepto es evitar el [fs:0x30].

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #5 en: Julio 10, 2013, 07:13:16 pm »
Uno usando FPU ;D
Código: ASM
  1.         push $30
  2.         pop  eax
  3.         push eax
  4.         fld  dword[FS:eax]
  5.         fstp dword[esp]
  6.         pop  eax
  7.         ret    
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

Desconectado Arkangel

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #6 en: Julio 10, 2013, 07:57:04 pm »
yo lo decia por que si ves la descripcion de "lea", dice que hace como si accediera a memoria, pero te devuelve la direccion a la que accede. por lo tanto segun esa definicion cabe la duda de si hara tambien la traduccion de los segmentos.

Saludos

Desconectado Karcrack

  • *
  • Underc0der
  • Mensajes: 87
  • Actividad:
    0%
  • Reputación 0
  • Se siente observado ¬¬'
    • Ver Perfil
« Respuesta #7 en: Julio 10, 2013, 08:02:01 pm »
Sí, yo miré la definición de la instrucción en el manual de Intel pero al no retornar la lectura de ningún modo no sirve de nada... Si prueba esto verás que devuelve $30:
Código: ASM
  1.         xor eax, eax
  2.         lea eax, [FS:eax+$30]
  3.         ret
El prefijo es superfluo...
I code for $$$.

(PGP ID 0xCC050E77)
ASM, C, C++, VB6... skilled [malware] developer

 

¿Te gustó el post? COMPARTILO!



Obtener dia de la semana 16 bits.

Iniciado por Juan

Respuestas: 8
Vistas: 6863
Último mensaje Mayo 15, 2013, 04:47:39 pm
por Karcrack