本發(fā)明涉及網絡技術領域,尤其涉及一種漏洞檢測的方法和檢測終端。
背景技術:
在移動互聯(lián)網時代,許多網絡操作都可以在移動終端上完成,這也導致一些安全風險隨之轉移到移動終端的平臺上,容易造成用戶信息被竊取或者泄露,從而引起許多不安全因素。
為了防止移動終端在傳輸網絡數(shù)據(jù)時因為被惡意的中間人監(jiān)聽,從而導致網絡數(shù)據(jù)被竊取,目前已研發(fā)了利用加密技術確保數(shù)據(jù)在網絡上傳輸時不會被截取或者竊聽。具體為,在傳輸控制協(xié)議(英文全稱:transmissioncontrolprotocol,英文縮寫:tcp)/網際協(xié)議(英文全稱:internetprotocol,英文縮寫:ip)協(xié)議與各種應用層協(xié)議之間加入安全套接層(英文全稱:securesocketlayer,英文縮寫:ssl),從而提升網絡數(shù)據(jù)在傳輸過程中的安全性。
然而,在實際應用中,盡管可以采用ssl加密技術來提升網絡數(shù)據(jù)在傳輸過程中的安全性,但是無論對于蘋果操作系統(tǒng)(英文全稱:iphoneoperationsystem,英文縮寫:ios)還是安卓操作系統(tǒng),亦或是其他類型的操作系統(tǒng),仍有可能遭到中間人的惡意竊聽。而且針對ios而言,如想要檢測是否有中間人監(jiān)聽需通過大量的手工代碼分析來確定,代碼的復雜度較大,會大大增加分析成本,不利于檢測的效率。
技術實現(xiàn)要素:
本發(fā)明實施例提供了一種漏洞檢測的方法及檢測終端,用于檢測應用程序是否存中間人監(jiān)聽,保證檢測結果的準確性,并且可以節(jié)省人工檢測分析程序代碼的成本,提升檢測的效率,從而增強方案的實用性。
有鑒于此,本發(fā)明第一方面提供一種漏洞檢測的方法,包括:
接收應用程序發(fā)起的第一網絡請求,其中,所述第一網絡請求為訪問第一站點的網絡請求,所述第一站點為所述應用程序申請訪問的站點,所述第一網絡請求中被注入第二網絡請求,所述第二網絡請求為訪問第二站點的網絡請求,所述第二站點為預置的異常站點;
根據(jù)所述第一網絡請求以及所述第二網絡請求開啟所述第一站點以及第二站點;
判斷目標系統(tǒng)函數(shù)是否被調用;
若是,則確定所述應用程序存在安全漏洞。
第二方面,本方面實施例還提供一種檢測終端,包括:
接收模塊,用于接收應用程序發(fā)起的第一網絡請求,其中,所述第一網絡請求為訪問第一站點的網絡請求,所述第一站點為所述應用程序申請訪問的站點,所述第一網絡請求中被注入第二網絡請求,所述第二網絡請求為訪問第二站點的網絡請求,所述第二站點為預置的異常站點;
開啟模塊,用于根據(jù)所述接收模塊接收的所述第一網絡請求以及所述第二網絡請求開啟所述第一站點以及第二站點;
判斷模塊,用于所述開啟模塊開啟所述第一站點以及所述第二站點之后,判斷目標系統(tǒng)函數(shù)是否被調用;
第一確定模塊,用于若所述判斷模塊判斷得到所述目標系統(tǒng)函數(shù)被調用,則確定所述應用程序存在安全漏洞。
第三方面,本方面實施例還提供一種檢測終端,包括:存儲器、收發(fā)器、處理器以及總線系統(tǒng);
其中,所述存儲器用于存儲程序;
所述處理器用于執(zhí)行所述存儲器中的程序,具體如下步驟:
控制所述收發(fā)器接收應用程序發(fā)起的第一網絡請求,其中,所述第一網絡請求為訪問第一站點的網絡請求,所述第一站點為所述應用程序申請訪問的站點,所述第一網絡請求中被注入第二網絡請求,所述第二網絡請求為訪問第二站點的網絡請求,所述第二站點為預置的異常站點;
根據(jù)所述第一網絡請求以及所述第二網絡請求開啟所述第一站點以及第二站點;
判斷目標系統(tǒng)函數(shù)是否被調用;
若是,則確定所述應用程序存在安全漏洞。
所述總線系統(tǒng)用于連接所述存儲器、所述收發(fā)器以及所述處理器,以使所述存儲器、所述收發(fā)器以及所述處理器進行通信。
從以上技術方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
本發(fā)明實施例中,提供了一種漏洞檢測的方法,檢測終端接收應用程序發(fā)起的第一網絡請求,其中,第一網絡請求為訪問第一站點的網絡請求,第一站點為應用程序申請訪問的站點,第一網絡請求中被注入第二網絡請求,第二網絡請求為訪問第二站點的網絡請求,第二站點為預置的異常站點。檢測終端根據(jù)第一網絡請求以及第二網絡請求開啟第一站點以及第二站點,檢測終端判斷目標系統(tǒng)函數(shù)是否被調用,若是,則確定應用程序存在安全漏洞。通過上述方式檢測ssl是否存中間人監(jiān)聽,可以節(jié)省人工檢測分析程序代碼的成本,并且能夠提升檢測的效率,從而增強方案的實用性。
附圖說明
圖1為本發(fā)明實施例中ssl證書欺騙攻擊的示意圖;
圖2為本發(fā)明實施例中漏洞檢測的方法一個實施例示意圖;
圖3為本發(fā)明實施例中ssl的中間人漏洞檢測原理示意圖;
圖4為本發(fā)明應用場景中檢測ssl中間人漏洞的頁面提示示意圖;
圖5為本發(fā)明實施例中檢測終端一個實施例示意圖;
圖6為本發(fā)明實施例中檢測終端另一個實施例示意圖;
圖7為本發(fā)明實施例中檢測終端另一個實施例示意圖;
圖8為本發(fā)明實施例中檢測終端另一個實施例示意圖;
圖9為本發(fā)明實施例中檢測終端另一個實施例示意圖;
圖10為本發(fā)明實施例中檢測終端另一個實施例示意圖;
圖11為本發(fā)明實施例中檢測終端另一個實施例示意圖;
圖12為本發(fā)明實施例中檢測終端一個結構示意圖。
具體實施方式
本發(fā)明實施例提供了一種漏洞檢測的方法及檢測終端,用于檢測應用程序是否存中間人監(jiān)聽,保證檢測結果的準確性,并且可以節(jié)省人工檢測分析程序代碼的成本,提升檢測的效率,從而增強方案的實用性。
本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本發(fā)明的實施例例如能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
應理解,本發(fā)明實施例主要可以應用于ios,ios是由蘋果公司開發(fā)的操作系統(tǒng),它主要是給蘋果手機(英文全稱:iphone)、蘋果多媒體播放設備(英文全稱:ipodtouch)以及蘋果平板電腦(英文全稱:ipad)使用。ios的系統(tǒng)架構分為四個層次:核心操作系統(tǒng)層、核心服務層、媒體層和可輕觸層。
ios應用程序在進行數(shù)據(jù)傳輸時,很容易遭到中間人攻擊(英文全稱:man-in-the-middleattack,英文縮寫:mitm),中間人攻擊,顧名思義,就是攻擊者插入到原本直接通信的雙方,讓雙方以為還在直接跟對方通訊,但實際上雙方的通信對方已變成了中間人,信息已經是被中間人獲取或篡改。
本發(fā)明可以針對在ios應用程序的場景下,對常見的攻擊手段進行安全漏洞檢測,其中,常見的攻擊手段有,ssl證書欺騙攻擊,此類攻擊較為簡單常見,請參閱圖1,圖1為本發(fā)明實施例中ssl證書欺騙攻擊的示意圖,攻擊者首先通過地址解析協(xié)議(英文全稱:addressresolutionprotocol,英文縮寫:arp)欺騙或者域名系統(tǒng)(英文全稱:domainnamesystem,英文縮寫:dns)劫持甚至網關劫持等,將客戶端的訪問重定向到攻擊者的機器,讓客戶端機器與攻擊者機器建立超文本傳輸安全協(xié)議(英文全稱:hypertexttransferprotocoloversecuresocketlayer,英文縮寫:https)連接(使用偽造證書),而攻擊者機器再跟服務端連接。常見的攻擊手段還可以是,利用在同一無線保真(英文全稱:wirelessfidelity,英文縮寫:wifi)的環(huán)境下通過中間人攻擊的方式去偽造證書給受害者,再由攻擊者與服務器交互,從中竊取受害者發(fā)給服務器的敏感信息。這類方法通常應用在金融場所,比如銀行或者交易所等,因為這些地方經常涉及到敏感的網絡操作,往往更容易竊取到敏感數(shù)據(jù)。
需要說明的是,ios應用程序在進行數(shù)據(jù)傳輸時遭遇到的攻擊手段還有其他的方式,上述的攻擊手段僅為其中兩種常見的方式,此處不作限定。
請參閱圖2,本發(fā)明實施例中漏洞檢測的方法一個實施例包括:
101、接收應用程序發(fā)起的第一網絡請求,其中,第一網絡請求為訪問第一站點的網絡請求,第一站點為應用程序申請訪問的站點,第一網絡請求中被注入第二網絡請求,第二網絡請求為訪問第二站點的網絡請求,第二站點為預置的異常站點;
本實施例中,檢測終端接收應用程序發(fā)起的第一網絡請求,第一網絡請求中被注入了第二網絡請求,第一網絡請求是訪問第一站點的網絡請求,第一站點為應用程序申請訪問的站點,第二網絡請求為訪問第二站點的網絡請求,第二站點為預置的異常站點。
例如,用戶打開瀏覽器,欲訪問a網站,此時a網站即為第一站點,訪問a網站的請求也就是第一網絡請求,而在訪問a網站時后臺也會根據(jù)第一網絡請求中注入的第二網絡請求去訪問b網站,b網站是開發(fā)人員預先建立的異常站點,用戶不會在顯示界面看到打開b網站的過程。
102、根據(jù)第一網絡請求以及第二網絡請求開啟第一站點以及第二站點;
本實施例中,檢測終端可以根據(jù)第一網絡請求以及第二網絡請求,開啟第一站點和第二站點,其中,第一站點可以顯示在界面上,第二站點可以只在后臺打開,而不用顯示在界面上。
103、判斷目標系統(tǒng)函數(shù)是否被調用;
本實施例中,檢測終端在根據(jù)第一網絡請求以及第二網絡請求開啟第一站點以及第二站點之后,利用目標系統(tǒng)函數(shù)是否被調用來確定應用程序是否存在安全漏洞。
其中,目標系統(tǒng)函數(shù)主要用于寫入ssl的信息,ssl為網絡通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。ssl協(xié)議位于位于網絡通訊協(xié)議與各種應用層協(xié)議之間,網絡通訊協(xié)議為傳輸控制協(xié)議(英文全稱:transmissioncontrolprotocol,英文縮寫:tcp)/網絡之間互連的協(xié)議(英文全稱:internetprotocol,英文縮寫:ip),為數(shù)據(jù)通訊提供安全支持。ssl協(xié)議可分為兩層:其一,ssl記錄協(xié)議,如tcp。ssl記錄協(xié)議建立在可靠的傳輸協(xié)議之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持;其二,ssl握手協(xié)議,它建立在ssl記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙方進行身份認證、協(xié)商加密算法和交換加密密鑰等。
104、若是,則檢測終端確定應用程序存在安全漏洞。
本實施例中,如果檢測終端檢測到目標系統(tǒng)函數(shù)確實被調用了,那么便可以確定該應用程序存在著安全漏洞。
本發(fā)明實施例中,提供了一種漏洞檢測的方法,檢測終端接收應用程序發(fā)起的第一網絡請求,其中,第一網絡請求為訪問第一站點的網絡請求,第一站點為應用程序申請訪問的站點,第一網絡請求中被注入第二網絡請求,第二網絡請求為訪問第二站點的網絡請求,第二站點為預置的異常站點。檢測終端根據(jù)第一網絡請求以及第二網絡請求開啟第一站點以及第二站點,檢測終端判斷目標系統(tǒng)函數(shù)是否被調用,若是,則確定應用程序存在安全漏洞。通過上述方式檢測ssl是否存中間人監(jiān)聽,可以節(jié)省人工檢測分析程序代碼的成本,并且能夠提升檢測的效率,從而增強方案的實用性。
可選地,在上述圖2對應的實施例的基礎上,本發(fā)明實施例提供的漏洞檢測的方法第一個可選實施例中,接收應用程序對應的第一網絡請求,可以包括:
通過鉤子函數(shù)hook從預置應用程序編程接口api中調用第一網絡請求的api;
調用第一網絡請求的api所對應的登錄請求函數(shù);
根據(jù)登錄請求函數(shù),對第一網絡請求注入第二網絡請求。
本實施例中,檢測終端先通過鉤子函數(shù)hook從預置的應用程序編程接口(英文全稱:applicationprogramminginterface,英文縮寫:api)中確定第一網絡請求的api,預置api可以通過蘋果公司推出的官方文檔獲取到,然后調用第一網絡請求的api所對應的登錄請求函數(shù),通過登錄請求函數(shù)對第一網絡請求注入訪問異常站點的第二網絡請求。
如果檢測終端需要對第一網絡請求注入第二網絡請求,需要采用鉤子函數(shù)(英文全稱:hook)來獲取第一網絡請求相關的api。通常情況下,會先建立一個預置api庫,預置api庫中存儲有不同的api。由于hook可以通過監(jiān)視指定函數(shù)來注入自定義的函數(shù),從而獲取原函數(shù)的變量等信息,或者修改原函數(shù)的處理邏輯,因此可以采用hook從預置api中監(jiān)控和調用與第一網絡請求相關的api,考慮到覆蓋面問題,可將常用第三方庫afnetworking也添加到監(jiān)控中,這些api包括:
nsurlconnection類中支持sendsynchronousrequest的方法、connectionwithrequest的方法和start的方法,
uiapplication類中支持openurl的方法和canopenurl的方法;
uiwebview類中支持loaddata的方法、loadrequest的方法和loadhtmlstring的方法;
cfnetwork類中支持cfreadstreamcreateforhttprequest的方法和cfhttpmessagecopyserializedmessage的方法;
常用第三方庫afnetworking中,afhttprequestoperation類中支持initwithrequest的方法,afurlsessionmanger類中支持datataskwithrequest的方法等。
檢測終端可以使用基于cydiasubstrace的hook框架對上述api進行監(jiān)控,在實際應用中,除了可以使用hook框架進行進行api監(jiān)控,還可以使用frida框架等。
然而在調用第一網絡請求的api所對應的登錄請求函數(shù)時,也可以采用hook函數(shù)來提取和監(jiān)控登錄請求函數(shù),并且在監(jiān)控登錄請求函數(shù)的時候,能夠改寫相應的代碼,使得在第一網絡請求中被注入第二網絡請求。
其次,本發(fā)明實施例中,說明了檢測終端在第一網絡請求中注入第二網絡請求的方法,檢測終端從預置應用程序編程接口api中確定第一網絡請求的api,然后通過鉤子函數(shù)hook監(jiān)控并調用第一網絡請求的api所對應的登錄請求函數(shù),最后檢測終端根據(jù)登錄請求函數(shù),通過改寫代碼的方式對第一網絡請求注入第二網絡請求。一方面該操作方式簡單便利,另一方面為本方案提供了具體的實現(xiàn)手段,從而提升方案的實用性。
可選地,在上述圖2以及圖2對應的第一個實施例的基礎上,本發(fā)明實施例提供的漏洞檢測的方法第二個可選實施例中,根據(jù)登錄請求函數(shù)對所述第一網絡請求注入所述第二網絡請求之前,還可以包括:
從預置的異常站點集合中選取第二站點,預置的異常站點集合中的各異常站點為證書無效、或證書偽造、或證書缺失的站點;
根據(jù)第二站點生成第二網絡請求。
本實施例中,檢測終端在將第二網絡請求注入第一網絡請求之前,還需要從預置的異常站點集合中選取第二站點,最終根據(jù)第二站點生成該站點對應的第二網絡請求。
其中,異常站點集合中的各個異常站點可以是證書無效的站點,或者證書偽造的站點,也可以是證書缺失的站點。而本發(fā)明中所提及的證書實際上是一種數(shù)字證書,數(shù)字證書就是互聯(lián)網通訊中標志通訊各方身份信息的一串數(shù)字,提供了一種在網絡上驗證通信實體身份的方式,數(shù)字證書不是數(shù)字身份證,而是身份認證機構蓋在數(shù)字身份證上的一個章或印(或者說加在數(shù)字身份證上的一個簽名)。它是由證書授權(英文全稱:certificateauthority,英文縮寫:ca)中心發(fā)行的,人們可以在網上用它來識別對方的身份。
數(shù)字證書里存有很多數(shù)字和英文,當使用數(shù)字證書進行身份認證時,它將隨機生成128位的身份碼,每份數(shù)字證書都能生成相應但每次都不可能相同的數(shù)碼,從而保證數(shù)據(jù)傳輸?shù)谋C苄?,即相當于生成一個復雜的密碼。
數(shù)字證書綁定了公鑰及其持有者的真實身份,它類似于現(xiàn)實生活中的居民身份證,所不同的是數(shù)字證書不再是紙質的證照,而是一段含有證書持有者身份信息并經過認證中心審核簽發(fā)的電子數(shù)據(jù),可以更加方便靈活地運用在電子商務和電子政務中。
再次,本發(fā)明實施例中,檢測終端可以從預置的異常站點集合中選取第二站點,并根據(jù)第二站點生成第二網絡請求。由于這里的預置的異常站點集合中各個不合法的站點是提前設置好的,也就是說,雖然無法通過證書驗證,但是事實上不會對用戶的信息安全造成威脅,只是為了開啟證書驗證的測試,從而可以在后臺檢測是否存在ssl的中間人漏洞,在多個預置的異常站點集合中選取第二站點,保證網絡數(shù)據(jù)傳輸?shù)陌踩裕诙军c不會惡意竊取用戶信息,且能夠實現(xiàn)本方案,從而提升了方案的實用性。
可選地,在上述圖2、圖2對應的第一個或第二個實施例的基礎上,本發(fā)明實施例提供的漏洞檢測的方法第三個可選實施例中,目標系統(tǒng)函數(shù)為安全套接層寫入函數(shù)sslwrite;
判斷目標系統(tǒng)函數(shù)是否被調用,可以包括:
通過hook監(jiān)控安全套接層寫入函數(shù)sslwrite是否被調用。
本實施例中,目標系統(tǒng)函數(shù)具體可以是安全套接層寫入函數(shù)sslwrite,那么檢測終端判斷目標系統(tǒng)函數(shù)是否被調用的方式可以是,檢測終端通過hook監(jiān)控安全套接層寫入函數(shù)sslwrite是否被調用。
具體地,可以通過hook框架監(jiān)控sslwrite函數(shù)的代碼,以此通過sslwrite函數(shù)的代碼檢測請求的域名是否是我們注入的域名,從而確定出是否存在ssl中間人漏洞。
其次,本發(fā)明實施例中,具體提出了一種通過監(jiān)控安全套接層寫入函數(shù)是否被調用,從而來確定應用程序是否存在安全漏洞。使得方案具備了更可行的實施方式,提升方案的可行性和可操作性。
可選地,在上述圖2、圖2對應的第一至第三個實施例中任一項的基礎上,本發(fā)明實施例提供的漏洞檢測的方法第四個可選實施例中,檢測終端通過hook監(jiān)控安全套接層寫入函數(shù)sslwrite是否被調用,可以包括:
通過hook獲取sslwrite;
通過sslwrite,監(jiān)控sslwrite是否包含被注入的第二網絡請求。
本實施例中,檢測終端通過hook監(jiān)控安全套接層寫入函數(shù)sslwrite是否被調用,具體可以檢測終端是先通過hook獲取sslwrite,再通過sslwrite監(jiān)控是否包含被注入的第二網絡請求。其中,監(jiān)控所述sslwrite具體可以是監(jiān)控其中是否包含被注入的第二站點的鏈接,第二站點即為預置的異常站點。第二站點的鏈接指向一個目標的連接,目標則是第二站點對應的網頁,因此可以理解為第二站點的鏈接即為異常站點的網址。
再次,本發(fā)明實施例中,檢測終端通hook監(jiān)控安全套接層寫入函數(shù)是否被調用的一種具體實現(xiàn)方式可以是,檢測終端通過hook獲取安全套接層寫入函數(shù)的調用參數(shù),再通過安全套接層寫入函數(shù)的調用參數(shù),監(jiān)控安全套接層寫入函數(shù)的調用參數(shù)是否包含被注入的第二網絡請求。采用上述方式進一步為方案的實現(xiàn)提供了切實有效的方式,增強方案的可行性和實用性。
可選地,在上述圖2、圖2對應的第一至第四個實施例中任一項的基礎上,本發(fā)明實施例提供的漏洞檢測的方法第五個可選實施例中,根據(jù)登錄請求函數(shù)對第一網絡請求注入第二網絡請求之前,還可以包括:
檢測第一網絡請求中是否已被注入第二網絡請求;
若第一網絡請求中已被注入第二網絡請求,則停止對第一網絡請求注入第二網絡請求,并進行應用程序的漏洞檢測;
若第一網絡請求中未被注入第二網絡請求,則確定在第一網絡請求中注入第二網絡請求。
本實施例中,在第一網絡請求中注入第二網絡請求這個步驟可以通過改寫代碼來實現(xiàn),以使既可以用于應用程序請求訪問一個站點,又可以用于應用程序請求訪問預置的異常站點。然而,這段改寫的代碼會循環(huán)地在第一網絡請求中注入第二網絡請求,導致持續(xù)地在后臺訪問預置的異常站點。
因此,檢測終端需要持續(xù)地通過檢測第一網絡請求中是否已被注入第二網絡請求,如果第一網絡請求還沒有被注入第二網絡請求,則可以確定在第一網絡請求中注入第二網絡請求,反之,如果第一網絡請求中已經被注入了第二網絡請求,那么就不在繼續(xù)往第一網絡請求中重復注入第二網絡請求,而是直接進行后續(xù)的應用程序漏洞檢測。
其次,本發(fā)明實施例中,為了避免出現(xiàn)異常站點的反復注入,還應設置一個循環(huán)的結束點,即不讓第二網絡請求再次被注入第一網絡請求中,實現(xiàn)方式為,檢測終端根據(jù)登錄請求函數(shù)對第一網絡請求注入第二網絡請求之前,還可以檢測第一網絡請求中是否已被注入第二網絡請求,若第一網絡請求中已被注入第二網絡請求,則停止對第一網絡請求注入第二網絡請求,并進行應用程序的漏洞檢測,反之,若第一網絡請求中未被注入第二網絡請求,則確定在第一網絡請求中注入第二網絡請求。采用上述方法可以有效地防止異常站點反復被注入,解決了程序出現(xiàn)“死循環(huán)”的問題,提升方案的可行性和實用性。
可選地,在上述圖2、圖2對應的第一至第四個實施例中任一項的基礎上,本發(fā)明實施例提供的漏洞檢測的方法第五個可選實施例中,還可以包括:
若未調用目標系統(tǒng)函數(shù),則檢測終端確定應用程序為安全應用程序。
本實施例中,如果檢測終端檢測到應用程序沒有調用目標系統(tǒng)函數(shù),那么可以確定該應用程序為安全的應用程序。
具體地,檢測應用程序是否存在ssl中間人漏洞,其實就是檢測它是否做證書校驗。假設現(xiàn)在某個應用程序要訪問一個證書異常的站點,比如https://badcert-edell.tlsfun.de,那么有做證書校驗和沒有做證書校驗的區(qū)別就如圖3所示,請參閱圖3,圖3為本發(fā)明實施例中ssl的中間人漏洞檢測原理示意圖,主要在于最后判斷是否調用了sslwrite函數(shù),首先通過hook注入異常站點,并進行異常站點的訪問請求,如果無證書校驗,進而檢測終端繼續(xù)通過hook監(jiān)控是否調用了sslwrite,若確定調用了sslwrite,則說明該應用程序存在安全漏洞。相反地,如果根據(jù)該異常站點的訪問請求進行證書校驗,但是沒有通過校驗,則檢測終端通過hook監(jiān)控sslwrite,確定沒有調用sslwrite,說明該應用程序為安全的應用程序。
進一步地,本發(fā)明實施例中,當檢測終端檢測到應用程序沒有調用目標系統(tǒng)函數(shù),則可以確定該應用程序為安全的應用程序。通過檢測是否調用目標系統(tǒng)函數(shù)來確定應用程序的安全性,不但更加直觀地顯示了應用程序的安全性,而且進一步地為方案提供了另一種實現(xiàn)方式,從而提升方案的靈活性。
為便于理解,下面以一個具體應用場景對本發(fā)明中一種漏洞檢測的方法進行詳細描述,具體為:
用戶甲想要通過qq瀏覽器來訪問淘寶主頁,該qq瀏覽器是具備證書校驗功能的。當用戶甲在qq瀏覽器的地址欄中輸入了淘寶主頁的地址“https://www.taobao.com/”,此時,在淘寶主頁的地址中注入了一個異常站點的連接請求,為“https://badcertedell.tisfun.de/”,于是,qq瀏覽器將在顯示頁面上顯示淘寶主頁,而同時又在后臺打開了這個異常站點。
由于異常站點的證書是無效的,于是彈出了一個對話框,請參閱圖8,圖8為本發(fā)明應用場景中檢測ssl中間人漏洞的頁面提示示意圖,如圖所示,對話框中為告警示意,并顯示“此服務器的證書無效,您可能正在連接到一個偽裝成‘https://badcertedell.tisfun.de/’的服務器,這會威脅到您的機密信息的安全。您仍要連接此服務器嗎?”
顯示這個頁面提示,代表注入的請求未訪問成功,該應用不存在ssl中間人漏洞,相反地,如果沒有出現(xiàn)如圖4類似的攔截,就會成功訪問到證書異常的站點,也就說明了應用存在ssl有中間人漏洞。因此,用戶甲本次訪問的淘寶主頁為安全的內容。
下面對本發(fā)明中的檢測終端進行詳細描述,請參閱圖5,本發(fā)明實施例中的檢測終端包括:
接收模塊201,用于接收應用程序發(fā)起的第一網絡請求,其中,所述第一網絡請求為訪問第一站點的網絡請求,所述第一站點為所述應用程序申請訪問的站點,所述第一網絡請求中被注入第二網絡請求,所述第二網絡請求為訪問第二站點的網絡請求,所述第二站點為預置的異常站點;
開啟模塊202,用于根據(jù)所述接收模塊201接收的所述第一網絡請求以及所述第二網絡請求開啟所述第一站點以及第二站點;
判斷模塊203,用于所述開啟模塊202開啟所述第一站點以及所述第二站點之后,判斷目標系統(tǒng)函數(shù)是否被調用;
第一確定模塊204,用于若所述判斷模塊203判斷得到所述目標系統(tǒng)函數(shù)被調用,則確定所述應用程序存在安全漏洞。
本實施例中,接收模塊201接收應用程序發(fā)起的第一網絡請求,其中,所述第一網絡請求為訪問第一站點的網絡請求,所述第一站點為所述應用程序申請訪問的站點,所述第一網絡請求中被注入第二網絡請求,所述第二網絡請求為訪問第二站點的網絡請求,所述第二站點為預置的異常站點,開啟模塊202根據(jù)所述接收模塊201接收的所述第一網絡請求以及所述第二網絡請求開啟所述第一站點以及第二站點,所述開啟模塊202開啟所述第一站點以及所述第二站點之后,判斷模塊203判斷目標系統(tǒng)函數(shù)是否被調用,若所述判斷模塊203判斷得到所述目標系統(tǒng)函數(shù)被調用,則第一確定模塊204確定所述應用程序存在安全漏洞。
本發(fā)明實施例中,提供了一種漏洞檢測的方法,檢測終端接收應用程序發(fā)起的第一網絡請求,其中,第一網絡請求為訪問第一站點的網絡請求,第一站點為應用程序申請訪問的站點,第一網絡請求中被注入第二網絡請求,第二網絡請求為訪問第二站點的網絡請求,第二站點為預置的異常站點。檢測終端根據(jù)第一網絡請求以及第二網絡請求開啟第一站點以及第二站點,檢測終端判斷目標系統(tǒng)函數(shù)是否被調用,若是,則確定應用程序存在安全漏洞。通過上述方式檢測ssl是否存中間人監(jiān)聽,可以節(jié)省人工檢測分析程序代碼的成本,并且能夠提升檢測的效率,從而增強方案的實用性。
可選地,在上述圖5所對應的實施例的基礎上,請參閱圖6,本發(fā)明實施例提供的檢測終端的另一實施例中,
所述接收模塊201包括:
第一調用單元2011,用于通過鉤子函數(shù)hook從預置應用程序編程接口api中調用所述第一網絡請求的api;
第二調用單元2012,用于調用所述第一調用單元2011調用的所述第一網絡請求的api所對應的登錄請求函數(shù);
注入單元2013,用于根據(jù)所述第二調用單元2012調用的登錄請求函數(shù)對所述第一網絡請求注入所述第二網絡請求。
其次,本發(fā)明實施例中,說明了檢測終端在第一網絡請求中注入第二網絡請求的方法,檢測終端從預置應用程序編程接口api中確定第一網絡請求的api,然后通過鉤子函數(shù)hook監(jiān)控并調用第一網絡請求的api所對應的登錄請求函數(shù),最后檢測終端根據(jù)登錄請求函數(shù),通過改寫代碼的方式對第一網絡請求注入第二網絡請求。一方面該操作方式簡單便利,另一方面為本方案提供了具體的實現(xiàn)手段,從而提升方案的實用性。
可選地,在上述圖6所對應的實施例的基礎上,請參閱圖7,本發(fā)明實施例提供的檢測終端的另一實施例中,
所述接收模塊201還包括:
選取單元2014,用于所述注入單元2013根據(jù)所述登錄請求函數(shù)對所述第一網絡請求注入所述第二網絡請求之前,從預置的異常站點集合中選取所述第二站點,所述預置的異常站點集合中的各異常站點為證書無效、或證書偽造、或證書缺失的站點;
生成單元2015,用于根據(jù)所述選取單元2014選取的所述第二站點生成所述第二網絡請求。
再次,本發(fā)明實施例中,檢測終端可以從預置的異常站點集合中選取第二站點,并根據(jù)第二站點生成第二網絡請求。由于這里的預置的異常站點集合中各個不合法的站點是提前設置好的,也就是說,雖然無法通過證書驗證,但是事實上不會對用戶的信息安全造成威脅,只是為了開啟證書驗證的測試,從而可以在后臺檢測是否存在ssl的中間人漏洞,在多個預置的異常站點集合中選取第二站點,保證網絡數(shù)據(jù)傳輸?shù)陌踩?,第二站點不會惡意竊取用戶信息,且能夠實現(xiàn)本方案,從而提升了方案的實用性。
可選地,在上述圖5所對應的實施例的基礎上,請參閱圖8,本發(fā)明實施例提供的檢測終端的另一實施例中,
所述目標系統(tǒng)函數(shù)為安全套接層寫入函數(shù)sslwrite;
所述判斷模塊203包括:
監(jiān)控單元2031,用于通過hook監(jiān)控所述安全套接層寫入函數(shù)sslwrite是否被調用。
其次,本發(fā)明實施例中,具體提出了一種通過監(jiān)控安全套接層寫入函數(shù)是否被調用,從而來確定應用程序是否存在安全漏洞。使得方案具備了更可行的實施方式,提升方案的可行性和可操作性。
可選地,在上述圖8所對應的實施例的基礎上,請參閱圖9,本發(fā)明實施例提供的檢測終端的另一實施例中,
所述監(jiān)控單元2031包括:
獲取子單元20311,用于通過所述hook獲取所述sslwrite;
監(jiān)控子單元20312,用于通過所述獲取子單元20311獲取的所述sslwrite,監(jiān)控所述sslwrite是否包含被注入的所述第二網絡請求。
再次,本發(fā)明實施例中,檢測終端通hook監(jiān)控安全套接層寫入函數(shù)是否被調用的一種具體實現(xiàn)方式可以是,檢測終端通過hook獲取安全套接層寫入函數(shù)的調用參數(shù),再通過安全套接層寫入函數(shù)的調用參數(shù),監(jiān)控安全套接層寫入函數(shù)的調用參數(shù)是否包含被注入的第二網絡請求。采用上述方式進一步為方案的實現(xiàn)提供了切實有效的方式,增強方案的可行性和實用性。
可選地,在上述圖6所對應的實施例的基礎上,請參閱圖10,本發(fā)明實施例提供的檢測終端的另一實施例中,
所述檢測終端20還包括:
檢測模塊205,用于所述注入單元2013根據(jù)登錄請求函數(shù)對所述第一網絡請求注入所述第二網絡請求之前,檢測所述第一網絡請求中是否已被注入所述第二網絡請求;
停止模塊206,用于若所述檢測模塊205檢測得到所述第一網絡請求中已被注入所述第二網絡請求,則停止對所述第一網絡請求注入所述第二網絡請求,并進行所述應用程序的漏洞檢測;
第二確定模塊207,用于若所述檢測模塊205檢測得到所述第一網絡請求中未被注入所述第二網絡請求,則確定在所述第一網絡請求中注入所述第二網絡請求。
其次,本發(fā)明實施例中,為了避免出現(xiàn)異常站點的反復注入,還應設置一個循環(huán)的結束點,即不讓第二網絡請求再次被注入第一網絡請求中,實現(xiàn)方式為,檢測終端根據(jù)登錄請求函數(shù)對第一網絡請求注入第二網絡請求之前,還可以檢測第一網絡請求中是否已被注入第二網絡請求,若第一網絡請求中已被注入第二網絡請求,則停止對第一網絡請求注入第二網絡請求,并進行應用程序的漏洞檢測,反之,若第一網絡請求中未被注入第二網絡請求,則確定在第一網絡請求中注入第二網絡請求。采用上述方法可以有效地防止異常站點反復被注入,解決了程序出現(xiàn)“死循環(huán)”的問題,提升方案的可行性和實用性。
可選地,在上述圖5至圖10中任一個對應的實施例的基礎上,請參閱圖11,本發(fā)明實施例提供的檢測終端的另一實施例中,
所述檢測終端20還包括:
第三確定模塊208,用于若未調用所述目標系統(tǒng)函數(shù),則所述檢測終端確定所述應用程序為安全應用程序。
進一步地,本發(fā)明實施例中,當檢測終端檢測到應用程序沒有調用目標系統(tǒng)函數(shù),則可以確定該應用程序為安全的應用程序。通過檢測是否調用目標系統(tǒng)函數(shù)來確定應用程序的安全性,不但更加直觀地顯示了應用程序的安全性,而且進一步地為方案提供了另一種實現(xiàn)方式,從而提升方案的靈活性。
本發(fā)明實施例還提供了另一種檢測終端,如圖12所示,為了便于說明,僅示出了與本發(fā)明實施例相關的部分,具體技術細節(jié)未揭示的,請參照本發(fā)明實施例方法部分。該終端可以為包括手機、平板電腦、個人數(shù)字助理(英文全稱:personaldigitalassistant,英文縮寫:pda)、銷售終端(英文全稱:pointofsales,英文縮寫:pos)、車載電腦等任意終端設備,以終端為手機為例:
圖12示出的是與本發(fā)明實施例提供的終端相關的手機的部分結構的框圖。參考圖12,手機包括:射頻(英文全稱:radiofrequency,英文縮寫:rf)電路310、存儲器320、輸入單元330、顯示單元340、傳感器350、音頻電路360、無線保真(英文全稱:wirelessfidelity,英文縮寫:wifi)模塊370、處理器380、以及電源390等部件。本領域技術人員可以理解,圖12中示出的手機結構并不構成對手機的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
下面結合圖12對手機的各個構成部件進行具體的介紹:
rf電路310可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器380處理;另外,將設計上行的數(shù)據(jù)發(fā)送給基站。通常,rf電路310包括但不限于天線、至少一個放大器、收發(fā)信機、耦合器、低噪聲放大器(英文全稱:lownoiseamplifier,英文縮寫:lna)、雙工器等。此外,rf電路310還可以通過無線通信與網絡和其他設備通信。上述無線通信可以使用任一通信標準或協(xié)議,包括但不限于全球移動通訊系統(tǒng)(英文全稱:globalsystemofmobilecommunication,英文縮寫:gsm)、通用分組無線服務(英文全稱:generalpacketradioservice,gprs)、碼分多址(英文全稱:codedivisionmultipleaccess,英文縮寫:cdma)、寬帶碼分多址(英文全稱:widebandcodedivisionmultipleaccess,英文縮寫:wcdma)、長期演進(英文全稱:longtermevolution,英文縮寫:lte)、電子郵件、短消息服務(英文全稱:shortmessagingservice,sms)等。
存儲器320可用于存儲軟件程序以及模塊,處理器380通過運行存儲在存儲器320的軟件程序以及模塊,從而執(zhí)行手機的各種功能應用以及數(shù)據(jù)處理。存儲器320可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器320可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。
輸入單元330可用于接收輸入的數(shù)字或字符信息,以及產生與手機的用戶設置以及功能控制有關的鍵信號輸入。具體地,輸入單元330可包括觸控面板331以及其他輸入設備332。觸控面板331,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板331上或在觸控面板331附近的操作),并根據(jù)預先設定的程式驅動相應的連接裝置。可選的,觸控面板331可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉換成觸點坐標,再送給處理器380,并能接收處理器380發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸控面板331。除了觸控面板331,輸入單元330還可以包括其他輸入設備332。具體地,其他輸入設備332可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關按鍵等)、軌跡球、鼠標、操作桿等中的一種或多種。
顯示單元340可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機的各種菜單。顯示單元340可包括顯示面板341,可選的,可以采用液晶顯示器(英文全稱:liquidcrystaldisplay,英文縮寫:lcd)、有機發(fā)光二極管(英文全稱:organiclight-emittingdiode,英文縮寫:oled)等形式來配置顯示面板341。進一步的,觸控面板331可覆蓋顯示面板341,當觸控面板331檢測到在其上或附近的觸摸操作后,傳送給處理器380以確定觸摸事件的類型,隨后處理器380根據(jù)觸摸事件的類型在顯示面板341上提供相應的視覺輸出。雖然在圖12中,觸控面板331與顯示面板341是作為兩個獨立的部件來實現(xiàn)手機的輸入和輸入功能,但是在某些實施例中,可以將觸控面板331與顯示面板341集成而實現(xiàn)手機的輸入和輸出功能。
手機還可包括至少一種傳感器350,比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調節(jié)顯示面板341的亮度,接近傳感器可在手機移動到耳邊時,關閉顯示面板341和/或背光。作為運動傳感器的一種,加速計傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機姿態(tài)的應用(比如橫豎屏切換、相關游戲、磁力計姿態(tài)校準)、振動識別相關功能(比如計步器、敲擊)等;至于手機還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路360、揚聲器361,傳聲器362可提供用戶與手機之間的音頻接口。音頻電路360可將接收到的音頻數(shù)據(jù)轉換后的電信號,傳輸?shù)綋P聲器361,由揚聲器361轉換為聲音信號輸出;另一方面,傳聲器362將收集的聲音信號轉換為電信號,由音頻電路360接收后轉換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器380處理后,經rf電路310以發(fā)送給比如另一手機,或者將音頻數(shù)據(jù)輸出至存儲器320以便進一步處理。
wifi屬于短距離無線傳輸技術,手機通過wifi模塊370可以幫助用戶收發(fā)電子郵件、瀏覽網頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網訪問。雖然圖12示出了wifi模塊370,但是可以理解的是,其并不屬于手機的必須構成,完全可以根據(jù)需要在不改變發(fā)明的本質的范圍內而省略。
處理器380是手機的控制中心,利用各種接口和線路連接整個手機的各個部分,通過運行或執(zhí)行存儲在存儲器320內的軟件程序和/或模塊,以及調用存儲在存儲器320內的數(shù)據(jù),執(zhí)行手機的各種功能和處理數(shù)據(jù),從而對手機進行整體監(jiān)控。可選的,處理器380可包括一個或多個處理單元;優(yōu)選的,處理器380可集成應用處理器和調制解調處理器,其中,應用處理器主要處理操作系統(tǒng)、用戶界面和應用程序等,調制解調處理器主要處理無線通信??梢岳斫獾氖?,上述調制解調處理器也可以不集成到處理器380中。
手機還包括給各個部件供電的電源390(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器380邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。
盡管未示出,手機還可以包括攝像頭、藍牙模塊等,在此不再贅述。
在本發(fā)明實施例中,該終端所包括的處理器380還具有以下功能:
控制輸入單元330接收應用程序發(fā)起的第一網絡請求,其中,所述第一網絡請求為訪問第一站點的網絡請求,所述第一站點為所述應用程序申請訪問的站點,所述第一網絡請求中被注入第二網絡請求,所述第二網絡請求為訪問第二站點的網絡請求,所述第二站點為預置的異常站點;
根據(jù)所述第一網絡請求以及所述第二網絡請求開啟所述第一站點以及第二站點;
判斷目標系統(tǒng)函數(shù)是否被調用;
若是,則確定所述應用程序存在安全漏洞。
所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(英文全稱:read-onlymemory,英文縮寫:rom)、隨機存取存儲器(英文全稱:randomaccessmemory,英文縮寫:ram)、磁碟或者光盤等各種可以存儲程序代碼的介質。
以上所述,以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的精神和范圍。