<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    自動化滲透測試工具開發實踐

    VSole2022-06-18 07:43:40

    0x01 前言

    為了提高安全服務項目的檢測效率、規范性、全面性,Tide安全團隊結合在滲透測試行業的經驗和安全開發方面的積累,開發了一款自動化滲透測試工具。

    該工具使用Golang開發為CS架構,集“資產探測-服務識別-爬蟲-被動監測-漏洞掃描-POC檢測-截屏-報告”于一體,適合甲方或乙方安服團隊對目標系統進行全面的安全檢測并輸出報告。

    本文主要介紹一下該工具的框架及部分實現思路。


    0x02 自動化工具的必要性

    傳統的滲透測試主要是靠人工進行測試,但由于測試人員的經驗、能力、細致度的差別,導致滲透測試的結果可能千差萬別。雖然測試用例能讓人工測試更規范一些,但每個人的技術擅長點不同,發現漏洞的點也會有很大差異。另外就是,滲透測試的效率相對較低,一般一套CMS系統的純黑盒測試可能都需要3-5天時間,就算這樣也沒有人敢保證自己測完之后就不會有任何漏洞,這在快節奏和高時效的今天顯得有些格格不入。

    而工具掃描從一開始就有它的弊端,比如可能影響業務可用性、誤報、漏報、業務邏輯測試盲區、安全設備繞過等。但它也有先天的優勢,比如參數檢測的全面性,合適的爬蟲可以讓掃描器能檢測系統的每個參數點;比如漏洞檢測的快捷性,人工可能還需要識別框架后逐個用POC檢測,但工具可以自動化的分析-識別-檢測-報告;再比如檢測的時效性,一套系統可能30分鐘就能做完全部的掃描并完成報告,而人工的話可能才剛把環境配置好。

    自動化工具能減輕測試人員繁瑣的工作,讓大家可以集中精力來測試可能的盲區以及運用其專業知識在最重要的地方,而且自動化測試工具也可以是IT合規檢測的關鍵組成部分。在項目日益激增的時候,在海量資產亟待檢測的時候,在重復性報告讓人疲于應付的時候,一款適合自己的自動化滲透測試工具就很有必要了。


    0x03 市面上的自動化工具

    現在市面上也有很多優秀的自動化檢測工具,比如goby、xray、BurpSuite、Awvs、AppScan、Nessus等,其中goby和xray分別出自國內知名安全公司華順信安和長亭科技,也是每個滲透測試人員的必備工具。

    Goby是由華順信安扛把子趙武Zwell(Pangolin、JSky、FOFA作者)打造,它的資產探測、高效掃描、漏洞利用等等都讓人感覺這不僅僅是一個工具,這是滲透的藝術,趙武大神的工具也向來都是這樣讓人臣服,當為我輩之楷模。

    Xray 是長亭科技推出的免費白帽子工具平臺,功能豐富調用簡單,現在也被很多人用做自己的掃描核心,而且它的企業版“洞鑒”更是讓人眼前一亮,出色的檢測能力和用markdown編寫的檢測報告也是讓人心悅誠服。

    當然,完全的模仿goby和xray是我們做不到的,而且重復造輪子也不是我們要做的,我們只需要在巨人肩上找到適合自己的最佳實踐。


    0x04 自動化滲透測試工具框架

    我們的目的就是讓滲透測試服務更快捷、標準化且易操作,因為使用它的可能是專業滲透測試人員,也可能是其他安服部門同事,或者是售前、運維等人員,安裝、部署、使用、生成報告都要盡量便捷,所以我們最后是參考了Goby的開發框架,使用了GoLang+Electron+VUE,也能較好支持Windows/MacOS/Linux多平臺使用。

    整體功能架構如下所示。

    工具界面如下,簡單填寫,一鍵出報告。

    內置了多種模板報告,下面是我司的滲透測試報告模板

    工具是和Tide安全團隊的三個小伙伴一起開發,用時大約兩個月從GoLang零基礎到完成開發,期間還要忙正常的項目,非常感(mai)動(ming)。

    skad:前端總設計師、API交互、報告生成等

    浮生若夢:主要負責常規漏洞檢測模塊、Poc檢測模塊、日志截圖等

    天下兵馬大都督:負責爬蟲模塊、授權認證、前端設計等

    重劍無鋒:我主要負責他們不屑于干的雜活(⊙﹏⊙)


    0x05 部分功能實現方法參考

    1. 前后端交互

    前端和后臺的模式主要參考了Goby的實現方式,使用Electron+VUE+nodejs開發前端后打包即可。在前端啟動時也會在后臺啟動服務端,服務端提供了api接口供前端調用,實現前后端交互。

    在最初的方案中,我們是想用Golang自帶的GUI模塊來實現前端界面,但挑來選去沒有發現太好用的,要么繁瑣要么移植性差。也想過用BS架構,比如gin框架,類似gshark或者pocassist,但我們功能不多,專門弄個web有點大材小用了,所以最后還是選了Electron,而且GoBy 、中國蟻劍、FOFA客戶端等也就是基于此方案進行開發的,向大佬們學習肯定不會有錯。

    參考資料:

    一款漏洞驗證框架的構思:https://nosec.org/home/detail/2919.html
    Vue+Electron項目:https://segmentfault.com/a/1190000038463122
    

    2. 資產探測

    因為該工具主要定位是針對單個web資產進行掃描,所以資產的探測主要是在端口掃描、服務指紋識別、應用指紋識別等方面,也能在后面的POC檢測環節根據指紋信息來對POC進行匹配,提高精準度降低不良影響。

    1. 端口掃描和探測

    直接使用了go代碼來進行端口存活的發現,使用nmap的指紋庫進行服務指紋識別,這部分可以參考dismapServerScan

    ServerScan: https://github.com/Adminisme/ServerScan
    dismap: https://github.com/zhzyker/dismap
    
    1. 應用指紋識別

    應用指紋識別方面現在市面上有很多開源工具,我之前也用python寫過tidefinger,現在也有很多用Golang開發的指紋識別工具,比如dismapfscankscan等,我主要還是根據tidefinger的原理融合了其他幾個工具的指紋,并參考了goby的指紋識別方式。

    TideFinger: https://github.com/TideSec/TideFinger
    dismap: https://github.com/zhzyker/dismap
    fscan: https://github.com/shadow1ng/fscan
    kscan: https://github.com/lcvvvv/kscan
    

    3. 被動探測

    我們使用了主動掃描和被動掃描兩種方式,被動探測和xray的被動掃描基本一致,實現的流程是:導入證書(監聽https)-監聽端口-瀏覽器設置代理-監聽數據并分析,這些流程也都是在用戶無感知的情況下自動化完成的。而被動監聽到的數據用用做后面的爬蟲二次爬取、漏洞檢測、敏感字檢測等。

    監聽數據主要使用goproxy庫,并對請求頭和返回包都進行了一定的修改,為了能更準確的識別到登錄數據包,還使用了機器學習+行為分析的方式進行登錄字段的分析,目前分辨登錄數據包的成功率大約90%左右。

    goproxy庫:https://github.com/elazarl/goproxy
    

    對其中的RespHandlerFuncReqHandlerFunc進行了大量的二次開發,因為判斷成功登錄數據包是比較關鍵的一步,這是后面登錄機制驗證、弱口令猜解、用戶名枚舉、未授權訪問漏洞、cookie配置缺陷等漏洞的基礎。

    其實這個過程和appscanawvs的分析登錄數據包是基本一致的,只不過我們讓他盡量的自動化了。當然對一些較為復雜或難以識別的登錄數據包,還加入了人工輔助驗證的方式,在模擬登錄的時候會彈出一個登錄確認框輔助確認。


    4. 鏈接爬蟲

    爬蟲是否強大也是一個掃描器的關鍵,普通的靜態爬蟲無法解析和渲染js,所以我們還使用了Go+Selenium+chromedriver來抓取一些需要渲染的框架類網站,以便更全面的爬取到頁面鏈接和參數,最初是考慮使用playwright 或者puppeteer的,但目前大部分都是python代碼實現的。靜態爬蟲主要參考了colly和幽靈珠。

    Go最強大的爬蟲庫colly:https://github.com/gocolly/colly
    crawlergo:https://github.com/Qianlitp/crawlergo
    幽靈蛛爬蟲:https://github.com/henrylee2cn/pholcus
    Go的selenium:https://github.com/tebeka/selenium
    

    為了避免后續的漏洞檢測可能影響到業務正常使用,所以在爬蟲階段對部分敏感鏈接進行了分類,比如涉及添加、刪除、更新、注銷之類的操作,還有一些POST寫入的操作,如果用戶確認是測試環境時才會對這些鏈接進行測試。雖然這樣可能導致漏報,但最起碼不會刪除用戶的數據,之前就遇到過Awvs的登錄掃描把后臺管理員賬號刪除的情況。


    5. 登錄缺陷測試

    登錄缺陷測試主要是對登錄數據包進行一定的分析,然后根據返回包長度、返回數據、cookie變化等進行判斷,主要測試了如下測試項:用戶名猜解、密碼枚舉、驗證碼繞過測試、敏感信息明文傳輸、是否進行加密、加密算法是否為弱加密、是否存在會話定置、cookie驗證缺陷、cookie中存儲敏感信息等。

    驗證碼繞過部分一方面是刪除驗證碼或者重復使用驗證碼,查看系統返回包是否一致,另一方面我們也在嘗試使用卷積神經網絡來自動識別簡單的驗證碼,不過目前成功率還不算高。

    驗證碼識別可以參考以下資料:

    我們團隊lmn小姐姐的大作:https://www.yuque.com/tidesec/xxae8n/ucbwtx
    基于Go的tensorflow:https://github.com/galeone/tfgo
    基于Go的圖形識別:https://github.com/tinrab/go-tensorflow-image-recognition
    

    6. 常規漏洞檢測

    常規漏洞的檢測主要是SQL注入漏洞、XSS漏洞、命令注入、文件包含、目錄枚舉等等漏洞,雖然常規漏洞出現的越來越少,但只要出現就會是中高危,漏測的話影響也會比較大。雖然常規漏洞看起來簡單,但真正想實現一個能接近Xray或者Awvs掃描功能的掃描器還是不太可能的。

    后來我們借鑒了gryffin的方式來曲線救國,使用了Arachni來進行部分常規漏洞的檢測,對部分sql注入和xss我們自己用Go實現了一部分,本來也想用sqlmap的,但sqlmap是用python寫的,我們不想再打包個python環境,而exe版的sqlmap也不是我們想要的。Arachni是用ruby來實現的,官方也打包了各平臺的版本,調用倒算方便。

    在第一版完成后,目前也在模仿WASCAN來寫個自己的Go掃描器,不過因為各種原因進展一般。當然大家也可以去調用xray或者Awvs之類的進行掃描,但畢竟不是自己寫的,后續想完善或者構造數據包截圖之類的都有些不便,而且商業軟件的版權也是個繞不開的問題。

    基于Go的掃描器gryffin:https://github.com/yahoo/gryffin
    基于Ruby的掃描器Arachni:https://github.com/Arachni/arachni
    基于Python的掃描器:https://github.com/FOGSEC/WAScan
    

    7. POC檢測

    POC檢測的重要性就不用再說了,特別是對諸如weblogic、struts、fastjson、thinkphp、shiro 等框架的高危歷史漏洞的檢測,集成各類POC然后根據指紋識別情況定向檢測,工具的高效快捷是人工檢測難以比擬的。

    我們在團隊內部也一直維護著自己的POC平臺,主要是根據Fscanpocassist來進行的二次開發,Poc后續的更新就只能靠自己整理了,當然如果有錢的話可以買商業版的Poc庫,商業版的更及時高效而且節省人力。

    自己整理Poc庫的話,最初的Poc可以從nucleixraypocassistFscan等項目中得到,而且這幾個的poc格式基本一致,個別的修改一下就能通用。

    Nuclei:https://github.com/projectdiscovery/nuclei
    Xray:https://github.com/chaitin/xray
    pocassist:https://github.com/jweny/pocassist/
    fscan:https://github.com/shadow1ng/fscan
    

    8. 邏輯漏洞檢測

    邏輯漏洞檢測是工具檢測的硬傷,也在網上看過一些基于人工智能、大數據分析之類的檢測方法,但大都是針對特定業務或特定系統,而且需要一定的樣本數據才能對業務的邏輯漏洞進行測試。

    所以目前邏輯漏洞檢測也只是針對驗證碼繞過、用戶名枚舉、未授權訪問之類的弱邏輯漏洞,主要還是根據返回數據包的不同來進行判斷,目前來看誤報不算多。

    對于垂直越權,需要對不同權限的賬號分別進行請求,根據返回數據來進行判斷,但一些公共api可能存在誤報。

    但對于水平越權和一些業務層面邏輯漏洞(例如0元支付),暫時沒有其他更好的實現思路。


    9. 日志及截圖

    滲透測試不管是人工還是工具都會有一定的風險,所以我們也比較注重日志的留存,對所有由工具發出的流量和執行的操作都會詳細記錄,萬一出現問題可以進行溯源佐證。

    另外對每個漏洞項,不管是存在問題還是測試通過的,也都會進行自動化截圖留證,部分截圖會插入到報告中。截圖功能主要使用了chromedp的網頁截屏方式。

    chromedp:https://github.com/chromedp/chromedp
    網頁截屏:https://www.jianshu.com/p/c4451e488e6a
    

    對每個漏洞都進行了測試并自動截圖


    10. 輸出報告

    報告是安服檢測的最重要的交付物了,我司對報告格式也要求比較嚴格,所以為了能較好的生成報告也是查了不少資料,開始本來是想用unioffice,但我們的模板有些地方沒法生成,而unioffice的代碼改起來也比較費勁,而且還不是完全開源免費。最后我們是參考unioffice的原理,自己實現了一個報告生成器,雖然笨重一些,但恰好能滿足我們的需求。

    在生成word版報告后,為了方便還提供了一個pdf版本的報告,主要參考了doc2pdf-go,在windows上還有個更方便的vba轉格式的方式,可以參考以下資料。

    unioffice:https://github.com/unidoc/unioffice
    doc轉PDF:https://github.com/piaobocpp/doc2pdf-go
    vba doc轉docx:https://www.cnblogs.com/owenzhou/p/10795209.html
    PDF/DOC/DOCX:https://github.com/sajari/docconv
    


    0x06 寫在后面

    其實相比goby的“資產-指紋-漏洞-驗證-橫向”和xray的“主被動-爬蟲-web全掃描-poc檢測”,我們不管代碼還是檢測能力或者是覆蓋面都還差很多,但我們的工具也有一些“神器”難以取代的優勢。

    1. 我們對滲透、等保、合規等方面的測試項都可以根據需求自行設定,登錄機制驗證、弱口令猜解、用戶名枚舉、短信轟炸、未授權訪問漏洞、cookie配置等方面都可以進行模塊化測試。
    2. 自己實現的爬蟲,可以有效控制測試時的風險,大大降低系統管理后臺登錄后掃描測試的風險。
    3. 工具使用簡單方便,不論是不懂安全的研發,測試人員,還是后期的運維人員,都可以快速上手,在不增加測試工作量的基礎上,零成本,可視化的完成項目安全測試。
    4. 漏洞截圖、日志留存、報告輸出相對可知可控,能滿足安服團隊的日常需求。
    5. 測試時間較短,一套常規web系統在10-30分鐘左右,這樣測試人員可以節省精力去測試一些業務邏輯漏洞之類的就可以。

    當然到目前為止,我們還有很多亟待解決的問題。比如:web常規漏洞掃描、poc的持續維護、邏輯漏洞的檢測、安全設備繞過、誤報漏檢、驗證碼識別準確度問題、漏洞利用鏈構造等等,距離burp、goby或者xray還有很長很長的路要走。

    自動化滲透測試可能是未來發展的趨勢,但目前仍處于早期階段吧,很多問題都還沒法用人工智能的方式去實際解決。盡管暫時還無法完全替代滲透測試人員,但有很大一部分內容是完全可以取代人工并且比人工完成的更好更快的,所以才有了我們這個工具。

    也許等有一天人工智能足夠成熟,自動化工具能完全代替人工了,還需要你拿著Burpsuite和Nmap測系統么?

    軟件滲透測試
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    昨日,勒索軟件Conti遭遇毀滅性打擊,烏克蘭安全研究人員公布了其軟件源代碼和內部通訊內容。
    Conti是近年來最為活躍和危險的勒索軟件團伙之一。該組織采用勒索軟件即服務 (RaaS) 的運營模式,其中核心團隊管理惡意軟件和Tor站點,而招募的聯盟機構則執行網絡漏洞和數據加密攻擊。核心團隊賺取贖金的20~30%,而附屬公司賺取其余部分。
    請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與文章作者和本公眾號無關。之前我也分享過一篇"ToDesk軟件在權限提升中的應用",記錄的是在權限提升場景下的利用方式。更多這類第三方遠控軟件的利用方式可參考之前發的系列文章,有向日葵、AnyDesk、TeamViewer等。
    0x01 正文事出起因,是因為有人找我破解這個軟件,順勢就看了下,官網:http://www.ysjfp.com/竟然是有登錄框,那我就用抓包來分析下可以看到數據是直接連的115.28.19.219的3306端口,所以初步判斷數據包里一定夾雜著數據庫的賬號密碼經過分析,qdm163903329是數據庫連接的賬號,同時,數據包內并沒有數據庫連接密碼(推薦用wireshark分析)竟然有賬號卻沒有密碼
    對于專業的滲透測試人員,人們通常稱之為道德黑客、白帽黑客或紅隊隊員。滲透測試人員有時也背負罵名——因為花費時間采用大量勒索軟件攻擊很多企業。 滲透測試人員的工作是幫助企業加強網絡安全防護以確保業務安全。滲透測試人員充當了勒索軟件攻擊者,根據他們的經驗,企業應該提出以下五個問題:
    Headless Chrome是谷歌Chrome瀏覽器的無界面模式,通過命令行方式打開網頁并渲染,常用于自動化測試、網站爬蟲、網站截圖、XSS檢測等場景。
    在2017年,網絡攻擊者在一個金融軟件包中植入了NotPetya惡意蠕蟲。當很多企業更新他們的軟件時,就會被感染。NotPetya蠕蟲病毒因此迅速傳播,并為全球各地的企業帶來數十億美元的損失。美國政府稱其為“史上最具破壞性和代價最高的網絡攻擊”。 在三年后,網絡攻擊者侵入了SolarWinds公司的Orion網絡監控工具集的軟件升級過程。其帶來的破壞性也是十分廣泛的。
    針對軟件供應鏈的網絡攻擊,常常利用系統固有安全漏洞,或者預置的軟件后門開展攻擊活動,并通過軟件供應鏈形成的網鏈結構將攻擊效果向下游傳播給供應鏈中所有參與者。近年來,軟件供應鏈網絡攻擊事件頻發,影響越來越大。據 Accenture 公司調查,2016 年 60% 以上的網絡攻擊是供應鏈攻擊。裝備軟件供應鏈安全事關國家安全、軍隊安全,一旦出現安全風險將會給國家和軍隊帶來重大安全挑戰,產生的后果不堪設想。
    滲透測試的本質是信息收集,無論是web還是內網,信息收集的全面性都直接著影響到后續滲透工作。在進入內網后,需要判斷當前網絡環境和權限,為后續橫向移動等工作做好鋪墊,本篇文章主要針對windows系統下的信息收集。
    由青島藍灣信息科技有限公司主辦,四葉草安全科技(青島)有限公司承辦的2022年藍貝國際創新創業大賽的預熱活動——“數字技術+信息安全領域賽道”預熱賽“網絡攻防大賽”圓滿結束。No.2四葉草安全科技(青島)有限公司獨家承辦獨家承辦本次網絡攻防大賽由四葉草安全科技(青島)有限公司獨家承辦。四葉草安全科技(青島)以自身影響力從不同專業領域賽道吸引眾多參賽報名企業。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类