兩個linux核心rootkit–導語
曾經說過,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
相關文章
- Linux系統下的HDD Rootkit分析Linux
- linux安裝查殺工具Rootkit HunterLinux
- Linux核心發現兩個沒有被修復的DoS漏洞Linux
- linux cron三言兩語Linux
- Linux核心筆記003 - Linux核心程式碼裡面的C語言和組合語言Linux筆記C語言組合語言
- java兩個控制語句(轉)Java
- ESET曝光Lojax:首個被利用的UEFI rootkit案例
- Linux核心加入了Rust語言支援LinuxRust
- Linux核心C語言將升級LinuxC語言
- Go語言核心36講(導讀)--學習筆記Go筆記
- Diamorphine rootkit的使用
- UEFI BIOS Rootkit AnalysisiOS
- 微軟承認簽名通過惡意Netfilter rootkit核心驅動程式微軟Filter
- 微軟承認簽名透過惡意Netfilter rootkit核心驅動程式微軟Filter
- Linux 修改核心啟動預設引導順序Linux
- 大學英語 林業國際公約導讀 核心詞彙
- Linux下配置兩個jboss 5.1Linux
- Linux下基於記憶體分析的Rootkit檢測方法Linux記憶體
- 記兩個未初始化而導致的坑
- 兩個看似奇怪的MySQL語句問題MySql
- 為GHOST遠控新增ROOTKIT功能
- Linux核心之 核心同步Linux
- 業務出海,企業該如何解決這兩個核心問題?
- 兩個Linux螢幕錄影軟體Linux
- Linux中文亂碼,安裝兩個包Linux
- Linux給檔案隔兩個字元插入-Linux字元
- 認識linux核心(linux核心的作用)Linux
- 【c語言】求兩個數中不同的位的個數C語言
- C語言(C++語言)中##(兩個井號)和#(一個井號)用法[轉]C語言C++
- 雲伺服器修改Linux系統核心的引導順序伺服器Linux
- GNU/Linux程式崩潰分析框架漏洞導致核心提權風險Linux框架
- Mind elixir 一個免費開源的思維導圖核心
- c語言 - 交換兩個變數(不建立臨時變數)兩種方法C語言變數
- 一起鑽進 Linux 核心看個究竟Linux
- 成為Linux核心高手的四個方法Linux
- Linux核心是如何建立一個新程式的?Linux
- Linux核心建立一個程式的過程分析Linux
- Windows Vista下的Rootkit***薦Windows