兩個linux核心rootkit–導語

科技小能手發表於2017-11-12

曾經說過,linux由於其內秉的檔案刪除機制導致一旦發現有惡意程式碼很容易被清除掉,即使發現核心本身被感染也是很容易被清除掉,但是這並不能表示linux就是絕對安全的,這僅僅說明linux的補救措施很有效,因此如果想黑掉linux系統,那麼首要的不是想如何讓使用者刪不掉惡意程式,而是儘可能嚴謹的隱藏惡意程式,隱藏的含義有必要澄清一下。

考慮一下使用者或者管理員通過什麼來探知系統的行為,無非就是一些當前的系統快照以及以往的記錄,快照我們可以舉出很多例子,比如程式,埠,檔案,使用者等等,而記錄則可以被理解為日誌資訊,除了快照和記錄之外,還有一些軟性的因素可以幫助使用者或者管理員探知系統,這就是效能檢測,如果無緣無故發現效能變差了但是又沒有檢查出額外程式或者埠,那麼很可能系統被攻擊了,因此只要我們將惡意程式相關的程式,埠,檔案以及檔案內容都隱藏,將與惡意程式有關的日誌資訊都遮蔽掉,並且惡意程式執行期間不會太影響效能,那麼攻擊就算成功了,而且很有效。雖然這樣的攻擊的確很酷,但是這並不能說linux系統本身有漏洞或者說linux本身不安全,linux系統的安全責任在兩方面,一個是系統,另一個是使用系統的人,從系統攻擊linux幾乎是很難成功的,需要複雜的漏洞掃描過程,那麼在黑掉系統之前必須先黑掉使用系統的人,只要有了root許可權在linux中是什麼都可以做的,我在前面的文章中也提到過,不要覺得寫一個核心木馬就很酷,那僅僅說明你有c語言基本的變成知識並且你擁有該系統的root許可權,如果你能以一個普通使用者的身份通過漏洞進入核心,那麼你才是高手。

黑掉使用系統的人不是技術範疇的事,因此不討論,現在假設已經獲得了root許可權,我們考慮一下具體要做哪些工作,首先最基本的,要隱藏程式而相關的檔案,載入入核心的模組以及使用的埠,其次要遮蔽日誌資訊,具體來說就是攔截syslogd的行為,只要是惡意程式寫的日誌,那麼過濾掉,utmp和wtmp也是需要關注的,因為who命令通過讀取上述檔案就可以知道登入記錄,如果惡意程式涉及登入的話,那麼遮蔽掉,幸運的是日誌行為最後都落實為寫檔案,在linux中均由檔案系統來負責,參照rootkit隱藏檔案的方式,我們只需要攔截檔案系統的系統呼叫就可以了。說到這裡,攔截方式有兩種,一種是直接攔截系統呼叫本身,另一種是攔截檔案系統的回撥函式,也就是file_operations中的函式,前者很容易被發現而後者卻很隱蔽,畢竟前者屬於機制性的東西,一般比較固定,反黑軟體一般都可以查的出來,而後者屬於具體檔案系統的策略,不是那麼固定,因此反黑軟體很難入手,兩種方式也代表了兩種風格,難易程度相當,不過我還是覺得攔截檔案系統回撥函式來得更容易些。好了,接下來的兩篇文章將闡釋兩個著名又很簡單的rootkit。

本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1273348


相關文章