課程:《密碼與安全新技術專題》
班級: 1892班
姓名: 李煬
學號:20189215
上課教師:謝四江
上課日期:2019年5月7日
必修/選修: 選修php
1.本次講座的學習總結
講座主題:漏洞挖掘及攻防技術
安全漏洞介紹
- 安全漏洞:指信息系統在設計、實現或者運行管理過程當中存在的缺陷或不足,從而使攻擊者可以在未受權的狀況下利用這些缺陷破壞系統的安全策略。
- 安全漏洞是網絡攻擊和防護的關鍵點。
- 攻擊:根據目標存在的漏洞,編寫攻擊程序(exploit)。
- 防護:提早挖掘出漏洞,並修復。
- 安全漏洞威脅極大,影響範圍極廣。
- 安全漏洞危害等級劃分以10.0爲最高級,表示最具備危害性。
- 安全事件舉例
- HeartBlood漏洞
- 2014年9月,Bash軟件被曝出存在一系列漏洞,能夠致使遠程攻擊者在有漏洞的系統中執行任意代碼。
- 各類脫庫事件
- 棱鏡門
漏洞挖掘技術
常見漏洞挖掘技術以下:css
手工測試
補丁比對
程序分析
二進制審覈
模糊測試html
- 手工測試:由測試人員手工分析和測試被測目標,發現漏洞的過程,是最原始的漏洞挖掘方法。
- 優勢:人的主觀能動性,能夠根據經驗找到不少不明顯、複雜不易見的漏洞。
- 缺點:無規律可循、不可大規模進行等。
- 補丁對比:一種經過對比補丁之間的差別來挖掘漏洞的技術。
- 優勢:發現速度快。
- 缺點:只能發現已知漏洞,沒法發現新漏洞。
- 常見工具:PatchDiff二、 bindiff。
- 程序分析:分爲靜態和動態。
- 靜態程序分析:是指在不運行計算機程序的條件下,經過詞法分析、語法分析、語義分析、控制流分析、污點分析等技術對程序代碼進行掃描,驗證代碼是否知足規範性、安全性等指標的一種代碼分析技術。
- 優勢:覆蓋率100%,自動化程度高
- 缺點:漏報和誤報
工具:mysql
- 數據流分析: Fortify SCA、 Coverity Prevent、FindBugs等
- 污點分析: Pixy、 TAJ(基於WALA)
- 符號執行: Clang、 KLEE
- 模型檢測: BLAST、 MAGIC、 MOPS
- 動態程序分析:在運行計算機程序的條件下,驗證代碼是否知足規範性、安全性等指標的一種代碼分析技術。
- 通常經過插樁技術分析程序的異常行爲。插樁技術是指在保證被測程序邏輯完整性的基礎上在程序的關鍵位置插入一些「樁」,即加入一些測試代碼,而後執行插樁後的程序,經過「樁」的執行獲取程序的控制流和數據流信息,進而分析程序的異常行爲。
- 優勢:自動化程度高、覆蓋率較高
- 缺點:漏報和誤報、冗餘代碼致使時間開銷增大
- 工具: Android——Xposed
- 二進制審覈:源代碼不可得,經過逆向獲取二進制代碼,在二進制代碼層次上進行安全評估。
- 缺點:逆向致使信息丟失,理解困難,甚至引入邏輯錯誤。
- 二進制查看及編輯工具:IDA Pro、 Ollydbg、 UltraEdit、Hex Workshop以及WinHex。
- 模糊測試:經過向被測目標輸入大量的畸形數據並監測其異常來發現漏洞。
- 關鍵點在於測試用例構造,自動化
- 優勢:無須源碼、誤報低、自動化程度高。
- 缺點:覆蓋率低
- 工具:Peach、 Sulley、 Autodafe、 SPIKE等。
- 流程以下:
漏洞挖掘技術研究進展
漏洞挖掘技術進展方向向着AI、機器學習、深度學習發展。android
- 二進制程序函數識別
二進制程序函數識別是二進制分析的基礎,對於軟件漏洞分析與修復,甚至惡意軟件檢測、協議逆向等都相當重要。因爲二進制代碼缺乏高級語言程序中的信息,函數的識別每每比較困難,現有的反彙編分析工具具備識別正確率低的缺陷。
- 使用循環神經網絡算法RNN進行二進制程序函數識別的模型訓練。
- 函數類似性檢測
- 測試用例生成
- 在軟件漏洞挖掘中,構造代碼覆蓋率高或脆弱性導向型的測試輸入能提升漏洞挖掘的效率和針對性。
- 可使用機器學習來指導生成更高質量的測試輸入樣本
- 測試用例帥選
- 路徑約束求解。
漏洞挖掘示例
- 路由器協議漏洞挖掘
- 系統架構以下
- 結果以下
- 當遠程向路由器的161端口發送大量畸形SNMP Get/Set請求報文時,畸形的數據包中包含長格式化字符串「%s…」的SNMPv1 GetRequest報文, Cisco路由器和華爲路由器的進程Agent出現CPU使用率異常,分別爲98%和100%。
- 當遠程發送SNMP空數據包時, Cisco路由器和華爲路由器的CPU使用率出現異常,但遠小於100%,發生「輕度拒絕服務」。該異常並不會形成路由器拒絕服務,但會致使路由器產生必定的丟包和網絡的不穩定,並對網絡的性能形成影響。
- 當遠程發送一個畸形ASN.1/BER編碼(超長字符串)的SNMP數據包時, wireshark捕獲並解析數據包,致使wireshark 1.4等多個版本棧溢出,致使空指針引用並崩潰。此漏洞是由國家計算機網絡入侵防範中心滲透測試小組使用PROTOS工具發現(CVE-2010-3445),在本次實驗中,使用生成的畸形數據包重現了該漏洞,使用Ollydbg調試發現ESP空指針異常。
- 當向SNMP協議端口(161)遠程發送一個使用「\x」等字符構造的畸形UDP數據包, 科來網絡分析系統7.2.1及之前版本均會因邊界條件檢查不嚴致使崩潰,該漏洞的bugtraq ID爲49621, CNNVD編號爲CNNVD-201109-233。
- NFC漏洞挖掘
- 目標選擇:NFC手機系統和應用
- 系統架構以下:
- 結果
- NFC服務拒絕服務,Google原生漏洞,影響Android4.4如下支持NFC的全部版本,此外,包含三星、華爲、小米、聯想等定製系統。
- 打開手電筒,華爲、小米等定製系統設計缺陷,在啓動com.android.systemui的包時,可致使MIUI系統在觸碰該標籤時自動打開系統手電筒。
- 打開藍牙,邏輯漏洞,使用系統版本爲Android4.1.3如下等多個版本的NFC手機觸碰藍牙配對標籤,致使藍牙被自動打開。
- 打開wifi,邏輯漏洞,受影響的系統是MIUI系統5.30等多個版本。使用手機觸碰包含wifi鏈接報文的標籤後,系統wifi會被自動打開。
- 應用程序拒絕服務漏洞,報文解析錯誤
- 屏幕亮度漏洞,設計缺陷,使用NFC手機觸碰標籤能夠將屏幕亮度設置在0-255的任意值,突破應用程序的亮度值限制(5-100)。
2.學習中遇到的問題及解決
- 問題1:循環神經網絡RNN的結構
- 問題1解決方案:
- RNN之因此稱爲循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式爲網絡會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點再也不無鏈接而是有鏈接的,而且隱藏層的輸入不只包括輸入層的輸出還包括上一時刻隱藏層的輸出。
- RNN結構圖
- RNN層級結構較之於CNN來講比較簡單, 它主要有輸入層,Hidden Layer, 輸出層組成。在Hidden Layer 有一個箭頭表示數據的循環更新, 這個就是實現時間記憶功能的方法。
- RNN的實質:上一個時刻的網絡狀態信息將會做用於下一個時刻的網絡狀態。RNN網絡還可以以時間序列展開成以下形式:
- 等號右邊是RNN的展開形式。等號右邊的等價RNN網絡中最初始的輸入是x0,輸出是h0,這表明着0時刻RNN網絡的輸入爲x0,輸出爲h0,網絡神經元在0時刻的狀態保存在A中。當下一個時刻1到來時,此時網絡神經元的狀態不只僅由1時刻的輸入x1決定,也由0時刻的神經元狀態決定。之後的狀況都以此類推,直到時間序列的末尾t時刻。
- 問題2:脫庫方法
- 問題2解決方案:當發現sql注入以後,脫庫的方法,有如下幾種。
- 當目標主機支持外部鏈接時,使用Navicat 進行鏈接,當使用Navicat鏈接上數據庫以後,選擇須要脫庫的表,右擊導出便可。
- 當擁有權限時,能夠上傳腳本脫庫,Navicat也提供了腳本。Navicat的安裝目錄下有ntunnel_mysql.php、ntunnel_pgsql.php 和 ntunnel_sqlite.php, 這三個文件分別支持對Mysql,PostreSQL 和SQLite數據庫使用HTTP通道鏈接,具體使用過程爲:將ntunnel_mysql.php上傳到目標機器的根目錄,而後打開Navicate,單擊「新建鏈接」——》「mysql」,選擇HTTP選項卡,勾選「使用HTTP通道」,在「通道地址」欄寫入ntunnel_mysql.php的URL,其餘保持默認,而後返回常規選項卡,填寫連接名,用戶及密碼,這裏須要的注意的是,鏈接的IP地址須要寫「Localhost」或者「127.0.0.1」。
- 沒法遠程鏈接時,sql注入,首先使用sqlmap進行注入,並使用適當的輸入命令如 --current_db 得出當前數據庫名,使用--databases 得出當前數據庫中的表 --columns得出當前數據庫中的列名。使用--dump參數將所選的數據下載到本地。當使用mysql --dump操做失敗時,咱們可使用sqlmap配合burpsuit進行注入。
3.本次講座的學習感悟、思考等
此次講座爲咱們介紹了漏洞挖掘技術,對於漏洞挖掘我一直都比較有興趣,可是一直感受沒有入門,此次講座讓我對漏洞挖掘的技術和發展方向都有了不少的瞭解,漏洞挖掘自己也是一項比較有趣味性的工做。安卓平臺的Xposed框架我以前也有用過,但應該是系統版本的緣由,基本上模塊都用不了,之後有機會仍是要在本身感興趣的地方花一些時間。算法
4.最新研究現狀
論文1:Identifying SCADA vulnerabilities using passive and active vulnerability assessment techniques點此查看
做者:Sagar Samtani ; Shuo Yu ; Hongyi Zhu ; Mark Patton ; Hsinchun Chen
研究進展:
監控和數據採集(SCADA)系統旨在容許人工操做員監督,維護和控制關鍵基礎設施。近年來,SCADA系統與互聯網的鏈接性有所增長。雖然這種鏈接提供了更高的便利性,但也增長了它們對網絡攻擊的敏感性。這篇論文研究的目的是利用被動和主動漏洞評估技術來識別支持Internet的SCADA系統的漏洞。
論文收集了物聯網搜索引擎Shodan的大型SCADA設備測試平臺,並使用Nessus和國家漏洞數據庫(NVD)評估其漏洞。sql
- 被動評估(NVD)顯示,1,707/20,461(8.34%)設備包含在NVD中列出的漏洞信息。主動評估(nessus)
- 主動評估結果顯示,論文收集的SCADA設備中有4,009/20,461(19.59%)具備「嚴重」,「高」,「中等」或「低」風險。具體而言,182個設備具備「嚴重」風險,189個具備「高」風險,2,77個具備「中等」風險,901個具備「低」風險。另外5,101臺設備返回了對掃描的信息響應。然而,應該注意的是,Nessus是內部網絡掃描工具,因爲所掃描的SCADA設備能夠在開放的互聯網上訪問,與這些漏洞相關的風險可能明顯高於Nessus所代表的嚴重程度。
論文可以識別出衆多漏洞,包括使用默認用戶名和密碼以及PLC和HMI等SCADA組件上的過期軟件。將來有不少可以擴展的方向,好比在經過在Shodan的設備橫幅數據上使用文本和數據挖掘技術,能夠從Shodan數據庫中識別出超出API提供的附加SCADA設備;還能夠進行縱向分析,以瞭解SCADA漏洞如何隨着時間的推移而發生變化和演變。全部這些擴展將有助於更深刻地瞭解物聯網上的SCADA漏洞。數據庫
做者:Thanapon Bhuddtham ; Pirawat Watanapongse
會議名稱:2016 13th International Joint Conference on Computer Science and Software Engineering (JCSSE)
研究進展:
論文介紹了四種類型的信息,如過期的平臺日期,簽名版本的過時,系統運行時間,以及與時間相關的軟件到期日的漏洞,並擴展了主動的漏洞趨勢分析,能夠經過CVE標準引用,但有更多的細節或擴展,稱爲與時間相關的CVE擴展漏洞(T-CVE)。
爲了評估T-CVE的嚴重性,論文提出了基於通用漏洞評分系統(CVSS)實現的與時間相關的漏洞評分系統(TVSS)。TVSS提供了一個評分T-CVE的框架,包括以與時間相關的方式衡量影響水平的指標,該指標與組織的業務或任務依賴於每種類型的T-CVE的風險密切相關。對於評分計算,系統應具備表VII中的準備狀況信息,以支持執行漏洞掃描。最後論文對T-CVE進行了趨勢分析。
本篇論文的工做不是要取代CVE,而是對CVE進行擴展。將來的工做將包括其餘組件實現,以補充T-CVE,如TVSS評分方程和映射到定性評級量表等。編程
論文3:Automatic Detection and Correction of Vulnerabilities using Machine Learning點此查看
做者:Robin Tommy ; Gullapudi Sundeep ; Hima Jose
會議名稱:2017 International Conference on Current Trends in Computer, Electrical, Electronics and Communication (CTCEEC)
研究進展:
論文提出了Bug Terminating Bot(BTB)是一種開發爲Web應用程序的漏洞掃描程序,用於查找和修復目標Web應用程序中的漏洞。BTB發現了Web應用程序中的漏洞,並提出了有助於消除漏洞的潛在修復程序。BTB使用支持向量機學習算法來分析結果。
論文實現了BTB程序,使用c#做爲編程語言,使用visual studio 2015集成開發環境(IDE)將BTB原型實現爲Web應用程序,使用SQLserver做爲後端數據庫。
論文根據掃描的時間跨度計算了性能因子。
後端
機器學習有助於提升算法的效率。考慮具備相同版本的內容管理系統(CMS)的3個客戶端應用程序的場景。BTB掃描第一個CMS客戶端應用程序並查找漏洞。因爲CMS版本也相同,BTB將搜索在第一個CMS中找到的漏洞,以便用戶能夠快速獲取報告,而且客戶端能夠針對該漏洞採起適當的修復。 所以,第二次掃描的效率將增長,而且這是使用機器學習來執行的。
論文4:A new method to construct the software vulnerability model點此查看
做者:Xiang Li ; Jinfu Chen ; Zhechao Lin ; Lin Zhang ; Zibin Wang ; Minmin Zhou ; Wanggen Xie
會議名稱:2017 2nd IEEE International Conference on Computational Intelligence and Applications (ICCIA)
研究進展:
論文經過考慮漏洞的緣由和特徵,提出了一種新的漏洞模型構建方法。首先分析了軟件漏洞的成因和特色,並創建了正式的漏洞模型。根據軟件漏洞的緣由和特色,創建了漏洞模型,並經過形式化方法推導出軟件漏洞。使用軟件漏洞數據集驗證了所提模型的有效性和效率。此外,還設計並實現了原型系統。實驗結果代表,該模型在檢測軟件漏洞方面比其餘方法更有效。
漏洞模型:
原型系統操做流程:
原型系統CHAM-VMAS是一個用Java語言設計的Windows窗體應用程序。它由三部分組成:1)系統管理、2)模型構建、3)模型驗證。
論文所提出的漏洞模型能夠經過使用化學抽象機的相關概念來描述和推斷軟件漏洞。隨後分析實際例子。實例代表,本文創建的漏洞模型可以有效地表達漏洞機制,有助於人們進一步瞭解漏洞的本質。此外,還設計並實現了一個原型系統,用於基於CHAM自動生成漏洞模型,並進行了一些實驗。實驗結果代表,基於該模型的系統在檢測軟件漏洞方面比其餘方法更有效。
論文5:Secure Mobile IPC Software Development with Vulnerability Detectors in Android Studio點此查看
做者:Xianyong Meng;Kai Qian;Dan Lo;Hossain Shahriar;Md Arabin Islam Talukder;Prabir Bhattacharya
會議名稱:2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC)
研究進展:
移動應用程序的安全威脅正在爆炸式增加。移動應用程序漏洞和安全缺陷可能爲黑客輕鬆攻擊移動應用程序敞開大門。必須在開發生命週期的早期解決安全軟件開發問題,而不是在攻擊後修復安全漏洞,儘早消除可能的安全漏洞將保護咱們的軟件,並經過潛在的惡意攻擊來緩解安全風險威脅。論文重點關注意圖IPC靜態代碼分析和意圖IPC漏洞檢測器開發與FindSecurityBugs Android Studio插件,用於Android移動軟件開發,基於OWASP 2017十大移動風險,增長安全漏洞檢查覆蓋率。
本文探討了Android常見的IPC漏洞,並在Android Studio IDE中展現開發的帶有開源FindSecurityBugs插件的IPC探測器。
參考資料