Blueimp 論壇首頁
  首頁  | 討論區  | 最新話題  | 搜尋  | XML  |  登入

此話題中所有文章數: 1 [ 話題狀態: 一般 ]
上一話題 此文章已經觀看 5192 次 而且有 0 篇回應 下一話題
會員大頭照
男寶寶 jieh 《騎士團團長》
文章: 6857
v3.8.8

何謂 Rootkits?

http://technology.apol.com.tw/technology-55.html

當入侵者成功侵入機器之後,首要的目標就是抹掉入侵系統的相關記錄以及隱藏自己的行蹤,一旦忽略了這些事情,入侵者很容易被系統管理者逮到,而一般入侵者最常使用的方法就是使用 rootkits。許多人會以為 rootkits 是用來取得系統中 root 權限的神奇程式,然而事實上,rootkits 是一堆能竊取密碼,監聽網路流量,留下後門等的程式集,如果入侵者在系統中成功植入 rootkits ,一般人將很難發現已經被入侵,或是只是覺得系統“怪怪的”,卻不知道哪邊出了問題,而對於入侵者來說,將能輕易控制系統,而且通行無阻。

底下將介紹 rootkits 如何達成這些目的,以及如何預防偵測 rootkits 。

Rootkits 是一些工具集, trojaned 程式,竄改過的系統程式的集合,工具集中的程式通常用來抹掉系統中相關的紀錄, plastlog/utmp/wtmp 這些會記錄使用者登入狀況的系統記錄檔, trojaned 程式會留下後門,讓入侵者能再次輕易地進入系統之中,而被竄改過的系統程式會隱藏入侵者的檔案、行程、連線等等,管理者通常信任這些程式的輸出,而讓管理者難以發現入侵者的蹤跡。

目前最常見的 rootkit 是 Linux Rootkit(lrk),以lrk 為例,底下列出這些程式及其功用,工作集包含有:

  • fix — 改變檔案的 timestamp 和 checksum,用來把竄改過的程式的 timestamp和checksum ,更動為和原先的系統中的程式相同。
  • linsniffer — 竊取特定網路訊息(ftp / telnet / imap..)的 sniffer 。
  • sniffchk — 檢查 linsniffer 是否在運作。
  • wted — 查閱或移除 wtmp 中指定的欄位。
  • z2 — 移除某個使用者最後的 utmp/wtmp/lastlog 紀錄


包含的 trojaned 程式有:

  • inetd — 會 listen 在某個port(預設是5002),任何人只要利用這個 port 進入系統就擁有 root 權限。
  • bindshell — 將 root shell bind 在某個 port。
  • chfn / chsh / login / passwd / su—輸入特定密碼就能擁有 root shell。
  • rshd — 讓入侵者以特定帳號登入就能以 root 權限執行程式。
  • sshd — 入侵者以特定帳號密碼登入就能擁有 root shell。


竄改過的系統程式有:

  • crontab — 執行特定的 crontab 檔案,並且隱藏這些欄位。
  • du / find / ls — 隱藏特定的檔案,通常是與 rootkit 相關的檔案。
  • ifconfig — 當啟動 PROMISC 時(sniffing),不顯示 PROMISC flag。
  • netstat — 隱藏指定 address / uid / port 的連線。
  • killall — 無法刪除指定的行程。
  • pidof / ps / top — 輸出結果時濾掉指定的行程,例如以 root 執行的行程,或行程名稱內有特定字串的行程。
  • syslogd — 移除系統紀錄檔中包含特定字串的訊息。
  • tcpd — 不會紀錄以及允許特定連線。


此外,還有一些 rootkits 會以 kernel module 的方式載入系統之中,置換掉某些 system calls,或是取代掉某些 kernel 的功能,另外,也有的 rootkits 會取代系統中的 library,使得使用到這些 library 的程式相當於都有潛在的問題。那我們要如何預防這些 rootkit 安裝到系統內部呢?在此提供幾點建議:

  • 將放置系統程式的檔案系統設定為唯讀或是使用 chattr 將重要檔案設定為唯讀。
  • 不要啟用 kernel module 的功能。
  • 重要的程式使用 static-link 的方式避免連結到被竄改過的 library。
  • 使用 md5 或是 pgp 等嚴密的驗證演算法確認檔案的正確性。


若要偵測 rootkits 竄改系統檔案,一般使用 tripwire,提供許多演算法如MD5 / Snefu / SHA 等,可以驗證檔案是否被竄改,如果與原先的檔案不符,將提醒管理者。可參閱 http://www.tripwire.org/得到更多詳細訊息。

如果懷疑自己可能已經被植入rootkits,可以使用 chkrootkit 來檢查,chkrootkit 提供許多工具檢查是否被植入 rootkits,例如 chkrootkit 會檢查幾個可能被竄改過的系統程式,以及檢查是否有 rootkits 常使用的工具,此外ifpromisc 用來檢查 PROMISC flag 是否開啟, chkwtmp / chklastlog 可用來確認lastlog / wtmp 的正確性,另外如果系統擁有 process file system,就可以使用chkproc 來比對 ps 的輸出和 process file system 的差異。可參閱http://www.chkrootkit.org/得到更多詳細訊息。

我們也可以利用一些簡單的方式來檢查是否被植入 rootkits,例如使用 echo的輸出和 ls 的輸出比對,或著是檢查 /dev/底下有沒有任何“正常”(regular)的檔案,通常/dev/ 底下都是 block special file 或是 character special file,像 lrk的設定檔預設值就是放在 /dev/ 底下,或著使用 nmap 等類似的 port scanner 來檢查系統是否有對外開出任何不正常的 port,另外也建議使用沒有被'污染'的系統程式來檢查系統,並更動PATH使用正常的程式來一一檢查可能被入侵的系統。

以上大略介紹過 lrk,其他 NIX 平台的 rootkits 大致上相同,而對於Windows平台的NT Rootkits,除了隱藏檔案目錄之外,也隱藏 registry,甚至擁有自己的TCP/IP Stack,一但被植入非常難發現。

隨著 rootkits 不斷的發展,入侵者的匿蹤技巧越來越高超,要發現入侵者越來越困難,只能依賴系統管理者平時做好完善的安全政策,不讓入侵者有可趁之機,如此才能確保系統安全的長久之道。
----------------------------------------
支持小惡魔
BTC : 19tn3RnCuwZVukXAwyhDWZD4uBgUZoGJPx
LTC : LTFa17pSvvoe3aU5jbmfcmEpo1xuGa9XeA
知識跟八卦一樣,越多人知道越有價值;知識最好的備份方法,散播!
藍色小惡魔(林永傑): 臉書


[2007/11/19 下午 03:41:43]   [返迴此篇文章頂端 ]  回到頂端