絕對(duì)不應(yīng)錯(cuò)過的五大開源安全工具
無論你要防止源代碼中的信息泄露,還是要尋找惡意文件、阻止惡意進(jìn)程、保證端點(diǎn)安全,這幾個(gè)好用的開源工具都能助你一臂之力。
開源是開發(fā)領(lǐng)域的一項(xiàng)壯舉。今天,很大一部分的企業(yè)或個(gè)人都依賴開源軟件。但即使開源軟件廣泛應(yīng)用于網(wǎng)絡(luò)、操作系統(tǒng)、和虛擬機(jī),企業(yè)安全平臺(tái)仍然傾向于專用軟件并受供應(yīng)商的私有開發(fā)工具的約束。幸運(yùn)的是,這種傳統(tǒng)正在改變。
如果你沒有試過用開源軟件滿足安全需求,意味著你錯(cuò)過了越來越多的免費(fèi)工具,它們完全可以保護(hù)你的網(wǎng)絡(luò)、主機(jī)和數(shù)據(jù)。而更加重要的是,這些工具中很多都來自活躍的項(xiàng)目,而且來源名頭不小、完全可信,最前沿的云安全公司和核心運(yùn)營(yíng)商都參與其中。很多工具已經(jīng)在可以設(shè)想的最大、最難的環(huán)境中測(cè)試過了。
開源始終是安全專家們的工具源泉(比如大名鼎鼎的開源滲透測(cè)試框架Metasploit)。然而,信息安全并不僅僅是研究人員、調(diào)查人員和分析師的專屬領(lǐng)域,下列五個(gè)開源的安全工具也不僅僅為這些人服務(wù)。IT管理員和軟件開發(fā)者同樣大有可為,這五個(gè)工具可以讓他們大展拳腳。
一、Commit Watcher:檢索代碼中的秘密信息
開源庫本身不應(yīng)該保有用戶的秘密,但粗心的開發(fā)者可能在代碼里誤留了機(jī)密信息。我們都讀過有關(guān)Amazon網(wǎng)絡(luò)服務(wù)密鑰、硬編碼的密碼或API標(biāo)識(shí)的泄露報(bào)告,起因往往就是開發(fā)者誤把這些機(jī)密上傳到了GitHub等代碼存儲(chǔ)庫。
為了解決這一問題,SourceClear開發(fā)了Commit Watcher,這個(gè)免費(fèi)的開源工具可以在公共和私人Git存儲(chǔ)庫離查找潛在危險(xiǎn)失誤。開發(fā)人員和管理員都可以使用Commit Watcher監(jiān)控自己的項(xiàng)目以防止憑證的意外泄露,或是監(jiān)控公共項(xiàng)目以分辨后者是否存有問題。例如,當(dāng)一個(gè)公共項(xiàng)目進(jìn)行“修復(fù)XSS攻擊”的更新時(shí),Commit Watcher將通知開發(fā)人員,從而獲取該更新依賴的新版本。
Commit Watcher會(huì)定期提交項(xiàng)目動(dòng)態(tài),并查找任何與項(xiàng)目規(guī)則所定義的關(guān)鍵字和短語匹配的內(nèi)容。規(guī)則為文件名、代碼、評(píng)論、作者的名字的正則表達(dá)式。Commit Watcher預(yù)存了幾十個(gè)配置規(guī)則,用以尋找AWS憑證、Salesforce憑據(jù)、SSH密鑰、API標(biāo)識(shí)和數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)文件。
二、Jak:在Git上加密
這是防止源代碼中信息泄露的“開發(fā)者必讀”。開發(fā)者應(yīng)該將密鑰保存在一個(gè)配置文件里,然后將配置文件添加到.gitignore以避免被列入代碼庫。支付環(huán)境、郵箱和虛擬機(jī)等環(huán)境的密鑰,你應(yīng)當(dāng)親手放置到應(yīng)用程序服務(wù)器里,保持和源代碼的獨(dú)立管理。當(dāng)密鑰需要共享時(shí),這可以避免問題。
然而,這就導(dǎo)致了一種?,F(xiàn)情形:團(tuán)隊(duì)的一名成員從代碼庫下載源代碼,并通過帶外途徑獲取密鑰,密鑰獲取方式往往是明文電子郵件、聊天消息、u盤、便利貼,雖然快捷但是很不安全。為了讓密鑰獲取變得既快捷又安全,是否有一種方法能將這些密鑰和源代碼一同存儲(chǔ)在數(shù)據(jù)庫中呢?
Python項(xiàng)目Jak專門解決這個(gè)問題,它可以幫助開發(fā)人員將敏感文件的加密版本提交到Git。與傳統(tǒng)的.gitignore解決法不同,開發(fā)者將敏感信息保存在jakfile里,提交的時(shí)候Jak可以確保只有加密版本會(huì)被上傳到庫中。Jak將盡職盡責(zé)進(jìn)行文件的加密和解密,并且自動(dòng)生成并更新加密密鑰。一切都是在指令行處理,因此開發(fā)人員不需要在提交前加密或下載后解密的時(shí)候切換界面。
Jak用于實(shí)際開發(fā)也許為時(shí)過早,但它是一個(gè)開發(fā)人員應(yīng)該熟悉的工具。安全新秀Dispel已經(jīng)內(nèi)部使用了該工具將其作為項(xiàng)目管家,這可能會(huì)減少開發(fā)者對(duì)Jak的潛在壽命的擔(dān)憂。
三、Yara:使用格式匹配來發(fā)現(xiàn)問題
Yara是VirusTotal的維克多·曼努埃爾·阿爾瓦雷斯領(lǐng)銜開發(fā)的開源項(xiàng)目,深受惡意軟件研究人員青睞。Yara可以識(shí)別和分類惡意文件樣本,“模式匹配百寶箱”比直接對(duì)惡意軟件分類強(qiáng)大得多。它也可以成為事件反應(yīng)和取證調(diào)查的一部分。你需要用文本字符串、十六進(jìn)制值數(shù)或通用描述創(chuàng)建規(guī)則,Yara則遍歷可疑的目錄和文件來尋找匹配的目標(biāo)。雖然掃描文件是最常見的用法,Yara還可以使用規(guī)則來檢查運(yùn)行的進(jìn)程。
通過Yara的文件分析,卡巴斯基實(shí)驗(yàn)室、AlienVault的研究人員能夠把索尼的入侵者和去年在亞洲發(fā)生的其他襲擊聯(lián)系起來。
常見的攻擊方式是:騙子用假文件替換系統(tǒng)文件,建立進(jìn)入機(jī)器的后門。檢測(cè)系統(tǒng)文件是否完整方法之一是看MD5和SHA-1哈希值。另一種方法是針對(duì)多個(gè)字符串或系統(tǒng)文件中的值通過建立Yara規(guī)則,并定期掃描這些文件。如果掃描不匹配,文件顯然已經(jīng)被替換了,是時(shí)候進(jìn)行調(diào)查了。如果攻擊者已經(jīng)將指令界面的副本上傳到未知位置,Yara可以找到這些副本。
除了預(yù)設(shè)規(guī)則和自定規(guī)則,Yara可以使用開源殺毒工具ClamAV的病毒庫和規(guī)則庫,可以從保持更新的社區(qū)YaraRules庫獲取規(guī)則。比如,YaraRules庫中包含有用來檢測(cè)已知包或反惡意進(jìn)程的預(yù)設(shè)規(guī)則。此外,你也可以將VirusTotal私有API連接到VirusTotal惡意軟件庫,從而可以掃描到已被上傳到VirusTotal惡意軟件庫中的文件。Yara不需要從指令行界面運(yùn)行;它有一個(gè)Python庫,從而可以集成到Python腳本上。
Yara能夠發(fā)現(xiàn)未許可的文件變更,也能檢測(cè)已記錄的格式(社保號(hào)碼、管理證書等)是否出現(xiàn)在未授權(quán)的地方(如即將送出的電子郵件的附件),因此,Yara可謂功能強(qiáng)大、前景廣闊?;谔卣鞔a的檢測(cè)方法仍然具有局限,所以你不能僅僅依靠Yara尋找惡意文件。但是考慮到它的靈活性,你絕對(duì)不該錯(cuò)過Yara。
四、ProcFilter:使用格式匹配來解決問題
Yara對(duì)于想要分析已感染文件的取證調(diào)查人員和事件反應(yīng)人員來說用途很大。然而,利用Yara積極抵御已知的威脅并不理想。GoDaddy的開源項(xiàng)目ProcFilter則專為解決Windows環(huán)境下的這一問題而生。ProcFilter允許您應(yīng)用Yara規(guī)則來運(yùn)行進(jìn)程,并基于匹配阻止、記錄可執(zhí)行文件,對(duì)受影響文件進(jìn)行隔離。
ProcFilter作為Windows服務(wù)運(yùn)行,并集成了微軟的Windows事件跟蹤機(jī)制(ETW)的API,所以它可以直接在Windows事件日志里記錄其活動(dòng)。集成也意味著ProcFilter可以用模塊創(chuàng)建規(guī)則、日志、或檢驗(yàn)值,并在匹配到目標(biāo)時(shí)采取相應(yīng)行動(dòng)。ProcFilter可以配置為每當(dāng)進(jìn)程創(chuàng)建、終止或每當(dāng)載入圖像時(shí),就掃描文件和內(nèi)存。
ProcFilter并非為了取代防毒方案而生,而是幫助你應(yīng)對(duì)特定的已知威脅。比如,網(wǎng)絡(luò)釣魚攻擊了一個(gè)同行時(shí),如果受襲團(tuán)隊(duì)分享了該攻擊的Yara標(biāo)志,別人就可以避免重蹈覆轍,你可以使用ProcFilter找到郵箱中含有匹配信息的郵件,并阻止這些消息傳播。而如果你想留意危險(xiǎn)Word、Excel、PPT或Adobe文件的話,ProcFilter也可以掃描和記錄這些程序產(chǎn)生的所有子流程。
五、OSquery:查詢系統(tǒng)狀態(tài)的端點(diǎn)
想象一下,定位惡意進(jìn)程、流氓插件或WindowsMacOS和Linux端的軟件漏洞,有沒有可能僅僅寫個(gè)SQL查詢指令就能實(shí)現(xiàn)。這就是OSquery的初衷,這個(gè)開源工具由Facebook工程師發(fā)明,它被用來將操作系統(tǒng)信息收集到關(guān)聯(lián)數(shù)據(jù)庫中,包括運(yùn)行中的進(jìn)程、已加載的內(nèi)核模塊、打開網(wǎng)絡(luò)連接、瀏覽器插件、硬件活動(dòng)、文件哈希表等,都在收集之列。而實(shí)現(xiàn)這些根本用不上復(fù)雜的代碼,一個(gè)SQL查詢指令,就是你獲取安全信息所需的全部操作。
例如,下列查詢指令會(huì)發(fā)現(xiàn)監(jiān)聽網(wǎng)絡(luò)端口的所有進(jìn)程:
- SELECT DISTINCT process.name, listening.port, listening.address, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;
這個(gè)查詢指令會(huì)發(fā)現(xiàn)在地址解析協(xié)議(ARP)緩存里的異常,從而保護(hù)IP地址信息和及已分確認(rèn)的以太網(wǎng)物理地址:
- SELECT address, mac, COUNT (mac)AS mac_count FROM arp_cache GROUP BY mac HAVING COUNT(mac)>1;
這比用Python實(shí)現(xiàn)簡(jiǎn)單多了。OSquery用簡(jiǎn)單而優(yōu)雅的方式解決了重要的問題(并榮獲我們頒布的年度技術(shù)大獎(jiǎng))。你需要的組件包括OSqueryi交互式界面、可以和PowerShell并行的內(nèi)部界面,以及負(fù)責(zé)低層級(jí)主機(jī)管理和制定查詢計(jì)劃的后臺(tái)程序OSqueryd。
IT管理員有很多拒絕使用開源的安全工具的原因。人們會(huì)擔(dān)心技術(shù)是否成熟、能否獲得配套的支持,然而,更關(guān)鍵的問題是信任。企業(yè)不愿依賴完全陌生的開發(fā)人員的成果來保護(hù)自己的財(cái)產(chǎn)。
本文所列的開源安全項(xiàng)目都由可靠的團(tuán)隊(duì)所研發(fā),完全值得你擁有。每個(gè)工具都解決了一個(gè)實(shí)際安全問題,而且過程和結(jié)果清潔綠色。僅需一個(gè)嘗試,你工作的方式和工作環(huán)境的安全將大不相同。
【本文是51CTO專欄作者“”李少鵬“”的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)通過安全牛(微信公眾號(hào)id:gooann-sectv)獲取授權(quán)】



























