課程:《密碼與安全新技術專題》html
班級: 1892
姓名: 馮乾
學號: 20189218
上課教師:王志超
上課日期:2019年5月6日
必修/選修: 選修android
在計算機領域中,漏洞就是指計算機在硬件或協議上存在的缺陷。這些缺陷的存在會致使網絡的攻擊者在不經受權的狀況下對計算機網絡進行侵入,從而竊取儲存在計算機當中的信息,甚至對整個網絡系統進行破壞。在計算機的全部設備中,硬件設備是最容易受到網絡漏洞的攻擊和破壞的,例如防火牆、路由器等。不一樣的設備所產生的漏洞類型有所不一樣,產生漏洞的緣由也有較大的差別。計算機網絡安全漏洞還有一個顯著的特色,就是具備必定的時效性,從計算機開始運行起,網絡中就會不斷產生新的漏洞,所以在平常的使用過程當中要不斷更新補丁或對系統進行升級,只有這樣纔能有效的增強對漏洞的防範。與此同時,一些已經進行修補的漏洞有可能會發生新的變化,所以也須要引發注意。對計算機安全漏洞的防範是一個長期持續的過程,防範的措施也要隨着時間的變化和技術的發展進行不斷的創新。只有根據網絡安全漏洞的類型和特色有針對性的制定防範措施,纔能有效的填補漏洞。shell
就拿最咱們應用最普遍的TCP/IP協議組來講吧,它是置於可信的環境之下設計的,只考慮到網絡互連和開放性問題,而沒有過多的考慮安全性。形成了TCP/IP協議組自己在應用方面並不安全,所以致使基於TCP/IP協議的一系列網絡服務安全性及其脆弱。瀏覽器
任何一款軟件因爲設計上的缺陷都或多或少存在必定的漏洞,這種漏洞能夠形成系統自己的脆弱。一般該漏洞分爲兩種:一是因爲操做系統自己設計缺陷形成的安全漏洞,並影響到運行在該系統上的應用程序;二是應用程序自己設計漏洞。緩存
因爲安全策略設置的不完整,系統有時候會在安全策略未發揮做用的時候運行,而管理人員很難發現,直到系統出現問題纔有所覺察。安全
管理制度的缺失,管理人員失誤等會形成漏洞的發生。網絡
(一)IP地址的盜用IP地址的盜用是計算機使用過程當中最多見的網絡安全漏洞之一。一般,被盜的IP地址都具備較高的權限,所以在被盜後會對計算機的正常運行產生極大的干擾,甚至對泄露用戶的我的信息,形成不可挽回的經濟財產損失。IP地址的盜用通常是網絡黑客經過未經受權的地址篡改自身的登陸身份,從而對網絡用戶的信息進行竊取或篡改。IP地址被盜用的現象發生的十分頻繁,這不但對用戶的我的權益形成了極大的侵犯,還會對整個網絡系統的環境形成嚴重的破壞。session
(二)計算機病毒計算機病毒是危害性較大的一種網絡安全病毒之一,它是經過必定的程序對網絡進行入侵。計算機病毒具備必定的傳染性和隱蔽性,對計算機系統的破壞性也較強,計算機在受到病毒攻擊後很難被發覺。一旦病毒入侵了計算機後,就會在系統內進行自我複製,從而使整個計算機系統陷入癱瘓。計算機病毒的載體十分的多樣,而且傳播的速率很快,但最多見的形式仍是黑客入侵。黑客的入侵會對計算機中存儲的數據形成極大的破壞。而因爲計算機病毒具備必定的假裝性,一般較難辨認,要預防這種安全漏洞是較爲困難的,所以,它的危害性也是最強的。計算機病毒具備四大特色。首先是巨大的破壞性。計算機在受到病毒攻擊後一般會遭受嚴重的破壞,不只計算機的運行速度明顯減慢,並且一些重要的文件和數據會丟失,一些文件則被移動了位置,鍵盤會失效,磁盤會被格式化甚至受到難以修復的損傷。其次是隱蔽性。計算機病毒的類型十分的多樣,能夠以文檔的形式,也能夠以程序的形式出現,有時甚至會以遊戲的形式侵入計算機當中。這些形式的病毒與通常的應用程序十分的類似,不少病毒查殺的軟件甚至都沒法對這些病毒進行有效的識別,病毒在入侵計算機後還會不定時的顯現,表現形式十分的多樣,難以進行清除。第三是傳染性,這也是計算機病毒名稱的來源。它具備像生物病毒那樣的自我複製能力,而且可以從一個程序傳染到另外一個程序,傳播的速度十分的快速。計算機病毒不只會對計算機的文件、程序等進行破壞,甚至會從一個終端傳播到另外一個終端,從而形成整個計算機網絡的癱瘓。最後是潛伏性。計算機病毒具備必定的潛伏期,在入侵計算機後不會立刻顯現出來,而是當達到必定的條件和環境後忽然爆發,而後便開始迅速的繁殖和破壞活動。典型的病毒就是「黑色星期五」,這一病毒在剛入侵計算機時沒有任何的表現,但一旦達到病毒運行的條件後,就會產生指數式的爆發,在短短的時間內就會刪除破壞文件、格式化磁盤、封鎖鍵盤、破壞程序等。除了上述的幾個主要特徵外,計算機病毒還具備強大的複製能力和可觸發行,可以對計算機形成極大的破壞。多線程
(三)操做系統和網絡協議方面的漏洞操做系統是計算機得以正常運行的基礎,但任何的操做系統都存在自身的缺陷,在進行操做系統的更新時,也會產生新的系統漏洞。常見的操做系統漏洞主要有四個方面的內容,分別是訪問控制的錯誤、不徹底中介、非法訪問、操做系統陷門等。網絡協議的漏洞主要指IP漏洞。IP是確保計算機信息傳遞準確性和效率的基礎,當IP出現漏洞時,就會致使計算機沒法有效的識別外部傳入的信息,難以鑑別真實的地址,從而給黑客的入侵創造了條件。黑客能夠利用IP上的漏洞,對網絡中的數據進行阻攔,並計算出用戶的網絡地址,從而截取各類信息,甚至還能夠經過修改用戶的IP而對用戶的我的數據進行篡改。架構
(四)拒絕服務攻擊拒絕服務攻擊是指網絡攻擊者對計算機進行攻擊後,會致使計算機的正常服務被拒絕的現象。在這種狀況下,用戶的計算機失去了基本的操做功能,計算機中包含的數據也沒法讀取,極大的影響了用戶的正常工做和生活。拒絕服務的做用原理是攻擊者經過對用戶的終端發送大量的虛假服務信息,從而阻擋了用戶須要的真實信息,使計算機網絡系統沒法爲用戶提供正常的服務,計算機就會產生拒絕服務的現象。形成拒絕服務問題的根本緣由是系統軟件中存在必定的漏洞,或者操做系統和網絡協議的功能不完善。拒絕服務的內容通常包括服務程序的相應、CPU、路由設備等。(五)網絡結構安全計算機網絡是一種網間結構,是由多個局域網組成的龐大的網絡系統,可以爲用戶提供豐富的網絡資源。在這個網絡系統中,每一臺計算機都是與系統中的其餘計算機相互鏈接的,所以信息能夠經過這個網絡進行層層的傳輸,最終送達目的地。在這一過程當中,信息不只僅是在兩臺計算機終端之間傳輸,還要輸送到網卡中,有時信息也會在傳輸的過程當中被以太網上任何一個節點所截取。黑客就是利用這一原理,對計算機進行了入侵,從而獲取了大量的數據包,在經過計算不一樣節點之間的關係,對數據包進行解碼,最終獲取重要的用戶信息。
1.人工分析
人工分析是一種灰盒分析技術。針對被分析目標程序,手工構造特殊輸入條件,觀察輸出、目標狀態變化等,得到漏洞的分析技術。輸入包括有效的和無效的輸入,輸出包括正常輸出和非正常輸出。非正常輸出是漏洞出現的前提,或者就是目標程序的漏洞。非正常目標狀態的變化也是發現漏洞的預兆,是深刻挖掘的方向。人工分析高度依賴於分析人員的經驗和技巧。人工分析多用於有人機交互界面的目標程序,Web漏洞挖掘中多使用人工分析的方法。
2.Fuzzing技術
Fuzzing技術是一種基於缺陷注入的自動軟件測試技術,它利用黑盒分析技術方法,使用大量半有效的數據做爲應用程序的輸入,以程序是否出現異常爲標誌,來發現應用程序中可能存在的安全漏洞。半有效數據是指被測目標程序的必要標識部分和大部分數據是有效的,有意構造的數據部分是無效的,應用程序在處理該數據時就有可能發生錯誤,可能致使應用程序的崩潰或者觸發相應的安全漏洞。
根據分析目標的特色,Fuzzing能夠分爲三類:
動態Web頁面Fuzzing,針對ASP、PHP、Java、Perl等編寫的網頁程序,也包括使用這類技術構建的B/S架構應用程序,典型應用軟件爲HTTP Fuzz;
文件格式Fuzzing,針對各類文檔格式,典型應用軟件爲PDF Fuzz;
協議Fuzzing,針對網絡協議,典型應用軟件爲針對微軟RPC(遠程過程調用)的Fuzz。
Fuzzer軟件輸入的構造方法與黑盒測試軟件的構造類似,邊界值、字符串、文件頭、文件尾的附加字符串等都可以做爲基本的構造條件。Fuzzer軟件能夠用於檢測多種安全漏洞,包括緩衝區溢出漏洞、整型溢出漏洞、格式化字符串和特殊字符漏洞、競爭條件和死鎖漏洞、SQL注入、跨站腳本、RPC漏洞攻擊、文件系統攻擊、信息泄露等。
與其它技術相比,Fuzzing技術具備思想簡單,容易理解、從發現漏洞到漏洞重現容易、不存在誤報的優勢。同時它也存在黑盒分析的所有缺點,並且具備不通用、構造測試周期長等問題。
經常使用的Fuzzer軟件包括SPIKE Proxy、Peach Fuzzer Framework、Acunetix Web Vulnerability Scanner的HTTP Fuzzer、OWASP JBroFuzz、WebScarab等。
3.補丁比對技術
補丁比對技術主要用於黑客或競爭對手找出軟件發佈者已修正但未尚公開的漏洞,是黑客利用漏洞前常用的技術手段。
安全公告或補丁發佈說明書中通常不指明漏洞的準確位置和緣由,黑客很難僅根據該聲明利用漏洞。黑客能夠經過比較打補丁先後的二進制文件,肯定漏洞的位置,再結合其餘漏洞挖掘技術,便可瞭解漏洞的細節,最後能夠獲得漏洞利用的攻擊代碼。
簡單的比較方法有二進制字節和字符串比較、對目標程序逆向工程後的比較兩種。第一種方法適用於補丁先後有少許變化的比較,經常使用的於字符串變化、邊界值變化等致使漏洞的分析。第二種方法適用於程序可被反編譯,且可根據反編譯找到函數參數變化致使漏洞的分析。這兩種方法都不適合文件修改較多的狀況。
複雜的比較方法有Tobb Sabin提出的基於指令類似性的圖形化比較和Halvar Flake提出的結構化二進制比較,能夠發現文件中一些非結構化的變化,如緩衝區大小的改變,且以圖形化的方式進行顯示。
經常使用的補丁比對工具備Beyond Compare、IDACompare、Binary Diffing Suite(EBDS)、BinDiff、NIPC Binary Differ(NBD)。此外大量的高級文字編輯工具也有類似的功能,如Ultra Edit、HexEdit等。這些補丁比對工具軟件基於字符串比較或二進制比較技術。
4.靜態分析技術
靜態分析技術是對被分析目標的源程序進行分析檢測,發現程序中存在的安全漏洞或隱患,是一種典型的白盒分析技術。它的方法主要包括靜態字符串搜索、上下文搜索。靜態分析過程主要是找到不正確的函數調用及返回狀態,特別是可能未進行邊界檢查或邊界檢查不正確的函數調用,可能形成緩衝區溢出的函數、外部調用函數、共享內存函數以及函數指針等。
對開放源代碼的程序,經過檢測程序中不符合安全規則的文件結構、命名規則、函數、堆棧指針能夠發現程序中存在的安全缺陷。被分析目標沒有附帶源程序時,就須要對程序進行逆向工程,獲取相似於源代碼的逆向工程代碼,而後再進行搜索。使用與源代碼類似的方法,也能夠發現程序中的漏洞,這類靜態分析方法叫作反彙編掃描。因爲採用了底層的彙編語言進行漏洞分析,在理論上能夠發現全部計算機可運行的漏洞,對於不公開源代碼的程序來講每每是最有效的發現安全漏洞的辦法。
但這種方法也存在很大的侷限性,不斷擴充的特徵庫或詞典將形成檢測的結果集大、誤報率高;同時此方法重點是分析代碼的「特徵」,而不關心程序的功能,不會有針對功能及程序結構的分析檢查。
5.動態分析技術
動態分析技術起源於軟件調試技術,是用調試器做爲動態分析工具,但不一樣於軟件調試技術的是它每每處理的是沒有源代碼的被分析程序,或是被逆向工程過的被分析程序。
動態分析須要在調試器中運行目標程序,經過觀察執行過程當中程序的運行狀態、內存使用情況以及寄存器的值等以發現漏洞。通常分析過程分爲代碼流分析和數據流分析。代碼流分析主要是經過設置斷點動態跟蹤目標程序代碼流,以檢測有缺陷的函數調用及其參數。數據流分析是經過構造特殊數據觸發潛在錯誤。
比較特殊的,在動態分析過程當中能夠採用動態代碼替換技術,破壞程序運行流程、替換函數入口、函數參數,至關於構造半有效數據,從而找到隱藏在系統中的缺陷。
常見的動態分析工具備SoftIce、OllyDbg、WinDbg等。
各種計算機產品和技術不斷深刻人們的生活,其可能的安全漏洞和安全風險也應獲得相應的重視。計算機安全風險,小到危害我的隱私,大到危害國家安全,咱們不得不慎重對待。要想防範安全風險,首先要知道風險出如今什麼地方,所以漏洞挖掘技術就體現出其應用價值。尤爲是如今移動端設備與人們生活關係愈加緊密,
本文收入ACM Computing Surveys (CSUR), Volume 50 Issue 4, November 2017
做者信息:
數據挖掘和機器學習技術已成功用於許多不一樣的應用領域,包括計算機安全領域。 本文普遍從新審視了之前的工做,這些工做將數據挖掘和機器學習技術應用於軟件漏洞分析和發現。 本文將之前的研究分爲四大類。 對每一個類別,本文提供了每一個工做的簡短但足夠詳細的摘要,使從新搜索者可以在短期內掌握每一個類別中的關鍵步驟,技術和評估方法。 此外,本文做者在每一個部分的末尾提供了一個表格,簡要概述了各類工做的關鍵方面。 除了彙總表以外,本文還討論了每一個類別的成就和限制,以及針對每一個類別的將來研究的開放領域。
本文收入24th USENIX Security Symposium,被引次數79.
做者信息:
近年來,被發現的軟件漏洞數量顯著增長。 這須要經過評估可能被利用的漏洞並快速排除現實中未實際利用的漏洞來優先處理新披露的漏洞。 本文對Twitter上傳播的與漏洞相關的信息進行定量和定性探索。 而後,本文描述了基於Twitter的漏洞檢測器的設計,並介紹了一個特定於本文問題的威脅模型。 除了響應優先級以外,本文的檢測技術還可用於網絡保險的風險建模,並突出了攻擊受害者提供的信息的價值。
本文收入 Black Hat USA, 2015。
做者:DI SHEN
本文講述了一步一步滲透TrustZone的真實故事。 做者的目標是華爲HiSilicon使用的可信執行環境(TEE)的實現。 首先,做者發現了在正常世界中得到內核級權限的漏洞。 而後做者找到另外一個在TEE中任意執行代碼的方法。 這是一個概念驗證,任何本地應用程序都可以在HiSilicon的TEE中執行shellcode。 這些漏洞影響了華爲HiSilicon SoC芯片組的全部華爲設備。
利用這些漏洞,本地應用程序可以獲取指紋圖像或其餘加密數據,禁用調制解調器圖像和TA的簽名驗證,將任何模塊加載到TEE並修改efuse數據。 即便TrustZone是爲解決安全問題而設計的,但仍然能夠利用具備安全性問題的實現。
本文收入NDSS, 2015
做者信息:
目前已經提出並部署了許多機制來防止利用軟件漏洞進行攻擊。 其中,W⊕X是最有效和最有效的之一。 W⊕X防止內存頁面同時可寫和可執行,使得幾十年前的shellcode注入技術變得不可行。本文證實了傳統的shellcode injection攻擊能夠經過代碼緩存注入技術來恢復。 具體而言,動態代碼生成是一種普遍用於即時(JIT)編譯和動態二進制翻譯(DBT)的技術,能夠動態生成和修改代碼,以提升性能或安全性。 動態生成的代碼片斷存儲在代碼高速緩存中,代碼高速緩存能夠同時或交替地寫入和執行,從而產生利用的機會。 當生成的代碼是多線程的時,這種威脅是特別現實的,由於可寫和可執行文件之間的切換留下了利用的時間窗口。 爲了說明這種威脅,本文針對支持WebWorkers的現代瀏覽器制定了概念驗證漏洞。爲了緩解這種代碼緩存注入威脅,本文提出了一種新的動態代碼生成體系結構。 這個新架構將動態代碼生成器定位到一個單獨的進程,其中代碼緩存是可寫的。 在生成的代碼執行的原始進程中,代碼緩存仍然是隻讀的。 代碼緩存在寫入過程和執行過程當中經過共享內存進行同步。 代碼生成器和生成的代碼之間的交互經過遠程過程調用(RPC)進行處理。 本文已將Google V8 JavaScript引擎和Strata DBT移植到這個新架構中。 本文的實施經驗代表,移植到這個新架構的工程工做量很小。 對本文的原型實現的評估代表,這種新架構能夠以較小的性能開銷擊敗代碼緩存注入攻擊。
本文收入arXiv preprint arXiv:1504.03095, 2015
做者信息:
做爲下一代網絡最具競爭力的解決方案,軟件定義網絡(SDN)及其主導實現OpenFlow正在吸引愈來愈多的興趣。 但除了方便性和靈活性以外,SDN / OpenFlow還引入了新的限制和安全問題。 在這些限制中,最明顯也多是最容易被忽視的限制是SDN / OpenFlow交換機的流表容量。
本文提出了一種針對SDN / OpenFlow網絡的新型推理攻擊,其受到SDN / OpenFlow交換機的有限流表容量以及因爲數據平面和控制平面之間的頻繁交互而致使的如下可測量的網絡性能下降的推進當流表已滿的時候。 這是SDN / OpenFlow首次提出的這種推理攻擊模型。 本文還實現了推理攻擊框架,並檢查了它的效率和準確性。 仿真結果代表,本文的框架能夠推導出80%或更高精度的網絡參數(流表容量和流表使用狀況)。 這些發現使咱們更深刻地瞭解SDN / OpenFlow限制,並做爲將來SDN / OpenFlow改進的指導。