技術 > rootkit
目錄
No. 1
  在網絡安全中經常會遇到rootkit,nsa安全和入侵檢測術語字典( nsa glossary of terms used in security and intrusion detection)對rootkit的定義如下:a hacker security tool that captures passwords and message traffic to and from a computer. a collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the network,mask the fact that the system is compromised, and much more. rootkit is a classic example of trojan horse software. rootkit is available for a wide range of operating systems.
  好多人有一個誤解,他們認為rootkit是用作獲得係統root訪問權限的工具。實際上,rootkit是攻擊者用來隱藏自己的蹤跡和保留root訪問權限的工具。通常,攻擊者通過遠程攻擊獲得root訪問權限,或者首先密碼猜測或者密碼強製破譯的方式獲得係統的訪問權限。進入係統後,如果他還沒有獲得root權限,再通過某些安全漏洞獲得係統的root權限。接着,攻擊者會在侵入的主機中安裝rootkit,然後他將經常通過rootkit的後門檢查係統是否有其他的用戶登錄,如果衹有自己,攻擊者就開始着手清理日志中的有關信息。通過rootkit的嗅探器獲得其它係統的用戶和密碼之後,攻擊者就會利用這些信息侵入其它的係統。
  什麽是rootkit
  rootkit出現於二十世紀90年代初,在1994年2月的一篇安全咨詢報告中首先使用了rootkit這個名詞。這篇安全咨詢就是cert-cc的ca-1994-01,題目是ongoing network monitoring attacks,最新的修訂時間是1997年9月19日。從出現至今,rootkit的技術發展非常迅速,應用越來越廣泛,檢測難度也越來越大。
  rootkit介紹rootkit是一種奇特的程序,它具有隱身功能:無論靜止時(作為文件存在),還是活動時,(作為進程存在),都不會被察覺。換句話說,這種程序可能一直存在於我們的計算機中,但我們卻渾然不知,這一功能正是許多人夢寐以求的——不論是計算機黑客,還是計算機取證人員。黑客可以在入侵後置入rootkit,秘密地窺探敏感信息,或等待時機,伺機而動;取證人員也可以利用rootkit實時監控嫌疑人員的不法行為,它不僅能搜集證據,還有利於及時采取行動。!
  一、背景知識
  我們通常所說的智能機器,大至超級計算機,中到個人pc,小至智能手機,通常都有兩部分組成:硬件和軟件。並且,設備的智能是通過軟件來實現的。所有軟件中,有一種是必不可少的,那就是操作係統。操作係統可以簡單理解為一組高度復用的核心程序,一方面,它要管理低層的硬件設備,另一方面,為上層其它程序提供一個良好的運行環境。真是同人不同命,同為軟件,操作係統卻享有至高無上的特權:它不僅管理硬件,而且其他所有軟件也都受製於它。
  因為在應用程序和硬件之間隔着操作係統,所以應用程序不能直接訪問硬件,而是通過調用操作係統提供的接口來使用硬件。也就是說,對應用程序而言,硬件是不可見的。當然,凡事是沒有絶對的,應用程序繞過操作係統來直接訪問硬件也不是不可能的,但這樣做會付出高昂的代價。設想一個軟件開發商在開發一款功能豐富的軟件,功能本身就夠他頭痛得了,現在他還得操心某個數據在某個磁道的某個簇上,某個字符在某品牌顯示器上的顔色的二進製代碼等等繁瑣的事情,不用說財力和物力,單說開發周期就是無法容忍的。所以,現在的應用程序都是使用操作係統提供的簡單明了的服務來訪問係統的,因為畢竟沒有誰願意自討苦吃。
  二、內核的主要功能
  從上文中我們已經瞭解,內核在係統中處於核心樞紐的地位,下面我們具體介紹內核中與rootkit緊密相關的幾個主要功能,更重要的是這些功能對rootkit的意義所在:
  進程管理。進程可以簡單理解為運行中的程序,它需要占用內存、cpu時間等係統資源。現在的操作係統大多支持多用戶多任務,也就是說係統要並行運行多個程序。為此,內核不僅要有專門代碼來負責為進程或綫程分配cpu時間,另一方面還要開闢一段內存區域存放用來記錄這些進程詳細情況的數據結構。內核是怎麽知道係統中有多少進程、各進程的狀態等信息的?就是通過這些數據結構,換句話說它們就是內核感知進程存在的依據。因此,衹要修改這些數據結構,就能達到隱藏進程的目的。
  文件訪問。文件係統是操作係統提供的最為重要的功能之一。內核中的驅動程序把設備的柱面、扇區等原始結構抽象成為更加易用的文件係統,並提供一個一致的接口供上層程序調用。也就是說,這部分代碼完全控製着對硬盤的訪問,通過修改內核的這部分代碼,攻擊者能夠隱藏文件和目錄。
  安全控製。對大部分操作係統來說,因為係統中同時存在多個進程,為了避免各進程之間發生衝突,內核必須對各進程實施有效的隔離措施。比如,在ms-windows係統中,每個進程都被強製規定了具體的權限和單獨的內存範圍。因此,對攻擊者而言,衹要對內核中負責安全事務的代碼稍事修改,整個安全機製就會全綫崩潰。
  內存管理。現在的硬件平臺(比如英特爾的奔騰係列處理器)的內存管理機製已經復雜到可以將一個內存地址轉換成多個物理地址的地步。舉例來說,進程a按照地址 0x0030030讀取內存,它得到值的是“飛機”;然而,進程b也是按照同樣的地址0x0030030來讀取內存,但它取得的值卻是“大炮”。像上面這樣,同一個地址指嚮截然不同的兩個物理內存位置,並且每個位置存放不同的數據這種現象並不足以為怪——衹不過是兩個進程對虛擬地址到物理地址進行了不同的映射而已。如果這一點利用好了,我們可以讓rootkit躲避調試程序和取證軟件的追蹤。
  上面介紹了內核的主要功能,以及它們對 rootkit的重大意義。說到這裏,我們就要切入正題了,即:衹要我們顛覆(即修改)了操作係統的核心服務(即內核),那麽整個係統包括各種應用就完全處於我們的掌控之下了。要想顛覆內核,前提條件是能把我們的代碼導入內核。
  其中針對sunos和linux兩種操作係統的rootkit最多(樹大招風:p)。所有的rootkit基本上都是由幾個獨立的程序組成的,一個典型rootkit包括:
  1 以太網嗅探器程程序,用於獲得網絡上傳輸的用戶名和密碼等信息。
  2 特洛伊木馬程序,例如:inetd或者login,為攻擊者提供後門。
  3 隱藏攻擊者的目錄和進程的程序,例如:ps、netstat、rshd和ls等。
  4 可能還包括一些日志清理工具,例如:zap、zap2或者z2,攻擊者使用這些清理工具刪除wtmp、utmp和lastlog等日志文件中有關自己行蹤的條目。
  一些復雜的rootkit還可以嚮攻擊者提供telnet、shell和finger等服務。
  還包括一些用來清理/var/log和/var/adm目錄中其它文件的一些腳本。
  攻擊者使用rootkit中的相關程序替代係統原來的ps、ls、netstat和df等程序,使係統管理員無法通過這些工具發現自己的蹤跡。接着使用日志清理工具清理係統日志,消除自己的蹤跡。然後,攻擊者會經常地通過安裝的後門進入係統查看嗅探器的日志,以發起其它的攻擊。如果攻擊者能夠正確地安裝rootkit並合理地清理了日志文件,係統管理員就會很難察覺係統已經被侵入,直到某一天其它係統的管理員和他聯繫或者嗅探器的日志把磁盤全部填滿,他纔會察覺已經大禍臨頭了。但是,大多數攻擊者在清理係統日志時不是非常小心或者幹脆把係統日志全部刪除了事,警覺的係統管理員可以根據這些異常情況判斷出係統被侵入。不過,在係統恢復和清理過程中,大多數常用的命令例如ps、df和ls已經不可信了。許多rootkit中有一個叫做fix的程序,在安裝rootkit之前,攻擊者可以首先使用這個程序做一個係統二進製代碼的快照,然後再安裝替代程序。fix能夠根據原來的程序偽造替代程序的三個時間戳(atime、ctime、mtime)、date、permission、所屬用戶和所屬用戶組。如果攻擊者能夠準確地使用這些優秀的應用程序,並且在安裝rootkit時行為謹慎,就會讓係統管理員很難發現。
  linux rootkit iv
  前面說過,大部分rootkit是針對linux和sunos的,下面我們介紹一個非常典型的針對linux係統的rootkit--linux rootkit iv。linux rootkit iv是一個開放源碼的rootkit,是lord somer編寫的,於1998年11月發佈。不過,它不是第一個linux rootkit,在它之前有lrk、lnrk、lrk2和lrk3等linux rootkit。這些rootkit包括常用的rootkit組件,例如嗅探器、日志編輯/刪除工具、和後門程序的。
  經過這麽多年的發展,linux rootkit iv功能變的越來越完善,具有的特徵也越來越多。不過,雖然它的代碼非常龐大,卻非常易於安裝和使用,衹要執行make install就可以成功安裝。如果你還要安裝一個shadow工具,衹要執行make shadow install就可以了。註意:linux rootkit iv衹能用於linux 2.x的內核。下面我們簡單地介紹一下linux rootkit iv包含的各種工具,詳細的介紹請參考其發佈包的readme文件。
  隱藏入侵者行蹤的程序
  為了隱藏入侵者的行蹤,linux rootkit iv的作者可謂煞費心機,編寫了許多係統命令的替代程序,使用這些程序代替原由的係統命令,來隱藏入侵者的行蹤。這些程序包括:
  ls、find、du
  這些程序會阻止顯示入侵者的文件以及計算入侵者文件占用的空間。在編譯之前,入侵者可以通過rootkit_files_file設置自己的文件所處的位置,默認是/dev/ptyr。註意如果在編譯時使用了showflag選項,就可以使用ls -/命令列出所有的文件。這幾個程序還能夠自動隱藏所有名字為:ptyr、hack.dir和w4r3z的文件。
  ps、top、pidof
  這幾個程序用來隱藏所有和入侵者相關的進程。
  netstat
  隱藏出/入指定ip地址或者端口的網絡數據流量。
  killall
  不會殺死被入侵者隱藏的進程。
  ifconfig
  如果入侵者啓動了嗅探器,這個程序就阻止promisc標記的顯示,使係統管理員難以發現網絡接口已經處於混雜模式下。
  crontab
  隱藏有關攻擊者的crontab條目。
  tcpd
  阻止嚮日志中記錄某些連接
  syslogd
  過濾掉日志中的某些連接信息
  木馬程序
  為本地用戶提供後門,包括:
  chfn
  提升本地普通用戶權限的程序。運行chfn,在它提示輸入新的用戶名時,如果用戶輸入rookit密碼,他的權限就被提升為root。默認的rootkit密碼是satori。
  chsh
  也是一個提升本地用戶權限的程序。運行chsh,在它提示輸入新的shell時,如果用戶輸入rootkit密碼,他的權限就被提升為root。
  passwd
  和上面兩個程序的作用相同。在提示你輸入新密碼時,如果輸入rookit密碼,權限就可以變成root。
  login
  允許使用任何帳戶通過rootkit密碼登錄。如果使用root帳戶登錄被拒絶,可以嘗試一下rewt。當使用後門時,這個程序還能夠禁止記錄命令的歷史記錄。
  木馬網絡監控程序
  這些程序為遠程用戶提供後門,可以嚮遠程用戶提供inetd、rsh、ssh等服務,具體因版本而異。隨着版本的升級,linux rootkit iv的功能也越來越強大,特徵也越來越豐富。一般包括如下網絡服務程序:
  inetd
  特洛伊inetd程序,為攻擊者提供遠程訪問服務。
  rshd
  為攻擊者提供遠程shell服務。攻擊者使用rsh -l rootkitpassword host command命令就可以啓動一個遠程root shell。
  sshd
  為攻擊者提供ssh服務的後門程序。
  工具程序
  所有不屬於以上類型的程序都可以歸如這個類型,它們實現一些諸如:日志清理、報文嗅探以及遠程shell的端口綁定等功能,包括:
  fix
  文件屬性偽造程序
  linsniffer
  報文嗅探器程序。
  sniffchk
  一個簡單的bash shell腳本,檢查係統中是否正有一個嗅探器在運行。
  wted
  wtmp/utmp日志編輯程序。你可以使用這個工具編輯所有wtmp或者utmp類型的文件。
  z2
  utmp/wtmp/lastlog日志清理工具。可以刪除utmp/wtmp/lastlog日志文件中有關某個用戶名的所有條目。不過,如果用於linux係統需要手工修改其源代碼,設置日志文件的位置。
  bindshell rootkit
  在某個端口上綁定shell服務,默認端口是12497。為遠程攻擊者提供shell服務。
  如何發現rootkit
  很顯然,衹有使你的網絡非常安裝讓攻擊者無隙可乘,才能是自己的網絡免受rootkit的影響。不過,恐怕沒有人能夠提供這個保證,但是在日常的網絡管理維護中保持一些良好的習慣,能夠在一定程度上減小由rootkit造成的損失,並及時發現rootkit的存在。
  首先,不要在網絡上使用明文傳輸密碼,或者使用一次性密碼。這樣,即使你的係統已經被安裝了rootkit,攻擊者也無法通過網絡監聽,獲得更多用戶名和密碼,從而避免入侵的蔓延。
  使用tripwire和aide等檢測工具能夠及時地幫助你發現攻擊者的入侵,它們能夠很好地提供係統完整性的檢查。這類工具不同於其它的入侵檢測工具,它們不是通過所謂的攻擊特徵碼來檢測入侵行為,而是監視和檢查係統發生的變化。tripwire首先使用特定的特徵碼函數為需要監視的係統文件和目錄建立一個特徵數據庫,所謂特徵碼函數就是使用任意的文件作為輸入,産生一個固定大小的數據(特徵碼)的函數。入侵者如果對文件進行了修改,即使文件大小不變,也會破壞文件的特徵碼。利用這個數據庫,tripwire可以很容易地發現係統的變化。而且文件的特徵碼幾乎是不可能偽造的,係統的任何變化都逃不過tripwire的監視(當然,前提是你已經針對自己的係統做了準確的配置:p,關於tripwire和aide的使用請參考本站的相關文章)。最後,需要能夠把這個特徵碼數據庫放到安全的地方。
