一次性付費進群,長期免費索取教程,沒有付費教程。
進微信群回復公眾號:微信群;QQ群:460500587
教程列表 見微信公眾號底部菜單 | 本文底部有推薦書籍微信公眾號:計算機與網絡安全
ID:Computer-network
1、什麼是Web掃描器
Web 掃描器可以自動地檢查Web 應用程式的安全弱點和風險,它主要通過探測和分析Web應用的響應,從而發現其中潛在的安全問題和架構缺陷。
掃描器的兩個特點:
● 自動檢查Web應用程式的安全弱點和風險
● 主要通過探測和分析Web應用的響應來發現安全問題和架構缺陷
這兩個特點告訴我們,Web掃描器其實是一種自動化的安全弱點和風險檢測;它的工作方式和原理主要是通過分析HTTP(s)請求和響應來發現安全問題和風險。
通常情況下,掃描器的使用人群可以分為兩類,一類是產品測試人員,另一類則是安全測試人員。但是他們對掃描器的功能需求和結果訴求卻是完全不一樣的,因此我們有必要了解一下這兩種不同的使用人群。
(1)從產品測試人員角度看
掃描器主要是用來對Web應用程式進行掃描檢測,根據Web漏洞的常見籤名特徵,對Web應用進行全面的安全檢測,提前發現可能存在的漏洞,做到事前發現和修復。掃描器作為黑盒自動化測試工具,可以幫助我們在QA環節快速發現業務系統的安全缺陷並修復,在產品快速迭代的同時,保證業務上線前的安全。
(2)從安全測試人員角度看
在對一個目標進行滲透測試時,首先需要進行信息收集,然後再對這些信息進行漏洞審計。其中,信息收集的目的是最大化地收集與目標有關聯的信息,提供儘可能多的攻擊入口;漏洞審計則是對這些可能的攻擊入口進行安全分析和檢測,來驗證這些攻擊入口是否可以被利用。由於這兩個環節的工作更多是具有發散性的,因此人工的工作量就會非常大。這個時候就我們需要用到Web掃描器,其實它的目的就是儘可能地幫助我們自動完成這兩個環節,方便安全測試人員快速獲取目標可供利用的漏洞以便進行後續滲透工作。
2、掃描器的重要性
掃描器的重要性分為三方面。
(1)業務上線前的安全保障
隨著企業的發展和壯大,公司內部的業務線也會隨之變多,而單純依靠人工檢測肯定沒有辦法完全覆蓋到,因此我們需要引入安全掃描能力,它能夠為業務在上線發布前進行自動化掃描和檢測,從而可以把煩瑣的安全檢測工作通過掃描器自動完成,這樣不僅可以減少人工的工作量,同時還可以極大地縮減檢測時間,保障業務順利發布和上線。
(2)業務運行中的安全監控
安全其實是一個動態的過程,因此對業務持續地安全監控也是必不可少的,我們可以通過掃描器對業務運行中的日誌或流量進行動態實時的掃描分析及監控,還可以與企業內部的防火牆或WAF進行協同聯動,從而可以達到事中的安全阻斷,保障業務運行中的安全。
(3)業務運行中的安全預警
網際網路中許多開源組件經常會被研究員爆出 0day 漏洞,在這個時候,我們就可以通過掃描器對企業中所有暴露在公網上的資產進行組件的探測識別和漏洞驗證,這樣就可以快速定位到風險資產和目標,並能夠對該漏洞進行修復和升級,從而有效地降低 0day 漏洞給企業帶來的安全風險。
3、掃描器的類型
掃描器的類型其實並沒有嚴格的劃分標準,這裡為了便於理解和記憶,將掃描器按照使用場景進行劃分,可分為三種類型,下面分別進行介紹。
(1)主動型
主動型的意思就是說,當對目標進行掃描時,掃描請求是主動發起的,所以稱之為主動型。它們不受產品形態的約束,既可以是軟體,也可以是硬體,常見的軟體代表有:Acunetix WVS、Nessus Vulnerability Scanner等,它們在主機上成功安裝後,就可以對目標進行安全掃描和測試。硬體代表有:綠盟極光等,它們需要部署在網絡中,才能對目標進行相應的安全掃描。
其特點如下。
優點:功能強大。
缺點:需要安裝或部署,同時存在單機性能瓶頸,相比於雲端型不易於橫向擴展。
這裡不是說不能橫向擴展,而是說不易於,因為這種主動型掃描,不是為大規模掃描而誕生的,它可以理解為雲端型掃描節點,如果在主動型基礎上進行橫向擴展,我們需要額外的開發工作量,比如掃描結果的集中存儲、任務的合理調度等,而並不能像雲端型那樣直接增加掃描節點。
(2)被動型
被動型,它有一個明顯的特點,就是不會向目標發送掃描請求,而是通過中間代理或流量鏡像的方式,通過網絡流量的真實請求去發現和告知可能存在的安全缺陷或漏洞。因此它有兩種常見的工作模式,一種是代理模式,這種模式掃描器會以代理的形式而存在,這樣真實的流量就會流經代理掃描器,此時就可以進行被動的分析和檢測,不會對目標產生新的訪問壓力;另一種則是旁路型,它主要以硬體形式為主,通過獲取待檢測目標的流量鏡像,對其中的HTTP流量進行會話重組和協議解析,最後利用內置的安全特徵和動態沙盒等技術手段以被動的方式發現潛在的攻擊和風險。
其特點如下。
優點:不會產生任何新的流量,不會對掃描目標產生額外的掃描風險。
缺點:它是以被動的方式去檢測和發現的,屬於事中的對抗和監控,並不能有效地將安全風險在事前扼殺,一旦攻擊繞過去,無法及時進行止損。
(3)雲端型(SaaS)
雲端型的掃描器,大多採用B/S結構,用戶通過瀏覽器就可以直接對目標進行安全掃描,它既不需要安裝,也不需要部署,即可使用安全掃描的服務。這類掃描器,其實是將掃描器的實體搬到了雲端,通過雲端的伺服器來對目標進行掃描,掃描請求則是由雲端伺服器直接發起的。常見的雲端型掃描的代表有:百度的雲掃描、360的WebScan和安賽的AIScanner等。
其特點如下。
優點:使用方便,具有跨平臺的特點,同時易於橫向擴展,可用於大規模掃描。
缺點:雲端的實現較為複雜,難度也較大,比如:雲端的任務分發和調度、雲端資源的高效分配和利用,以及雲端設備的監控和報警等相關的雲端技術實踐。
4、常見的掃描器
下面介紹幾種常見的掃描器。
(1)Acunetix Web Vulnerability Scanner
Acunetix Web Vulnerability Scanner 是一款國外知名的 Web 應用安全掃描器,運行在Windows平臺,可以檢測Web應用程式中的SQL注入漏洞、XSS跨站腳本漏洞、敏感信息洩露等常見 Web 漏洞。它包含收費和免費兩種版本,其安裝和使用也非常簡單,但功能卻非常強大。
(2)Burp Suite
Burp Suite其實是一款代理型掃描和攻擊集成平臺,依賴於Java運行環境,可跨平臺運行,它位於瀏覽器與目標Web伺服器之間,主要進行HTTP(s)信息傳遞,同時可以對流經的HTTP(s)請求/響應進行攔截、查看和修改。
(3)Tenable's Passive Vulnerability Scanner
Tenable's Passive Vulnerability Scanner是一款被動型的掃描器,支持Windows、Linux和Mac三種作業系統平臺。它以一種非入侵性的方式,提供持續的實時網絡分析和監控。它通過監控和分析網絡流量,可以快速地確定拓撲結構,主機,服務,漏洞和應用程式,實時地查看當前的安全狀態和目標存在的漏洞,如下圖:
(4)TeyeScan(真眼掃描器)
TeyeScan是一款雲端型掃描器,之前叫WatScan,後更名為TeyeScan。
我們可以看到,雲端型的掃描器使用非常簡便,通過在雲端服務平臺上註冊帳號,然後提交任務目標進行掃描檢測即可,待掃描結束後就可以在線查看對應的掃描報告,如下:
5、掃描器評測
既然有這麼多的掃描器,那麼什麼樣的掃描器才算是好的掃描器?這就需要有一個評測的標準,國外有一個專業的掃描器評測網站「sectoolmarket」,它會從漏洞的準確率、覆蓋面、錯誤率和功能特點等多個維度對掃描器進行全面評測,同時它還發布了供掃描器評測的漏洞測試集項目——Wavsep。
下面列舉了許多已經評測過的掃描器,具體的評測效果單擊掃描器名即可看到,由於頁面內容較多,這裡只截取如下部分進行說明。
6、漏洞測試平臺
漏洞測試平臺,主要用來測試掃描器的功能特點、漏洞的準確性,以及覆蓋率,並根據這些結果來評估掃描器整體的質量和能力。我們可以利用它來發現掃描器的不足和缺陷,從而進一步完善和改進掃描器的能力。這裡介紹一個常見的第三方掃描器漏洞測試平臺。
Wavsep(Web Application Vulnerability Scanner Evaluation Project)是一個開源的Web應用程式掃描器評估項目,包含漏洞的Web應用程式,目的是幫助測試Web應用漏洞掃描器的功能、質量和準確性。Wavsep收集了很多獨特的包含漏洞的Web頁面,用於測試Web應用程式掃描器的多種特性。
● Reflected XSS:66 test cases,implemented in 64 jsp pages (GET&POST)
● Error Based SQL Injection:80 test cases,implemented in 76 jsp pages (GET&POST)
● Blind SQL Injection:46 test cases,implemented in 44 jsp pages (GET&POST)
● Time Based SQL Injection:10 test cases,implemented in 10 jsp pages (GET&POST)
其Github地址為https://github.com/sectooladdict/wavsep。
7、掃描環境部署
掃描器關聯的內容比較多,因此涉及的環境比較多。這裡主要以掃描環境的搭建部署為主。掃描環境中需要兩臺機器進行開發和測試,其中一臺作為測試環境,主要用來部署掃描器評估項目,提供漏洞靶場,驗證掃描器的漏洞檢測功能;另一臺則作為掃描器的開發和調試環境,在這臺機器上進行掃描器開發和調試工作。
(1)測試環境
Wavsep項目主要用來對Web應用掃描器進行評估,與需求比較吻合,因此,這裡就選擇用它來作為漏洞測試環境,具體的安裝步驟如下:
1)安裝JDK
① 下載JDK
訪問連結http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,在頁面中選擇對應的版本,這裡選擇Linux x64進行下載,如下:
② 解壓並安裝
③ 配置Java環境
設置環境變量:
在文件末尾處添加:
並保存。
④ 配置生效,驗證環境,輸入下面命令,獲取版本信息,即表明安裝成功。
2)安裝Tomcat
執行安裝命令,如下:
3)安裝MySQL
執行安裝命令,如下:
4)安裝Wavsep
① 切換到tomcat8的webapps目目下,部署Wavsep項目代碼,如下:
② 訪問連結http://localhost:8080/wavsep/wavsep-install/install.jsp。
按照頁面提示進行配置,安裝成功後如下圖:
(2)開發環境
下面開始搭建掃描器所需要的環境,由於這裡所要介紹的掃描器是基於 Python 語前進行構建的,因此需要安裝Python開發所需要的基本環境及相應的功能模塊。
1)Python環境
Python有兩個主要的版本,一個是Python 2.x,簡稱Python 2;另一個是Python 3.x,簡稱Python 3。由於Python 3在設計時並沒有考慮向下兼容的問題,導致很多早期Python程序或模塊無法在Python 3.x上正常運行。考慮穩定性和學習成本的因素,我們選擇Python 2.x版本進行實踐,其中在Debian 8系統中默認的Python環境為Python 2.7.9,因此選擇它作為掃描器的語前開發環境。
2)IDE環境
由於掃描器的功能較多,在開發過程中會涉及編碼、調試等相關工作。為了提高開發效率,需要選擇一款集成的Python開發環境,常用的IDE環境主要以Pycharm和Eclipse+PyDev為主,其實兩者功能差不多,由於Pycharm的安裝配置相對簡單,因此這裡選擇Pycharm作為開發的IDE環境,直接從官網下載對應平臺的版本進行安裝即可。
運行後如下圖:
3)pip包管理工具
pip是一個安裝和管理Python包的工具,是easy_install的替代工具。它可以省去很多手工安裝的麻煩,讓我們更加方便地管理第三方模塊。這裡使用 Debian 的應用程式管理器進行安裝,執行下面命令:
成功安裝後,顯示如下:
4)PyQt
Qt是一個基於C++的跨平臺開發框架,它既可以開發GUI程序,也可以開發非GUI程序,功能十分強大。為了讓Python能夠直接調用Qt,所以就選擇用PyQt。
其實PyQt是Pyhon編程語前和Qt庫的綁定,PyQt作為一組Python模塊的實現,有超過300個類和超過6 000個函數方法,同時它還是跨平臺的工具包,可以在所有的主流作業系統上運行。由於有大量可用的類,所以它被分成多個模塊顯示,如下圖:
我們主要用到其中的 QtWebKit 模塊,它實現了開源瀏覽器引擎 WebKit 的瀏覽器引擎的封裝。
由於PyQt是基於Qt庫進行的Python封裝,因此首先需要安裝Python和Qt的相關庫。流程如下:
① 安裝Python和Qt的開發模塊
② 下載SIP進行安裝
③ 下載PyQt4進行安裝
5)WebKit
WebKit 是一個開源的瀏覽器引擎,它由三部分組成,WebCore 排版引擎核心、JSCore 引擎和WebKit移植層,其中WebCore和JSCore均是從KDE的KHTML和KJS引擎衍生而來的。WebKit高效穩定,兼容性好,且源碼結構清晰,易於維護。蘋果的Safari和Google的Chrome都是基於WebKit引擎開發的瀏覽器。
6)Ghost.py
Ghost.py是一個使用Python編寫的封裝了WebKit的網絡工具,能夠方便我們對瀏覽器引擎進行交互操作,同時對於瀏覽器事件的處理有很大的擴展性,對於Web 2.0頁面的爬取很有幫助。Web 2.0 爬蟲的實現需要依賴於該模塊。由於最新版本已經做了很大的改動,所以這裡我們選擇原始碼進行安裝。
執行下面命令即可安裝Ghost.py:
7)Memory_profiler
Memory_profiler是 Python 中的一個第三方內存監控模塊,它主要用來基於逐行測量代碼的內存使用,但是使用它會讓代碼整體運行變得更慢。
下面利用pip安裝Memory_profiler,執行命令如下:
運行成功界面如下:
另外,建議安裝psutil包,這樣Memory_profiler會運行得快一點,執行命令如下:
運行成功界面如下:
用@profile裝飾器來標識需要追蹤的函數即可,創建文件如下:
輸入命令,即可查看內存使用情況,如下:
執行後的結果,如下圖:
從上面的結果中,可以看到程序執行每行代碼的內存使用情況,不過這裡的內存計算是以MiB為單位衡量的,表示mebibyte,其中1MiB=1.05MB。
8)Nose
在掃描器的實踐中,需要對各種功能進行測試和驗證,因此還需要有相應的測試框架,Python中常用的測試框架有Unittest、Pytest和Nose。相比較而前,Nose簡單易用,功能豐富,所以這裡我們用Nose作為功能測試框架。不過Nose並不是Python官方發行版的標準包,它屬於第三方模塊,需要額外安裝。它主要通過對Unittest進行擴展,讓測試工作更簡單。Nose能夠自動發現測試代碼並執行,同時還提供了大量的插件。
利用pip安裝Nose,執行命令如下:
成功安裝後顯示如下圖:
微信公眾號:計算機與網絡安全
ID:Computer-network