網(wǎng)絡(luò)攻擊的一般步驟及實(shí)例
攻擊的準(zhǔn)備階段
首先需要說明的是,入侵者的來源有兩種,一種是內(nèi)部人員利用自己的工作機(jī)會(huì)和權(quán)限來獲取不應(yīng)該獲取的權(quán)限而進(jìn)行的攻擊。另一種是外部人員入侵,包括遠(yuǎn)程入侵、網(wǎng)絡(luò)節(jié)點(diǎn)接入入侵等。本節(jié)主要討論遠(yuǎn)程攻擊。
進(jìn)行網(wǎng)絡(luò)攻擊是一件系統(tǒng)性很強(qiáng)的工作,其主要工作流程是:收集情報(bào),遠(yuǎn)程攻擊,遠(yuǎn)程登錄,取得普通用戶的權(quán)限,取得超級用戶的權(quán)限,留下后門,清除日志。主要內(nèi)容包括目標(biāo)分析,文檔獲取,破解密碼,日志清除等技術(shù),下面分別介紹。
1. 確定攻擊的目的
攻擊者在進(jìn)行一次完整的攻擊之前首先要確定攻擊要達(dá)到什么樣的目的,即給對方造成什么樣的后果。常見的攻擊目的有破壞型和入侵型兩種。破壞型攻擊指的只是破壞攻擊目標(biāo),使其不能正常工作,而不能隨意控制目標(biāo)的系統(tǒng)的運(yùn)行。要達(dá)到破壞型攻擊的目的,主要的手段是拒絕服務(wù)攻擊(Denial Of Service)。另一類常見的攻擊目的是入侵攻擊目標(biāo),這種攻擊是要獲得一定的權(quán)限來達(dá)到控制攻擊目標(biāo)的目的。應(yīng)該說這種攻擊比破壞型攻擊更為普遍,威脅性也更大。因?yàn)楹诳鸵坏┇@取攻擊目標(biāo)的管理員權(quán)限就可以對此服務(wù)器做任意動(dòng)作,包括破壞性的攻擊。此類攻擊一般也是利用服務(wù)器操作系統(tǒng)、應(yīng)用軟件或者網(wǎng)絡(luò)協(xié)議存在的漏洞進(jìn)行的。當(dāng)然還有另一種造成此種攻擊的原因就是密碼泄露,攻擊者靠猜測或者窮舉法來得到服務(wù)器用戶的密碼,然后就可以用和真正的管理員一樣對服務(wù)器進(jìn)行訪問。
2. 信息收集
除了確定攻擊目的之外,攻擊前的最主要工作就是收集盡量多的關(guān)于攻擊目標(biāo)的信息。這些信息主要包括目標(biāo)的操作系統(tǒng)類型及版本,目標(biāo)提供哪些服務(wù),各服務(wù)器程序的類型與版本以及相關(guān)的社會(huì)信息。
要攻擊一臺(tái)機(jī)器,首先要確定它上面正在運(yùn)行的操作系統(tǒng)是什么,因?yàn)閷τ诓煌愋偷牟僮飨到y(tǒng),其上的系統(tǒng)漏洞有很大區(qū)別,所以攻擊的方法也完全不同,甚至同一種操作系統(tǒng)的不同版本的系統(tǒng)漏洞也是不一樣的。要確定一臺(tái)服務(wù)器的操作系統(tǒng)一般是靠經(jīng)驗(yàn),有些服務(wù)器的某些服務(wù)顯示信息會(huì)泄露其操作系統(tǒng)。例如當(dāng)我們通過TELNET連上一臺(tái)機(jī)器時(shí),如果顯示
Unix(r) System V Release 4.0
login:
那么根據(jù)經(jīng)驗(yàn)就可以確定這個(gè)機(jī)器上運(yùn)行的操作系統(tǒng)為SUN OS 5.5或5.5.l。但這樣
確定操作系統(tǒng)類型是不準(zhǔn)確的,因?yàn)橛行┚W(wǎng)站管理員為了迷惑攻擊者會(huì)故意更改顯示信息,造成假象。
還有一種不是很有效的方法,諸如查詢DNS的主機(jī)信息(不是很可靠)來看登記域名時(shí)的申請機(jī)器類型和操作系統(tǒng)類型,或者使用社會(huì)工程學(xué)的方法來獲得,以及利用某些主機(jī)開放的SNMP的公共組來查詢。
另外一種相對比較準(zhǔn)確的方法是利用網(wǎng)絡(luò)操作系統(tǒng)里的TCP/IP堆棧作為特殊的“指紋”來確定系統(tǒng)的真正身份。因?yàn)椴煌牟僮飨到y(tǒng)在網(wǎng)絡(luò)底層協(xié)議的各種實(shí)現(xiàn)細(xì)節(jié)上略有不同??梢酝ㄟ^遠(yuǎn)程向目標(biāo)發(fā)送特殊的包,然后通過返回的包來確定操作系統(tǒng)類型。例如通過向目標(biāo)機(jī)發(fā)送一個(gè)FIN的包(或者是任何沒有ACK或SYN標(biāo)記的包)到目標(biāo)主機(jī)的一個(gè)開放的端口然后等待回應(yīng)。許多系統(tǒng)如windows、 BSDI、 CISCO、 HP/UX和 IRIX會(huì)返回一個(gè)RESET。通過發(fā)送一個(gè)SYN包,它含有沒有定義的TCP標(biāo)記的TCP頭。那么在Linux系統(tǒng)的回應(yīng)包就會(huì)包含這個(gè)沒有定義的標(biāo)記,而在一些別的系統(tǒng)則會(huì)在收到SYN+BOGU包之后關(guān)閉連接?;蚴抢脤ふ页跏蓟蛄虚L度模板與特定的操作系統(tǒng)相匹配的方法。利用它可以對許多系統(tǒng)分類,如較早的Unix系統(tǒng)是64K長度,一些新的Unix系統(tǒng)的長度則是隨機(jī)增長。還有就是檢查返回包里包含的窗口長度,這項(xiàng)技術(shù)根據(jù)各個(gè)操作系統(tǒng)的不同的初始化窗口大小來唯一確定它們。利用這種技術(shù)實(shí)現(xiàn)的工具很多,比較著名的有NMAP、CHECKOS、QUESO等。
獲知目標(biāo)提供哪些服務(wù)及各服務(wù)daemon的類型、版本同樣非常重要,因?yàn)橐阎穆┒匆话愣际菍δ骋环?wù)的。這里說的提供服務(wù)就是指通常我們提到的喘口,例如一般TELNET在23端口,F(xiàn)TP在對21端口,WWW在80端口或8080端口,這只是一般情況,網(wǎng)站管理完全可以按自己的意愿修改服務(wù)所監(jiān)聽的端口號。在不同服務(wù)器上提供同一種服務(wù)的軟件也可以是不同,我們管這種軟件叫做daemon,例如同樣是提供FTP服務(wù),可以使用wuftp、proftp,ncftp等許多不同種類的daemon。確定daemon的類型版本也有助于黑客利用系統(tǒng)漏洞攻破網(wǎng)站。
另外需要獲得的關(guān)于系統(tǒng)的信息就是一些與計(jì)算機(jī)本身沒有關(guān)系的社會(huì)信息,例如網(wǎng)站所屬公司的名稱、規(guī)模,網(wǎng)絡(luò)管理員的生活習(xí)慣、電話號碼等。這些信息看起來與攻擊一個(gè)網(wǎng)站沒有關(guān)系,實(shí)際上很多黑客都是利用了這類信息攻破網(wǎng)站的。例如有些網(wǎng)站管理員用自己的電話號碼做系統(tǒng)密碼,如果掌握了該電話號碼,就等于掌握了管理員權(quán)限進(jìn)行信息收集可以用手工進(jìn)行,也可以利用工具來完成,完成信息收集的工具叫做掃描器。用掃描器收集信息的優(yōu)點(diǎn)是速度快,可以一次對多個(gè)目標(biāo)進(jìn)行掃描。