不能不知道的五個開放源碼資安工具
文/Fahmida Y. Rashid 翻/柳百郁 2017/12/7 下午 05:26:04
開放源碼是好東西。時下非常多企業IT與私人技術都仰賴開放源碼軟體。但即便開放源碼廣泛用在網路、作業系統與虛擬化上,企業安全性平台還是偏好使用專利權與鎖定廠商的產品。幸好,這一切正在改變。
若你不曾尋求開放源碼幫你處理安全性需求,那也太丟臉了,你正錯失越來越多可以自由取用,保護你網路、主機與資料的工具程式。最棒的是:有許多這類工具程式是由你信任的知名來源所支援的活躍專案,像是領導性的資安公司與大型雲端營運商。並且,許多工具程式已經在能夠想到的最大與最具挑戰的環境下測試過了。
開放源碼一直是豐富的資安專業工具程式來源:開放源碼滲透測試框架Metasploit可能是最知名的,但資訊安全不只屬於研究員、調查員與分析員的領域,也並非以下調查的五個開放源碼工具程式所能涵蓋。IT管理人員與軟體開發人員是關鍵,有了這五套工具程式,他們會有所不同。
Commit Watcher:檢查程式碼軟體倉儲的機密資訊
機密資訊不應該存在於開放源碼軟體倉儲,但無法阻止粗心的開發人員將機密資訊存放在那裡。我們都見過因為人們將私有Amazon Web Services金鑰、寫死的密碼,或API token上傳至GibHub或其他程式碼軟體倉儲,無意間曝露機敏資訊的報告。
SourceClear為對付這類問題提供了Commit Watcher,這是一套免費的開放源碼工具程式,可以在公開與私有的Git軟體倉儲裡,尋找潛在危險的程式碼交付行為。開發人員與管理者,可以利用Commit Watcher監控自已的專案是否無意間洩露了憑證,還可以找出定期使用的公開專案是否有任何事件。舉例來說,當公開專案被更新是以『fixes XSS attack』這類字眼交付時,Commit Watcher就會通知處理的開發人員,下載新版的相依套件。
Commit Watcher定期調查是否有新交付的專案,並尋找是否有專案規則定義比對相符的任何關鍵字與措辭。規則內容為針對檔名、程式碼模式(code patterns)、註解與作者姓名的正規表示式。Commit Watcher具有可以尋找AWS憑證、Salesforce憑證、SSH金鑰、API token與資料庫傾印檔的大量預組態規則。
Jak:加密Git裡的機密資訊
開發人員都知道要將機密資訊與程式碼隔開。所以,應該把機密資料放在組態檔裡,再把這個組態檔加進.gitignore清單,避免被交付到程式碼軟體倉儲裡。連結到付款系統、郵件主機與虛擬主機這些必須手動直接放進應用程式伺服器的金鑰,都得以完全與原始程式碼隔離的方式處理。當這些金鑰必須共享時,就有困難了。
再普通不過的場景:團隊成員從程式碼軟體倉儲下載了原始程式碼,但透過機制以外的方式收到金鑰,可能是純文字電子郵件、聊天軟體訊息、USB隨身碟或便利貼這種快又鬆散的方式。是否有方式,可以保護軟體倉儲中與原始程式碼相關的內容讓它們輕鬆分享,但又加密以致於不被洩露?
Python專案Jak讓開發人員交付加密版本的機敏檔案到Git上,解決這類問題。不使用.gitignore,開發人員在jakfile裡列出機敏檔案,交付時,Jak確保檔案只有加密後的版本會進軟體倉儲。Jak必要時會執行加密與解密檔案,並自動產生並更新加密金鑰。一切都在命令列處理,因此開發人員無須於交付前加密檔案或下載檔案後解密時切換視窗。
對Jak而言,正式用在上線產品可能言之過早,但這確實是開發人員應該熟悉的一套工具程式。事實上,資安新創企業Dispel內部已經在使用這套工具程式,
Yara:使用模式比對(pattern-matching)找問題
惡意軟體研究人員偏好使用Yara分辯與歸類惡意檔案樣式,這套工具程式由VirusTotal的Víctor Manuel Álvarez主導。不過,這把「模式比對的萬用瑞士刀」能作的,遠遠超越純粹的惡意軟體歸類。這套工具在事件應變與鑑識調查方面也相當有用。你只要產生一套規則-由文字字串、十六進位值或正規表示式組成,Yara就會找遍所有可疑的目錄與檔案,尋找是否有任何比對相符的內容。雖然掃瞄檔案是最常見的用法,但Yara還能利用這套規則檢查執行中的程序。
Kaspersky Lab與AlienVault的研究人員使用Yara分析檔案,將侵害Sony隱私的攻擊者與去年亞洲的其他攻擊者連結了起來。
常見攻擊技巧是用假檔案置換系統檔,在主機裡建置後門程式。密切留意系統檔案是否完整的方式之一,就是查看MD5與SHA-1雜湊。另一個方式是針對多個字串與值,為檔案系統建立Yara規則,然後定期掃瞄這些檔案。若掃瞄未發現比對相符,你就知道檔案被改過了,這時應該著手進行調查。若攻擊者已上傳命令的shell複本到你不知道的位置,Yara可以找出這些複本。
除了預組態規則與自已所定的規則,Yara還可以利用開放源碼防毒工具程式CalmAV的病毒特徵碼檔案,以及由社群維護的YaraRules軟體倉儲的可用規則集。這個軟體倉儲已經為調查已知包裝程式或標記惡意程序預先定義了規則,舉例來說,它也可以串接VirusTotal私有API,建立觸發程式,在環境下掃瞄出比對相符的檔案時,就上傳到VirusTotal的惡意軟體資料庫裡。Yara無須從命令列介面執行,它有可以整合到Python腳本裡的Python函式庫。
因為能夠在不該出現的地方(例如發出郵件的附加檔案),指出檔案不應有的變更,或偵測出告警信號模式(社會安全編號、管理性憑證等等),Yara是一套用途無限的強大工具程式。然而事實上,Yara在以特徵碼為基礎的查找上是受限的,所以最好不要只仰賴Yara尋找惡意檔案。只是考量到它的彈性,也不該漏掉這樣的工具程式。
ProcFilter:用模式比對阻止問題
Yara對想在感染事件後分析檔案的鑑識調查員與事件應變人員而言非常有用。但如果想利用Yara主動防禦已知威脅就很難了。ProcFilter這套來自GoDaddy的開放源碼專案,能處理Windows環境下的這類挑戰。ProcFilter能夠套用Yara規則執行程序,還能依比對結果封鎖或記錄可執行檔(並隔離相關檔案)。
ProcFilter以Windows服務的方式執行,與Microsoft的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 Protocol (ARP)快取裡的異常,包括IP位址相關資訊與解析出來的Ethernet實體位址:
SELECT address, mac, COUNT (mac)AS mac_count FROM arp_cache GROUP BY mac HAVING COUNT(mac)>1;
這樣比使用Python撰寫程式碼簡單得多。OSquery使用直接又優雅的方式處理重要問題(榮獲Technology of the Year award年度獎賞)。組成元件包括OSqueryi-可於Powershell下使用的互動式shell,以及OSqueryd-執行低階主機監控並允許排程查詢的程序(daemon)。
IT管理人員不想使用開放源碼資安工具的理由很多,其中包括工具的成熟度與技術支援。最關鍵的其實是信任問題。企業組織不願仰賴不認識的開發人員所設計的產品,保護企業的寶貴資產。
這份清單裡的開放源碼安全性專案有可信賴的名聲支持,絕對值得你保持關注。這些工具程式,每個都能處理特定安全性問題且所佔空間有限。給個機會試試看不會有害。它們可能大大改變你的工作方式,並讓工作環境的安全性有所不同。