一 Web欺騙攻擊
Web欺騙的行為特點(diǎn) Web站點(diǎn)的廣泛用,誘惑著網(wǎng)上的欺詐行為。這種欺詐行為是由于鋪天蓋地的信息,讓人們無(wú)法辨別其真?zhèn)卧斐傻摹?SPAN .="t_tag" href="tag.php?name=%E7%94%A8%E6%88%B7">用戶在使用計(jì)算機(jī)時(shí)總是根據(jù)他們所看到的內(nèi)容做出一些關(guān)于安全性的決定。如:你也許在看到銀行的Web頁(yè)面時(shí)輸入你在該銀行的帳戶和口令,而很少去想,這Web頁(yè)面究竟是不是來(lái)自銀行的信息。 攻擊者建立一個(gè)人們相信的Web站點(diǎn)的拷貝,然后控制這個(gè)Web站點(diǎn)的拷貝,攻擊者控制被攻擊對(duì)象和真的Web服務(wù)器之間的所有信息流。攻擊者既可以假冒用戶給服務(wù)器發(fā)送數(shù)據(jù),也可以假冒服務(wù)器給用戶發(fā)送假冒的信息。 1、靜態(tài)觀察 被動(dòng)地觀察整個(gè)數(shù)據(jù)流。 記錄瀏覽者所訪問(wèn)的頁(yè)面和頁(yè)面的內(nèi)容。 記錄用戶輸入的數(shù)據(jù)和服務(wù)器的響應(yīng)。 大多數(shù)在線商務(wù)都要填充表格,所以可簡(jiǎn)單地獲得用戶的口令。 2、實(shí)施破壞 攻擊者可以隨意修改來(lái)往于瀏覽者和服務(wù)器間的信息。 攻擊者可以隨意修改來(lái)往于瀏覽者和服務(wù)器間的信息。攻擊者可以修改服務(wù)器發(fā)送給瀏覽者的信息,如插入些誤導(dǎo)性的數(shù)據(jù)欺騙瀏覽者或引起用戶再也不信任這個(gè)網(wǎng)站。 3、攻擊的簡(jiǎn)單性 攻擊者偽裝Web站點(diǎn)較為容易,因?yàn)椴恍枰鎯?chǔ)整個(gè)Web站點(diǎn)的內(nèi)容,整個(gè)Web站點(diǎn)的內(nèi)容可以在線得到,攻擊者只要及時(shí)獲得所需的Web頁(yè)面就行了。 攻擊原理與過(guò)程 1、攻擊原理 攻擊的關(guān)鍵在于攻擊者的Web服務(wù)器能夠插在瀏覽者和其他Web服務(wù)器之間。攻擊者改寫某個(gè)頁(yè)面上的URL使得連接都指向攻擊者的機(jī)器。如攻擊者的服務(wù)器在機(jī)器http://bbs./www.上運(yùn)行,那么攻擊者要在頁(yè)面上所有的URL前加上http://www./。如原來(lái)的URL為http://home./就變成http://www./http://www.。 瀏覽者請(qǐng)求一個(gè)頁(yè)面時(shí)將發(fā)生如下事情: 瀏覽者請(qǐng)求來(lái)自于攻擊者服務(wù)器的頁(yè)面。 攻擊服務(wù)器請(qǐng)求真正的服務(wù)器的相應(yīng)頁(yè)面。 真正服務(wù)器向攻擊服務(wù)器提供真正頁(yè)面。 攻擊服務(wù)器重寫頁(yè)面。 攻擊服務(wù)器向?yàn)g覽者提供一個(gè)經(jīng)過(guò)修改的頁(yè)面。 2、攻擊過(guò)程 可通過(guò)下列方法誘惑被攻擊對(duì)象連接到攻擊者的假Web上: 把一個(gè)指向假Web的鏈接放到一個(gè)流行的Web頁(yè)上。 使用電子郵件系統(tǒng)發(fā)郵件引誘。 使Web搜索引擎指向假Web。 當(dāng)瀏覽者瀏覽頁(yè)面時(shí),他實(shí)際上向攻擊服務(wù)器詢問(wèn)這個(gè)文檔,而攻擊服務(wù)器再去真正的服務(wù)器取回這個(gè)文檔。文檔取回后,攻擊者在該文檔的所有URL前面加上自己的地址來(lái)改寫這個(gè)文檔,攻擊者向?yàn)g覽者提供改寫后的文檔。 攻擊者通常都會(huì)對(duì)攻擊過(guò)程進(jìn)行偽裝,以防瀏覽者發(fā)現(xiàn)。 狀態(tài)行:狀態(tài)行是在瀏覽器窗口底邊的一行文本,會(huì)顯示不同的信息,通常是正在傳輸?shù)腤eb,從這里可以看到瀏覽器真正連接的服務(wù)器。這會(huì)留下痕跡。攻擊者可以通過(guò)加一個(gè)JavaScript程序來(lái)消除痕跡。JavaScript程序可以寫狀態(tài)行,因此可以讓某個(gè)事件的發(fā)生結(jié)合某個(gè)JavaScript的行動(dòng),在狀態(tài)行上顯示應(yīng)該的內(nèi)容。 地址行:瀏覽器的地址行,攻擊會(huì)在地址行上顯示一個(gè)被篡改的URL,從而給用戶一個(gè)被攻擊的提示。這個(gè)線索同樣可以用JavaScript來(lái)隱藏。一個(gè)JavaScript程序可以用一個(gè)假的地址行來(lái)代替一個(gè)真的地址行。 防范措施 Web欺騙攻擊的危害性很大,上當(dāng)?shù)挠脩舨坏珪?huì)泄露機(jī)密信息,還可能會(huì)蒙受經(jīng)濟(jì)等方面的損失。上網(wǎng)的用戶應(yīng)該提高警惕,不要成為犧牲品。 為確保安全,用戶可以采取一些應(yīng)急的措施: 關(guān)閉瀏覽器的JavaScript選項(xiàng),使得攻擊者不能隱藏攻擊的痕跡。 確信你的瀏覽器的地址行總是可見(jiàn)的。注意瀏覽器地址行上顯示的URL,確信他們一定指向所希望的服務(wù)器。 進(jìn)入SSL安全連接時(shí),仔細(xì)查看站點(diǎn)的證書是否與其聲稱的一致,不要被相似的字符所欺騙。 對(duì)訪問(wèn)進(jìn)行限制: IP地址、子網(wǎng)、域的限制。預(yù)先對(duì)允許的IP地址子網(wǎng)和域進(jìn)行授權(quán)。 使用用戶名和密碼。 加密。所有傳輸內(nèi)容加密,除接收者外無(wú)人能懂。 JavaScript,ActiveX和Java都使得假冒越來(lái)越方便了,最好在瀏覽器上全部關(guān)閉它們。 二 分布式拒絕服務(wù)攻擊
DoS的攻擊方式有很多種,最基本的DoS攻擊就是利用合理的服務(wù)請(qǐng)求來(lái)占用過(guò)多的服務(wù)資源,從而使合法用戶無(wú)法得到服務(wù)的響應(yīng)。DDoS攻擊手段是在傳統(tǒng)的DoS攻擊基礎(chǔ)之上產(chǎn)生的一類攻擊方式。單一的DoS攻擊一般是采用一對(duì)一方式的,當(dāng)攻擊目標(biāo)CPU速度低、內(nèi)存或者網(wǎng)絡(luò)帶寬等各項(xiàng)性能指標(biāo)不高時(shí),它的攻擊效果是明顯的。隨著計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)的發(fā)展,計(jì)算機(jī)的處理能力迅速增長(zhǎng),內(nèi)存大大增加,同時(shí)也出現(xiàn)了千兆級(jí)別的網(wǎng)絡(luò),這使得DoS攻擊的困難程度加大了。目標(biāo)對(duì)惡意攻擊包的“消化能力”加強(qiáng)了不少,例如你的攻擊軟件每秒鐘可以發(fā)送2,000個(gè)攻擊包,但我的主機(jī)與網(wǎng)絡(luò)帶寬每秒鐘可以處理8,000個(gè)包,這樣一來(lái)攻擊就不會(huì)產(chǎn)生什么效果了。 1. 拒絕服務(wù)攻擊的含義 拒絕服務(wù)攻擊是指一個(gè)用戶占用了大量的共享資源,使系統(tǒng)沒(méi)有其他的資源給其他用戶使用的攻擊。拒絕服務(wù)攻擊降低了系統(tǒng)資源的可用性。 系統(tǒng)資源包括:CPU時(shí)間、磁盤空間、網(wǎng)絡(luò)帶寬、打印機(jī)、MODEM、甚至是系統(tǒng)管理員的時(shí)間。攻擊的結(jié)果是減低或失去服務(wù)。 2. 拒絕服務(wù)攻擊分類 拒絕服務(wù)攻擊可分為兩類: A、試圖破壞和毀壞資源,使得無(wú)人可以使用這個(gè)資源。如刪除文件,格式化磁盤或切斷電源等。 B、過(guò)載一系列服務(wù)或者消耗一些資源,這些行為也許是攻擊者故意的行為,也許是用戶無(wú)意中的錯(cuò)誤所致。通過(guò)這些方式,阻止其他用戶使用這些服務(wù)。如添滿磁盤空間等。 過(guò)載攻擊 在過(guò)載攻擊中,一個(gè)共享的資源或者服務(wù)由于需要處理大量的請(qǐng)求,以致于無(wú)法滿足從其他用戶到來(lái)的請(qǐng)求。典型的有下列幾種: 1. 進(jìn)程過(guò)載 在進(jìn)程攻擊中,一個(gè)用戶可以阻止在同時(shí)間內(nèi)另一個(gè)用戶使用計(jì)算機(jī),進(jìn)程攻擊通常發(fā)生在共享的計(jì)算機(jī)中。進(jìn)行這種攻擊的用戶消耗的是他自己的進(jìn)程數(shù)目,而不是別人的。用戶產(chǎn)生的許多進(jìn)程,會(huì)消耗大量的CPU時(shí)間,使系統(tǒng)運(yùn)行變的 十分緩慢。在目前的操作系統(tǒng)中,用戶所能創(chuàng)建的最大進(jìn)程數(shù)是受到限制的,只有超級(jí)用戶沒(méi)有限制。 遇到這種情況,只能殺掉這些進(jìn)程或關(guān)機(jī)重起。 2. 磁盤攻擊 如果一個(gè)用戶向磁盤填充了大量的文件,其他用戶便不能生成文件。 網(wǎng)絡(luò)拒絕服務(wù)攻擊 網(wǎng)絡(luò)對(duì)拒絕服務(wù)的抵抗力很有限,攻擊者可以通過(guò)攻擊阻止合法用戶使用網(wǎng)絡(luò)和服務(wù)。 1. 服務(wù)過(guò)載 當(dāng)大量的服務(wù)請(qǐng)求發(fā)向一臺(tái)計(jì)算機(jī)中的服務(wù)守護(hù)進(jìn)程時(shí),就會(huì)發(fā)生服務(wù)過(guò)載。這些請(qǐng)求許多是故意的,如潮的請(qǐng)求會(huì)使計(jì)算機(jī)十分忙碌地處理不斷到來(lái)的服務(wù)請(qǐng)求,而無(wú)法處理常規(guī)任務(wù)。 由于沒(méi)有空間存放這些請(qǐng)求,許多新到請(qǐng)求被丟棄,如果是TCP協(xié)議的服務(wù),這些請(qǐng)求的包還會(huì)重發(fā),結(jié)果更加重了網(wǎng)絡(luò)的負(fù)擔(dān)??梢允褂镁W(wǎng)絡(luò)監(jiān)視工具來(lái)發(fā)現(xiàn)這類攻擊,甚至發(fā)現(xiàn)攻擊的來(lái)源。 2. 粘住攻擊 使用TCP的半連接耗盡系統(tǒng)資源。TCP連接通過(guò)三次握手來(lái)建立一個(gè)連接, 如果攻擊者發(fā)出許多連接請(qǐng)求,初步建立了連接,但又沒(méi)有完成其后的連接步驟,于是接收者便保留了許多這種半連接,占據(jù)著有限的系統(tǒng)資源。 通常這類連接使用的是偽造的源地址,根本沒(méi)有辦法去跟蹤這個(gè)連接,唯一可做的是等待,等待這個(gè)連接超時(shí)釋放。 3. SYN-Flooding攻擊 在SYN-Flooding攻擊中,使用一個(gè)偽裝的地址向目標(biāo)計(jì)算機(jī)發(fā)送TCP請(qǐng)求, 黑客盡可能地發(fā)送這些請(qǐng)求,以便占用目標(biāo)計(jì)算機(jī)盡可能多的資源。 當(dāng)目標(biāo)計(jì)算機(jī)收到請(qǐng)求后,會(huì)恢復(fù)請(qǐng)求一個(gè)確認(rèn)答復(fù)(SYN-ACK)。由于SYN-ACK是返回到一個(gè)偽裝的地址,沒(méi)有任何響應(yīng),于是目標(biāo)計(jì)算機(jī)將繼續(xù)設(shè)法發(fā)送SYN-ACK。 一些系統(tǒng)都有缺省的恢復(fù)次數(shù)和超時(shí)時(shí)間,只有恢復(fù)一定的次數(shù)或者超時(shí)后,才會(huì)釋放占用的系統(tǒng)資源。 在Windows NT 3.5和4.0中,缺省設(shè)置為可重復(fù)發(fā)送SYN-ACK答復(fù)5次,每次重發(fā)后,等待時(shí)間翻番。第一次等待時(shí)間為3秒,到第五次重發(fā)時(shí),機(jī)器要等待48秒,如果還收不到響應(yīng)機(jī)器還要等待96秒,才取消分配給連接的資源,在這些資源獲得釋放前,已經(jīng)過(guò)去了189秒。 最基本的DoS攻擊就是利用合理的服務(wù)請(qǐng)求來(lái)占用過(guò)多的服務(wù)資源,從而使合法用戶無(wú)法得到服務(wù)的響應(yīng)。DDoS攻擊手段是在傳統(tǒng)的DoS攻擊基礎(chǔ)之上產(chǎn)生的一類攻擊方式。單一的DoS攻擊一般是采用一對(duì)一方式的,當(dāng)攻擊目標(biāo)CPU速度低、內(nèi)存或者網(wǎng)絡(luò)帶寬等各項(xiàng)性能指標(biāo)不高時(shí),它的攻擊效果是明顯的。 分布式的拒絕服務(wù)攻擊(DDoS)的原理就很簡(jiǎn)單。如果說(shuō)計(jì)算機(jī)與網(wǎng)絡(luò)的處理能力加大了10倍,用一臺(tái)攻擊機(jī)來(lái)攻擊不再能起作用的話,攻擊者使用10臺(tái)或100臺(tái)器機(jī)同時(shí)攻擊就會(huì)產(chǎn)生預(yù)想的效果。DDoS就是利用更多的傀儡機(jī)來(lái)發(fā)起進(jìn)攻,以比從前更大的規(guī)模來(lái)進(jìn)攻受害者。 高速?gòu)V泛連接的網(wǎng)絡(luò)為DDoS攻擊創(chuàng)造了極為有利的條件。在低速網(wǎng)絡(luò)時(shí)代時(shí),黑客占領(lǐng)攻擊用的傀儡機(jī)時(shí),總是會(huì)優(yōu)先考慮離目標(biāo)網(wǎng)絡(luò)距離近的機(jī)器,因?yàn)榻?jīng)過(guò)路由器的跳數(shù)少,效果好。而現(xiàn)在電信骨干結(jié)點(diǎn)之間的連接都是以千兆為級(jí)別,這使得攻擊可以從更遠(yuǎn)的地方或者其他城市發(fā)起,攻擊者的傀儡機(jī)位置可以分布在更大的范圍,選擇起來(lái)更靈活。 攻擊原理 如圖所示,一個(gè)比較完善的DDoS攻擊體系分成四大部分,先來(lái)看一下最重要的第2和第3部分:它們分別用做控制和實(shí)際發(fā)起攻擊,請(qǐng)注意控制機(jī)與攻擊機(jī)的區(qū)別。對(duì)第4部分的受害者來(lái)說(shuō),DDoS的實(shí)際攻擊包是從第3部分攻擊傀儡機(jī)上發(fā)出的,第2部分的控制機(jī)只發(fā)布命令而不參與實(shí)際的攻擊。對(duì)第2和第3部分計(jì)算機(jī),黑客有控制權(quán)或者是部分的控制權(quán),并把相應(yīng)的DDoS程序上傳到這些平臺(tái)上,這些程序與正常的程序一樣運(yùn)行并等待來(lái)自黑客的指令,通常它還會(huì)利用各種手段隱藏自己不被別人發(fā)現(xiàn)。在平時(shí),這些傀儡機(jī)器并沒(méi)有什么異常,只是一旦黑客連接到它們進(jìn)行控制,并發(fā)出指令的時(shí)候,攻擊傀儡機(jī)就成為害人者去發(fā)起攻擊了。 為什么黑客不直接去控制攻擊傀儡機(jī),而要從控制傀儡機(jī)上轉(zhuǎn)一下呢?這是導(dǎo)致DDoS攻擊難以追查的原因之一。從攻擊者的角度來(lái)說(shuō),肯定不愿意被追查到,而攻擊者使用的傀儡機(jī)越多,實(shí)際上提供給受害者的分析的依據(jù)就越多。另一方面,為了不給日后的追查留下痕跡,攻擊者會(huì)清理掉被占主機(jī)中的相關(guān)日志記錄,由于參與攻擊的傀儡機(jī)數(shù)量較多,在攻擊傀儡機(jī)上清理日志實(shí)在是一項(xiàng)龐大的工程,即使在很好的日志清理工具的幫助下。這就導(dǎo)致了有些攻擊機(jī)日志清理的不徹底,通過(guò)這些線索可以找到控制它的上一級(jí)計(jì)算機(jī)。由于控制傀儡機(jī)的數(shù)目相對(duì)很少,一般一臺(tái)就可以控制幾十臺(tái)攻擊機(jī),清理一臺(tái)計(jì)算機(jī)的日志對(duì)黑客來(lái)講就輕松多了,這樣從控制機(jī)再找到黑客的可能性也大大降低。 攻擊過(guò)程 DDoS并不象**一臺(tái)主機(jī)那樣簡(jiǎn)單。一般來(lái)說(shuō),黑客進(jìn)行DDoS攻擊時(shí)會(huì)經(jīng)過(guò)這樣的步驟: 搜集了解目標(biāo)的情況(被攻擊目標(biāo)主機(jī)數(shù)目、地址情況;目標(biāo)主機(jī)的配置、性能;目標(biāo)的帶寬;有多少臺(tái)主機(jī)在支持這個(gè)站點(diǎn) )。 占領(lǐng)傀儡機(jī)。黑客最感興趣的是有下列特點(diǎn)的主機(jī):鏈路狀態(tài)好的主機(jī)、性能好的主機(jī)、安全管理水平差的主機(jī)。 實(shí)際攻擊。如果前面的準(zhǔn)備工作做得好,實(shí)際攻擊過(guò)程反而是比較簡(jiǎn)單的。黑客登錄到作為控制臺(tái)的傀儡機(jī),向所有的攻擊機(jī)發(fā)出命令,潛伏在攻擊機(jī)中的DDoS攻擊程序就會(huì)響應(yīng)控制臺(tái)的命令,一起向受害主機(jī)以高速度發(fā)送大量的數(shù)據(jù)包,導(dǎo)致目標(biāo)死機(jī)或是無(wú)法響應(yīng)正常的請(qǐng)求。 黑客一般會(huì)以遠(yuǎn)遠(yuǎn)超出受害方處理能力的速度進(jìn)行攻擊,決不會(huì)手下留情。 防范措施 遭受DDoS攻擊的主機(jī)和網(wǎng)絡(luò)會(huì)有一些表現(xiàn)特征,有助于管理人員及時(shí)發(fā)現(xiàn)問(wèn)題并采取對(duì)應(yīng)措施。 被攻擊主機(jī)上有大量等待的TCP連接。 網(wǎng)絡(luò)中充斥著大量的無(wú)用的數(shù)據(jù)包,源地址為假。 制造高流量無(wú)用數(shù)據(jù),造成網(wǎng)絡(luò)擁塞,使受害主機(jī)無(wú)法正常和外界通訊。 利用受害主機(jī)提供的服務(wù)或傳輸協(xié)議上的缺陷,反復(fù)高速的發(fā)出特定的服務(wù)請(qǐng)求,使受害主機(jī)無(wú)法及時(shí)處理所有正常請(qǐng)求。 嚴(yán)重時(shí)會(huì)造成系統(tǒng)死機(jī)。 到目前為止,進(jìn)行DDoS攻擊的防御還是比較困難的。首先,這種攻擊的特點(diǎn)是它利用了TCP/IP協(xié)議的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻擊。對(duì)DDoS攻擊有個(gè)形象的比喻:DDoS就好象有100個(gè)人同時(shí)給你家里打電話,這時(shí)候你的朋友還打得進(jìn)來(lái)嗎? 當(dāng)然,防止DDoS也絕不是不可行的事情。核心的目標(biāo)就是大家都應(yīng)力爭(zhēng)不要成為黑客的傀儡機(jī)。對(duì)于網(wǎng)絡(luò)管理員來(lái)說(shuō),如果所維護(hù)的網(wǎng)絡(luò)中有一些服務(wù)器需要向外提供WWW服務(wù),就要注意不要成為DDoS的攻擊目標(biāo),具體可以從主機(jī)與網(wǎng)絡(luò)設(shè)備兩個(gè)角度去考慮。 1、主機(jī)設(shè)置 幾乎所有的主機(jī)平臺(tái)都有抵御DoS的設(shè)置,總結(jié)一下,基本的有以下幾種: 關(guān)閉不必要的服務(wù) 限制同時(shí)打開(kāi)的Syn半連接數(shù)目 縮短Syn半連接的time out 時(shí)間 及時(shí)更新系統(tǒng)補(bǔ)丁 2、網(wǎng)絡(luò)設(shè)備設(shè)置 網(wǎng)絡(luò)設(shè)備的設(shè)置可以從防火墻與路由器上考慮。 防火墻:禁止對(duì)主機(jī)的非開(kāi)放服務(wù)的訪問(wèn);限制同時(shí)打開(kāi)的SYN最大連接數(shù);限制特定IP地址的訪問(wèn);啟用防火墻的防DDoS屬性;嚴(yán)格限制對(duì)外開(kāi)放的服務(wù)器的向外訪問(wèn)。 路由器:(以Cisco路由器為例)Cisco Express Forwarding(CEF);使用 unicast reverse-path;訪問(wèn)控制列表(ACL)過(guò)濾;設(shè)置SYN數(shù)據(jù)包流量速率;升級(jí)版本過(guò)低的IOS;為路由器建立log server。其中使用CEF和Unicast設(shè)置時(shí)要特別注意,使用不當(dāng)會(huì)造成路由器工作效率嚴(yán)重下降,升級(jí)IOS也應(yīng)謹(jǐn)慎。 三 緩沖區(qū)溢出攻擊
緩沖區(qū)溢出是一種非常普遍、非常危險(xiǎn)的漏洞,在各種操作系統(tǒng)、應(yīng)用軟件中廣泛存在。利用緩沖區(qū)溢出攻擊,可以導(dǎo)致程序運(yùn)行失敗、系統(tǒng)關(guān)機(jī)、重新啟動(dòng)等后果。更為嚴(yán)重的是,可以利用它執(zhí)行非授權(quán)指令,甚至可以取得系統(tǒng)特權(quán),進(jìn)而進(jìn)行各種非法操作。 攻擊原理 通過(guò)往程序的緩沖區(qū)寫超出其長(zhǎng)度的內(nèi)容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,以達(dá)到攻擊的目的。 造成緩沖區(qū)溢出的原因是程序中沒(méi)有仔細(xì)檢查用戶輸入的參數(shù)。例如下面程序:
隨便往緩沖區(qū)中填東西造成它溢出一般只會(huì)出現(xiàn)“分段錯(cuò)誤”(Segmentation fault),而不能達(dá)到攻擊的目的。最常見(jiàn)的手段是通過(guò)制造緩沖區(qū)溢出使程序運(yùn)行一個(gè)用戶shell,再通過(guò)shell執(zhí)行其它命令。如果該程序?qū)儆趓oot且有suid權(quán)限的話,攻擊者就獲得了一個(gè)有root權(quán)限的shell,可以對(duì)系統(tǒng)進(jìn)行任意操作了。 緩沖區(qū)溢出攻擊之所以成為一種常見(jiàn)安全攻擊手段其原因在于緩沖區(qū)溢出漏洞太普遍了,并且易于實(shí)現(xiàn)。緩沖區(qū)溢出成為遠(yuǎn)程攻擊的主要手段,其原因在于緩沖區(qū)溢出漏洞給予了攻擊者所想要的一切:植入并且執(zhí)行攻擊代碼。被植入的攻擊代碼以一定的權(quán)限運(yùn)行有緩沖區(qū)溢出漏洞的程序,從而得到被攻擊主機(jī)的控制權(quán)。 攻擊過(guò)程 緩沖區(qū)溢出攻擊的目的在于擾亂具有某些特權(quán)運(yùn)行的程序的功能,這樣可以使得攻擊者取得程序的控制權(quán),如果該程序具有足夠的權(quán)限,那么整個(gè)主機(jī)就被控制了。一般而言,攻擊者攻擊具有root權(quán)限的程序,然后執(zhí)行類似“exec(sh)”的執(zhí)行代碼來(lái)獲得root權(quán)限的shell。為了達(dá)到這個(gè)目的,攻擊者必須達(dá)到如下兩個(gè)目標(biāo): 在程序的地址空間里安排適當(dāng)?shù)拇a。 通過(guò)適當(dāng)?shù)某跏蓟拇嫫骱蛢?nèi)存,讓程序跳轉(zhuǎn)到**者安排的地址空間執(zhí)行。 1、在程序地址空間中安排適當(dāng)代碼的方法 有兩種在被攻擊程序地址空間里安排攻擊代碼的方法: 植入法:攻擊者向被攻擊的程序輸入一個(gè)字符串,程序會(huì)把這個(gè)字符串放到緩沖區(qū)里。這個(gè)字符串包含的資料是可以在這個(gè)被攻擊的硬件平臺(tái)上運(yùn)行的指令序列。在這里,攻擊者用被攻擊程序的緩沖區(qū)來(lái)存放攻擊代碼。緩沖區(qū)可以設(shè)在任何地方:堆棧(stack,自動(dòng)變量)、堆(heap,動(dòng)態(tài)分配的內(nèi)存區(qū))和靜態(tài)資料區(qū)。 利用已經(jīng)存在的代碼:有時(shí),攻擊者想要的代碼已經(jīng)在被攻擊的程序中了,攻擊者所要做的只是對(duì)代碼傳遞一些參數(shù)。比如,攻擊代碼要求執(zhí)行“exec (“/bin/sh”)”,而在libc庫(kù)中的代碼執(zhí)行“exec (arg)”,其中arg是一個(gè)指向一個(gè)字符串的指針參數(shù),那么攻擊者只要把傳入的參數(shù)指針改向指向”/bin/sh”即可。 2、控制程序轉(zhuǎn)移到攻擊代碼的方法 所有的這些方法都是在尋求改變程序的執(zhí)行流程,使之跳轉(zhuǎn)到攻擊代碼。最基本的思想就是溢出一個(gè)沒(méi)有邊界檢查或者具有其它弱點(diǎn)的緩沖區(qū),這樣就擾亂了程序的正常的執(zhí)行順序。通過(guò)溢出一個(gè)緩沖區(qū),攻擊者可以用暴力的方法改寫相鄰的程序空間而直接跳過(guò)了系統(tǒng)的檢查。 分類的原則是攻擊者所尋求的緩沖區(qū)溢出的程序空間類型。原則上是可以任意的空間。實(shí)際上,許多的緩沖區(qū)溢出是用暴力的方法來(lái)尋求改變程序指針的。這類程序的不同之處就是程序空間的突破和內(nèi)存空間的定位不同。主要有以下三種: 活動(dòng)紀(jì)錄(Activation Records):每當(dāng)一個(gè)函數(shù)調(diào)用發(fā)生時(shí),調(diào)用者會(huì)在堆棧中留下一個(gè)活動(dòng)紀(jì)錄,它包含了函數(shù)結(jié)束時(shí)返回的地址。攻擊者通過(guò)溢出堆棧中的自動(dòng)變量,使返回地址指向攻擊代碼。通過(guò)改變程序的返回地址,當(dāng)函數(shù)調(diào)用結(jié)束時(shí),程序就跳轉(zhuǎn)到攻擊者設(shè)定的地址,而不是原先的地址。這類的緩沖區(qū)溢出被稱為堆棧溢出攻擊(Stack Smashing Attack),是目前最常用的緩沖區(qū)溢出攻擊方式。 函數(shù)指針(Function Pointers):函數(shù)指針可以用來(lái)定位任何地址空間。例如:“void (* foo)()”聲明了一個(gè)返回值為void的函數(shù)指針變量foo。所以攻擊者只需在任何空間內(nèi)的函數(shù)指針附近找到一個(gè)能夠溢出的緩沖區(qū),然后溢出這個(gè)緩沖區(qū)來(lái)改變函數(shù)指針。在某一時(shí)刻,當(dāng)程序通過(guò)函數(shù)指針調(diào)用函數(shù)時(shí),程序的流程就按攻擊者的意圖實(shí)現(xiàn)了。它的一個(gè)攻擊范例就是在Linux系統(tǒng)下的superprobe程序。 長(zhǎng)跳轉(zhuǎn)緩沖區(qū)(Longjmp buffers):在C語(yǔ)言中包含了一個(gè)簡(jiǎn)單的檢驗(yàn)/恢復(fù)系統(tǒng),稱為setjmp/longjmp。意思是在檢驗(yàn)點(diǎn)設(shè)定“setjmp(buffer)”,用“l(fā)ongjmp(buffer)”來(lái)恢復(fù)檢驗(yàn)點(diǎn)。然而,如果攻擊者能夠進(jìn)入緩沖區(qū)的空間,那么“l(fā)ongjmp(buffer)”實(shí)際上是跳轉(zhuǎn)到攻擊者的代碼。象函數(shù)指針一樣,longjmp緩沖區(qū)能夠指向任何地方,所以攻擊者所要做的就是找到一個(gè)可供溢出的緩沖區(qū)。 防范措施 緩沖區(qū)溢出攻擊在遠(yuǎn)程網(wǎng)絡(luò)攻擊中占了大多數(shù),這種攻擊可以使得一個(gè)匿名的Internet用戶有機(jī)會(huì)獲得一臺(tái)主機(jī)的部分或全部的控制權(quán)。如果能有效地消除緩沖區(qū)溢出的漏洞,則很大一部分安全威脅可以得到緩解。 目前有四種基本的方法保護(hù)主機(jī)免受緩沖區(qū)溢出的攻擊和影響。 1、非執(zhí)行緩沖區(qū) 通過(guò)使被攻擊程序的數(shù)據(jù)段地址空間不可執(zhí)行,從而使得攻擊者不可能執(zhí)行已植入到被攻擊程序輸入緩沖區(qū)的代碼,這種技術(shù)被稱為非執(zhí)行的緩沖區(qū)技術(shù)。在早期的Unix系統(tǒng)設(shè)計(jì)中,只允許程序代碼在代碼段中執(zhí)行。但是近來(lái)的Unix和MS Windows系統(tǒng)由于要實(shí)現(xiàn)更好的性能和功能,往往在數(shù)據(jù)段中動(dòng)態(tài)地放入可執(zhí)行的代碼,這也是緩沖區(qū)溢出的根源。為了保持程序的兼容性,不可能使得所有程序的數(shù)據(jù)段不可執(zhí)行。但是可以設(shè)定堆棧數(shù)據(jù)段不可執(zhí)行,這樣可以保證程序的兼容性。 2、編寫正確的代碼 編寫正確的代碼是一件非常有意義的工作,特別象編寫C語(yǔ)言那種風(fēng)格自由而容易出錯(cuò)的程序,這種風(fēng)格是由于追求性能而忽視正確性的傳統(tǒng)引起的。人們開(kāi)發(fā)了一些工具和技術(shù)來(lái)幫助經(jīng)驗(yàn)不足的程序員編寫安全正確的程序。 用grep來(lái)搜索源代碼中容易產(chǎn)生漏洞的庫(kù)調(diào)用,如對(duì)strcpy的調(diào)用。 開(kāi)發(fā)了一些高級(jí)的查錯(cuò)工具,如fault injection等。這些工具的目的在于通過(guò)人為隨機(jī)地產(chǎn)生一些緩沖區(qū)溢出來(lái)尋找代碼的安全漏洞。還有一些靜態(tài)分析工具用于偵測(cè)緩沖區(qū)溢出的存在。 偵錯(cuò)技術(shù)只能用來(lái)減少緩沖區(qū)溢出的可能,并不能完全地消除它的存在。 3、數(shù)組邊界檢查 數(shù)組邊界檢查能防止所有的緩沖區(qū)溢出的產(chǎn)生和攻擊。這是因?yàn)橹灰獢?shù)組不能被溢出,溢出攻擊也就無(wú)從談起。為了實(shí)現(xiàn)數(shù)組邊界檢查,則所有的對(duì)數(shù)組的讀寫操作都應(yīng)當(dāng)被檢查以確保對(duì)數(shù)組的操作在正確的范圍內(nèi)。最直接的方法是檢查所有的數(shù)組操作,但是通??梢圆捎靡恍﹥?yōu)化的技術(shù)來(lái)減少檢查的次數(shù)。目前的幾種檢查方法: Jones & Kelly:C的數(shù)組邊界檢查。 Compaq C 編譯器:Compaq公司為Alpha CPU開(kāi)發(fā)的C編譯器支持有限的邊界檢查。 Purify:內(nèi)存存取檢查 類型-安全語(yǔ)言 4、程序指針完整性檢查 程序指針完整性檢查和邊界檢查有略微的不同,程序指針完整性檢查在程序指針被引用之前檢測(cè)它的改變。因此,即使一個(gè)攻擊者成功地改變了程序的指針,由于系統(tǒng)事先檢測(cè)到了指針的改變,因此這個(gè)指針將不會(huì)被使用。 與數(shù)組邊界檢查相比,這種方法不能解決所有的緩沖區(qū)溢出問(wèn)題,采用有些緩沖區(qū)溢出攻擊方法可以避開(kāi)這種檢測(cè)。但是這種方法在性能上有很大的優(yōu)勢(shì),而且兼容性也很好。 四 IP地址欺騙
即使是實(shí)現(xiàn)良好的TCP/IP協(xié)議,由于協(xié)議自身存在著的一些問(wèn)題,也可以導(dǎo)致對(duì)TCP/IP網(wǎng)絡(luò)的攻擊,如序列號(hào)欺騙,路由攻擊和源地址欺騙等。IP地址欺騙包括源地址欺騙和序列號(hào)欺騙,是最常見(jiàn)的攻擊TCP/IP協(xié)議弱點(diǎn)的方法之一。實(shí)際上,IP 欺騙不是攻擊的結(jié)果,而是攻擊的手段。主要的攻擊對(duì)象是基于IP地址鑒別的網(wǎng)絡(luò)應(yīng)用,如UNIX系統(tǒng)中的R系列服務(wù)。 11.4.1攻擊原理 1、信任關(guān)系 在UNIX系統(tǒng)中,信任關(guān)系能夠很容易得到。假設(shè)在主機(jī)A和B上各有一個(gè)帳戶,在使用主機(jī)A時(shí),需要輸入主機(jī)A上的帳戶及密碼,使用主機(jī)B時(shí),同樣也必須輸入在主機(jī)B上的帳戶及密碼,主機(jī)A和B把你當(dāng)作兩個(gè)互不相關(guān)的用戶,顯然這有些不便。為了減少這種不便,可以在主機(jī)A和主機(jī)B中建立起兩個(gè)帳戶的相互信任關(guān)系。有了這種信任關(guān)系,就可以方便地使用任何以r開(kāi)頭的遠(yuǎn)程調(diào)用命令,如:rlogin,rcall,rsh等,而無(wú)口令驗(yàn)證的煩惱。這些命令將提供以地址為基礎(chǔ)的驗(yàn)證,根據(jù)訪問(wèn)者IP地址,決定允許或拒絕存取服務(wù)。即信任關(guān)系是基于IP地址的。 2、TCP序列號(hào)猜測(cè) 大家都知道,TCP連接的建立包括一個(gè)三次握手的過(guò)程,如圖所示。由于在某些系統(tǒng)中序列號(hào)y的產(chǎn)生規(guī)律相對(duì)簡(jiǎn)單,就為今后的安全留下了隱患。 如果攻擊者了解主機(jī)A與B之間建立了信任關(guān)系,在A不能正常工作時(shí),假冒主機(jī)A的IP地址,向主機(jī)B發(fā)送建立TCP連接的請(qǐng)求包,這時(shí)如果攻擊者能夠猜出主機(jī)B確認(rèn)包中的序列號(hào)y,就可以假冒主機(jī)A與主機(jī)B建立TCP連接。然后通過(guò)傳送可執(zhí)行的命令數(shù)據(jù),侵入主機(jī)B中。 為何要猜序列號(hào)? 當(dāng)攻擊者C與A位于不同子網(wǎng)時(shí),若C冒充A向B發(fā)連接請(qǐng)求時(shí),C是無(wú)法收到服務(wù)器B的應(yīng)答的 攻擊過(guò)程 IP地址欺騙攻擊由若干步驟組成。首先,選定目標(biāo)主機(jī);其次,發(fā)現(xiàn)信任模式,并找到一個(gè)被目標(biāo)主機(jī)信任的主機(jī);然后,使該主機(jī)喪失工作能力,同時(shí)采樣目標(biāo)主機(jī)發(fā)出的TCP 序列號(hào),猜測(cè)出它的數(shù)據(jù)序列號(hào)。然后,偽裝成被信任的主機(jī),同時(shí)建立起與目標(biāo)主機(jī)基于地址驗(yàn)證的應(yīng)用連接。如果成功,黑客可以使用一種簡(jiǎn)單的命令放置一個(gè)系統(tǒng)后門,以進(jìn)行非授權(quán)操作。 一旦發(fā)現(xiàn)被信任的主機(jī),為了偽裝成它,往往使其喪失工作能力。由于攻擊者將要代替真正的被信任主機(jī),他必須確保真正被信任的主機(jī)不能接收到任何有效的網(wǎng)絡(luò)數(shù)據(jù),否則將會(huì)被揭穿。有許多方法可以實(shí)現(xiàn)這一點(diǎn),如SYN-Flood攻擊。 為了知道目標(biāo)主機(jī)使用的數(shù)據(jù)包序列號(hào),攻擊者往往先與被攻擊主機(jī)的一個(gè)端口(SMTP是一個(gè)很好的選擇)建立起正常的連接。通常,這個(gè)過(guò)程被重復(fù)若干次,并將目標(biāo)主機(jī)最后所發(fā)送的序列號(hào)存儲(chǔ)起來(lái)。此外,攻擊者還需要估計(jì)他的主機(jī)與被信任主機(jī)之間的包往返時(shí)間,這個(gè)時(shí)間是通過(guò)多次統(tǒng)計(jì)平均求出的,它對(duì)于估計(jì)下一個(gè)數(shù)據(jù)序列號(hào)是非常重要的。 在上述準(zhǔn)備完成后,攻擊者將使用被信任主機(jī)的IP地址,此時(shí),該主機(jī)仍然處在停頓狀態(tài)(前面講的喪失處理能力),向目標(biāo)主機(jī)的513端口(rlogin的端口號(hào))發(fā)送連接請(qǐng)求。之后,目標(biāo)主機(jī)對(duì)連接請(qǐng)求作出反應(yīng),發(fā)送SYN/ACK數(shù)據(jù)包給被信任主機(jī)(如果被信任主機(jī)處于正常工作狀態(tài),那么會(huì)認(rèn)為是錯(cuò)誤并立即向目標(biāo)主機(jī)返回RST數(shù)據(jù)包,但此時(shí)它處于停頓狀態(tài))。按照計(jì)劃,被信任主機(jī)會(huì)拋棄該SYN/ACK數(shù)據(jù)包(當(dāng)然攻擊者也得不到該包,否則就不用猜了)。在協(xié)議要求得時(shí)間內(nèi),攻擊者向目標(biāo)主機(jī)發(fā)送ACK數(shù)據(jù)包,該ACK使用前面估計(jì)的序列號(hào)加1。如果攻擊者估計(jì)正確的話,目標(biāo)主機(jī)將會(huì)接收該ACK 。至此,連接正式建立起來(lái)了。然后,將開(kāi)始數(shù)據(jù)傳輸。一般地,攻擊者將在系統(tǒng)中放置一個(gè)后門,以便今后得侵入。 然后,偽裝成被信任的主機(jī),同時(shí)建立起與目標(biāo)主機(jī)基于地址驗(yàn)證的應(yīng)用連接。如果成功,黑客可以使用一種簡(jiǎn)單的命令放置一個(gè)系統(tǒng)后門,以進(jìn)行非授權(quán)操作。 此外, 在上述準(zhǔn)備完成后,攻擊者將使用被信任主機(jī)的IP地址,此時(shí),該主機(jī)仍然處在停頓狀態(tài)(前面講的喪失處理能力),向目標(biāo)主機(jī)的513端口(rlogin的端口號(hào))發(fā)送連接請(qǐng)求。之后,目標(biāo)主機(jī)對(duì)連接請(qǐng)求作出反應(yīng),發(fā)送SYN/ACK數(shù)據(jù)包給被信任主機(jī)(如果被信任主機(jī)處于正常工作狀態(tài),那么會(huì)認(rèn)為是錯(cuò)誤并立即向目標(biāo)主機(jī)返回RST數(shù)據(jù)包,但此時(shí)它處于停頓狀態(tài))。按照計(jì)劃,被信任主機(jī)會(huì)拋棄該SYN/ACK數(shù)據(jù)包(當(dāng)然攻擊者也得不到該包,否則就不用猜了)。在協(xié)議要求得時(shí)間內(nèi),攻擊者向目標(biāo)主機(jī)發(fā)送ACK數(shù)據(jù)包,該ACK使用前面估計(jì)的序列號(hào)加1。如果攻擊者估計(jì)正確的話,目標(biāo)主機(jī)將會(huì)接收該ACK 。至此,連接正式建立起來(lái)了。然后,將開(kāi)始數(shù)據(jù)傳輸。一般地,攻擊者將在系統(tǒng)中放置一個(gè)后門,以便今后得侵入。 3、使用加密方法 阻止IP欺騙的另一種明顯的方法是在通信時(shí)要求加密傳輸和驗(yàn)證。當(dāng)有多種手段可以使用時(shí),可能加密方法最為適用。 4、使用隨機(jī)化的初始序列號(hào) 黑客攻擊得以成功實(shí)現(xiàn)的一個(gè)很重要的因素就是,序列號(hào)不是隨機(jī)選擇的或者隨機(jī)增加的。一種彌補(bǔ)TCP不足的方法就是分割序列號(hào)空間。每一個(gè)連接將有自己獨(dú)立的序列號(hào)空間。序列號(hào)將仍然按照以前的方式增加,但是在這些序列號(hào)空間中沒(méi)有明顯的關(guān)系。 IP地址欺騙----Smurf攻擊 攻擊者向具有很大因特網(wǎng)連接帶寬并具有很多臺(tái)主機(jī)的網(wǎng)絡(luò)廣播地址發(fā)送一個(gè)偽造地址的Ping分組,這種做法稱為使用反彈站點(diǎn)(bounce site)。這個(gè)Ping分組的源地址是攻擊者想要攻擊的系統(tǒng)地址。 這種攻擊的前提是路由器接收到發(fā)送給IP廣播地址的分組后,會(huì)認(rèn)為這是一份網(wǎng)絡(luò)廣播信息,并且把它映射為以太網(wǎng)廣播地址FF.FF.FF.FF. FF.FF。 這樣當(dāng)路由器從因特網(wǎng)上接收到該分組時(shí),它就會(huì)向本網(wǎng)段中的所有主機(jī)廣播。 接下來(lái),網(wǎng)段內(nèi)的所有主機(jī)都會(huì)向偽造的IP地址發(fā)送回復(fù)信息,目標(biāo)將很快被回復(fù)信息阻塞。 防止措施:阻塞所有入站的Ping包;停止路由器為具有網(wǎng)絡(luò)廣播地址的分組映射LAN廣播地址的活動(dòng)。 IP地址欺騙----Land攻擊 Land攻擊的報(bào)文分組具有如下特點(diǎn): 源IP地址:被攻擊系統(tǒng)的IP地址。 目的IP地址:被攻擊系統(tǒng)的IP地址。 傳輸方式:TCP 源端口號(hào):135 目的端口號(hào):135 標(biāo)志設(shè)置:SYN=1 也可以使用其他的端口和設(shè)置。攻擊者會(huì)使系統(tǒng)錯(cuò)誤地認(rèn)為自己正在與自己交談,這樣可以造成死循環(huán),最終使系統(tǒng)掛起或死鎖。 防止措施:在路由器或防火墻的WAN端口禁止地址為本網(wǎng)段地址的IP包通過(guò)。 五 網(wǎng)絡(luò)監(jiān)聽(tīng)
網(wǎng)絡(luò)監(jiān)聽(tīng),在網(wǎng)絡(luò)安全上一直是一個(gè)比較敏感的話題,作為一種發(fā)展比較成熟的技術(shù),監(jiān)聽(tīng)在協(xié)助網(wǎng)絡(luò)管理員監(jiān)測(cè)網(wǎng)絡(luò)傳輸數(shù)據(jù),排除網(wǎng)絡(luò)故障等方面具有不可替代的作用,因而一直倍受網(wǎng)絡(luò)管理員的青睞。然而,在另一方面網(wǎng)絡(luò)監(jiān)聽(tīng)也給網(wǎng)絡(luò)安全帶來(lái)了極大的隱患,許多的網(wǎng)絡(luò)**往往都伴隨著網(wǎng)絡(luò)監(jiān)聽(tīng)行為,從而造成口令失竊,敏感數(shù)據(jù)被截獲等連鎖性安全事件。 網(wǎng)絡(luò)監(jiān)聽(tīng)可以在網(wǎng)上的任何一個(gè)位置實(shí)施,如局域網(wǎng)中的一臺(tái)主機(jī)、網(wǎng)關(guān)上或遠(yuǎn)程網(wǎng)的調(diào)制解調(diào)器之間等。黑客們用得最多的是截獲用戶的口令。在網(wǎng)絡(luò)上,監(jiān)聽(tīng)效果最好的地方是在網(wǎng)關(guān)、路由器、防火墻一類的設(shè)備處,通常由網(wǎng)絡(luò)管理員來(lái)操作。使用最方便的是在一個(gè)以太網(wǎng)中的任何一臺(tái)上網(wǎng)的主機(jī)上,這是大多數(shù)黑客的做法。 網(wǎng)絡(luò)監(jiān)聽(tīng)的原理十分簡(jiǎn)單: 對(duì)于共享介質(zhì)類型的網(wǎng)絡(luò),只要改變低層數(shù)據(jù)鏈路層的工作模式,將所有收到的數(shù)據(jù)包(不論目的地址是誰(shuí))統(tǒng)統(tǒng)收下并存儲(chǔ)進(jìn)行分析即可。 對(duì)于點(diǎn)到點(diǎn)的網(wǎng)絡(luò)連接,則需要搭線才能實(shí)現(xiàn)竊聽(tīng)。 網(wǎng)絡(luò)監(jiān)聽(tīng)的目的 1、截獲通信內(nèi)容 網(wǎng)上的監(jiān)聽(tīng)工具對(duì)網(wǎng)絡(luò)上主機(jī)間的通信,能給出一個(gè)詳細(xì)的,逐包的統(tǒng)計(jì)信息。**者可以選擇某一臺(tái)主機(jī),看看它正在同那些主機(jī)進(jìn)行通信,使用了哪些協(xié)議(通過(guò)端口號(hào)可以區(qū)分出來(lái)),傳輸了一些什么內(nèi)容。這類工具,常??梢栽O(shè)置詳細(xì)的過(guò)濾條件,可以針對(duì)信息的源主機(jī)、目的主機(jī)、使用的協(xié)議、使用的端口以及包的長(zhǎng)度來(lái)設(shè)置過(guò)濾條件,也可以是這些條件的邏輯組合。 對(duì)于**者來(lái)說(shuō),最喜歡的莫過(guò)于用戶的口令。其實(shí),在大多數(shù)情況下,監(jiān)聽(tīng)到的包中,用戶的口令完全是明文形式,并且很容易找出來(lái),因?yàn)槿藗儧](méi)有采取任何形式的加密措施。而且口令往往是在一次通信的最開(kāi)始的幾個(gè)數(shù)據(jù)包中,只要找到了兩臺(tái)主機(jī)間連接的開(kāi)始,便很容易找到鑒別用的口令。 2、對(duì)協(xié)議進(jìn)行分析 所有的監(jiān)聽(tīng)軟件都可以對(duì)數(shù)據(jù)包進(jìn)行詳細(xì)的分析,直到每一個(gè)字段的含義,實(shí)際上倒是學(xué)習(xí)網(wǎng)絡(luò)協(xié)議的好方法。 常用的監(jiān)聽(tīng)工具 1、微軟平臺(tái)的監(jiān)聽(tīng)工具 Windump:Windump最經(jīng)典的UNIX平臺(tái)上的tcpdump監(jiān)聽(tīng)工具的window移植版。 Iris:Eeye公司的軟件,有試用期,完全圖形化界面,可以很方便的定制各種截獲控制語(yǔ)句,對(duì)截獲數(shù)據(jù)包進(jìn)行分析,還原等。 NetXRay:一個(gè)功能強(qiáng)大,使用方便的協(xié)議分析和網(wǎng)絡(luò)監(jiān)控工具,能監(jiān)控多個(gè)網(wǎng)段。 2、UNIX平臺(tái)的監(jiān)聽(tīng)工具 tcpdump:最經(jīng)典的工具,被大量的*nix系統(tǒng)采用。 ngrep:借助于這個(gè)工具,管理員可以很方便的把截獲目標(biāo)定制在用戶名,口令等關(guān)鍵字上。 Sniffit:運(yùn)行于Solaris、SGI和Linux等平臺(tái)的一種網(wǎng)絡(luò)監(jiān)聽(tīng)軟件,功能強(qiáng)大、使用方便。 網(wǎng)絡(luò)監(jiān)聽(tīng)的檢測(cè)手段 網(wǎng)絡(luò)監(jiān)聽(tīng)是很難被發(fā)現(xiàn)的。運(yùn)行網(wǎng)絡(luò)監(jiān)聽(tīng)的主機(jī)只是被動(dòng)地接收網(wǎng)上傳輸?shù)男畔ⅲ](méi)有主動(dòng)的行動(dòng)。但運(yùn)行監(jiān)聽(tīng)軟件的機(jī)器有一個(gè)特征:當(dāng)系統(tǒng)運(yùn)行網(wǎng)絡(luò)監(jiān)聽(tīng)軟件時(shí),系統(tǒng)會(huì)因負(fù)荷過(guò)重,對(duì)外界的響應(yīng)很慢。 1、反應(yīng)時(shí)間檢測(cè) 向懷疑有網(wǎng)絡(luò)監(jiān)聽(tīng)行為的網(wǎng)絡(luò)發(fā)送大量測(cè)試數(shù)據(jù)包,根據(jù)各個(gè)主機(jī)回應(yīng)的情況進(jìn)行判斷,正常的系統(tǒng)回應(yīng)的時(shí)間應(yīng)該沒(méi)有太明顯的變化,而處于監(jiān)聽(tīng)模式的系統(tǒng)由于對(duì)大量的測(cè)試信息照單全收,所以很有可能回應(yīng)時(shí)間會(huì)發(fā)生較大的變化。 2、觀測(cè)DNS 許多的網(wǎng)絡(luò)監(jiān)聽(tīng)軟件都會(huì)嘗試進(jìn)行地址反向解析,在懷疑有網(wǎng)絡(luò)監(jiān)聽(tīng)發(fā)生時(shí)可以在DNS系統(tǒng)上觀測(cè)有沒(méi)有明顯增多的解析請(qǐng)求。 3、利用ping命令進(jìn)行監(jiān)測(cè) 對(duì)于懷疑運(yùn)行監(jiān)聽(tīng)程序的機(jī)器,用正確的IP地址和錯(cuò)誤的物理地址去ping,運(yùn)行監(jiān)聽(tīng)程序的機(jī)器會(huì)有響應(yīng)。這是因?yàn)檎5臋C(jī)器不接收錯(cuò)誤的物理地址,處于監(jiān)聽(tīng)狀態(tài)的機(jī)器能接收,如果他的 IP stack不再次反向檢查的話,就會(huì)響應(yīng)。這種方法依賴于系統(tǒng)的 IPStack,對(duì)一些系統(tǒng)可能行不通。 4、利用arp數(shù)據(jù)包進(jìn)行檢測(cè) 除了使用ping進(jìn)行監(jiān)測(cè)外,還可以利用arp方式進(jìn)行監(jiān)測(cè)的。這種模式是上述ping方式的一種變體,它使用arp數(shù)據(jù)包替代了上述的icmp數(shù)據(jù)包。向網(wǎng)內(nèi)的主機(jī)發(fā)送非廣播方式的arp包,如果主機(jī)響應(yīng)了這個(gè)arp請(qǐng)求,那么我們就可以判斷它很可能就是處于網(wǎng)絡(luò)監(jiān)聽(tīng)模式了,這是目前相對(duì)而言比較好的監(jiān)測(cè)模式。 5、利用工具進(jìn)行檢測(cè) Ifstatus是一個(gè)很好的監(jiān)聽(tīng)檢測(cè)工具,運(yùn)行在UNIX操作系統(tǒng)中,可以識(shí)別出系統(tǒng)的網(wǎng)絡(luò)接口是否正處于調(diào)試狀態(tài)或者說(shuō)監(jiān)聽(tīng)狀態(tài)下。當(dāng)網(wǎng)絡(luò)接口運(yùn)行在這種模式下,很可能是一個(gè)**者侵入了系統(tǒng),正在運(yùn)行一個(gè)監(jiān)聽(tīng)程序。 六 電子郵件攻擊
1. 什么是電子郵件欺騙 電子郵件假冒和欺騙是一個(gè)很大的安全漏洞,形式很多: 在電子郵件中聲明該郵件是來(lái)自系統(tǒng)管理員,要求用戶修改口令。 電子郵件聲稱來(lái)自某一授權(quán)人,要求用戶發(fā)送其口令文件或其他敏感信息的拷貝。 目前使用的SMTP基本沒(méi)有驗(yàn)證功能,因此,偽造電子郵件進(jìn)行電子郵件欺騙是不難的。 可以使用假冒的發(fā)信人地址,而郵件服務(wù)器并不對(duì)發(fā)信人身份的合法性做任何檢查。如果站點(diǎn)允許和SMTP端口連接,任何人都可以連接到該端口(25),并假冒用戶或虛構(gòu)用戶的郵件。 在假冒的郵件中很難找出與發(fā)信人有關(guān)的真實(shí)信息,唯一的線索是檢查系統(tǒng)的日志文件,找出假冒郵件的發(fā)送主機(jī)。然后在檢查那臺(tái)主機(jī),在指定時(shí)段何人使用過(guò)該主機(jī)。特別當(dāng)主機(jī)是公共主機(jī),假冒郵件的發(fā)送者在發(fā)送完畢后,清除自己的上機(jī)記錄,假冒郵件的追查就更難進(jìn)行下去。 電子郵件欺騙有哪位威脅? 偽造郵件。黑客偽造電子郵件,使它們看起來(lái)似乎發(fā)自某人,某地。 拒絕服務(wù)。黑客可以讓系統(tǒng)或網(wǎng)絡(luò)充斥郵件信息而癱瘓。這些郵件信息塞滿隊(duì)列,占用CPU資源和網(wǎng)絡(luò)帶寬。 病毒?,F(xiàn)代電子郵件使得傳送文件附件更加容易。如果用戶毫不提防地去執(zhí)行文件附件,病毒就會(huì)感染他們的系統(tǒng)。 2. 發(fā)送一封假冒的郵件 一個(gè)SMTP的會(huì)話的文本,由以下幾部分組成: 使用helo表明本方標(biāo)識(shí)。 通過(guò)電子郵件命令from和rcpt to指明郵件的發(fā)送方和接收方。 調(diào)用data命令輸入郵件正文數(shù)據(jù)。 以”.”為首的行表示數(shù)據(jù)結(jié)束。 以命令quit退出SMPT會(huì)話并結(jié)束與TCP端口25的連接。 下面是一個(gè)具體的例子: 發(fā)送者為pineapple主機(jī)上的用戶userl。 在UNIX系統(tǒng)中,每一個(gè)戶頭都有一個(gè)電子郵件地址,如該用戶電子地址應(yīng)該為userl@pineapple 下面開(kāi)始發(fā)送過(guò)程: $telnet pineapple.host 25 Trying 11.22.33.44.... Connected to pineapple.host. Escape character iS '^]'. 220 pineapple.host. Send 電子郵件 SMI-8.6/SMI-SVR4 ready at Thu, 23 Apr 1998 22:24:14 +0900 HELO 250 pineapple.host. Hello pineapple.host [11.22.33.44], pleased to meet you 電子郵件 FROM:http://m.ahfyzs.com/mailto:root@melon.host 250 http://m.ahfyzs.com/mailto:root@melon.host... Sender Ok RCPT to:http://m.ahfyzs.com/mailto:user2@pineapple.host 250 Recipient Ok data 354 Enter 電子郵件, end with ”.” On a line by itself aaaaaaaa . 250 VAAl5772 Message accepted for delivery quit 221 pineapple.host closing connectiOn 3. 保護(hù)電子郵件信息 保護(hù)電子郵件最有效的辦法是使用加密簽名技術(shù)。通過(guò)驗(yàn)證,可以保證信息是從正確的地方來(lái),而且在傳輸過(guò)程中不被修改。 配置電子郵件服務(wù)器,不允許SMTP端口的直接連接。 如果配置了防火墻,可使它將外面來(lái)的郵件重定向到郵件服務(wù)器,便于集中管理和跟蹤檢查。 應(yīng)使用戶對(duì)電子郵件所帶來(lái)的威脅引起足夠重視,并使他們了解和遵守安全政策。 4 . 電子郵件轟炸和“滾雪球” 電子郵件轟炸和電子郵件“滾雪球”都是拒絕服務(wù)類型的攻擊。 電子郵件轟炸是指一個(gè)人反復(fù)收到一大堆無(wú)用的電子郵件。因?yàn)樗械泥]件都需要空間來(lái)保存,同時(shí),到來(lái)的郵件都需要系統(tǒng)來(lái)處理。 電子郵件“滾雪球”與轟炸類似,一條信息發(fā)給數(shù)以千計(jì)的用戶并不斷膨脹。如果一個(gè)用戶再回復(fù)這樣的電子郵件,那就更糟了,因?yàn)樗蓄^信息中的用戶都會(huì)收到回復(fù)。 在這些攻擊中,攻擊者需要謹(jǐn)慎的是隱藏自己的蹤跡,也就是隱藏自己的IP。要想隱藏發(fā)送者的IP,一般的方法可以是使用隨機(jī)的郵件服務(wù)器,同一個(gè)郵件服務(wù)器不使用兩次,或者通過(guò)第三者轉(zhuǎn)信,比如通過(guò)新聞組。一種完全可以隱藏自身的而且效果能持久的方法是,給被攻擊者訂閱上千份網(wǎng)絡(luò)上由郵件發(fā)送的免費(fèi)雜志。 現(xiàn)在網(wǎng)上的郵件炸彈程序很多,從UNIX腳本程序到訂閱雜志的都有,絕大多數(shù)已經(jīng)能隱藏攻擊者。 郵件“滾雪球”很難檢測(cè)和防止,因?yàn)橛泻戏娮余]件地址的用戶是完全可能往其他用戶或新聞組上“堆雪球”的。 這些攻擊主要針對(duì)郵件服務(wù)器進(jìn)行,當(dāng)服務(wù)器接收到許許多多電子郵件后,它可能導(dǎo)致網(wǎng)絡(luò)連接丟失,不能提供服務(wù)。這就成為了一種拒絕服務(wù)的攻擊。 服務(wù)失敗可以由許多原因引起,過(guò)多的網(wǎng)絡(luò)連接或者系統(tǒng)資源缺乏都會(huì)導(dǎo)致不能正常提供服務(wù)。 對(duì)付辦法: 如果覺(jué)得服務(wù)器被攻擊,應(yīng)迅速確定炸彈/雪球的攻擊源,并調(diào)整防火墻或路由器的配置來(lái)過(guò)濾那些源頭的包?;蛘吲渲梅阑饓κ雇忸^的SMTP連接只能到達(dá)指定服務(wù)器,而不能影響其他系統(tǒng)。當(dāng)然,這雖不能防止攻擊,但可以減少轟炸對(duì)其他系統(tǒng)的影響。 使用最新版本的電子郵件服務(wù)軟件,提高系統(tǒng)記帳能力,有利于對(duì)發(fā)生的事件進(jìn)行追蹤。 由于電子郵件轟炸不一定是100%的匿名行動(dòng),因此可能根據(jù)頭信息來(lái)跟蹤出發(fā)地。但如果攻擊者真要攻擊的話,它會(huì)遠(yuǎn)程登錄到SMTP端口,然后直接發(fā)送SMTP命令,如果ident正在運(yùn)行的話,**可能會(huì)碰到些障礙。 |
|
來(lái)自: ylzrx > 《學(xué)習(xí)》