可隱藏在PHP模塊中的Rootkit,只有80行代碼「附PoC」

編程語言 PHP 網絡安全 Apache E安全 2017-06-22

E安全6月20日訊荷蘭Web開發人員盧克·帕里斯創建了一款Rootkit,其隱藏在PHP模塊中,能通過Apache模塊接管Web服務器。

可隱藏在PHP模塊中的Rootkit,只有80行代碼「附PoC」

什麼是Rootkit?

Rootkit是一種特殊的惡意軟件,它的功能是在安裝目標上隱藏自身及指定的文件、進程和網絡鏈接等信息,比較多見到的是Rootkit一般都和木馬、後門等其他惡意程序結合使用。一個典型Rootkit包括:

  • 以太網嗅探器程程序,用於獲得網絡上傳輸的用戶名和密碼等信息;

  • 特洛伊木馬程序,例如:inetd或者login,為攻擊者提供後門;

  • 隱藏攻擊者的目錄和進程的程序,例如:ps、netstat、rshd和ls等;

  • 可能還包括一些日誌清理工具,例如:zap、zap2或者z2,攻擊者使用這些清理工具刪除wtmp、utmp和lastlog等日誌文件中有關自己行蹤的條目;

  • 一些複雜的rootkit還可以向攻擊者提供telnet、shell和finger等服務;

  • 還包括一些用來清理/var/log和/var/adm目錄中其它文件的一些腳本。

從傳統定義來看,Rootkit可以通過操作系統最底層運行的一段代碼,攔截內核操作,並注入惡意活動。許多Rootkit在操作系統內核附近運行,其要求攻擊者具有較高的水準,以便在不破壞受害者電腦的情況下使其運作。

帕里斯根據高級C和C++編程技能,設法創建了與PHP解釋器(Interpreter)交互的Rootkit,而非操作系統內核。

帕里斯解釋稱,學習如何使用Zend引擎(構建整個PHP語言的框架)比學習如何編寫內核模塊簡單得多。原因是代碼庫本身較小,且經過較好的文檔化處理,複雜程度較低,即使不具備良好的文檔或教程引導,帕里斯仍設法在一天時間內學習了編寫PHP模塊的基礎知識。

帕里斯擔心的是,既然他能做到,惡意攻擊者絕對也能做到。

PHP Rootkit具有眾多優點

帕里斯表示,使用PHP模塊隱藏Rootkit其實是一個極其取巧的想法,其優點如下:

  • 由於編程蹩腳,PHP Rootkit不會破壞操作系統,只會導致分段錯誤,從而中斷當前服務器請求,在不被發現的情況下長期進行感染。

  • 很少有開發人員會檢查PHP模塊的哈希值,這意味著要誘騙開發人員下載被感染的PHP模塊,或替換被入侵服務器上的PHP模塊容易得多。

  • PHP Rootkit只需深入到系統進程中,而內核Rootkit必須深入至每個內部調用中,以削弱機器性能。

  • PHP Rootkit是跨平臺的Rootkit,因為PHP是跨平臺項目,PHP模塊能在不同平臺進行交叉編譯。

可在GitHub獲取PoC代碼

帕里斯創建了PHP Rootkit PoC,並在GitHub開放了源代碼。他創建的測試版Rootkit深入到PHP服務器的“哈希”和“Sha1”函數之中。整個Rootkit有80行代碼,攻擊者可能輕易將其隱藏在合法模塊中。

可隱藏在PHP模塊中的Rootkit,只有80行代碼「附PoC」

為了防止攻擊者輕易將該代碼武器化,帕里斯打亂了其中某些部分,從而使得缺乏PHP模塊專業知識的人很難編譯。

儘管如此,帕里斯的測試版PHP Rootkit表明,服務器管理員需考慮可能的攻擊媒介。為了防止此類攻擊,帕里斯向服務器所有者提供了一系列建議,例如:檢測模塊是否為惡意模塊,其最簡單的方式是在安裝PHP之後保留模塊哈希列表。一旦保留了哈希值列表,可以添加一個定時任務(Cron Job),試圖將擴展目錄的所有文件哈希,並與當前的哈希進行對比。

為了減輕工作量,帕里斯甚至發佈了Phthon腳本,用以檢查用戶PHP模塊的SHA1哈希值。

通過掃描Apache模塊文件哈希值緩解攻擊

Paragon Initiative Enterprise公司的首席開發官斯科特·阿奇恰斯基表示,這是一個有趣的研究項目。

阿奇恰斯稱,他之前在被感染系統中看到過基於.htaccess的惡意軟件,可能是PHP模塊或Apache模塊。阿奇恰斯提出的攻擊緩解措施是,用SHA256哈希值替代SHA1。

可隱藏在PHP模塊中的Rootkit,只有80行代碼「附PoC」

今年早些時候,Google研究人員破解了SHA1哈希函數,使用相同的SHA1哈希創建了兩個文件,從而允許攻擊者添加PHP Rootkit,之後通過相同的哈希創建Apache模塊(至少從理論上講是這樣,目前尚未這樣實施過)。此後,阿奇恰斯提出了此建議。

PHP Rootkit為攻擊者提供持久性

在遭遇攻擊的服務器上,大多數事件響應者不會考慮尋找PHP模塊內部的惡意代碼,畢竟這不是隱藏惡意軟件的常見位置,惡意軟件通常存在於存儲在公共網站、.htaccess文件或Web服務器目錄中其它文件的源代碼中。

帕里斯的PHP Rootkit是許多攻擊者一直尋求的持久性工具,允許其在不被檢測的情況下隱藏在最底層。

由於持久性增強,阿奇恰斯建議,當懷疑服務器被惡意軟件感染時,應採取強有力的措施,因為大多數服務器管理員對即將來臨的新攻擊媒介不甚瞭解。

如果試圖清理被感染的系統,當取證調查結束後,阿奇恰斯通常會建議構建乾淨的新環境,並將數據從受信任的備份中遷移出來。

帕里斯並非首個提出在Apache模塊中隱藏惡意代碼的人。2015年,倫敦開發人員克里斯汀·帕帕坦納蘇就創建了隱藏在Apache模塊中的類似Rootkit。

GitHub PoC獲取地址:

http://t.cn/RoyD36F

開發人員發佈的Phthon腳本地址:

http://t.cn/Royk7sm

E安全注:本文系E安全獨家編譯報道,轉載請聯繫授權,並保留出處與鏈接,不得刪減內容

@E安全,最專業的前沿網絡安全媒體和產業服務平臺,每日提供優質全球網絡安全資訊與深度思考。

相關推薦

推薦中...