• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Peach Fuzz的媒體網(wǎng)關(guān)安全測試

      2020-05-22 11:24:42劉立康
      計算機技術(shù)與發(fā)展 2020年5期
      關(guān)鍵詞:端口號網(wǎng)關(guān)命令

      姜 文,劉立康

      (西安電子科技大學 通信工程學院,陜西 西安 710071)

      0 引 言

      隨著互聯(lián)網(wǎng)技術(shù)和計算機技術(shù)的發(fā)展,軟件在各行各業(yè)的應(yīng)用越來越廣泛。隨之而來的軟件安全問題[1-2]越來越突出,使得安全測試成為一個專門的測試領(lǐng)域。最近幾年軟件安全測試技術(shù)發(fā)展很快,出現(xiàn)了許多安全測試工具,常見的安全測試工具有:Nmap、Nessus、Openvas、Burpsuit、AWVS、Peach Fuzz、Codenomicon[3-4]等。其中Peach Fuzz是一款優(yōu)秀的安全測試工具,支持在多種操作系統(tǒng)上運行,支持多種協(xié)議的安全測試。

      Fuzz(模糊測試)[5]是一種通過提供非預期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件安全漏洞的方法?;诰W(wǎng)絡(luò)協(xié)議的Fuzz測試利用“畸形數(shù)據(jù)包”測試網(wǎng)絡(luò)環(huán)境的健壯性?;诰W(wǎng)絡(luò)協(xié)議的Fuzz測試過程如下:

      (a)獲得測試協(xié)議的正常數(shù)據(jù)包;

      (b)用變異數(shù)據(jù)替換該數(shù)據(jù)包中的某些部分;

      (c)向被測試對象發(fā)送變異的數(shù)據(jù)包;

      (d)監(jiān)控被測試對象的反應(yīng)。

      1 Peach Fuzz工具

      Peach Fuzz[6-11]是開源的、跨平臺的模糊測試框架,最初采用Python語言編寫,發(fā)布于2004年。第三版使用C#重寫了整個框架。Windows下使用Peach 3.0之后的版本需要預先安裝.net 4和Python軟件;Linux、OS X下需要安裝Mono .net開發(fā)框架和Python軟件。

      1.1 Peach Fuzz測試基本結(jié)構(gòu)

      Peach Fuzz的關(guān)鍵是使用XML語言編寫Pit文件[12-13],通過配置文件實現(xiàn)與測試環(huán)境對接,來完成測試過程。Peach Fuzz測試框架主要包括三部分,如圖1所示。

      圖1 Peach Fuzz測試基本結(jié)構(gòu)

      1.1.1 測試套文件

      測試套文件由Pit文件和測試需要調(diào)用的Python文件組成。各文件的功能如下:

      (a)Config文件:采用XML語言編寫,包含Pit文件的全局參數(shù),是Pit文件與測試環(huán)境對接的接口文件;

      (b)Pit的DataModel模塊:根據(jù)報文格式,描述數(shù)據(jù)類型信息,關(guān)系(大小、數(shù)量、偏移量)一個Pit文件包含一個或多個DataModel;

      (c)Pit的StateModel模塊:用于定義測試的邏輯,實際上相當于一個狀態(tài)機。它定義了怎么給目標發(fā)送和接收數(shù)據(jù),由一個或多個State組成。State由Action組成。Action可以執(zhí)行多種操作。Action是發(fā)送命令給Publisher的一種主要方式,它能發(fā)送輸出,接收輸入或打開一個連接;

      (d)Pit的Test模塊:設(shè)置Agent、Monitor、StateModel、Publisher、數(shù)據(jù)變異策略(Strategy),日志文件路徑等;

      (e)Python文件:對于一些復雜的Fuzz測試,根據(jù)特殊需要,為Pit文件編寫專用的Python函數(shù)模塊。

      1.1.2 Peach Fuzz測試引擎

      Peach Fuzz測試引擎[14]主要包括Peach Engine、變異策略Strategy、數(shù)據(jù)變異Mutator、代理管理Agent、Publisher、Logger。

      (a)Peach Engine:Peach Fuzz測試的主控程序;

      (b)變異策略Strategy:Peach工具有三種變異策略,分別為Sequential、RandomDeterminstic、Random,在文中的媒體網(wǎng)關(guān)測試中選擇Random作為變異策略;

      (c)數(shù)據(jù)變異Mutator:對傳送報文數(shù)據(jù)進行變異處理;

      (d)代理管理Agent:Agent能夠運行在本地或者遠程的Peach進程,這些進程可以啟動監(jiān)視器Monitor,監(jiān)控被測試目標,捕獲Crash信息;

      (e)Publisher:是Peach發(fā)送和接收數(shù)據(jù)的I/O接口,每個測試套至少包含一個Publisher;執(zhí)行Action需要指定Publisher;

      (f)Logger:記錄各種相關(guān)信息。

      1.1.3 監(jiān)控測試對象

      通過Publisher發(fā)送畸形報文測試被測試對象,通過Monitors監(jiān)測被測試對象的反應(yīng)。通過Debugger發(fā)送調(diào)試信息。

      1.2 Peach Fuzz工具的特點

      優(yōu)點:可以對文件格式、ActiveX、網(wǎng)絡(luò)協(xié)議、API等進行Fuzz測試;工具由多個組件組成,各組件層次獨立,有助于各組件獨立擴展;提供SDK,可擴展和更新Fuzz變異算法、監(jiān)控器、Publisher發(fā)包器等各組件;變異能力強。

      缺點:規(guī)則比較復雜,測試人員需要一定的時間掌握Peach的數(shù)據(jù)建模方法。目前Peach Fuzz已經(jīng)支持的協(xié)議有110多個,提供的協(xié)議測試套不滿足產(chǎn)品測試需求時,需要自己擴展開發(fā)。

      2 H.248協(xié)議和SCTP協(xié)議

      2.1 H.248協(xié)議簡介

      H.248[15]是一種媒體網(wǎng)關(guān)控制協(xié)議,是軟交換網(wǎng)絡(luò)中控制層的軟交換設(shè)備(媒體網(wǎng)關(guān)控制器MGC)和接入層中各種媒體網(wǎng)關(guān)(MG)的標準接口協(xié)議。H.248協(xié)議是一種主從協(xié)議,在MGC與MG的交互中,MGC控制呼叫建立的過程,MG只是被動地接收MGC下發(fā)的各種指令,然后完成相應(yīng)的動作。H.248協(xié)議是一種雙向式的交互協(xié)議,協(xié)議消息分為命令和響應(yīng)兩種類型,每個命令需要接受對方回送響應(yīng)。

      H.248協(xié)議底層傳輸機制可以采用UDP/TCP/SCTP。由于H.248協(xié)議對網(wǎng)絡(luò)延時和丟包不太敏感,目前工程上通常采用UDP協(xié)議傳送報文。對于報文傳輸可靠性要求比較高的情況,采用SCTP作為傳輸層協(xié)議。

      一個H.248消息的信息體通常由一個或多個事務(wù)(Transaction)組成。每個事務(wù)由一個TransactionID來標識。事務(wù)由一個或多個動作(Action)組成。Action由一系列命令組成。每個命令可帶多個參數(shù)(描述符)。

      H.248協(xié)議使用命令對關(guān)聯(lián)域(Context)和終端(Termination)進行控制。H.248協(xié)議所包含的命令、命令功能以及命令的傳輸方向如表1所示。

      表1 H.248協(xié)議命令

      2.2 SCTP協(xié)議簡介

      SCTP協(xié)議(流傳送控制協(xié)議)既能增強UDP業(yè)務(wù)并提供數(shù)據(jù)報文的可靠傳輸,又能克服TCP的某些局限,可以在不可靠的分組網(wǎng)絡(luò)(IP網(wǎng))上提供可靠的數(shù)據(jù)傳輸。

      SCTP協(xié)議的主要功能有:

      (a)在確認方式下無差錯、無重復地傳送用戶數(shù)據(jù);

      (b)可以將多個小用戶數(shù)據(jù)分組封裝到一個SCTP的數(shù)據(jù)塊中;

      (c)根據(jù)通道最大傳輸單元(MTU)的限制,可以將大用戶數(shù)據(jù)分拆和重組成多個數(shù)據(jù)塊;

      (d)在多個流上保證用戶數(shù)據(jù)的順序提交;

      (e)SCTP的設(shè)計中包含避免擁塞、避免遭受泛播和匿名攻擊的功能。

      SCTP協(xié)議通過在兩個SCTP端點間建立偶聯(lián),通過IP地址+SCTP端口號來為兩個SCTP用戶提供可靠的消息傳送業(yè)務(wù),消息在數(shù)據(jù)塊中進行傳送。

      3 基于H.248協(xié)議的媒體網(wǎng)關(guān)安全測試

      文中采用Peach Fuzz工具對云化媒體網(wǎng)關(guān)進行安全測試,采用SCTP作為傳輸層協(xié)議。依據(jù)MG與MGC的控制與連接關(guān)系,采用Peach Fuzz執(zhí)行機模擬媒體網(wǎng)關(guān)控制器,來完成基于H.248協(xié)議的云化媒體網(wǎng)關(guān)安全測試。

      工作內(nèi)容包括云化執(zhí)行機搭建,執(zhí)行機模擬MGC;在執(zhí)行機上安裝Peach工具和其他相關(guān)工具,搭建測試環(huán)境;編寫Peach測試套;Peach Fuzz測試套調(diào)試和連跑;測試的觀測方法;測試結(jié)果分析。

      3.1 測試模型

      3.1.1 基于H.248協(xié)議的網(wǎng)絡(luò)結(jié)構(gòu)

      媒體網(wǎng)關(guān)控制器MGC通過H.248協(xié)議中的命令控制媒體網(wǎng)關(guān)MG,在終端1與終端2之間進行媒體數(shù)據(jù)傳輸,網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

      圖2 基于H.248協(xié)議的網(wǎng)絡(luò)結(jié)構(gòu)

      搭建的Peach執(zhí)行機用來模擬MGC,選擇MG為被測試的媒體網(wǎng)關(guān),配置媒體數(shù)據(jù)終端,形成Peach Fuzz測試環(huán)境。

      3.1.2 報文變異處理

      為了簡化測試模型,選擇AddRequest、Modify Request、SubtractRequest、MoveRequest、ServiceChange Request、NofityReply六個命令的報文進行變異處理,從MGC向媒體網(wǎng)關(guān)MC發(fā)送報文,進行Peach Fuzz安全測試。

      3.2 搭建云化執(zhí)行機

      使用VMWARE虛擬化軟件,制作64位Suse Linux 11.3操作系統(tǒng)的虛擬機。登錄vCenter完成虛擬機的CPU、內(nèi)存大小、數(shù)據(jù)盤大小、操作系統(tǒng)安裝、網(wǎng)絡(luò)配置等步驟;通過yast命令配置虛擬機的IP地址,開啟SSH服務(wù)。完成安裝配置之后,虛擬機能夠使用PUTTY工具登錄。云化的執(zhí)行機上通常需要配置兩個網(wǎng)絡(luò),一個是維護網(wǎng)絡(luò),一個是業(yè)務(wù)網(wǎng)絡(luò),通常使用業(yè)務(wù)網(wǎng)絡(luò)進行Peach Fuzz測試。云化的執(zhí)行機用來模擬圖2中的MGC。

      3.3 執(zhí)行機上安裝相關(guān)工具

      需要安裝的相關(guān)工具有:Peach工具、mono工具和SCTP協(xié)議的發(fā)包器。

      3.3.1 Peach工具安裝部署

      將Peach工具版本包拷貝到/opt目錄下,直接解壓即可。

      解壓命令:unzip peach-pro-4.3.235-linux_x86_64_release.zip。

      3.3.2 mono工具部署

      自Peach 3.0之后的版本Peach工具使用C#語言進行開發(fā),在Linux操作系統(tǒng)下mono工具必須與Peach一起安裝,否則Peach工具不能使用。mono工具的安裝步驟如下所示:

      (a)將mono工具版本包放到指定的目錄下,解壓軟件包:tar xzvf mono-4.8.1.tar.gz;

      (b)添加環(huán)境變量:環(huán)境變量的設(shè)置有兩種情況,一種是臨時情況,shell退出之后就失效了;一種是永久的,一次設(shè)定之后,系統(tǒng)重啟,或者shell退出或切換,環(huán)境設(shè)置都生效。

      增加臨時環(huán)境變量:執(zhí)行export PATH=/opt/peach43235:/opt/mono/bin:$PATH。

      增加永久環(huán)境變量:打開profile文件;在文件中添加命令行:export PATH=/opt/peach43235:/opt/mono/bin:$PATH。

      3.3.3 配置SCTP協(xié)議的發(fā)包器文件sctplistener.so

      Peach Fuzz測試使用SCTP協(xié)議傳送報文,需要提供SCTP的發(fā)包器文件。開發(fā)工程師采用C語言編寫SCTP發(fā)包器源代碼,使用GCC 4.3.3版本編譯器,編譯生成發(fā)包器文件sctplistener.so。

      3.3.4 部署出報告的庫文件

      Peach Fuzz運行完成的結(jié)果需要通過ibgdiplus.so.0生成*.pdf文件格式的報告。這個文件保存在/opt/mono/lib文件夾下。

      3.3.5 測試環(huán)境的網(wǎng)絡(luò)部署和對接

      Peach Fuzz執(zhí)行機上的測試工具部署完成之后,需要通過MML命令與被測試的媒體網(wǎng)關(guān)對接起來。在圖2中選擇MG作為被測試的網(wǎng)關(guān),需要為MG、MGC配置傳輸?shù)腍.248協(xié)議的信令I(lǐng)P地址和端口號,以及媒體數(shù)據(jù)傳輸所需的媒體域與媒體終端的相關(guān)信息。

      (1)MG、MGC的相關(guān)配置。

      (a)配置MG1和MGC的IP地址與使用的端口號;

      (b)添加信令地址,媒體網(wǎng)關(guān)MG的IP地址也可用作信令地址;

      (c)添加H.248鏈路,配置H.248鏈路時,需要將MG、MGC、信令地址、端口號以及SCTP協(xié)議全部關(guān)聯(lián)起來;

      (d)執(zhí)行媒體網(wǎng)關(guān)MG激活,激活之后MG處于運行狀態(tài)(正常狀態(tài))。

      (2)媒體域、媒體的相關(guān)配置。

      (a)創(chuàng)建媒體域(Context),配置媒體域的關(guān)聯(lián)標識Context ID值;

      (b)將媒體作為終端(Termination)加入媒體域中,配置媒體終端地址。

      保存在H.248_binary_Mg.xml.config中的源IP和源端口號是MGC的IP地址和端口號,目的IP和目的端口號是MG的IP地址和端口號。

      3.4 Peach Fuzz測試套

      Peach工具提供的H.248協(xié)議測試套不能滿足測試的要求,需要自行編寫H.248協(xié)議的測試套。編寫完成的H.248協(xié)議測試套由5個文件組成,如表2所示。

      (a)文件H.248_binary_data_mg.xml為Pit文件的數(shù)據(jù)模型文件,主要包括命令請求和命令回復的數(shù)據(jù)模型。

      表2 Peach Fuzz測試套

      (b)文件H.248_binary_ state_mg.xml為Pit文件的狀態(tài)模型文件,主要包括發(fā)送報文的狀態(tài)模型(State)和接收報文的狀態(tài)模型(State)。在各(State)中的Action中給出了測試啟動的初始參數(shù),類似于種子文件。

      (c)H.248_binary_mg.xml為Pit文件的Test文件,包含測試所需要的Agent、Publisher。變異策略Strategy、Logger的配置。

      Test文件中的主要代碼如下:

      代理管理Agent:在Agent中定義了監(jiān)控器;

      ……

      配置Publisher、發(fā)包器為Sctp_listener。

      ……

      配置變異策略、Logger路徑。

      (d)H.248_binary_Mg.xml.config為Pit的相關(guān)參數(shù)配置文件,主要包含SourceIPV4、SourcePort、TargetIPV4、TargetPort、Timeout、Strategy、PitLibrary Path、LoggerPath等參數(shù)。

      (e)H.248_bin_mg.py為Pit文件測試運行時調(diào)用的Python文件,提供測試過程StateModel文件中各個狀態(tài)(State)的調(diào)度、控制和響應(yīng)函數(shù)。

      3.5 Peach Fuzz測試套調(diào)試和連跑

      3.5.1 測試套調(diào)試

      測試套調(diào)試過程如下:

      進入/opt/peach43235/pits文件夾

      執(zhí)行:peach ./Net/ H.248-Binary_Mg.xml --debug -1

      調(diào)試過程中,使用網(wǎng)絡(luò)抓包工具tcpdump,對各個命令的請求和回復開展抓包工作,抓包得到各個命令請求和命令回復的報文流程如圖3所示,表示測試套調(diào)試成功。

      圖3 Peach Fuzz測試消息流程

      3.5.2 測試套以連跑

      進入/opt/peach43235/pits文件夾

      執(zhí)行:peach ./Net/ H.248_binary_mg.xml --range -1,1500000(1500000為迭代次數(shù))。

      3.6 Peach Fuzz測試的觀測方法

      運行Peach Fuzz工具前后,都需要對云化MG環(huán)境進行觀測。

      3.6.1 執(zhí)行Peach Fuzz測試之前進行的觀測

      測試前進行如下觀測:

      (a)在圖2所示的網(wǎng)絡(luò)環(huán)境中,觀測并記錄各虛擬機的資源占用情況;

      (b)觀測并記錄MG環(huán)境上已經(jīng)存在的告警信息;

      (c)執(zhí)行調(diào)試命令,打開云化MG環(huán)境中相關(guān)進程的打印協(xié)議棧日志的調(diào)試開關(guān),這樣Peach Fuzz測試結(jié)束之后,可以打印處日志的error信息;

      (d)在運行Peach Fuzz測試的執(zhí)行機上,對測試環(huán)境對接的網(wǎng)卡進行抓包,可以通過ifconfig文件進行網(wǎng)卡查詢。

      抓包命令:tcpdump -v -n -i ethx -w /opt/sctp_x.cap -s 0 port xxxx

      (端口號與已經(jīng)配置的H248鏈路一致)。

      3.6.2 執(zhí)行Peach Fuzz測試之后需要進行的觀測

      測試后進行如下觀測:

      (a)在圖2所示的網(wǎng)絡(luò)環(huán)境中觀測并記錄各虛擬機的資源占用情況;

      (b)在MG環(huán)境上觀測并記錄告警,并與測試執(zhí)行之前環(huán)境上上報的告警進行對比,查看是否有新的異常告警出現(xiàn);

      (c)執(zhí)行MG產(chǎn)品查詢內(nèi)存的調(diào)試命令,記錄執(zhí)行結(jié)果,查看執(zhí)行結(jié)果的最后一列,如果有非0的值就需要聯(lián)系開發(fā)人員,定位導致內(nèi)存泄漏的原因。

      3.7 測試結(jié)果分析

      Peach測試完成之后,對測試環(huán)境中上報的告警進行分析,查看是否有新增告警信息。執(zhí)行GET SYSINFO命令收集進程或業(yè)務(wù)虛擬機相關(guān)的日志記錄,將日志記錄反饋給軟件開發(fā)工程師和相關(guān)人員;分析產(chǎn)生告警的原因,定位和處理存在的各種問題。

      4 典型案例

      使用VMware軟件構(gòu)建虛擬機來模擬MGC,搭建兩個網(wǎng)卡、4CPU、8 G內(nèi)存、100 G存儲空間、64位Suse Linux 11.3操作系統(tǒng)的虛擬機。Peach版本為4.3.235、配套的mono版本為4.8.1。Peach工具自帶的H.248測試套不能滿足S產(chǎn)品媒體網(wǎng)關(guān)MG測試的要求,需要自行編寫測試套文件。

      使用一個執(zhí)行機對MG進行15萬次Peach Fuzz測試需要30天時間。為了提高測試效率,共搭建了10個測試執(zhí)行機(MGC),同時分別添加10個云化MG和H248鏈路。每個執(zhí)行機上分別啟動1.5萬次Peach Fuzz測試,4天時間完成測試連跑。

      測試完成之后,各虛擬機資源占用正常、無異常告警以及內(nèi)存泄漏則表示測試通過。對于測試中出現(xiàn)的一些問題,聯(lián)系相關(guān)人員對問題進行定位分析,使問題得到有效處理。

      5 Peach Fuzz測試過程中遇到的問題實例

      執(zhí)行Peach Fuzz測試過程中遇到的幾個典型問題與解決方法如下:

      (a)運行測試套時,找不到stcplistener.so文件。

      解決方法:編譯生成該文件,同時進行路徑部署和環(huán)境變量設(shè)置。

      (b)運行測試套時,H.248消息報錯為ADD Response消息匹配數(shù)據(jù)失敗,H.248跟蹤消息中報錯信息為“資源不足”。查看運行Peach對接的測試環(huán)境,發(fā)現(xiàn)環(huán)境中沒有配置媒體域和媒體終端。

      解決方法:對接測試網(wǎng)絡(luò)環(huán)境時,采用MML命令添加媒體域與媒體終端。

      (c)從Peach FUZZ的debug.log中可以看出,Add Request消息復制失敗,沒有收到消息;從抓包結(jié)果來看,執(zhí)行Peach Fuzz測試時會出現(xiàn)自動拆鏈的情況。

      解決方法:確認是由于Add Request消息發(fā)消息超時導致的,可以通過增大超時時間來解決。

      6 結(jié)束語

      介紹了Peach Fuzz測試基本結(jié)構(gòu)和特點,H.248協(xié)議和SCTP協(xié)議;敘述了媒體網(wǎng)關(guān)安全測試模型。結(jié)合媒體網(wǎng)關(guān)安全測試的工作實踐,敘述了基于Peach Fuzz的媒體網(wǎng)關(guān)測試過程。介紹了大量基于Peach Fuzz測試的技術(shù)細節(jié)。工作實踐表明對媒體網(wǎng)關(guān)進行Peach Fuzz安全測試,有助于提高媒體網(wǎng)關(guān)產(chǎn)品的安全可靠性,從而可以提高媒體網(wǎng)關(guān)產(chǎn)品開發(fā)與測試的效率,降低開發(fā)成本,提升產(chǎn)品質(zhì)量。

      猜你喜歡
      端口號網(wǎng)關(guān)命令
      只聽主人的命令
      基于改進RPS技術(shù)的IPSEC VPN網(wǎng)關(guān)設(shè)計
      在Docker容器中安裝應(yīng)用程序
      移防命令下達后
      淺談以java為基礎(chǔ)的Socket通信簡介及實現(xiàn)
      青春歲月(2017年5期)2017-04-20 18:34:23
      這是人民的命令
      LTE Small Cell網(wǎng)關(guān)及虛擬網(wǎng)關(guān)技術(shù)研究
      移動通信(2015年18期)2015-08-24 07:45:08
      應(yīng)對氣候變化需要打通“網(wǎng)關(guān)”
      太陽能(2015年7期)2015-04-12 06:49:50
      Winsock編程在《計算機網(wǎng)絡(luò)基礎(chǔ)》教學中的應(yīng)用
      基于Android系統(tǒng)的互動展示APP的研究與設(shè)計
      竹北市| 木兰县| 海伦市| 布拖县| 白水县| 财经| 余干县| 辰溪县| 霸州市| 出国| 四平市| 桐乡市| 长武县| 漯河市| 龙陵县| 崇左市| 大洼县| 萍乡市| 故城县| 英山县| 岑溪市| 孝感市| 英超| 郧西县| 泗洪县| 尼木县| 保定市| 河曲县| 南宫市| 丹东市| 子洲县| 扎赉特旗| 大名县| 大足县| 内黄县| 广河县| 郯城县| 石泉县| 连南| 德江县| 富川|