由於計算機網路信息被大眾廣泛接受、認可,在一定程度上給社會、生活帶來了極大的便利,使得人們也就越來越依賴網路的虛擬生活,那麼,常見網路攻擊方式有哪些?應該怎麼防範?我在這里給大家詳細介紹。
在了解安全問題之前,我們先來研究一下目前網路上存在的一些安全威脅和攻擊手段。然後我們再來了解一些出現安全問題的根源,這樣我們就可以對安全問題有一個很好的認識。迄今為止,網路上存在上無數的安全威脅和攻擊,對於他們也存在著不同的分類 方法 。我們可以按照攻擊的性質、手段、結果等暫且將其分為機密攻擊、非法訪問、惡意攻擊、社交工程、計算機病毒、不良信息資源和信息戰幾類。
竊取機密攻擊:
所謂竊取機密攻擊是指未經授權的攻擊者(黑客)非法訪問網路、竊取信息的情況,一般可以通過在不安全的傳輸通道上截取正在傳輸的信息或利用協議或網路的弱點來實現的。常見的形式可以有以下幾種:
1) 網路踩點(Footprinting)
攻擊者事先匯集目標的信息,通常採用whois、Finger等工具和DNS、LDAP等協議獲取目標的一些信息,如域名、IP地址、網路拓撲結構、相關的用戶信息等,這往往是黑客入侵之前所做的第一步工作。
2) 掃描攻擊
掃描攻擊包括地址掃描和埠掃描等,通常採用ping命令和各種埠掃描工具,可以獲得目標計算機的一些有用信息,例如機器上打開了哪些埠,這樣就知道開設了哪些服務,從而為進一步的入侵打下基礎。
3) 協議指紋
黑客對目標主機發出探測包,由於不同 操作系統 廠商的IP協議棧實現之間存在許多細微的差別(也就是說各個廠家在編寫自己的TCP/IP協議棧時,通常對特定的RFC指南做出不同的解釋),因此各個操作系統都有其獨特的響應方法,黑客經常能確定出目標主機所運行的操作系統。常常被利用的一些協議棧指紋包括:TTL值、TCP窗口大小、DF標志、TOS、IP碎片處理、ICMP處理、TCP選項處理等。
4) 信息流監視
這是一個在共享型區域網環境中最常採用的方法。由於在共享介質的網路上數據包會經過每個網路節點,網卡在一般情況下只會接受發往本機地址或本機所在廣播(或多播)地址的數據包,但如果將網卡設置為混雜模式(Promiscuous),網卡就會接受所有經過的數據包。基於這樣的原理,黑客使用一個叫sniffer的嗅探器裝置,可以是軟體,也可以是硬體)就可以對網路的信息流進行監視,從而獲得他們感興趣的內容,例如口令以及其他秘密的信息。
5) 會話劫持(session hijacking)
利用TCP協議本身的不足,在合法的通信連接建立後攻擊者可以通過阻塞或摧毀通信的一方來接管已經過認證建立起來的連接,從而假冒被接管方與對方通信。
非法訪問
1) 口令解除
可以採用字典解除和暴力解除來獲得口令。
2) IP欺騙
攻擊者可以通過偽裝成被信任的IP地址等方式來獲取目標的信任。這主要是針對防火牆的IP包過濾以及LINUX/UNIX下建立的IP地址信任關系的主機實施欺騙。
3) DNS欺騙
由於DNS伺服器相互交換信息的時候並不建立身份驗證,這就使得黑客可以使用錯誤的信息將用戶引向錯誤主機。
4) 重放攻擊
攻擊者利用身份認證機制中的漏洞先把別人有用的信息記錄下來,過一段時間後再發送出去。
5) 非法使用
系統資源被某個非法用戶以未授權的方式使用
6) 特洛伊木馬
把一個能幫助黑客完成某個特定動作的程序依附在某一合法用戶的正常程序中,這時合法用戶的程序代碼已經被改變,而一旦用戶觸發該程序,那麼依附在內的黑客指令代碼同時被激活,這些代碼往往能完成黑客早已指定的任務。
惡意攻擊
惡意攻擊,在當今最為特出的就是拒絕服務攻擊DoS(Denial of Server)了。拒絕服務攻擊通過使計算機功能或性能崩潰來組織提供服務,典型的拒絕服務攻擊有如下2種形式:資源耗盡和資源過載。當一個對資源的合理請求大大超過資源的支付能力時,就會造成拒絕服務攻擊。常見的攻擊行為主要包括Ping of death、淚滴(Teardrop)、UDP flood、SYN flood、Land 攻擊、Smurf攻擊、Fraggle 攻擊、電子郵件炸彈、畸形信息攻擊等
1) Ping of death
在早期版本中,許多操作系統對網路數據包的最大尺寸有限制,對TCP/IP棧的實現在ICMP包上規定為64KB。在讀取包的報頭後,要根據該報頭中包含的信息來為有效載荷生成緩沖區。當PING請求的數據包聲稱自己的尺寸超過ICMP上限,也就是載入的尺寸超過64KB時,就會使PING請求接受方出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使接受方 死機 。
2) 淚滴
淚滴攻擊利用了某些TCP/IP協議棧實現中對IP分段重組時的錯誤
3) UDP flood
利用簡單的TCP/IP服務建立大流量數據流,如chargen 和Echo來傳送無用的滿帶寬的數據。通過偽造與某一主機的chargen服務之間的一次UDP連接,回復地址指向提供ECHO服務的一台主機,這樣就生成了在2台主機之間的足夠多的無用數據流,過多的數據流會導致帶寬耗盡。
4) SYN flood
一些TCP/IP協議棧的實現只能等待從有限數量的計算機發來的ACK消息,因為他們只有有限的內存空間用於創建連接,如果這一緩沖區充滿了虛假連接的初始信息,該伺服器就會對接下來的連接停止響應,直到緩沖區的連接企圖超時。在一些創建連接不收限制的系統實現里,SYN洪流具有類似的影響!
5) Land攻擊
在Land攻擊中,將一個SYN包的源地址和目標地址均設成同一個伺服器地址,導致接受伺服器向自己的地址發送SYN-ACK消息,結果這個地址又發回ACK消息並創建一個空連接,每一個這樣的連接都將保持直到超時。對LAND攻擊反應不同,許多UNIX實現將崩潰,NT則變得極其緩慢。
6) Smurf攻擊
簡單的Smurf攻擊發送ICMP應答請求包,目的地址設為受害網路的廣播地址,最終導致該網路的所有主機都對此ICMP應答請求做出答復,導致網路阻塞。如果將源地址改為第三方的受害者,最終將導致第三方崩潰。
7) fraggle攻擊
該攻擊對Smurf攻擊做了簡單修改,使用的是UDP應答消息而非ICMP。
8) 電子郵件炸彈
這是最古老的匿名攻擊之一,通過設置一台機器不斷的向同一地址發送電子郵件,攻擊者能耗盡接受者的郵箱
9) 畸形信息攻擊
各類操作系統的許多服務均存在這類問題,由於這些服務在處理消息之前沒有進行適當正確的錯誤校驗,受到畸形信息可能會崩潰。
10) DdoS攻擊
DdoS攻擊(Distributed Denial of Server,分布式拒絕服務)是一種基於DOS的特殊形式的拒絕服務攻擊,是一種分布協作的大規模攻擊方式,主要瞄準比較大的站點,像商業公司、搜索引擎和政府部門的站點。他利用一批受控制的機器向一台目標機器發起攻擊,這樣來勢迅猛的攻擊令人難以防備,因此具有很大的破壞性。
除了以上的這些拒絕服務攻擊外,一些常見的惡意攻擊還包括緩沖區溢出攻擊、硬體設備破壞性攻擊以及網頁篡改等。
11) 緩沖區溢出攻擊(buffer overflow)
通過往程序的緩沖區寫超過其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,使程序轉而執行其他指令,以達到攻擊的目的。緩沖區溢出是一種非常普遍、非常危險的漏洞,在各種操作系統、應用軟體中廣泛存在,根據統計:通過緩沖區溢出進行的攻擊占所有系統攻擊總數的80%以上。利用緩沖區溢出攻擊可以導致程序運行失敗、系統死機、重新啟動等後果,更嚴重的是,可以利用他執行非授權的指令,甚至可以取得系統特權,進而進行各種非法操作。由於他歷史悠久、危害巨大,被稱為數十年來攻擊和防衛的弱點。
社交工程(Social Engineering)
採用說服或欺騙的手段,讓網路內部的人來提供必要的信息,從而獲得對信息系統的訪問許可權。
計算機病毒
病毒是對軟體、計算機和網路系統的最大威脅之一。所謂病毒,是指一段可執行的程序代碼,通過對其他程序進行修改,可以感染這些程序,使他們成為含有該病毒程序的一個拷貝。
不良信息資源
在互聯網如此發達的今天,真可謂「林子大了,什麼鳥都有」,網路上面充斥了各種各樣的信息,其中不乏一些暴力、色情、反動等不良信息。
信息戰
計算機技術和 網路技術 的發展,使我們處與信息時代。信息化是目前國際社會發展的趨勢,他對於經濟、社會的發展都有著重大意義。美國著名未來學家托爾勒說過:「誰掌握了信息、控制了網路,誰將擁有整個世界」。美國前總統柯林頓也說:「今後的時代,控制世界的國家將不是靠軍事,而是信息能力走在前面的國家。」美國前陸軍參謀長沙爾文上將更是一語道破:「信息時代的出現,將從根本上改變戰爭的進行方式」
Ⅱ 緩沖區溢出攻擊的原理
看看下面的內容吧,挺多的:
如果把一加侖的水注入容量為一品脫的容量中,水會四處冒出,這時你就會充分理解溢出的含義。同樣的道理,在計算機內部,如果你向一個容量有限的內存空間里存儲過量數據,這時數據也會溢出存儲空間。輸入數據通常被存放在一個臨時空間內,這個臨時存放空間被稱為緩沖區,緩沖區的長度事先已經被程序或者*作系統定義好了。
何為緩沖區溢出
緩沖區溢出是指當計算機程序向緩沖區內填充的數據位數超過了緩沖區本身的容量。溢出的數據覆蓋在合法數據上。理想情況是,程序檢查數據長度並且不允許輸入超過緩沖區長度的字元串。但是絕大多數程序都會假設數據長度總是與所分配的存儲空間相匹配,這就為緩沖區溢出埋下隱患。*作系統所使用的緩沖區又被稱為堆棧,在各個*作進程之間,指令被臨時存儲在堆棧當中,堆棧也會出現緩沖區溢出。
當一個超長的數據進入到緩沖區時,超出部分就會被寫入其他緩沖區,其他緩沖區存放的可能是數據、下一條指令的指針,或者是其他程序的輸出內容,這些內容都被覆蓋或者破壞掉。可見一小部分數據或者一套指令的溢出就可能導致一個程序或者*作系統崩潰。
溢出根源在於編程
緩沖區溢出是由編程錯誤引起的。如果緩沖區被寫滿,而程序沒有去檢查緩沖區邊界,也沒有停止接收數據,這時緩沖區溢出就會發生。緩沖區邊界檢查被認為是不會有收益的管理支出,計算機資源不夠或者內存不足是編程者不編寫緩沖區邊界檢查語句的理由,然而摩爾定律已經使這一理由失去了存在的基礎,但是多數用戶仍然在主要應用中運行十年甚至二十年前的程序代碼。
緩沖區溢出之所以泛濫,是由於開放源代碼程序的本質決定的。一些編程語言對於緩沖區溢出是具有免疫力的,例如Perl能夠自動調節位元組排列的大小,Ada95能夠檢查和阻止緩沖區溢出。但是被廣泛使用的C語言卻沒有建立檢測機制。標准C語言具有許多復制和添加字元串的函數,這使得標准C語言很難進行邊界檢查。C++略微好一些,但是仍然存在緩沖區溢出。一般情況下,覆蓋其他數據區的數據是沒有意義的,最多造成應用程序錯誤,但是,如果輸入的數據是經過「黑客」或者病毒精心設計的,覆蓋緩沖區的數據恰恰是「黑客」或者病毒的入侵程序代碼,一旦多餘位元組被編譯執行,「黑客」或者病毒就有可能為所欲為,獲取系統的控制權。
溢出導致「黑客」病毒橫行
緩沖區溢出是病毒編寫者和特洛伊木馬編寫者偏愛使用的一種攻擊方法。攻擊者或者病毒善於在系統當中發現容易產生緩沖區溢出之處,運行特別程序,獲得優先順序,指示計算機破壞文件,改變數據,泄露敏感信息,產生後門訪問點,感染或者攻擊其他計算機。
2000年7月,微軟Outlook以及Outlook Express被發現存在漏洞能夠使攻擊者僅通過發送郵件就能危及目標主機安全,只要郵件頭部程序被運行,就會產生緩沖區溢出,並且觸發惡意代碼。2001年8月,「紅色代碼」利用微軟IIS漏洞產生緩沖區存溢出,成為攻擊企業網路的「罪魁禍首」。2003年1月,Slammer蠕蟲利用微軟SQL漏洞產生緩沖區溢出對全球互聯網產生沖擊。而在近幾天,一種名為「沖擊波」的蠕蟲病毒利用微軟RPC遠程調用存在的緩沖區漏洞對Windows 2000/XP、Windows Server 2003進行攻擊,波及全球網路系統。據CERT安全小組稱,*作系統中超過50%的安全漏洞都是由內存溢出引起的,其中大多數與微軟技術有關,這些與內存溢出相關的安全漏洞正在被越來越多的蠕蟲病毒所利用。
緩沖區溢出是目前導致「黑客」型病毒橫行的主要原因。從紅色代碼到Slammer,再到日前爆發的「沖擊波」,都是利用緩沖區溢出漏洞的典型。緩沖區溢出是一個編程問題,防止利用緩沖區溢出發起的攻擊,關鍵在於程序開發者在開發程序時仔細檢查溢出情況,不允許數據溢出緩沖區。此外,用戶需要經常登錄*作系統和應用程序提供商的網站,跟蹤公布的系統漏洞,及時下載補丁程序,彌補系統漏洞。
Ⅲ 網路安全-----緩沖區溢出的保護方法有哪些
目前有四種基本的方法保護緩沖區免受緩沖區溢出的攻擊和影響。
編寫正確的代碼 非執行的緩沖區 數組邊界檢查 程序指針完整性檢查
一、編寫正確的代碼 Top
編寫正確的代碼是一件非常有意義但耗時的工作,特別像編寫C語言那種具有容易出錯傾向的程序(如:字元串的零結尾),這種風格是由於追求性能而忽視正確性的傳統引起的。盡管花了很長的時間使得人們知道了如何編寫安全的程序組具有安全漏洞的程序依舊出現。因此人們開發了一些工具和技術來幫助經驗不足的程序員編寫安全正確的程序。
最簡單的方法就是用grep來搜索源代碼中容易產生漏洞的庫的調用,比如對strcpy和sprintf的調用,這兩個函數都沒有檢查輸入參數的長度。事實上,各個版本C的標准庫均有這樣的問題存在。為了尋找一些常見的諸如緩沖區溢出和操作系統競爭條件等漏洞,一些代碼檢查小組檢查了很多的代碼。然而依然有漏網之魚存在。盡管採用了strcpy和sprintf這些替代函數來防止緩沖區溢出的發生,但是由於編寫代碼的問題,仍舊會有這種情況發生。比如lprm程序就是最好的例子,雖然它通過了代碼的安全檢查,但仍然有緩沖區溢出的問題存在。
為了對付這些問題,人們開發了一些高級的查錯工具,如faultinjection等。這些工具的目的在於通過人為隨機地產生一些緩沖區溢出來尋找代碼的安全漏洞。還有一些靜態分析工具用於偵測緩沖區溢出的存在。雖然這些工具可以幫助程序員開發更安全的程序,但是由於C語言的特點,這些工具不可能找出所有的緩沖區溢出漏洞。所以,偵錯技術只能用來減少緩沖區溢出的可能,並不能完全地消除它的存在,除非程序員能保證他的程序萬元一失。
二、非執行的緩沖區 Top
通過使被攻擊程序的數據段地址空間不可執行,從而使得攻擊者不可能執行被植入被攻擊程序輸入緩沖區的代碼,這種技術被稱為非執行的緩沖區技術。事實上,很多老的Unix系統都是這樣設計的,但是近來的Unix和MS Windows系統為實現更好的性能和功能,往往在數據段中動態地放人可執行的代碼。所以為了保持程序的兼容性不可能使得所有程序的數據段不可執行。但是我們可以設定堆棧數據段不可執行,這樣就可以最大限度地保證了程序的兼容性。Linux和Solaris都發布了有關這方面的內核補丁。因為幾乎沒有任何合的
程序會在堆棧中存放代碼,這種做法幾乎不產生任何兼容性問題,除了在Linux中的兩個特例,這時可執行的代碼必須被放入堆棧中:
1.信號傳遞
Linux通過向進程堆棧釋放代碼然後引發中斷來執行在堆棧中的代碼進而實現向進程發送Unix信號.非執行緩沖區的補丁在發送信號的時候是允許緩沖區可執行的.
2.GCC的在線重用
研究發現gcc在堆棧區里放置了可執行的代碼以便在線重用。然而,關閉這個功能並不產生任何問題.只有部分功能似乎不能使用。非執行堆棧的保護可以有效地對付把代碼植入自動變數的緩沖區溢出攻擊,而對於其他形式的攻擊則沒有效果。通過引用一個駐留
的程序的指針,就可以跳過這種保護措施。其他的攻擊可以採用把代碼植入堆或者靜態數據段中來跳過保護。
三、數組邊界檢查 Top
植入代碼引起緩沖區溢出是一個方面,擾亂程序的執行流程是另一個方面。不像非執行緩沖區保護,數組邊界檢查完全沒有了緩沖區溢出的產生和攻擊。這樣,只要數組不能被溢出,溢出攻擊也就無從談起。為了實現數組邊界檢查,則所有的對數組的讀寫操作都應當被檢查以確保對數組的操作在正確的范圍內。最直接的方法是檢查所有的數組操作,但是通常可以來用一些優化的技術來減少檢查的次數。目前有以下的幾種檢查方法:
1、Compaq C編譯器
Compaq公司為Alpha CPU開發的C編譯器支持有限度的邊界檢查(使用—check_bounds參數)。這些限制是:只有顯示的數組引用才被檢查,比如「a[3]」會被檢查,而「*(a
+3)"則不會。由於所有的C數組在傳送的時候是指針傳遞的,所以傳遞給函數的的數組不會被檢查。帶有危險性的庫函數如strcpy不會在編譯的時候進行邊界檢查,即便是指定了邊界檢查。在C語言中利用指針進行數組操作和傳遞是非常頻繁的,因此這種局限性是非常嚴重的。通常這種邊界檢查用來程序的查錯,而且不能保證不發生緩沖區溢出的漏洞。
2、Jones&Kelly:C的數組邊界檢查
Richard Jones和Paul Kelly開發了一個gcc的補丁,用來實現對C程序完全的數組邊界檢查。由於沒有改變指針的含義,所以被編譯的程序和其他的gcc模塊具有很好的兼容性。更進一步的是,他們由此從沒有指針的表達式中導出了一個「基」指針,然後通過檢查這個基指針來偵測表達式的結果是否在容許的范圍之內。當然,這樣付出的性能上的代價是巨大的:對於一個頻繁使用指針的程序,如向量乘法,將由於指針的頻繁使用而使速度慢30倍。這個編譯器目前還很不成熟,一些復雜的程序(如elm)還不能在這個上面編譯、執行通過。然而在它的一個更新版本之下,它至少能編譯執行ssh軟體的加密軟體包,但其實現的性能要下降12倍。
3、Purify:存儲器存取檢查
Purify是C程序調試時查看存儲器使用的工具而不是專用的安全工具。Purify使用"目標代碼插入"技術來檢查所有的存儲器存取。通過用Purify連接工具連接,可執行代碼在執行的時候帶來的性能的損失要下降3—5倍。
4、類型——安全語言
所有的緩沖區溢出漏洞都源於C語言的類型安全。如果只有類型—安全的操作才可以被允許執行,這樣就不可能出現對變數的強制操作。如果作為新手,可以推薦使用具有類型—安全的語言如JAVA和ML。
但是作為Java執行平台的Java虛擬機是C程序.因此攻擊JVM的一條途徑是使JVM的緩沖區溢出。因此在系統中採用緩沖區溢出防衛技術來使用強制類型—安全的語言可以收到預想不到的效果。
四、程序指針完整性檢查 Top
程序指針完整性檢查和邊界檢查有略微的不同。與防止程序指針被改變不同,程序指針完整性檢查在程序指針被引用之前檢測到它的改變。因此,即便一個攻擊者成功地改變程序的指針,由於系統事先檢測到了指針的改變,因此這個指針將不會被使用。與數組邊界檢查相比,這種方法不能解決所有的緩沖區溢出問題;採用其他的緩沖區溢出方法就可以避免這種檢測。但是這種方法在性能上有很大的優勢,而且兼容性也很好。
l、手寫的堆棧監測
Snarskii為FreeBSD開發丁一套定製的能通過監測cpu堆棧來確定緩沖區溢出的libc。這個應用完全用手工匯編寫的,而且只保護libc中的當前有效紀錄函數.這個應用達到了設計要求,對於基於libc庫函數的攻擊具有很好的防衛,但是不能防衛其它方式的攻擊.
2、堆棧保護
堆棧保護是一種提供程序指針完整性檢查的編譯器技術.通過檢查函數活動紀錄中的返回地址來實現。堆棧保護作為gcc的一個小的補丁,在每個函數中,加入了函數建立和銷毀的代碼。加入的函數建立代碼實際上在堆棧中函數返回地址後面加了一些附加的位元組。而在函數返回時,首先檢查這個附加的位元組是否被改動過,如果發生過緩沖區溢出的攻擊,那麼這種攻擊很容易在函數返回前被檢測到。但是,如果攻擊者預見到這些附加位元組的存在,並且能在溢出過程中同樣地製造他們.那麼它就能成功地跳過堆棧保護的檢測。通常.我們有如下兩種方案對付這種欺騙:
1.終止符號
利用在C語言中的終止符號如o(null,CR,LF,—1(Eof)等這些符號不能在常用的字元串函數中使用,因為這些函數一旦遇到這些終止符號,就結束函數過程了。
2.隨機符號
利用一個在函數調用時產生的一個32位的隨機數來實現保密,使得攻擊者不可能猜測到附加位元組的內容.而且,每次調用附加位元組的內容都在改變,也無法預測。通過檢查堆棧的完整性的堆棧保護法是從Synthetix方法演變來的。Synthetix方法通過使用准不變數來確保特定變數的正確性。這些特定的變數的改變是程序實現能預知的,而且只能在滿足一定的條件才能可以改變。這種變數我們稱為准不變數。Synthetix開發了一些工具用來保護這些變數。攻擊者通過緩沖區溢出而產生的改變可以被系統當做非法的動作。在某些極端的情況下,這些准不變數有可能被非法改變,這時需要堆棧保護來提供更完善的保護了。實驗的數據表明,堆棧保護對於各種系統的緩沖區溢出攻擊都有很好的保護作用.並能保持較好的兼容性和系統性能。分析表明,堆棧保護能有效抵禦現在的和將來的基於堆棧的攻擊。堆棧保護版本的Red Hat Linux 5.1已經在各種系統上運行了多年,包括個人的筆記本電腦和工作組文件伺服器。
3、指針保護
在堆棧保護設計的時候,沖擊堆棧構成了緩沖區溢出攻擊的常見的一種形式。有人推測存在一種模板來構成這些攻擊(在1996年的時候)。從此,很多簡單的漏洞被發現,實施和補丁後,很多攻擊者開始用更一般的方法實施緩沖區溢出攻擊。指針保護是堆錢保護針對這種情況的一個推廣。通過在所有的代碼指針之後放置附加位元組來檢驗指針在被調用之前的合法性,如果檢驗失敗,會發出報警信號和退出程序的執行,就如同在堆棧保護中的行為一樣。這種方案有兩點需要注意:
(1)附加位元組的定位
附加位元組的空間是在被保護的變數被分配的時候分配的,同時在被保護位元組初始化過程中被初始化。這樣就帶來了問題:為了保持兼容性,我們不想改變被保護變數的大小,因此我們不能簡單地在變數的結構定義中加入附加字。還有,對各種類型也有不同附加位元組數目。
(2)查附加位元組
每次程序指針被引用的時候都要檢查附加位元組的完整性。這個也存在問題因為「從存取器讀」在編譯器中沒有語義,編譯器更關心指針的使用,而各種優化演算法傾向於從存儲器中讀人變數.還有隨著變數類型的不同,讀入的方法也各自不同。到目前為止,只有很少—部分使用非指針變數的攻擊能逃脫指針保護的檢測。但是,可以通過在編譯器上強制對某一變數加入附加位元組來實現檢測,這時需要程序員自己手工加入相應的保護了。
Ⅳ 系統在此應用程序中檢測到基於堆棧的緩沖區溢出。溢出...
可能是啟動畫面文件被損壞或者修改,也有可能丟失,從正常的機里復制logonui。exe 文件u盤。
解決方法:用光碟或u盤進入pe把那個文件復制到c:windowssystem32dllcache和c:windowssystem32下面。
如果電腦出現無法啟動的現象的話,而只能進去安全模式,那麼我們就可以在安全模式下恢復系統,方法是:進入安全模式之後依次點擊「開始→所有程序→附件→系統工具→系統還原」。
系統在此應用程序中檢測到基於堆棧的緩沖區溢出。溢出可能允許惡意用戶獲得此應用程序的控制。遇到此問題的用戶,可參照以下的方法進行解決。
最近有用戶反饋,一鍵u盤裝windows10系統後,電腦開機總是會有一個窗口,顯示「svchost.exe應用程序錯誤」提示信息,然後點擊確定,電腦桌面就一片空白,只剩下壁紙。svchost.exe應用程序錯誤怎麼辦呢?就此問題,下面小編整理了win10系統Svchost.exe錯誤的修復方案,現分享給大家。
Ⅳ 緩沖區溢出保護是什麼意思
在過去的十年中,以緩沖區溢出為類型的安全漏洞占是最為常見的一種形式了。更為嚴重的是,緩沖區溢出漏洞佔了遠程網路攻擊的絕大多數,這種攻擊可以使得一個匿名的Internet用戶有機會獲得一台主機的部分或全部的控制權!如果能有效地消除緩沖區溢出的漏洞,則很大一部分的安全威脅可以得到緩解。
Ⅵ 你能說說影響網路安全的因素有哪些嗎
我們將所有影響網路正常運行的因素稱為網路安全威脅,從這個角度講,網路安全威脅既包括環境因素和災害因素,也包括人為因素和系統自身因素。
1.環境因素和災害因素
網路設備所處環境的溫度、濕度、供電、靜電、灰塵、強電磁場、電磁脈沖等,自然災害中的火災、水災、地震、雷電等,均會影響和破壞網路系統的正常工作。針對這些非人為的環境因素和災害因素目前已有比較好的應對策略。
2-人為因素
多數網路安全事件是由於人員的疏忽或黑客的主動攻擊造成的,也就是人為因素,豐要包括:
(1)有意:人為的惡意攻擊、違紀、違法和犯罪等。
(2)無意:工作疏忽造成失誤(配置不當等),對網路系統造成不良後果。
網路安全技術主要針對此類網路安全威脅進行防護。
3.系統自身因素
系統自身因素是指網路中的計算機系統或網路設備因自身的原因導致網路不安全,主要包括:
1)計算機硬體系統的故障。
2)各類計算機軟體故障或安全缺陷,包括系統軟體(如操作系統)、支撐軟體(各種中間件、資料庫管理系統等)和應用軟體。
3)網路和通信協議自身的缺陷也會導致網路安全問題,1.4節將詳細分析互聯網協議的安全問題。
系統自身的脆弱和不足(或稱為安全漏洞)是造成信息系統安全問題的內部根源,攻擊者正是利用系統的脆弱性使各種威脅變成現實。
一般來說,在系統的設計、開發過程中有很多因素會導致系統漏洞,主要包括:
1)系統基礎設計錯誤導致漏洞,例如互聯網在設計時沒有認證機制,使假冒IP地址很容易。
2)編碼錯誤導致漏洞,例如緩沖區溢出、格式化字元串漏洞、腳本漏洞等都是在編程實現時沒有實施嚴格的安全檢查而產生的漏洞。
3)安全策略實施錯誤導致漏洞,例如在設計訪問控制策略時,沒有對每一處訪問都進行訪問控制檢查。
4)實施安全策略對象歧義導致漏洞,即實施安全策略時,處理的對象和最終操作處理的對象不一致,如IE瀏覽器的解碼漏洞。
5)系統開發人員刻意留下的後門。 些後門是開發人員為了調試用的,而另一些則是開發人員為了以後非法控制用的,這些後門一旦被攻擊者獲悉,則將嚴重威脅系統的安全。
除了上述在設計實現過程中產生的系統安全漏洞外,很多安全事故是因為不正確的安全配置造成的,例如短口令、開放Guest用戶、安全策略配置不當等。
盡管人們逐漸意識到安全漏洞對網路安全所造成的嚴重威脅』,並採取很多措施來避免在系統中留下安全漏洞,但互聯網上每天都在發 新的安全漏洞公告,漏洞不僅存在,而且層出不窮,為什麼會這樣呢?原因主要在於:
1)方案的設計可能存在缺陷。
2)從理論上證明一個程序的正確性是非常困難的。
3)一些產品測試不足就匆匆投入市場。
4)為了縮短研製時間,廠商常常將安全性置於次要地位。
5)系統中運行的應用程序越來越多,相應的漏洞也就不可避免地越來越多。
為了降低安全漏洞對網路安全造成的威脅,目前一般的處理措施就是打補丁,消除安全漏洞。但是,打補丁也不是萬能的,主要原因是:
1)由於漏洞太多,相應的補丁也太多,補不勝補。
2)有的補丁會使某些已有的功能不能使用,導致拒絕服務。
3)有時補丁並非廠商們所宣稱的那樣解決問題。
4)很多補丁一經打上,就不能卸載。如果發現補丁因為這樣或那樣的原因不合適,就只好把整個軟體卸載,然後重新安裝軟體,非常麻煩。
5)漏洞的發現到補丁的發布有一段時間差,此外,漏洞也可能被某些人發現而未被公開,這樣就沒有相應的補丁可用。
6)網路和網站增長太快,沒有足夠的合格的補丁管理員。
7)有時候打補丁需要離線操作,這就意味著關閉該計算機上的服務,這對很多關鍵的服務來說也許是致命的。
8)有時補丁並非總是可以獲得的,特別是對於那些應用范圍不廣的系統而言,生產廠商可能沒有足夠的時間、精力和動力去開發補丁程序。
9)廠商可能在補丁中除解決已有問題之外添加很多的其他功能,這些額外的功能可能導致新的漏洞出現,系統性能下降,服務中斷,或者出現集成問題和安全功能的暫時中斷等。
1 0)補丁的成熟也需要一個過程,倉促而就的補丁常常會有這樣或那樣的問題,甚至還會帶來新的安全漏洞。
1 1)自動安裝補丁也有它的問題,很多自動安裝程序不能正常運行。
網路對抗研究領域中一個最基礎的研究方向就是漏洞挖掘,即通過測試、逆向分析等方法發現系統或軟體中存在的未知安全漏洞,在其安全補丁發布之前開發出相應的攻擊程序,並大規模應用。對於已發布補丁的軟體,也可以通過補丁比較技術發現補丁所針對的安全漏洞的細節,以最短的時間開發出利用程序,在用戶還沒來得及打上補丁之前實施攻擊。在這種情況下,補丁反而為攻擊者提供了有用的信息。
總之,威脅網路安全的因素有很多,但最根本的原因是系統自身存在安全漏洞,從而給了攻擊者可乘之機。
Ⅶ 打開電腦網頁會彈出「堆棧溢出」,這是什麼問題,怎麼解決求大神解答,謝了!
這就是溢出漏洞
本詞條缺少信息欄、名片圖,補充相關內容使詞條更完整,還能快速升級,趕緊來編輯吧!
溢出漏洞是一種計算機程序的可更正性缺陷。溢出漏洞的全名:緩沖區溢出漏洞 因為它是在程序執行的時候在緩沖區執行的錯誤代碼,所以叫緩沖區溢出漏洞。
目錄
1簡介
2何謂溢出漏洞
▪ 溢出原理
▪ 本地溢出
▪ 遠程溢出
3相關資料
▪ 在程序的地址空間里安排適當的代碼
▪ 控製程序轉移到攻擊代碼的形式
▪ 植入綜合代碼和流程式控制制
1簡介編輯
它一般是由於編程人員的疏忽造成的。
具體的講,溢出漏洞是由於程序中的某個或某些輸入函數(使用者輸入參數)對所接收數據的邊界驗證不嚴密而造成。
根據程序執行中堆棧調用原理,程序對超出邊界的部分如果沒有經過驗證自動去掉,那麼超出邊界的部分就會覆蓋後面的存放程序指針的數據,當執行完上面的代碼,程序會自動調用指針所指向地址的命令。
根據這個原理,惡意使用者就可以構造出溢出程序。
2何謂溢出漏洞編輯
溢出原理
其實溢出原理很簡單(我以前以為很難理解,太菜了,o(∩_∩)o…)。當然,這里為了讓大家容易理解,會引用一些程序實例(如果沒有編程基礎的,可以略過程序不看,影響不大,還是能理解的),而且說得會比較通俗和簡單,不會太深入。
從書上找來找去,終於找到一個適合的程序(汗!要找符合的程序簡單啊,但是要找特級菜鳥覺得特別簡單的程序就不多了,55~~)。大家看看下面這段程序:
#include 「stdafx.h」
#include 「string.h」
#include 「stdio.h」
char buf[255],pass[4]; /*聲明變數,讓計算機分配指定的內存*/
int main (int argc,char* argv[ ])
{
printf(「請輸入您的密碼:」); /*指定輸出的字元*/
scanf(%s,buf); /*輸入一個字元串,保存在變數buf中*/
strcpy(pass,buf); /*把字元串buf中的字元串復制到變數pass中*/
if (strcmp(pass,」wlqs」)= =0) /*比較輸入的字元串是否為密碼*/
printf (「輸入正確!」);
else printf(「輸入錯誤!);
return 0;
}
(註:「/*」中的中文是對程序的註解)
這是一段密碼驗證程序,與我們平時輸入密碼一樣,先讓用戶輸入密碼,然後在取得真正的密碼,與之對比,如果差異為0,則輸出密碼正確,否則輸出密碼錯誤。很多帳號登錄的程序都是這樣做的,看起來沒有非常合理,其實不然,它有一個致命缺陷!這個漏洞很容易就看出來了。那就是它給數據申請了4個位元組的儲存空間,但是萬一用戶輸入的數據不只4個位元組,那麼剩餘的位元組存放在哪裡?
先舉個例子,有一條一米長的木頭,有一張紅色紙條從尾巴往頭貼,上面寫有字,然後又有一張藍色紙條,上面也寫有字,要從木頭的頭往它的尾巴貼,但是貼了紅色紙條過後只剩4cm的長度,貼完後會有人讀出後面96cm的字,並且執行字條的命令,但是藍色紙條卻有10cm的長度,怎麼辦呢?只有把藍色紙條剩下的部分貼在紅色紙條上了。那麼紅色紙條的一些字就被覆蓋了。但是那個人還是會去讀那後面96cm的字,所以他就只有讀錯,前面讀的都是藍色字條的字。先前去執行的是藍色字條後面6cm的命令。
當然大家看了這個例子也不是很懂,下面來註解一下:
人——CPU
紅色字條上的字——CPU要執行的命令
4cm的長度——計算機為數據申請的內存空間
藍色字條上的字——要儲存的數據
可以看見藍色字條已經覆蓋了紅色字條上的字,然而那個人還是必須讀出後面96cm的字並執行。後面已經不是規定的命令了!他根本就不能執行,根本讀不懂!那麼他就不能執行了,並且報錯。
如圖系統只為我的密碼分配4個位元組的內存,那麼我輸入的密碼是「714718366」循環了6次的,不只4個位元組吧,其他剩下的字元將溢出!剩下的數字將佔用內存空間,那麼系統執行命令的時候將會執行佔用內存的數據,而不是執行原先寫好的命令了!這些數字系統根本就讀不懂,如何執行?那麼它只好報錯了!說此程序遇到問題需要關閉。那麼計算機上的程序將出錯而無法執行或關閉。
本地溢出
上面所說的本地計算機因數據溢出而關閉程序或無法執行就叫做本地溢出。輸入超長的數據已經把計算機要執行的代碼覆蓋掉了,可是,計算機不會管指令有沒有被更改,依舊取原先存放指令的空間里的數據來運行,取到「shujucuole!shujucuole!shujucuole!」這些不合法的溢出數據,它依舊會執行,可是在計算機里這樣的指令是非法指令,也就是不符合計算機邏輯的指令,用戶執行它的時候就會出錯,於是程序就被強行關閉了。
題外話:(想來想去,還是說一說o(∩_∩)o…我的愛好……損人利己的愛好)利用這樣的溢出漏洞可以關閉很多程序,比如各學校機房裡安裝的那些遠程教育系統,學生的計算機被教師的計算機所控制是因為學生機上安裝有一個學生端程序,教師機可以通過教師端來對學生端進行遠程式控制制,學生端沒有退出功能,學生所在的用戶組也沒有強行結束進程的許可權,當學生不想被老師控制的時候,可以打開學生端自帶的遠程消息功能,在消息里輸入很長的數據,比如幾百上千句「敢控制我!看我不宰了你!」,然後發送,就可以令學生端程序出錯而被系統強行關閉。這招對某些網吧的收費系統也有用的!^_^
遠程溢出
再舉個列子:
#include 「stdafx.h」
#include <winsock.h>
#pragma comment(lib,」ws2_32」)
int main(int argc,char* argv[ ])
{
char buf[255]=」 」,pass[4]=」 」; //聲明變數,讓計算機分配內存
//================================================================
//這節的代碼功能是初始化網路連接
//並偵聽1234埠等待連接
//沒有編程基礎的特級菜鳥可以略過不看
SOCKET sock1,sock2;
struct sockaddr_in addr1;
struct sockaddr_in addr2;
addr1 .sin_addr.s_addr=INADDR_ANY;
addr1 .sin_family=AF_INET;
addr1 .sin_port=htons(1234);
WSADATA * wsadatal=new WSADATA( );
WSAStartup(MAKEWORD(2,2),wsadatal1);
sock1=socket(AF_INET,SOCK_STREAM,0);
bind(sock1,(sockaddr *)&addr1,sizeof(struct sockaddr) );
listen(sock1,10);
int iSin=sizeof(struct sockaddr_in);
//=================================================================
if(sock2=accept(sock1,(sockaddr *)&addr2,&iSin)
{//有用戶連接進來
send(sock2,「請輸入密碼,密碼正確,則告訴你我的qq:」,36,0);
//發送提示用戶輸入密碼
if (recv(sock2,buf,255,0))
{//接受用戶發送過來的數據並保存在緩沖buf變數里
strcpy (pass,buf);//把緩沖buf變數里的數據復制到pass變數中
if(strcmp(pass,」wlqs」= =0)
//比較pass變數里的數據跟「wlqs」字元串之間的差異是否為0
{//差異為0,則說明兩者相等,密碼正確
send(sock2,」714718366」,9,0);//發送QQ號給用戶
}
else
{//否則就說明密碼錯誤
send (sock2,」密碼錯誤!」,10,0);
}
}
}
//=================[/ft]關閉網路連接並退出=======================
closesocket(sock2);
closesocket(sock1);
return 0;
}
這是一個伺服器程序,當有用戶連接的時候,它會先發送一句話,提示用戶輸入登錄密碼。其實它和前面說的本地溢出例子形似,問題也就處在把數據從緩存復制到內存的那句代碼里,如果遠程用戶輸入的密碼太長,那麼同樣出現溢出的現象。那麼程序就會出錯,服務端將被強行關閉。
比如騰訊公司的即時通訊軟體服務端程序就曾被黑客不停地攻擊導致服務端崩潰,不能正常提供服務,致使很多用戶都不能登陸,及時登陸成功也會在幾分鍾之內再次掉線,就是因為他們的服務端有這樣的漏洞存在,被別人利用了,這給他們以及他們的客戶造成了不可估計的損失。
3相關資料編輯
緩沖區溢出漏洞攻擊方式
緩沖區溢出漏洞可以使任何一個有黑客技術的人取得機器的控制權甚至是最高許可權。一般利用緩沖區溢出漏洞攻擊root程序,大都通過執行類似「exec(sh)」的執行代碼來獲得root 的shell。黑客要達到目的通常要完成兩個任務,就是在程序的地址空間里安排適當的代碼和通過適當的初始化寄存器和存儲器,讓程序跳轉到安排好的地址空間執行。
在程序的地址空間里安排適當的代碼
在程序的地址空間里安排適當的代碼往往是相對簡單的。如果要攻擊的代碼在所攻擊程序中已經存在了,那麼就簡單地對代碼傳遞一些參數,然後使程序跳轉到目標中就可以完成了。攻擊代碼要求執行「exec(『/bin/sh』)」,而在libc庫中的代碼執行「exec(arg)」,其中的「arg」是個指向字元串的指針參數,只要把傳入的參數指針修改指向「/bin/sh」,然後再跳轉到libc庫中的響應指令序列就可以了。當然,很多時候這個可能性是很小的,那麼就得用一種叫「植入法」的方式來完成了。當向要攻擊的程序里輸入一個字元串時,程序就會把這個字元串放到緩沖區里,這個字元串包含的數據是可以在這個所攻擊的目標的硬體平台上運行的指令序列。緩沖區可以設在:堆棧(自動變數)、堆(動態分配的)和靜態數據區(初始化或者未初始化的數據)等的任何地方。也可以不必為達到這個目的而溢出任何緩沖區,只要找到足夠的空間來放置這些攻擊代碼就夠了。
控製程序轉移到攻擊代碼的形式
緩沖區溢出漏洞攻擊都是在尋求改變程序的執行流程,使它跳轉到攻擊代碼,最為基本的就是溢出一個沒有檢查或者其他漏洞的緩沖區,這樣做就會擾亂程序的正常執行次序。通過溢出某緩沖區,可以改寫相近程序的空間而直接跳轉過系統對身份的驗證。原則上來講攻擊時所針對的緩沖區溢出的程序空間可為任意空間。但因不同地方的定位相異,所以也就帶出了多種轉移方式。
(1)Function Pointers(函數指針)
在程序中,「void (* foo) ( )」聲明了個返回值為「void」 Function Pointers的變數「foo」。Function Pointers可以用來定位任意地址空間,攻擊時只需要在任意空間里的Function Pointers鄰近處找到一個能夠溢出的緩沖區,然後用溢出來改變Function Pointers。當程序通過Function Pointers調用函數,程序的流程就會實現。
(2)Activation Records(激活記錄)
當一個函數調用發生時,堆棧中會留駐一個Activation Records,它包含了函數結束時返回的地址。執行溢出這些自動變數,使這個返回的地址指向攻擊代碼,再通過改變程序的返回地址。當函數調用結束時,程序就會跳轉到事先所設定的地址,而不是原來的地址。這樣的溢出方式也是較常見的。
(3)Longjmp buffers(長跳轉緩沖區)
在C語言中包含了一個簡單的檢驗/恢復系統,稱為「setjmp/longjmp」,意思是在檢驗點設定「setjmp(buffer)」,用longjmp(buffer)「來恢復檢驗點。如果攻擊時能夠進入緩沖區的空間,感覺「longjmp(buffer)」實際上是跳轉到攻擊的代碼。像Function Pointers一樣,longjmp緩沖區能夠指向任何地方,所以找到一個可供溢出的緩沖區是最先應該做的事情。
植入綜合代碼和流程式控制制
常見的溢出緩沖區攻擊類是在一個字元串里綜合了代碼植入和Activation Records。攻擊時定位在一個可供溢出的自動變數,然後向程序傳遞一個很大的字元串,在引發緩沖區溢出改變Activation Records的同時植入代碼(權因C在習慣上只為用戶和參數開辟很小的緩沖區)。植入代碼和緩沖區溢出不一定要一次性完成,可以在一個緩沖區內放置代碼(這個時候並不能溢出緩沖區),然後通過溢出另一個緩沖區來轉移程序的指針。這樣的方法一般是用於可供溢出的緩沖區不能放入全部代碼時的。如果想使用已經駐留的代碼不需要再外部植入的時候,通常必須先把代碼做為參數。在libc(熟悉C的朋友應該知道,現在幾乎所有的C程序連接都是利用它來連接的)中的一部分代碼段會執行「exec(something)」,當中的something就是參數,使用緩沖區溢出改變程序的參數,然後利用另一個緩沖區溢出使程序指針指向libc中的特定的代碼段。
程序編寫的錯誤造成網路的不安全性也應當受到重視,因為它的不安全性已被緩沖區溢出表現得淋漓盡致了。
Ⅷ 網路安全基礎知識大全
網路安全是指網路系統的硬體、軟體及其系統中的數據受到保護,不因偶然的或者惡意的原因而遭受到破壞、更改、泄露,系統連續可靠正常地運行,網路服務不中斷。下面就讓我帶你去看看網路安全基礎知識,希望能幫助到大家!
↓↓↓點擊獲取「網路安全」相關內容↓↓↓
★ 網路安全宣傳周活動總結 ★
★ 網路安全教育學習心得體會 ★
★ 網路安全知識主題班會教案 ★
★★ 網路安全知識內容大全 ★★
網路安全的基礎知識
1、什麼是防火牆?什麼是堡壘主機?什麼是DMZ?
防火牆是在兩個網路之間強制實施訪問控制策略的一個系統或一組系統。
堡壘主機是一種配置了安全防範 措施 的網路上的計算機,堡壘主機為網路之間的通信提供了一個阻塞點,也可以說,如果沒有堡壘主機,網路間將不能互相訪問。
DMZ成為非軍事區或者停火區,是在內部網路和外部網路之間增加的一個子網。
2、網路安全的本質是什麼?
網路安全從其本質上來講是網路上的信息安全。
信息安全是對信息的保密性、完整性、和可用性的保護,包括物理安全、網路 系統安全 、數據安全、信息內容安全和信息基礎設備安全等。
3、計算機網路安全所面臨的威脅分為哪幾類?從人的角度,威脅網路安全的因素有哪些?
答:計算機網路安全所面臨的威脅主要可分為兩大類:一是對網路中信息的威脅,二是對網路中設備的威脅。從人的因素考慮,影響網路安全的因素包括:
(1)人為的無意失誤。
(2)人為的惡意攻擊。一種是主動攻擊,另一種是被動攻擊。
(3)網路軟體的漏洞和「後門」。
4、網路攻擊和防禦分別包括那些內容?
網路攻擊:網路掃描、監聽、入侵、後門、隱身;
網路防禦: 操作系統 安全配置、加密技術、防火牆技術、入侵檢測技術。
5、分析TCP/IP協議,說明各層可能受到的威脅及防禦 方法 。
網路層:IP欺騙攻擊,保護措施;防火牆過濾、打補丁;
傳輸層:應用層:郵件炸彈、病毒、木馬等,防禦方法:認證、病毒掃描、 安全 教育 等。
6、請分析網路安全的層次體系
從層次體繫上,可以將網路安全分成四個層次上的安全:物理安全、邏輯安全、操作系統安全和聯網安全。
7、請分析信息安全的層次體系
信息安全從總體上可以分成5個層次:安全的密碼演算法,安全協議,網路安全,系統安全以及應用安全。
8、簡述埠掃描技術的原理
埠掃描向目標主機的TCP/IP服務埠發送探測數據包,並記錄目標主機的相應。通過分析相應來判斷服務埠是打開還是關閉,就可以知道埠提供的服務或信息。埠掃描可以通過捕獲本地主機或伺服器的注入/流出IP數據包來監視本地主機運行情況。埠掃描只能對接受到的數據進行分析,幫助我們發現目標主機的某些內在的弱點,而不會提供進入一個系統的詳細步驟。
9、緩沖區溢出攻擊的原理是什麼?
緩沖區溢出攻擊是一種系統的攻擊手段,通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,使程序轉而執行其他指令,以達到攻擊的目的。
緩沖區溢出攻擊最常見的方法是通過使某個特殊的程序的緩沖區溢出轉而執行一個shell,通過shell的許可權可以執行高級的命令。如果這個特殊程序具有system許可權,攻擊成功者就能獲得一個具有shell許可權的shell,就可以對程序進行操控。
10、列舉後門的三種程序,並闡述其原理和防禦方法。
(1)遠程開啟TELNET服務。防禦方法:注意對開啟服務的監護;
(2)建立WEB和TELNET服務。防禦方法:注意對開啟服務的監控;
(3)讓禁用的GUEST用戶具有管理許可權。防禦方法:監護系統注冊表。
11、簡述一次成功的攻擊,可分為哪幾個步驟?
隱藏IP-踩點掃描-獲得系統或管理員許可權- 種植 後門-在網路中隱身。
12、簡述SQL注入漏洞的原理
利用惡意SQL語句(WEB缺少對SQL語句的鑒別)實現對後台資料庫的攻擊行為。
13、分析漏洞掃描存在問題及如何解決
(1)系統配置規則庫問題存在局限性
如果規則庫設計的不準確,預報的准確度就無從談起;
它是根據已知的是安全漏洞進行安排和策劃的,而對網路系統的很多危險的威脅確實來自未知的漏洞,這樣,如果規則庫更新不及時,預報准確度也會相應降低;
完善建議:系統配置規則庫應能不斷地被擴充和修正,這樣是對系統漏洞庫的擴充和修正,這在目前開將仍需要專家的指導和參與才能實現。
(2)漏洞庫信息要求
漏洞庫信息是基於網路系統漏洞庫的漏洞掃描的主要判斷依據。如果漏洞庫
完善建議:漏洞庫信息不但應具備完整性和有效性,也應具備簡易性的特點,這樣即使是用戶自己也易於對漏洞庫進行添加配置,從而實現對漏洞庫的及時更新。
14、按照防火牆對內外來往數據的處理方法可分為哪兩大類?分別論述其技術特點。
按照防護牆對內外來往數據的處理方法,大致可以分為兩大類:包過濾防火牆和應用代理防火牆。
包過濾防火牆又稱為過濾路由器,它通過將包頭信息和管理員設定的規則表比較,如果有一條規則不允許發送某個包,路由器將其丟棄。
在包過濾系統中,又包括依據地址進行過濾和依據服務進行過濾。
應用代理,也叫應用網關,它作用在應用層,其特點是完全「阻隔」了網路的通信流,通過對每個應用服務編制專門的代理程序,實現監視和控制應用層通信流的作用。
代理伺服器有一些特殊類型,主要表現為應用級和迴路級代理、公共與專用代理伺服器和智能代理伺服器。
15、什麼是應用代理?代理服務有哪些優點?
應用代理,也叫應用網關,它作用在應用層,其特點是完全「阻隔」了網路的通信流,通過對每種應用服務編制專門的代理程序,實現監視和控制應用層通信流的作用。
代理伺服器有以下兩個優點:
(1)代理服務允許用戶「直接」訪問互聯網,採用代理服務,用戶會分為他們是直接訪問互聯網。
(2)代理服務適合於進行日誌記錄,因為代理服務遵循優先協議,他們允許日誌服務以一種特殊且有效的方式來進行。
史上最全的計算機 網路 安全知識 匯總
一、計算機網路面臨的安全性威脅計算機網路上的通信面臨以下的四種威脅:
截獲——從網路上竊聽他人的通信內容。
中斷——有意中斷他人在網路上的通信。
篡改——故意篡改網路上傳送的報文。
偽造——偽造信息在網路上傳送。截獲信息的攻擊稱為被動攻擊,而更改信息和拒絕用戶使用資源的攻擊稱為主動攻擊。
二、被動攻擊和主動攻擊被動攻擊
攻擊者只是觀察和分析某一個協議數據單元 PDU 而不幹擾信息流。
主動攻擊
指攻擊者對某個連接中通過的 PDU 進行各種處理,如:
更改報文流
拒絕報文服務
偽造連接初始化
三、計算機網路通信安全的目標
(1) 防止析出報文內容;
(2) 防止通信量分析;
(3) 檢測更改報文流;
(4) 檢測拒絕報文服務;
(5) 檢測偽造初始化連接。
四、惡意程序(rogue program)
計算機病毒——會「傳染」其他程序的程序,「傳染」是通過修改其他程序來把自身或其變種復制進去完成的。
計算機蠕蟲——通過網路的通信功能將自身從一個結點發送到另一個結點並啟動運行的程序。
特洛伊木馬——一種程序,它執行的功能超出所聲稱的功能。
邏輯炸彈——一種當運行環境滿足某種特定條件時執行其他特殊功能的程序。
五、計算機網路安全的內容
保密性
安全協議的設計
訪問控制
六、公鑰密碼體制
公鑰密碼體制使用不同的加密密鑰與解密密鑰,是一種「由已知加密密鑰推導出解密密鑰在計算上是不可行的」密碼體制。
1、公鑰和私鑰:
在公鑰密碼體制中,加密密鑰(即公鑰) PK(Public Key) 是公開信息,而解密密鑰(即私鑰或秘鑰) SK(Secret Key) 是需要保密的。
加密演算法 E(Encrypt) 和解密演算法 D 也都是公開的。
雖然秘鑰 SK 是由公鑰 PK 決定的,但卻不能根據 PK 計算出 SK。
tips:
在計算機上可容易地產生成對的 PK 和 SK。
從已知的 PK 實際上不可能推導出 SK,即從 PK 到 SK 是「計算上不可能的」。
加密和解密演算法都是公開的。
七、 數字簽名1、數字簽名必須保證以下三點:
(1) 報文鑒別——接收者能夠核實發送者對報文的簽名;
(2) 報文的完整性——發送者事後不能抵賴對報文的簽名;
(3) 不可否認——接收者不能偽造對報文的簽名。
現在已有多種實現各種數字簽名的方法。但採用公鑰演算法更容易實現。
2、數字簽名的實現 :
因為除 A 外沒有別人能具有 A 的私鑰,所以除 A 外沒有別人能產生這個密文。因此 B 相信報文 __ 是 A 簽名發送的。
若 A 要抵賴曾發送報文給 B,B 可將明文和對應的密文出示給第三者。第三者很容易用 A 的公鑰去證實 A 確實發送 __ 給 B。
反之,若 B 將 __ 偽造成 __『,則 B 不能在第三者前出示對應的密文。這樣就證明了 B 偽造了報文。
八、鑒別
在信息的安全領域中,對付被動攻擊的重要措施是加密,而對付主動攻擊中的篡改和偽造則要用鑒別(authentication) 。
報文鑒別使得通信的接收方能夠驗證所收到的報文(發送者和報文內容、發送時間、序列等)的真偽。
使用加密就可達到報文鑒別的目的。但在網路的應用中,許多報文並不需要加密。應當使接收者能用很簡單的方法鑒別報文的真偽。
鑒別的手段
1 報文鑒別(使用報文摘要 MD (Message Digest)演算法與數字簽名相結合)
2 實體鑒別
九、運輸層安全協議1、安全套接層 SSL(Secure Socket Layer)
SSL可對萬維網客戶與伺服器之間傳送的數據進行加密和鑒別。
SSL 在雙方的聯絡階段協商將使用的加密演算法和密鑰,以及客戶與伺服器之間的鑒別。
在聯絡階段完成之後,所有傳送的數據都使用在聯絡階段商定的會話密鑰。
SSL 不僅被所有常用的瀏覽器和萬維網伺服器所支持,而且也是運輸層安全協議 TLS (Transport Layer Security)的基礎。
1.1 SSL 的位置
1.2 SSL的三個功能:
(1) SSL 伺服器鑒別 允許用戶證實伺服器的身份。具有 SS L 功能的瀏覽器維持一個表,上面有一些可信賴的認證中心 CA (Certificate Authority)和它們的公鑰。
(2) 加密的 SSL 會話 客戶和伺服器交互的所有數據都在發送方加密,在接收方解密。
(3) SSL 客戶鑒別 允許伺服器證實客戶的身份。
2、安全電子交易SET(Secure Electronic Transaction)
SET 的主要特點是:
(1) SET 是專為與支付有關的報文進行加密的。
(2) SET 協議涉及到三方,即顧客、商家和商業銀行。所有在這三方之間交互的敏感信息都被加密。
(3) SET 要求這三方都有證書。在 SET 交易中,商家看不見顧客傳送給商業銀行的信用卡號碼。
十、防火牆(firewall)
防火牆是由軟體、硬體構成的系統,是一種特殊編程的路由器,用來在兩個網路之間實施接入控制策略。接入控制策略是由使用防火牆的單位自行制訂的,為的是可以最適合本單位的需要。
防火牆內的網路稱為「可信賴的網路」(trusted network),而將外部的網際網路稱為「不可信賴的網路」(untrusted network)。
防火牆可用來解決內聯網和外聯網的安全問題。
防火牆在互連網路中的位置
1、防火牆的功能
防火牆的功能有兩個:阻止和允許。
「阻止」就是阻止某種類型的通信量通過防火牆(從外部網路到內部網路,或反過來)。
「允許」的功能與「阻止」恰好相反。
防火牆必須能夠識別通信量的各種類型。不過在大多數情況下防火牆的主要功能是「阻止」。
2、防火牆技術的分類
(1) 網路級防火牆——用來防止整個網路出現外來非法的入侵。屬於這類的有分組過濾和授權伺服器。前者檢查所有流入本網路的信息,然後拒絕不符合事先制訂好的一套准則的數據,而後者則是檢查用戶的登錄是否合法。
(2) 應用級防火牆——從應用程序來進行接入控制。通常使用應用網關或代理伺服器來區分各種應用。例如,可以只允許通過訪問萬維網的應用,而阻止 FTP 應用的通過。
網路安全知識有哪些?
什麼是網路安全?
網路安全是指網路系統的硬體、軟體及系統中的數據受到保護,不因偶然的或者惡意的原因而遭到破壞、更改、泄露,系統可以連續可靠正常地運行,網路服務不被中斷。
什麼是計算機病毒?
計算機病毒是指編制者在計算機程序中插入的破壞計算機功能或者破壞數據,影響計算機使用並且能夠自我復制的一組計算機指令或者程序代碼。
什麼是木馬?
木馬是一種帶有惡意性質的遠程式控制制軟體。木馬一般分為客戶端和伺服器端。客戶端就是本地使用的各種命令的控制台,伺服器端則是要給別人運行,只有運行過伺服器端的計算機才能夠完全受控。木馬不會象病毒那樣去感染文件。
什麼是防火牆?它是如何確保網路安全的?
使用功能防火牆是一種確保網路安全的方法。防火牆是指設置在不同網路(如可信任的企業內部網和不可信的公共網)或網路安全域之間的一系列部件的組合。它是不同網路或網路安全域之間信息的惟一出入口,能根據企業的安全策略控制(允許、拒絕、監測)出入網路的信息流,且本身具有較強的抗攻擊能力。它是提供信息安全服務、實現網路和信息安全的基礎設施。
什麼是後門?為什麼會存在後門?
後門是指一種繞過安全性控制而獲取對程序或系統訪問權的方法。在軟體的開發階段,程序員常會在軟體內創建後門以便可以修改程序中的缺陷。如果後門被其他人知道,或者在發布軟體之前沒有刪除,那麼它就成了安全隱患。
什麼叫入侵檢測?
入侵檢測是防火牆的合理補充,幫助系統對付網路攻擊,擴展系統管理員的安全管理能力(包括安全審計、監視、進攻識別和響應),提高信息安全基礎結構的完整性。它從計算機網路系統中的若干關鍵點收集信息,並分析這些信息,檢查網路中是否有違反安全策略的行為和遭到襲擊的跡象。
什麼叫數據包監測?它有什麼作用?
數據包監測可以被認為是一根竊聽電話線在計算機網路中的等價物。當某人在「監聽」網路時,他們實際上是在閱讀和解釋網路上傳送的數據包。如果你需要在互聯網上通過計算機發送一封電子郵件或請求一個網頁,這些傳輸信息時經過的計算機都能夠看到你發送的數據,而數據包監測工具就允許某人截獲數據並且查看它。
網路安全基礎知識相關 文章 :
★ 網路安全基礎知識大全
★ 【網路安全】:網路安全基礎知識點匯總
★ 計算機網路基礎技能大全
★ 網路安全的基礎知識
★ 【網路安全】:學習網路安全需要哪些基礎知識?
★ 區域網絡安全防範基礎知識大全
★ 計算機網路知識大全
★ 計算機網路安全基本知識
★ 信息網路安全管理
★ 系統安全基礎知識大全
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm..com/hm.js?"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();Ⅸ 緩充區溢出是怎麼回事,黑客是如何利用它入侵個人電腦的
什麼是緩沖區溢出
單的說就是程序對接受的輸入數據沒有進行有效的檢測導致錯誤,後果可能造成程序崩潰或者執行攻擊者的命令,詳細的資料可以看unsecret.org的漏洞利用欄目 。
緩沖區溢出的概念
堆棧溢出(又稱緩沖區溢出)攻擊是最常用的黑客技術之一。我們知道,UNIX本身以及其上的許多應用程序都是用C語言編寫的,C語言不檢查緩沖區的邊界。在某些情況下,如果用戶輸入的數據長度超過應用程序給定的緩沖區,就會覆蓋其他數據區。這稱作「堆棧溢出或緩沖溢出」。
一般情況下,覆蓋其他數據區的數據是沒有意義的,最多造成應用程序錯誤。但是,如果輸入的數據是經過「黑客」精心設計的,覆蓋堆棧的數據恰恰是黑客的入侵程序代碼,黑客就獲取了程序的控制權。如果該程序恰好是以root運行的,黑客就獲得了root許可權,然後他就可以編譯黑客程序、留下入侵後門等,實施進一步地攻擊。按照這種原理進行的黑客入侵就叫做「堆棧溢出攻擊」。
為了便於理解,我們不妨打個比方。緩沖區溢出好比是將十磅的糖放進一個只能裝五磅的容器里。一旦該容器放滿了,餘下的部分就溢出在櫃台和地板上,弄得一團糟。由於計算機程序的編寫者寫了一些編碼,但是這些編碼沒有對目的區域或緩沖區——五磅的容器——做適當的檢查,看它們是否夠大,能否完全裝入新的內容——十磅的糖,結果可能造成緩沖區溢出的產生。如果打算被放進新地方的數據不適合,溢得到處都是,該數據也會製造很多麻煩。但是,如果緩沖區僅僅溢出,這只是一個問題。到此時為止,它還沒有破壞性。當糖溢出時,櫃台被蓋住。可以把糖擦掉或用吸塵器吸走,還櫃台本來面貌。與之相對的是,當緩沖區溢出時,過剩的信息覆蓋的是計算機內存中以前的內容。除非這些被覆蓋的內容被保存或能夠恢復,否則就會永遠丟失。
在丟失的信息里有能夠被程序調用的子程序的列表信息,直到緩沖區溢出發生。另外,給那些子程序的信息——參數——也丟失了。這意味著程序不能得到足夠的信息從子程序返回,以完成它的任務。就像一個人步行穿過沙漠。如果他依賴於他的足跡走回頭路,當沙暴來襲抹去了這些痕跡時,他將迷失在沙漠中。這個問題比程序僅僅迷失方向嚴重多了。入侵者用精心編寫的入侵代碼(一種惡意程序)使緩沖區溢出,然後告訴程序依據預設的方法處理緩沖區,並且執行。此時的程序已經完全被入侵者操縱了。
入侵者經常改編現有的應用程序運行不同的程序。例如,一個入侵者能啟動一個新的程序,發送秘密文件(支票本記錄,口令文件,或財產清單)給入侵者的電子郵件。這就好像不僅僅是沙暴吹了腳印,而且後來者也會踩出新的腳印,將我們的迷路者領向不同的地方,他自己一無所知的地方。
緩沖區溢出的處理
你屋子裡的門和窗戶越少,入侵者進入的方式就越少……
由於緩沖區溢出是一個編程問題,所以只能通過修復被破壞的程序的代碼而解決問題。如果你沒有源代碼,從上面「堆棧溢出攻擊」的原理可以看出,要防止此類攻擊,我們可以:
1、開放程序時仔細檢查溢出情況,不允許數據溢出緩沖區。由於編程和編程語言的原因,這非常困難,而且不適合大量已經在使用的程序;
2、使用檢查堆棧溢出的編譯器或者在程序中加入某些記號,以便程序運行時確認禁止黑客有意造成的溢出。問題是無法針對已有程序,對新程序來講,需要修改編譯器;
3、經常檢查你的操作系統和應用程序提供商的站點,一旦發現他們提供的補丁程序,就馬上下載並且應用在系統上,這是最好的方法。但是系統管理員總要比攻擊者慢一步,如果這個有問題的軟體是可選的,甚至是臨時的,把它從你的系統中刪除。舉另外一個例子,你屋子裡的門和窗戶越少,入侵者進入的方式就越少。
黑客主要先從微軟漏洞公布表上或者0days上找到漏洞,再根據漏洞編寫溢出程序(好多都自帶掃描功能)包括本地提權溢出,遠程提權溢出.編好後,先用那個掃描一下有漏洞的主機,然後再用它溢出獲得許可權,控制目標主機.
Ⅹ 緩沖區溢出的危害
在計算機安全領域,緩沖區溢出就好比給自己的程序開了個後門,這種安全隱患是致命的。緩沖區溢出在各種操作系統、應用軟體中廣泛存在。而利用緩沖區溢出漏洞實施的攻擊就是緩沖區溢出攻擊。緩沖區溢出攻擊,可以導致程序運行失敗、系統關機、重新啟動,或者執行攻擊者的指令,比如非法提升許可權。
在當前網路與分布式系統安全中,被廣泛利用的50%以上都是緩沖區溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而緩沖區溢出中,最為危險的是堆棧溢出,因為入侵者可以利用堆棧溢出,在函數返回時改變返回程序的地址,讓其跳轉到任意地址,帶來的危害一種是程序崩潰導致拒絕服務,另外一種就是跳轉並且執行一段惡意代碼,比如得到shell,然後為所欲為。