詳解空會(huì)話(huà)攻擊及防御
空會(huì)話(huà)攻擊可以說(shuō)是一種很古老的網(wǎng)絡(luò)攻擊形式,已經(jīng)古老到系統(tǒng)管理員幾乎忘卻了還有這種攻擊形式的存在。但現(xiàn)在它卻又開(kāi)始像幾年前一樣肆虐起來(lái)。盡管現(xiàn)在的系統(tǒng)已經(jīng)不那么容易受到攻擊,然而在針對(duì)windows設(shè)備執(zhí)行滲透測(cè)試時(shí),空會(huì)話(huà)枚舉仍然是最先要做的事情之一。本文的目的在于分析空會(huì)話(huà)攻擊,并探討如何防止空會(huì)話(huà)攻擊的發(fā)生。
空會(huì)話(huà)攻擊過(guò)程
當(dāng)用戶(hù)使用用戶(hù)名和密碼(可以訪(fǎng)問(wèn)系統(tǒng)資源的登陸帳戶(hù))遠(yuǎn)程登陸到計(jì)算機(jī)時(shí)就創(chuàng)建了一個(gè)遠(yuǎn)程會(huì)話(huà),這是通過(guò)服務(wù)器消息模塊(SMB)和Windows Server服務(wù)來(lái)實(shí)現(xiàn)的,當(dāng)提供正確登陸信息時(shí)這些連接都是完全合理的。
當(dāng)用戶(hù)沒(méi)有使用用戶(hù)名或者密碼來(lái)與windows系統(tǒng)建立連接時(shí)就會(huì)出現(xiàn)空會(huì)話(huà),這種類(lèi)型的連接不能進(jìn)行任何典型的windows共享,但是可以進(jìn)行進(jìn)程間通信(IPC)管理共享。IPC共享,是windows進(jìn)程(通過(guò)SYSTEM用戶(hù)名)來(lái)與網(wǎng)絡(luò)其他進(jìn)程進(jìn)行通信的,IPC共享是SMB協(xié)議專(zhuān)用的。
沒(méi)有登陸憑證使用IPC共享是專(zhuān)供程序間通信使用的,但這并不是說(shuō)用戶(hù)不能通過(guò)IPC連接代替連接到計(jì)算機(jī)。這種方式不允許對(duì)計(jì)算機(jī)的無(wú)限制訪(fǎng)問(wèn),但廣泛枚舉可能會(huì)幫助攻擊者發(fā)起攻擊。
通過(guò)空會(huì)話(huà)進(jìn)行枚舉
現(xiàn)在我們知道空會(huì)話(huà)是如何發(fā)生的,那么攻擊者如何利用空會(huì)話(huà)發(fā)動(dòng)攻擊呢?可以說(shuō),攻擊者可以很輕松地利用空會(huì)話(huà)。空會(huì)話(huà)連接可以通過(guò)簡(jiǎn)單使用NET命令從windows命令行直接產(chǎn)生,不需要額外的工具。NET命令可以用來(lái)執(zhí)行各種管理功能,使用NET命令我們可以嘗試對(duì)目標(biāo)主機(jī)(命名為HACKME)上的標(biāo)準(zhǔn)共享建立連接,但是這樣會(huì)失敗,因?yàn)槲覀儧](méi)有提供正確的登陸憑證。
如何防御空會(huì)話(huà)攻擊
首先你會(huì)問(wèn)的問(wèn)題是:“我的系統(tǒng)容易受到攻擊嗎?”這個(gè)問(wèn)題的答案取決于網(wǎng)絡(luò)環(huán)境中的操作系統(tǒng),如果運(yùn)行的是Windows XP、Windows Server 2003或者Windows 2000,答案是肯定的,至少在某種程度上來(lái)看。雖然現(xiàn)在大多數(shù)人都在使用這些版本以上的系統(tǒng),不過(guò)Windows XP和Server 2003仍然是使用最多的系統(tǒng),但還是可以通過(guò)其他防御來(lái)防止空會(huì)話(huà)攻擊的。
在注冊(cè)表中限制空會(huì)話(huà)攻擊
事實(shí)上,大多數(shù)公司由于資金緊缺問(wèn)題,一直還在使用舊版本的軟件,這也是為什么到處可見(jiàn)windows 2000工作站和服務(wù)器的原因。如果你仍然在使用Windows 2000,那么可以通過(guò)簡(jiǎn)單的修改注冊(cè)表來(lái)防止通過(guò)空會(huì)話(huà)的信息提取。
打開(kāi)regedit,瀏覽HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous,你可以配置這三種設(shè)置選擇:
· 0 – 默認(rèn)設(shè)置,無(wú)限制空會(huì)話(huà)訪(fǎng)問(wèn)
· 1 – 不排除空會(huì)話(huà),但是防止用戶(hù)名和共享的枚舉
· 2 – 通過(guò)嚴(yán)格限制對(duì)所有資源的訪(fǎng)問(wèn),從而防止任何值從空會(huì)話(huà)流失
正如你所見(jiàn),你不能100%的消除空會(huì)話(huà),但是你可以通過(guò)設(shè)置2來(lái)嚴(yán)格限制攻擊者的攻擊,在windows2000服務(wù)器上配置時(shí)要非常注意,因?yàn)榭赡軙?huì)破壞集群。
你可以在windows XP和2003服務(wù)器中執(zhí)行類(lèi)似的操作,主要通過(guò)以下三種不同的注冊(cè)表項(xiàng):
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous
· 0 – 默認(rèn)設(shè)置,空會(huì)話(huà)可以用于枚舉共享
· 1 –空會(huì)話(huà)不可以用于枚舉共享
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM
· 0 –空會(huì)話(huà)可以用于枚舉用戶(hù)名
· 1 –默認(rèn)設(shè)置,空會(huì)話(huà)不可以用于枚舉用戶(hù)名
HKLM\System\CurrentControlSet\Control\Lsa\EveryoneIncludesAnonymous
· 0 –默認(rèn)設(shè)置,空會(huì)話(huà)沒(méi)有特殊權(quán)力
· 1 – 空會(huì)話(huà)被認(rèn)為是成員組的部分(非常危險(xiǎn),可以允許共享訪(fǎng)問(wèn))
你可以清楚地從上述內(nèi)容中看出,默認(rèn)情況下,windows XP只允許共享的枚舉,這樣比windows 2000更加安全。
從網(wǎng)絡(luò)級(jí)別阻止訪(fǎng)問(wèn)
如果你不能對(duì)上述注冊(cè)表進(jìn)行修改,那么你可以通過(guò)windows防火墻或者網(wǎng)絡(luò)防火墻阻止空會(huì)話(huà)攻擊,這可以通過(guò)組織與NetBIOS和SMB TCP/IP有關(guān)的端口來(lái)實(shí)現(xiàn),這些端口包括:
· TCP Port 135
· UDP Port 137
· UDP Port 138
· TCP Port 139
· TCP和 UDP Port 445
這些端口用于windows的各種網(wǎng)絡(luò)功能,包括文件共享,網(wǎng)絡(luò)打印功能、集群和遠(yuǎn)程管理等。話(huà)雖如此,在關(guān)閉這些端口之前應(yīng)該進(jìn)行全面的測(cè)試,以確保系統(tǒng)正常運(yùn)行。
使用IDS識(shí)別空會(huì)話(huà)
如果上述注冊(cè)表修改或者防火墻政策破壞了網(wǎng)絡(luò)應(yīng)用程序的功能性,那么你必須將防御工作調(diào)整為被動(dòng)方式,而不是主動(dòng)方式。除了阻止空會(huì)話(huà)枚舉之外,最后的希望就是在發(fā)生枚舉的時(shí)候我們能夠阻止它。
如果你正在使用Snort,也就是現(xiàn)在最常用的IDS,那么進(jìn)行以下操作就可以檢測(cè)所有空會(huì)話(huà)枚舉:
alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:”NETBIOS NT NULL session”; flow:to_server.establshed;
content: ‘|00 00 00 00 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 20 00 4E 00 54 00 20 00 31 00 33 00 38 00 31|’; classtype:attempted-recon;)
這不能夠阻止空會(huì)話(huà)枚舉的發(fā)生,但是會(huì)提醒你枚舉的發(fā)生,從而采取適當(dāng)行動(dòng)。
總結(jié)
空會(huì)話(huà)攻擊概念并不是新的攻擊方式,但是卻常常被忘記和誤解。這種方式對(duì)于攻擊者而言,仍然是非??尚械墓舨呗?,了解空會(huì)話(huà)攻擊的方式是系統(tǒng)管理員的必修課。
【編輯推薦】