文討論了Linux環境下攻擊者入侵成功以後常常使用的一些後門技術,並且對最著名的rootkit工具之一?knark進行了詳細的分析,並且指出了在發現系統被入侵以後如何發現是否是kark及如何恢復。
什麼是"rootkit"?
入侵者入侵後往往會進行清理腳印和留後門等工作,最常使用的後門創建工具就是rootkit。不要被名字所迷惑,這個所謂的“rootkit”可不是給超級用戶root用的,它是入侵者在入侵了一太主機後,用來做創建後門並加以偽裝用的程序包。這個程序包裡通常包括了日志清理器,後門等程序。同時,程序包裡通常還帶有一些偽造的ps、ls、who、w、netstat等原本屬於系統本身的程序,這樣的話,程序員在試圖通過這些命令查詢系統狀況的時候,就無法通過這些假的系統程序發覺入侵者的行蹤。
在一些黑客組織中,rootkit (或者backdoor) 是一個非常感興趣的話題。各種不同的rootkit被開發並發布在internet上。在這些rootkit之中, LKM尤其被人關注, 因為它是利用現代操作系統的模塊技術。作為內核的一部分運行,這種rootkit將會越來越比傳統技術更加強大更加不易被發覺。一旦被安裝運行到目標機器上, 系統就會完全被控制在hacker手中了。甚至系統管理員根本找不到安全隱患的痕跡, 因為他們不能再信任它們的操作系統了。後門程序的目的就是甚至系統管理員企圖彌補系統漏洞的時候也可以給hacker系統的訪問權限。
入侵者通過:設置uid程序, 系統木馬程序, cron後門等方法來實現入侵者以後從非特權用戶使用root權限。
*設置uid程序。 黑客在一些文件系統理放一些設置uid腳本程序。無論何時它們只要執行這個程序它們就會成為root。
*系統木馬程序。黑客替換一些系統程序,如"login"程序。因此, 只要滿足一定的條件,那些程序就會給黑客最高權限。
*Cron後門。黑客在cron增加或修改一些任務,在某個特定的時間程序運行,他們就可以獲得最高權限。
具體可能通過以下方法給予遠程用戶以最高訪問權限: ".rhost" 文件, ssh認證密鑰, bind shell, 木馬服務程序。
*".rhosts" 文件。一旦 "+ +"被加入某個用戶的.rhosts文件裡, 任何人在任何地方都可以用這個賬號來登陸進來而不需要密碼。
*ssh認證密鑰。黑客把他自己的公共密鑰放到目標機器的ssh配置文件"authorized_keys"裡, 他可以用該賬號來訪問機器而不需要密碼。
*Bind shell。黑客綁定一個shell到一個特定的tcp端口。任何人telnet這個端口都可以獲得交互的shell。更多精巧的這種方式的後門可以基於udp,或者未連接的tcp, 甚至icmp協議。
*Trojaned服務程序。任何打開的服務都可以成為木馬來為遠程用戶提供訪問權限。例如, 利用inetd服務在一個特定的端口來創建一個bind shell,或者通過ssh守護進程提供訪問途徑。
在入侵者植入和運行後門程序之後, 他會設法隱藏自己存在的證據,這主要涉及到兩個方面問題: 如何來隱藏他的文件且如何來隱藏他的進程。
為了隱藏文件, 入侵者需要做如下事情: 替換一些系統常用命令如"ls", "du", "fsck"。在底層方面, 他們通過把硬盤裡的一些區域標記為壞塊並把它的文件放在那裡。或者如果他足夠瘋狂,他會把一些文件放入引導塊裡。
為了隱藏進程, 他可以替換 "ps"程序, 或者通過修改argv[]來使程序看起來象一個合法的服務程序。有趣的是把一個程序改成中斷驅動的話,它就不會出現在進程表裡了。
RootKit-Knark的歷史
Knark是第二代的新型rootkit工具-其基於LJM(loadable kernel module)技術,使用這種技術可以有效地隱藏系統的信息。作者在代碼和README文件中都標注有不承擔責任的聲明,聲明該代碼不可以被用作非法活動。然而該軟件可以容易地被用於這種目的。
Knark是由[email protected]編寫的,主要基於http://www.dataguard.no/bugtraq/1997_4/0059.html中Runar Jensen編寫的代碼heroin.c,設計思想主要來自於Phrack 52中plaguez發表的文章Weakening the Linux Kernel"。在重新編寫了heroin.c的大部分代碼以後,Creed決定重新命名為"Knark",在瑞典語中是指吸毒者。Creed編寫的其他軟件可以在www.sekure.net/~happy-h/得到,但是由於該站點只有瑞典語版本,因此應用並不廣泛。
Knark的第一個公開版本是0.41,發布於June, 1999。可以在B4B0 #9中索引到它:http://packetstorm.securify.com/mag/b4b0/b4b0-09.txt。隨後0.50和0.59被發布,當前版本是0.59。可以從這裡下載0.59版。
Knark特性
Knark0.59具有以下特性:
*隱藏或顯示文件或目錄
*隱藏TCP或UDP連接
*程序執行重定向
*非授權地用戶權限增加("rootme")
*改變一個運行進程的UID/GID的工具
*非授權地、特權程序遠程執行守護進程
*Kill –31來隱藏運行的進程
聯合使用程序執行重新定向和文件隱藏,入侵者能提供各種後門程序執行。由於執行重定向是在內核級別進行的,因此文件檢測工具不會發現程序文件被修改-原始的執行程序並沒有被修改,因此配置檢測工具在路徑環境中也不會發現任何異常。
如果Knark結合另外一個用來隱藏系統當前加載的模塊的LKM工具modhide,就可能實現甚至通過lsmod命令也不能發現knark的存在