No. 2
  在網絡安全中經常會遇到rootkit,NSA安全和入侵檢測術語字典( NSA Glossary of Terms Used in Security and Intrusion Detection)對rootkit的定義如下:A hacker security tool that captures passwords and message traffic to and from a computer. A collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the network,mask the fact that the system is compromised, and much more. rootkit is a classic example of Trojan Horse software. rootkit is available for a wide range of operating systems.
  好多人有一個誤解,他們認為rootkit是用作獲得係統root訪問權限的工具。實際上,rootkit是攻擊者用來隱藏自己的蹤跡和保留root訪問權限的工具。通常,攻擊者通過遠程攻擊獲得root訪問權限,或者首先密碼猜測或者密碼強製破譯的方式獲得係統的訪問權限。進入係統後,如果他還沒有獲得root權限,再通過某些安全漏洞獲得係統的root權限。接着,攻擊者會在侵入的主機中安裝rootkit,然後他將經常通過rootkit的後門檢查係統是否有其他的用戶登錄,如果衹有自己,攻擊者就開始着手清理日志中的有關信息。通過rootkit的嗅探器獲得其它係統的用戶和密碼之後,攻擊者就會利用這些信息侵入其它的係統。
  什麽是rootkit
  rootkit是指其主要功能為隱藏其他程式進程的軟件,可能是一個或一個以上的軟件組合;廣義而言,rootkit也可視為一項技術。最早rootkit用於善意用途,但後來rootkit也被黑客用在入侵和攻擊他人的電腦係統上,電腦病毒、間諜軟件等也常使用rootkit來隱藏蹤跡,因此rootkit已被大多數的防毒軟件歸類為具危害性的惡意軟件。Linux、Windows、Mac OS等操作係統都有機會成為rootkit的受害目標。
  rootkit出現於二十世紀90年代初,在1994年2月的一篇安全咨詢報告中首先使用了rootkit這個名詞。這篇安全咨詢就是CERT-CC的CA-1994-01,題目是Ongoing Network Monitoring Attacks,最新的修訂時間是1997年9月19日。從出現至今,rootkit的技術發展非常迅速,應用越來越廣泛,檢測難度也越來越大。
  rootkit介紹rootkit是一種奇特的程序,它具有隱身功能:無論靜止時(作為文件存在),還是活動時,(作為進程存在),都不會被察覺。換句話說,這種程序可能一直存在於我們的計算機中,但我們卻渾然不知,這一功能正是許多人夢寐以求的——不論是計算機黑客,還是計算機取證人員。黑客可以在入侵後置入rootkit,秘密地窺探敏感信息,或等待時機,伺機而動;取證人員也可以利用rootkit實時監控嫌疑人員的不法行為,它不僅能搜集證據,還有利於及時采取行動。!
  一、背景知識
  我們通常所說的智能機器,大至超級計算機,中到個人PC,小至智能手機,通常都有兩部分組成:硬件和軟件。並且,設備的智能是通過軟件來實現的。所有軟件中,有一種是必不可少的,那就是操作係統。操作係統可以簡單理解為一組高度復用的核心程序,一方面,它要管理低層的硬件設備,另一方面,為上層其它程序提供一個良好的運行環境。真是同人不同命,同為軟件,操作係統卻享有至高無上的特權:它不僅管理硬件,而且其他所有軟件也都受製於它。
  因為在應用程序和硬件之間隔着操作係統,所以應用程序不能直接訪問硬件,而是通過調用操作係統提供的接口來使用硬件。也就是說,對應用程序而言,硬件是不可見的。當然,凡事是沒有絶對的,應用程序繞過操作係統來直接訪問硬件也不是不可能的,但這樣做會付出高昂的代價。設想一個軟件開發商在開發一款功能豐富的軟件,功能本身就夠他頭痛得了,現在他還得操心某個數據在某個磁道的某個簇上,某個字符在某品牌顯示器上的顔色的二進製代碼等等繁瑣的事情,不用說財力和物力,單說開發周期就是無法容忍的。所以,現在的應用程序都是使用操作係統提供的簡單明了的服務來訪問係統的,因為畢竟沒有誰願意自討苦吃。
  二、內核的主要功能
  從上文中我們已經瞭解,內核在係統中處於核心樞紐的地位,下面我們具體介紹內核中與rootkit緊密相關的幾個主要功能,更重要的是這些功能對rootkit的意義所在:
  進程管理。進程可以簡單理解為運行中的程序,它需要占用內存、CPU時間等係統資源。現在的操作係統大多支持多用戶多任務,也就是說係統要並行運行多個程序。為此,內核不僅要有專門代碼來負責為進程或綫程分配CPU時間,另一方面還要開闢一段內存區域存放用來記錄這些進程詳細情況的數據結構。內核是怎麽知道係統中有多少進程、各進程的狀態等信息的?就是通過這些數據結構,換句話說它們就是內核感知進程存在的依據。因此,衹要修改這些數據結構,就能達到隱藏進程的目的。
  文件訪問。文件係統是操作係統提供的最為重要的功能之一。內核中的驅動程序把設備的柱面、扇區等原始結構抽象成為更加易用的文件係統,並提供一個一致的接口供上層程序調用。也就是說,這部分代碼完全控製着對硬盤的訪問,通過修改內核的這部分代碼,攻擊者能夠隱藏文件和目錄。
  安全控製。對大部分操作係統來說,因為係統中同時存在多個進程,為了避免各進程之間發生衝突,內核必須對各進程實施有效的隔離措施。比如,在MS-Windows係統中,每個進程都被強製規定了具體的權限和單獨的內存範圍。因此,對攻擊者而言,衹要對內核中負責安全事務的代碼稍事修改,整個安全機製就會全綫崩潰。
  內存管理。現在的硬件平臺(比如英特爾的奔騰係列處理器)的內存管理機製已經復雜到可以將一個內存地址轉換成多個物理地址的地步。舉例來說,進程A按照地址 0x0030030讀取內存,它得到值的是“飛機”;然而,進程B也是按照同樣的地址0x0030030來讀取內存,但它取得的值卻是“大炮”。像上面這樣,同一個地址指嚮截然不同的兩個物理內存位置,並且每個位置存放不同的數據這種現象並不足以為怪——衹不過是兩個進程對虛擬地址到物理地址進行了不同的映射而已。如果這一點利用好了,我們可以讓rootkit躲避調試程序和取證軟件的追蹤。
  上面介紹了內核的主要功能,以及它們對 rootkit的重大意義。說到這裏,我們就要切入正題了,即:衹要我們顛覆(即修改)了操作係統的核心服務(即內核),那麽整個係統包括各種應用就完全處於我們的掌控之下了。要想顛覆內核,前提條件是能把我們的代碼導入內核。
  其中針對SunOS和Linux兩種操作係統的rootkit最多(樹大招風:P)。所有的rootkit基本上都是由幾個獨立的程序組成的,一個典型rootkit包括:
  1 以太網嗅探器程程序,用於獲得網絡上傳輸的用戶名和密碼等信息。
  2 特洛伊木馬程序,例如:inetd或者login,為攻擊者提供後門。
  3 隱藏攻擊者的目錄和進程的程序,例如:ps、netstat、rshd和ls等。
  4 可能還包括一些日志清理工具,例如:zap、zap2或者z2,攻擊者使用這些清理工具刪除wtmp、utmp和lastlog等日志文件中有關自己行蹤的條目。
  一些復雜的rootkit還可以嚮攻擊者提供telnet、shell和finger等服務。
  還包括一些用來清理/var/log和/var/adm目錄中其它文件的一些腳本。
  攻擊者使用rootkit中的相關程序替代係統原來的ps、ls、netstat和df等程序,使係統管理員無法通過這些工具發現自己的蹤跡。接着使用日志清理工具清理係統日志,消除自己的蹤跡。然後,攻擊者會經常地通過安裝的後門進入係統查看嗅探器的日志,以發起其它的攻擊。如果攻擊者能夠正確地安裝rootkit並合理地清理了日志文件,係統管理員就會很難察覺係統已經被侵入,直到某一天其它係統的管理員和他聯繫或者嗅探器的日志把磁盤全部填滿,他纔會察覺已經大禍臨頭了。但是,大多數攻擊者在清理係統日志時不是非常小心或者幹脆把係統日志全部刪除了事,警覺的係統管理員可以根據這些異常情況判斷出係統被侵入。不過,在係統恢復和清理過程中,大多數常用的命令例如ps、df和ls已經不可信了。許多rootkit中有一個叫做FIX的程序,在安裝rootkit之前,攻擊者可以首先使用這個程序做一個係統二進製代碼的快照,然後再安裝替代程序。FIX能夠根據原來的程序偽造替代程序的三個時間戳(atime、ctime、mtime)、date、permission、所屬用戶和所屬用戶組。如果攻擊者能夠準確地使用這些優秀的應用程序,並且在安裝rootkit時行為謹慎,就會讓係統管理員很難發現。
  LINUX rootkit IV
  前面說過,大部分rootkit是針對Linux和SunOS的,下面我們介紹一個非常典型的針對Linux係統的rootkit--Linux rootkit IV。Linux rootkit IV是一個開放源碼的rootkit,是Lord Somer編寫的,於1998年11月發佈。不過,它不是第一個Linux rootkit,在它之前有lrk、lnrk、lrk2和lrk3等Linux rootkit。這些rootkit包括常用的rootkit組件,例如嗅探器、日志編輯/刪除工具、和後門程序的。
  經過這麽多年的發展,Linux rootkit IV功能變的越來越完善,具有的特徵也越來越多。不過,雖然它的代碼非常龐大,卻非常易於安裝和使用,衹要執行make install就可以成功安裝。如果你還要安裝一個shadow工具,衹要執行make shadow install就可以了。註意:Linux rootkit IV衹能用於Linux 2.x的內核。下面我們簡單地介紹一下Linux rootkit IV包含的各種工具,詳細的介紹請參考其發佈包的README文件。
  隱藏入侵者行蹤的程序
  為了隱藏入侵者的行蹤,Linux rootkit IV的作者可謂煞費心機,編寫了許多係統命令的替代程序,使用這些程序代替原由的係統命令,來隱藏入侵者的行蹤。這些程序包括:
  ls、find、du
  這些程序會阻止顯示入侵者的文件以及計算入侵者文件占用的空間。在編譯之前,入侵者可以通過rootkit_FILES_FILE設置自己的文件所處的位置,默認是/dev/ptyr。註意如果在編譯時使用了SHOWFLAG選項,就可以使用ls -/命令列出所有的文件。這幾個程序還能夠自動隱藏所有名字為:ptyr、hack.dir和W4r3z的文件。
  ps、top、pidof
  這幾個程序用來隱藏所有和入侵者相關的進程。
  netstat
  隱藏出/入指定IP地址或者端口的網絡數據流量。
  killall
  不會殺死被入侵者隱藏的進程。
  ifconfig
  如果入侵者啓動了嗅探器,這個程序就阻止PROMISC標記的顯示,使係統管理員難以發現網絡接口已經處於混雜模式下。
  crontab
  隱藏有關攻擊者的crontab條目。
  tcpd
  阻止嚮日志中記錄某些連接
  syslogd
  過濾掉日志中的某些連接信息
  木馬程序
  為本地用戶提供後門,包括:
  chfn
  提升本地普通用戶權限的程序。運行chfn,在它提示輸入新的用戶名時,如果用戶輸入rookit密碼,他的權限就被提升為root。默認的rootkit密碼是satori。
  chsh
  也是一個提升本地用戶權限的程序。運行chsh,在它提示輸入新的shell時,如果用戶輸入rootkit密碼,他的權限就被提升為root。
  passwd
  和上面兩個程序的作用相同。在提示你輸入新密碼時,如果輸入rookit密碼,權限就可以變成root。
  login
  允許使用任何帳戶通過rootkit密碼登錄。如果使用root帳戶登錄被拒絶,可以嘗試一下rewt。當使用後門時,這個程序還能夠禁止記錄命令的歷史記錄。
  木馬網絡監控程序
  這些程序為遠程用戶提供後門,可以嚮遠程用戶提供inetd、rsh、ssh等服務,具體因版本而異。隨着版本的升級,Linux rootkit IV的功能也越來越強大,特徵也越來越豐富。一般包括如下網絡服務程序:
  inetd
  特洛伊inetd程序,為攻擊者提供遠程訪問服務。
  rshd
  為攻擊者提供遠程shell服務。攻擊者使用rsh -l rootkitpassword host command命令就可以啓動一個遠程root shell。
  sshd
  為攻擊者提供ssh服務的後門程序。
  工具程序
  所有不屬於以上類型的程序都可以歸如這個類型,它們實現一些諸如:日志清理、報文嗅探以及遠程shell的端口綁定等功能,包括:
  fix
  文件屬性偽造程序
  linsniffer
  報文嗅探器程序。
  sniffchk
  一個簡單的bash shell腳本,檢查係統中是否正有一個嗅探器在運行。
  wted
  wtmp/utmp日志編輯程序。你可以使用這個工具編輯所有wtmp或者utmp類型的文件。
  z2
  utmp/wtmp/lastlog日志清理工具。可以刪除utmp/wtmp/lastlog日志文件中有關某個用戶名的所有條目。不過,如果用於Linux係統需要手工修改其源代碼,設置日志文件的位置。
  bindshell rootkit
  在某個端口上綁定shell服務,默認端口是12497。為遠程攻擊者提供shell服務。
  如何發現rootkit
  很顯然,衹有使你的網絡非常安全讓攻擊者無隙可乘,才能是自己的網絡免受rootkit的影響。不過,恐怕沒有人能夠提供這個保證,但是在日常的網絡管理維護中保持一些良好的習慣,能夠在一定程度上減小由rootkit造成的損失,並及時發現rootkit的存在。
  首先,不要在網絡上使用明文傳輸密碼,或者使用一次性密碼。這樣,即使你的係統已經被安裝了rootkit,攻擊者也無法通過網絡監聽,獲得更多用戶名和密碼,從而避免入侵的蔓延。
  使用Tripwire和aide等檢測工具能夠及時地幫助你發現攻擊者的入侵,它們能夠很好地提供係統完整性的檢查。這類工具不同於其它的入侵檢測工具,它們不是通過所謂的攻擊特徵碼來檢測入侵行為,而是監視和檢查係統發生的變化。Tripwire首先使用特定的特徵碼函數為需要監視的係統文件和目錄建立一個特徵數據庫,所謂特徵碼函數就是使用任意的文件作為輸入,産生一個固定大小的數據(特徵碼)的函數。入侵者如果對文件進行了修改,即使文件大小不變,也會破壞文件的特徵碼。利用這個數據庫,Tripwire可以很容易地發現係統的變化。而且文件的特徵碼幾乎是不可能偽造的,係統的任何變化都逃不過Tripwire的監視(當然,前提是你已經針對自己的係統做了準確的配置:P,關於Tripwire和aide的使用請參考本站的相關文章)。最後,需要能夠把這個特徵碼數據庫放到安全的地方。
  rootkit 是一種特殊類型的 malware(惡意軟件)。rootkit 之所以特殊是因為您不知道它們在做什麽事情。rootkit 基本上是無法檢測到的,而且幾乎不可能刪除它們。雖然檢測工具在不斷增多,但是惡意軟件的開發者也在不斷尋找新的途徑來掩蓋他們的蹤跡。
  rootkit 的目的在於隱藏自己以及其他軟件不被發現。它可以通過阻止用戶識別和刪除攻擊者的軟件來達到這個目的。rootkit 幾乎可以隱藏任何軟件,包括文件服務器、鍵盤記錄器、Botnet 和 Remailer。許多 rootkit 甚至可以隱藏大型的文件集合併允許攻擊者在您的計算機上保存許多文件,而您無法看到這些文件。
  rootkit 本身不會像病毒或蠕蟲那樣影響計算機的運行。攻擊者可以找出目標係統上的現有漏洞。漏洞可能包括:開放的網絡端口、未打補丁的係統或者具有脆弱的管理員密碼的係統。在獲得存在漏洞的係統的訪問權限之後,攻擊者便可手動安裝一個 rootkit。這種類型的偷偷摸摸的攻擊通常不會觸發自動執行的網絡安全控製功能,例如入侵檢測係統。
  找出 rootkit 十分睏難。有一些軟件包可以檢測 rootkit。這些軟件包可劃分為以下兩類:基於簽名的檢查程序和基於行為的檢查程序。基於簽名(特徵碼)的檢查程序,例如大多數病毒掃描程序,會檢查二進製文件是否為已知的 rootkit。基於行為的檢查程序試圖通過查找一些代表 rootkit 主要行為的隱藏元素來找出 rootkit。一個流行的基於行為的 rootkit 檢查程序是 rootkit Revealer.
  在發現係統中存在 rootkit 之後,能夠采取的補救措施也較為有限。由於 rootkit 可以將自身隱藏起來,所以您可能無法知道它們已經在係統中存在了多長的時間。而且您也不知道 rootkit 已經對哪些信息造成了損害。對於找出的 rootkit,最好的應對方法便是擦除並重新安裝係統。雖然這種手段很嚴厲,但是這是得到證明的唯一可以徹底刪除 rootkit 的方法。
  防止 rootkit 進入您的係統是能夠使用的最佳辦法。為了實現這個目的,可以使用與防範所有攻擊計算機的惡意軟件一樣的深入防衛策略。深度防衛的要素包括:病毒掃描程序、定期更新軟件、在主機和網絡上安裝防火墻,以及強密碼策略等。
相關詞
瑞星卡卡上網安全助手流氓軟件電腦網絡agentwy病毒
黑客惡意軟件木馬係統工具入侵檢測工具隱藏假冒日志安天防綫DDK
WDKWindows內核編程