基礎信息蒐集包括ip,域名,端口,框架,組件信息。Ip、域名甲方可經過運維同事獲取,其餘獲取方式仁者見仁智者見智。端口,須要咱們根據獲取的域名、ip進行端口掃描,這裏推薦masscan、nmap,寫調度腳本入庫處理,記錄並對比是一個持久的工做,並對端口作服務探測,有時會有不同的收穫。框架、組件信息,也許不少架構師、程序員都沒法理清,這就須要咱們去主動蒐集。比較直接的辦法是收集php.ini、pom.xml,收集相關的組件信息查看組件是否存在漏洞,好比imagemagick、fastjson等等。javascript
敏感目錄、文件的收集,防止目錄出現非項目文件,好比sql、rar、test等。曾經遇到一個test頁面,直接甩出admin表全部數據。建議根據自家公司的特色,完善字典,能夠借用姐姐的神器(BBScan),按期監控,會有收穫。此外,還有搜索引擎大法,對大型公司有奇效,由於大型公司迭代會有下架不及時、歷史老頁面無人維護的現象,存在漏洞可能性會更高。經過特定語法,可讓你眼前一亮,經過爬取入庫,可掌握對外暴露信息,提早發現問題,走在hacker前面。php
Github監控,如今市面上有許多github監控腳本,各有各的長處,我的以爲要知其然知其因此然,堅持親自動手。由於在探索的過程當中,能夠了解到更多的姿式點。好比防爬策略、繞過方法等。Github監控已經成爲各大公司必備神器,由於不少人提交github信息泄露類都會被反饋,「內部已知曉,感謝反饋」的提示。但仍是會有漏網的,這就須要優化本身的策略,讓爬取更精準,更全面。好比精準查找、ua變化、失敗重試策略等等,盡最大的努力把偏差降到最小。同樣的功能,你能作到更好,就能在賽跑中勝出!前端
威脅情報,如今有不少羊毛論壇、QQ羣。好比以前出現過外賣紅包機器人自動搶最大紅包、某咖啡被薅千萬等等,不少人會把薅羊毛的方法發送到論壇或羊毛羣裏。若是業務方能提早發現風險,並作及時響應,可及時止損,減少損失,好比某住以前的用戶信息泄露。上個直觀的歷史圖舉個例子:java
網盤方便存儲、分享資料。個別員工把工做相關內容如員工資料、公司資料傳上網盤,這就帶來了信息泄露的風險。網盤監控自動化實現會遇到各類問題,歷史的能夠經過各個網盤分享站爬取,好比pansoso,panduoduo。但很難作到實時,目前沒有相關接口可查,更多的在於教育宣導、限制。git
漏洞掃描,是每一個企業必需的部分。我將掃描任務分爲四類:主動掃描、被動掃描(代理掃描)、插件掃描、端口掃描。程序員
主動掃描,能夠自主開發掃描器加以商用掃描器輔助的形勢。能夠編寫動態爬蟲,抓取url去重後放入掃描隊列,但目前不多有爬蟲能作到全覆蓋。藉助市面優秀的掃描器好比awvs、appscan、arachni等,能夠根據我的喜愛,嵌入主動掃描。這裏我主要介紹下awvs,老版本有命令行接口,能夠調度爬蟲、掃描,能夠定製xml文件配置不一樣的掃描策略,掃描結果相對比較全面。咱們能夠經過對比掃描,優化自主開發的工具。曾在14年寫了一個調度腳本,多線程調用掃描器,並把結果讀取入庫統計,在一我的的安所有能夠極大的簡化工做。當年稚嫩的調度架構以下:github
我的以爲掃描器的核心是爬蟲,爬蟲像一個嚮導,在一個好的嚮導的指引下,能夠少走不少彎路,更快到達目的地!因此,要作好掃描器,首先要寫好一個好的爬蟲。目前有不少動態爬蟲組件,好比phantomjs(封存歸檔暫停開發)、Chrome Headless等等。這裏用phantomjs實現了一版。分爲調度、執行、探測模塊。redis
執行模塊負責:算法
1.javascript動態解析,觸發click等操做;
2.hook全部的網絡請求;
3.靜態頁面連接分析,如href、frame等等;
4.自動分析表單幷提交。
執行模塊獲取數據後反饋給調度,調度根據去重算法、爬蟲深度判斷是否繼續發送到執行模塊。探測模塊其實就是用字典去探測是否存在特定目錄、文件,執行結束後發送給調度深刻挖掘。測試了爬取http://demo.aisec.cn/demo/,結果只能說還算能夠,還有很大的改進空間。
曾經遇到過這樣的狀況,天天大量檢測任務,純手工又慢又累,並且容易遺漏。像XSS,xxe等常規漏洞,能夠把檢測方法腳本化,是知識的積累的積累過程。把重複的工做作簡單,把簡單的事情作好是必須具有的能力。作測試的同窗可能有比較深入感觸。所以,被動掃描是剛需。設計原理大同小異,選用mitmproxy做爲代理,截取流量,去重後發送到後端任務隊列。分享下掃描器設計思路,但願能給須要的朋友帶來靈感。掃描器採用純python實現,前端flask展示、mitmproxy代理、redis消息隊列、celery任務隊列、mongodb存儲。大體架構以下:
Web界面:
Celery隊列調用特定的檢測函數(xxe、端口掃描等等),實現檢測。此處有一個tips,在使用流量時,有部分字段是不能帶入掃描的,不然檢測可能失效,好比content-length。此處只舉一個例子,檢測方法仁者見仁智者見智。但無論主動、被動、端口、插件掃描調度方法是同樣的。
具體實現如上圖,SQL注入調用了sqlmapapi,其餘檢測都是根據特定漏洞定製。好比平行越權,首先根據基準頁面的反饋,查找相關的敏感字段(手機號、訂單號、身份證號等等),而後根據id左右偏移,看返回。越權類很難作到通用,但能夠發現70%以上的問題。曾經見到過比較雞賊的訂單號,訂單號爲訂單號1001111202+用戶id後2位,組合訂單號即爲100111120288。顯然這種訂單號遍歷難度就比較大。
0day的泛濫,特定漏洞檢測已經成爲常規需求,快速定位發現問題,插件掃描應運而生。世面上有很多優秀的插件,如bugscan、xunfeng,目前收集的插件大概2k個左右。曾經有個哥們讓我幫忙把插件改爲符合他的調用模式,其實摸清插件的運行規則,返回數據套路,寫一個集成調用函數,完美運行!
端口掃描的目的是爲了防止端口異常開放。如22,3306,6379異常開放,可能致使破解、未受權等風險。按期的掃描,可讓業務方及時發現問題,規避風險。
漏洞多數是由於疏忽、無知致使,安全教育和培訓是必不可少的。持久的知識輸出,能夠增強員工的安全意識,減小人爲因素致使的安全問題。賞罰公告、知識分享、小課堂、漏洞預警,讓員工意識到安全和本身並不遙遠。