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

  • 7 Respuestas
  • 7051 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
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
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
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
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
You are not allowed to view links. Register or Login
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
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
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
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

 

Obtener dia de la semana 16 bits.

Iniciado por Juan

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