絕對不能錯過!五款卓越的開源安全工具
譯文【51CTO.com快譯】開源是一種奇跡般的產物,如今企業IT乃至個人技術中的眾多重要組成部分皆立足于開源軟件。然而,盡管開源方案已經在網絡、操作系統與虛擬化領域中得到廣泛應用,但大多數企業安全平臺仍然傾向于使用專有型、供應商鎖定產品。好消息是,這一切正逐步發生改變。
如果大家還沒有考慮過利用開源方案協助解決安全需求,那這絕對是一大憾事——您已經在無形中錯過了眾多能夠有效保護您網絡、主機與數據的可行工具。事實上,相當一部分開源安全工具來自值得依賴的知名項目,包括眾多領先云服務運營商及安全廠商。其中不少甚至被用于規模最大且最具挑戰的測試環境當中。
開源社區一直在為安全專業人士提供極為豐富的解決方案資源,其中最為知名的當數Metasploit這款開源滲透測試框架。然而對于研究人員、調查人員乃至分析師,開源社區亦給出了其它有針對性且效果拔群的成果。在今天的文章中,我們將分享五款不容錯過的卓越開源安全工具,希望能夠幫助各位IT管理員與軟件開發者找到新的安全保障實現途徑。
Commit Watcher:檢查代碼庫中的秘密
開源代碼庫中不應存在秘密,但仍有不少不情愿的開發者喜歡搞這種小伎倆。事實上,此前就曾經出現過將代碼庫上傳至GitHub,而導致私有AWS密鑰、硬編碼密碼或API令牌等秘密遭到泄露的情況。
為解決這一難題,我們可以利用Commit Watcher這款開源工具查找公共與私有Git庫中的潛在敏感信息。開發者與管理員皆可利用Commit Watcher監控自己的項目,以便確保其中不存在任何不應進行提交的秘密憑證。例如,當某一公共項目收到一條“fixes XSS attack(修復XSS攻擊)”的提交更新時,Commit Watcher會向開發者通報具體提交者身份并捕捉一份新的依賴性版本。
Commit Watcher能夠定期輪詢項目以查找新提交內容,同時搜索與項目規則中定義的任何關鍵字與短語相匹配的內容。具體規則包括文件名、代碼模式、注釋與作者名等正則表達。Commit Watcher擁有數十項預配置規則,可用于查找AWS憑證、Salesforce憑證、SSH密鑰、API密鑰以及數據庫轉儲文件等。
Jak:對Git中的秘密進行加密
我們當然不應在代碼中納入秘密憑證。相反,大家應將其保留在配置文件中,而后再將該config文件添加至.gitignore列表以避免其受到提交內容的影響。支付系統、郵件系統以及虛擬機等應當以手動方式直接部署在應用服務器上,而與之關聯的密鑰則必須同這些源代碼以完全隔離的方式管理。而這就帶來了新的挑戰——我們該如何處理共享密鑰。
下面來看一種常見場景:團隊中的一名成員從代碼庫下載源代碼,并通過帶外方法收取密鑰——具體方法可能是快速但管理水平較低的純文本郵件、聊天消息、U盤或者手寫便箋。那么,我們能否找到一種方案將這些秘密與源代碼保存在存儲庫內,從而在輕松共享的同時通過加密避免其暴露?
Python項目Jak就能夠很好地解決這個問題。其允許開發者向Git內提交經過加密的敏感文件版本。相較于傳統的.gitignore,開發者能夠在jakfile中列出敏感文件,而Jak則在提交時確保僅將該文件的加密版本上傳至存儲庫。Jak負責處理必要的加密與解密流程,且可自動生成并更新加密密鑰。一切皆在命令行中實現,因此開發者無需在提交前切換窗口以完成文件加密或者在下載前進行文件解密。
雖然現在直接將Jak引入生產環境還為時過早,但確實有越來越多的開發者開始使用這款工具。事實上,安全初創企業Dispel公司就在加以使用。
Yara:利用模式匹配機制找出問題
惡意軟件研究人員熱衷于使用Yara,這是一款用于發現并分類惡意文件樣本的開源工具。除此之外,其亦可實現多種事件響應與取證調查功能。用戶可創建規則——規則由文本字符串、十六進制值或正則表達式組成——從而利用Yara對可疑目錄及文件進行查找與匹配。另外,Yara也可用于掃描運行中的各進程。
通過利用Yara進行文件分析,卡巴斯基實驗室與AlienVault的研究人員們得以成功將索尼入侵案與其它一些攻擊活動關聯起來。
目前的一類常見攻擊手段在于替換系統文件以在設備中建立后門。監控系統文件的方法之一是查看其MD5與SHA-1哈希值,另一種方法則是為系統文件中的多個字符串或值設置Yara規則并進行定期掃描。如果未能掃描到匹配項,則意味著文件已遭修改。另外,如果攻擊者已經將命令shell的副本上傳至未知位置,Yara也能夠順利找到這些副本。
除了預配置與自定義規則外,Yara還可利用開源反病毒工具ClamAV中的病毒簽名文件以及YaraRules庫中的規則集。這套庫包含大量用于檢測已知標記惡意進程的預定義規則。其亦可利用VIrusTotal私有API以設置觸發條件,從而將環境掃描中發現的匹配文件上傳至VirusTotal的惡意軟件數據庫。Yara本身并非必須運行在命令行界面中; 其擁有一套Python庫以將其集成于Python腳本內。
Yara還能夠在許可外位置(例如出站郵件附件)內檢測文件變更或者惡意模式(包括社保號、管理憑證等)。由于基于簽名的檢測機制功能有限,所以單純依靠Yara查找惡意文件可能并不可行。但考慮到其出色的靈活性,我們仍然可以利用其實現多種重要的安全保護工作。
ProcFilter: 利用模式匹配阻止問題
Yara是一款極為出色的取證調查工具與事件響應工具,可供用戶在感染狀況出現后進行文件分析。然而,單純利用Yara尚不足以主動預防各類已知威脅。在這種情況下,大家可以利用由GoDaddy開發的開源項目ProcFilter,其能夠在Windows環境下有效解決此類挑戰。ProcFilter允許大家利用Yara規則檢測運行中的各進程,同時基于匹配情況阻斷或者記錄可執行文件(并隔離關聯文件)。
ProcFilter可作為Windows服務運行并通過微軟Event Tracing for Windows(簡稱ETW)API實現集成,因此其可直接將活動記錄在Windows Event Log當中。這一集成能力亦意味著ProcFilter能夠利用塊、日志或者隔離值進行規則創建,并在符合匹配條件時執行相應操作。ProcFilter亦可通過配置在進程創建或中止時掃描文件與內存,或者在加載可執行鏡像時觸發。
ProcFilter的設計目標并非取代我們的現有反惡意軟件解決方案,但其能夠切實幫助大家清除特定已知威脅,例如針對其它同級組織的釣魚攻擊。如果其中的團隊共享了攻擊活動的Yara簽名以幫助其他組織避免遭遇同樣的問題,大家則可利用ProcFilter在收到的郵件消息及承載這些消息的數據塊內查找匹配結果。或者,如果大家希望找到誘導性Word、Excel、PowerPoint及Adobe文件,ProcFilter亦可查找并記錄這些應用程序所產生的全部子進程。
OSquery:對端點的系統狀態加以查詢
大家可以設想一下,如果您的Windows、MacOS以及Linux端點內存在惡意進程、流氓插件或者軟件安全漏洞,那么我們該如何通過簡單編寫一條SQL查詢對這些問題進行定位?事實上,這正是OSquery的長項所在。這款由Facebook公司工程師們開發的開源工具能夠收集多種操作系統信息,具體包括運行進程數量、已加載內核模塊、開放網絡連接數、瀏覽器插件、硬件事件以及關系型數據庫內的文件散列等等。如果大家能夠編寫SQL查詢,即可借此輕松為安全問題找到答案——而無需任何更為復雜的編碼操作。
舉例來說,以下查詢即可監聽各網絡端口上的全部進程:
SELECT DISTINCT process.name, listening.port, listening.address, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;
以下查詢則可找到地址解析協議(Address Resolution Protocl,簡稱ARP)緩存內的異常狀況,其中包含有與IP地址及其解析后得出的以太網物理地址信息:
SELECT address, mac, COUNT (mac)ASmac_count FROM arp_cache GROUP BY mac HAVING COUNT(mac)>1;
這種作法顯然較直接在Python環境下進行編碼要簡單得多。QSquery能夠以極為直觀且優雅的方式解決這一重要難題,還因此獲得了InfoWorld網站評出的年度技術大獎。此工具中的組件包括QSqueryi(一套交互式shell,可與PowerShell配合使用)以及QSqueryd(一款守護程序,負責執行底層主機監控并允許用戶進行查詢計劃設計)。
誠然,出于對成熟度及技術支持等問題的考量,很多IT管理員在企業環境中無法使用開源安全工具。但必須承認,阻止大家選擇開源方案的核心因素在于信任缺失。企業可能不希望讓開發者們利用那些其毫不了解的解決方案保護自己皇冠上的寶貴明珠。
今天文章中介紹的各款開源安全項目則皆來自知名且值得信賴的業界大廠,因此其絕對值得大家進行嘗試并加以實際部署。其中每一款工具都能夠幫助您解決實際面臨的特定安全問題,且所需投入亦相當有限,因此進行嘗試絕對對您有利無害。相信我,它們一定能夠為您的環境安全性保障及相關工作方式帶來巨大而積極的助益。
原文標題:5 open source security tools too good to ignore,作者:Fahmida Y. Rashid
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】