鳥哥的 Linux 私房菜
由前面幾個章節的說明,我們可以曉得因為主機的某些服務是有漏洞的, 黑客們可以針對這些服務的漏洞來撰寫惡意攻擊的程式,並據以取得該被攻擊主機的超級管理員 root 權限。 這些惡意攻擊程式後來被散佈在網際網路上面,因此,很多小朋友很容易就取得這些惡意程式, 並利用這些程式來攻擊不特定的眾多主機。這種入侵的程式我們可以稱之 Root Kit (Root 工具)。 萬一您的系統被 root kit 之類的程式所攻擊,由於這些程式通常會在您的系統留下一些後門或者是蠕蟲, 因此,我們可以透過分析系統來找出這類的程式,這樣才能進一步移除惡意程式, 讓您的主機保持乾乾淨淨啊!底下我們將介紹一套自由軟體 RootKit Hunter , 這套軟體可以分析您主機上的可能被惡意程式所攻擊的檔案,讓您可以檢查主機是否被入侵喔! |
1.1 什麼是 Root Kit
1.2 如何防止 rootkit 的攻擊
1.3 Rootkit Hunter 能作什麼
1.4 rkhunter 例外的錯誤狀態
2. 安裝 rkhunter
3. 檢測系統
4. 系統修訂
前言:
由於 Root Kit 工具的取得相當的容易,因此難保我們一般使用者的主機不會被低級的怪客所干擾, 所以我們當然要想辦法保護我們自己的主機啦!為了要偵測主機是否已經被 Root Kit 之類的程式所攻擊, 由自由軟體撰寫團體所開發的 Root Kit Hunter, rkhunter 這個套件,就能夠幫我們偵測囉! 所以,底下我們就來談一談這個咚咚。
什麼是 Root Kit
高級的駭客為了系統網路的安全,會撰寫一些程式去測試自己主機的服務漏洞, 並且在發現了某些服務的漏洞之後,會通報該服務的維護團體,或者是貢獻自己的修補方式, 以補足自己系統的安全性。而服務開發/維護團體在接到這樣的通報之後,會在最短的時間內進行程式修改, 並且在網際網路上面進行通報與釋出該漏洞的修補程式。
然而在這個漏洞通報出來之後,與修補程式釋出之前的空窗期,某些惡意的 cracker 就會針對這樣的漏洞進行攻擊, 這些 cracker 同樣是撰寫程式來攻擊該漏洞,同時取得被攻擊主機的控制權,或者是植入木馬程式在受攻擊的主機上。 這些 cracker 與高級駭客不同的地方,在於他們會很驕傲的將攻擊的成果貼在一些 cracker 常上的網站, 藉以推銷自己,同時,也會將他們撰寫的惡意程式散播到 Internet 上面。 有些有心人士就會將這些惡意程式收集起來,做成程式包,並使這些程式包更加流行於 Internet 上面, 這些惡意的程式包就被稱為 root kit 咯。
RootKit 能作的攻擊真是林林總總的說不完!最常見的就是直接以 rootkit 刺探被攻擊主機的服務漏洞, 如果被攻擊主機『剛好』有此漏洞,那麼該主機的控制權就可能會被 Cracker 所取得。另外, 若該主機被取得控制權之後,為方便 cracker 未來做為跳板之用,因此他可能會利用其他的 rootkit 將被攻擊主機的某些程式換掉,舉例來說,我們曉得觀察主機的一些資訊可以用 ps, ls, top, w 等等的程式,cracker 為了保障自己的入侵不會被真正的系統管理員得知,就會將這些程式換掉, 讓原本的系統管理員無法知道目前系統正在跑的程序裡面,是否有一些不明的程序存在。
如何防止 rootkit 的攻擊
這樣還不夠喔!因為 rootkit 也很可能會偽裝成 Internet 上面合法的軟體, 來吸引您安裝他。例如前幾年,著名的 OpenSSL 網站上所提供的套件竟然被發現已經被 cracker 置換掉~ 所以,在您安裝取得的套件之前,請先以 MD5 或者其他指紋資料進行檔案的比對, 以確定該檔案是沒有問題的。當然,最好還是不要安裝來路不明的套件較好。
而為了確認一下我們的主機是否被 rootkit 程式包所攻擊, 其實我們還可以透過其他的軟體工具來檢查主機的某些重要程式,例如前面提到的 ps, top 等等的。 這就是我們這篇文章要提到的 rootkit hunter 囉。
Root Kit Hunter 能作什麼?
- 利用 MD5 指紋分析:
記得我們在 基礎學習篇 裡面有提到那個 MD5 的東西吧?簡單的來說,每個檔案都有自己的指紋資料,這個指紋資料是利用雜湊演算的方式來得到一組 MD5 編碼,當這個檔案被更動過,那怕是只改了一個字元,而整個檔案的容量大小不變, 他的 MD5 編碼還是會不同的。因此,若我們在系統安裝完畢之後,立即建立重要檔案的 MD5 資料庫, 然後再以分析工具定期去分析該重要檔案的 MD5 編碼,若有不同,則顯示該檔案被變動過, 此時自然就需要瞭解瞭解為何會被更動了。利用這個特性, rkhunter 在釋出的時候,就已經收集了各大知名的 Linux distributions 的重要檔案的 MD5 編碼(例如 login, ls, ps, top, w 等等檔案), 並製作成資料庫,然後,當我們安裝好了 rkhunter 並且執行之後, 他就會利用原本資料庫的資料去與我們系統的相關檔案進行比對, 若比對的結果有問題,則會顯示警示文字,提供系統管理員分析。
- 檢查 rootkit 經常攻擊的檔案:
如同前面所說的,rootkit 為了偽裝自己或者是為了取得系統控制權,他們會主動的去變更某些重要檔案。 因此,藉由分析這些檔案,我們可以很輕易的就知道該檔案有沒有被竄改過! 這也是 rootkit 很重要的一個分析的方法! - 檢查是否具有錯誤的檔案權限--針對 binary files:
在 基礎學習篇 裡面的 原始碼與 tarball 我們有談到系統裡頭真正會執行的其實是經過編譯的二進位檔案(binary files),因此, 如果木馬程式想要掌握您的系統,那麼竄改的那些重要檔案自然也就是 binary file 囉, 例如 ls, ps, top 等等的。而重點是,系統原本的這些檔案本來都具有比較嚴謹的檔案權限, 例如 /bin/ls 具有的是 -rwxr-xr-x 的 755 權限。不過,很多的木馬程式竄改之後的檔案權限可能都會變成 -rwxrwxrwx 的 777 權限,因此,直接分析這些重要檔案的權限,也可以判斷該檔案是否有問題。 - 檢查隱藏檔案:
有的時候我們為了要讓螢幕的顯示資料較為乾淨,可能會將一些檔案隱藏起來, 在 Linux 底下的隱藏檔案,其實只是在檔名最前面加上一個小數點『.』而已。 木馬程式也可能透過這個一般朋友們比較不容易注意的隱藏檔來隱藏他們的主程式, 因此,rkhunter 也會分析某些不法的隱藏檔,以期找出有問題的檔案。 - 檢查可疑的核心模組(LKM/KLD):
在 基礎學習篇 裡面提到的 核心功能 當中, 可以知道 Linux 的核心功能具有可外掛的特性,也就是 Loadable Kernel Module, LKM 。 而我們也曉得,系統能作什麼是由核心來決定的。因此,惡意程式當然有可能藉由載入核心模組來作怪! 所以囉,rkhunter 也會分析可疑的核心模組。(在 Linux 上面, 我們稱核心模組為 LKM,不過,在 BSD 系列的系統上面,他們稱為 Dynamic Kernel Linker, KLD。) - 作業系統的特殊檢測:
每一種作業系統(Operating System)都有他特殊的檔案格式,例如 Linux 底下,我們可以使用 ps 來檢查 /proc 這個記憶體目錄底下的東西是否一致!?不過,也因為每個作業系統都不相同, 所以這個功能並無法在所有的作業系統上面進行測試的。無論如何, Linux 是有被支援的喔! - 檢查已啟動的監聽埠號:
如果要產生網路連線,則在 Server 端需要啟動監聽的埠號(listening port), 這樣才能監聽來自 Client 端的要求啊!這也是所謂的『後門』(backdoor)程式最常用的方法。 我們知道,要啟動一個 port 來監聽,就必須要執行某個程式才行( 基礎篇之認識系統服務 ) 如果我們的系統被木馬程式入侵,就很有可能被執行一支程式來啟動某項不知名的服務, 而該服務會啟動一些 port ,藉由這些 port 就可以讓 cracker 輕易的連線到我們的主機。 因此, rkhunter 也會分析主機上面的 LISTENING Ports 來解析是否有問題啊~ - 特定分析(String scanner):
某些特定的木馬程式或後門程式,他會在系統上面建立一特殊的檔案或者是目錄, 這些特殊的檔案或目錄的檔名是不變的。 所以,rkhunter 會藉由分析這些特定的檔案或目錄是否在您的系統上面, 以用來判斷您的系統是否有被入侵呢?
除了這些方法之外,在新版的 rkhunter 當中,也加入了針對某些常用套件的版本分析。 舉例來說, Apache 這個套件在 2.0.49 以前的版本已經被發現很多的臭蟲, 因此,一般管理者都會建議大家將系統當中的 Apache 升級到 2.0.50 以後的版本( 截至 2004/11 )。 又例如常見的 SSH/SSL 版本也都有類似的問題。 rkhunter 可以分析您系統上面的這些運作當中的套件, 然後告訴您,您的該套件版本是否可能有問題??但也僅只是『可能』有問題~ 咦!幹嘛多了個『可能』啊?呵呵!因為 rkhunter 並不是萬能的!底下我們來談一談, rkhunter 可能有哪些誤判的嫌疑?
rkhunter 例外的錯誤狀態
除此之外,新版的 rkhunter 有提供套件版本的檢測,如同上一小節提到的。 但是,各主要 distribution 在發現套件的臭蟲後,通常並不是釋出最新版的套件, 而是在原有的版本上面透過 patch 來除去該臭蟲程式,而並不變更版本。 此時,單純的檢測版本是無法知道該版本有沒有經過 patch 的!因此, 如果您的套件版本是已經經過 patch ,但版本卻是舊的,此時 rkhunter 的版本檢測就會出現錯誤判斷了。
因為如此,所以 rkhunter 在使用上面還是有限制的。如果您想要針對某些服務進行更詳細的檢測, 那就必須要使用更複雜的程式,例如 nessus 囉!未來我們會再談到 nessus 的安裝與使用方面。
安裝 rkhunter:
- rkhunter 下載點:http://www.rootkit.nl/projects/rootkit_hunter.html
在該網頁的最下方有個 downloads ,請選擇最新版本來下載。鳥哥這裡以 1.1.8 版進行說明, 您也可以在 鳥哥的網站上下載 。 假設下載下來的檔案放置在 /root 裡面,那麼整個安裝步驟就成為這樣(註:您必須要有 bash shell 喔!)
[root@test root]# cd /usr/local/src |
這樣就安裝完畢了!很簡單吧!此時我們就可以開始以 /usr/local/bin/rkhunter 這支程式來檢測系統了。
檢測系統:
[root@test root]# /usr/local/bin/rkhunter --help |
那麼如何開始檢測?呵呵!就直接按下 /usr/local/bin/rkhunter --checkall 即可!例如:
[root@test root]# /usr/local/bin/rkhunter --checkall |
在終端機使用 rkhunter 來檢測最棒的地方,在於有顏色的顯示,以上表來看, 在括號[]內的字樣,如果是黃色的 OK 表示沒有問題,如果是紅色的!哈哈!那就表示有點問題了! (在本書上以及網頁上的友善列印中,因為列印的問題,所以可能會看不到顏色顯示, 很抱歉~沒辦法~)所以,如果您有看到紅色顯示的字眼時, 務必特別留意喔!
另外,如果您不想要每個部分都以 Enter 來繼續,想要讓程式自動持續執行,可以使用:
/usr/local/bin/rkhunter --checkall --skip-keypress
這樣就會讓程式直接執行到結束喔!另外,如果想要讓程式每日自動執行一次,那就在 /etc/crontab 裡面加入這行:
10 3 * * * root /usr/local/bin/rkhunter --checkall --cronjob
以後就會在 3:10 自動執行一次!不過,因為是 crontab 執行的,所以就不會有顏色的顯示了。
系統修訂:
基本上,官方網站與一般網管老手的建議都一樣,如果被 rootkit 之類的程式包攻擊後 ( 也就是上一節的檢測表中的第二部分所攻擊時 ),那麼最好最好直接重新安裝系統, 不要存在說可以移除 rootkit 或者木馬程式的幻想,因為,『隱藏』本來就是 rootkit 與木馬程式的拿手好戲! 我們不知道到底這個 rootkit 或者木馬程式有多剽悍,為了保險起見,還是重灌系統吧!如何重灌?簡單的說:
- 將原主機的網路線拔除;
- 備份您的資料,最好備份成兩部分,一部份是全部的系統內容,越詳盡越好,包括 binary files 與 logfile 等等, 至於另一部份則可以考慮僅備份重要的資料檔案即可!
- 將上個步驟的資料備份(僅重要資料部分!)進行整體的檢查,察看是否有怪異的資料存在(這部分可能會花去不少時間!)
- 重新安裝一部完整的系統,這包括:
- 將原本的重要資料移動至上個步驟安裝好的系統當中,並啟動原本伺服器上面的各項服務;
- 以 rkhunter/nessus 之類的軟體檢驗系統是否處在較為安全的環境,並且加強防火牆的機制!
- 最後,將原本完整備份的資料拿出來進行分析,尤其是 logfile 部分,試圖找出 cracker 是藉由那個服務?那個時間點? 以那個遠端 IP 連線進入本機等等的資訊,並針對該資訊研擬預防的方法,並應用在已經運作的機器上。
這樣一來,比較能夠保證我們的主機系統可以較為安全一些。至於上頭提到的 nessus 軟體,我們會在未來幾個章節介紹到!
而如果 rkhunter 顯示的訊息裡面,錯誤並非是 rootkit 或者木馬程式所造成的時候,那麼很可能是因為使用者設定上的問題, 或者是系統管理員變動過某些套件所致。舉例來說:
- rootkit 顯示有怪異的檔案名稱(strings file),例如 /dev/.thefile 之類的檔案/目錄存在, 那麼首先,您必須要先確定該檔案/目錄並非是由於 rootkit 所造成的(一般來說,如果 rkhunter 沒有在 rootkit 檢驗部分列出該檔案時,幾乎就都是這一類的 strings file 囉), 果真如此,那麼就移除該檔案吧(確定移除沒有問題喔!若不確定,就備份再移除吧~)
- 在 MD5 檢驗時,發現有 binary file 顯示錯誤!最可能發生此問題的情況,其實不是被入侵,而是系統自動更新套件所致。 鳥哥曾在 Red Hat 9 上面更新過 syslogd 這支程式,沒想到 rkhunter 一直顯示該檔案有問題~ 後來才發現,原來是 syslogd 更新在 rkhunter 之後,而 rkhunter 又沒有更新 MD5 編碼的資料庫, 所以才導致出錯的問題。
那如何解決呢?首先,可以透過更新 rkhunter 的資料庫來取得最新的資訊,如何線上更新?利用:
[root@test root]# rkhunter --update
Running updater... Mirrorfile /usr/local/rkhunter/lib/rkhunter/db/mirrors.dat rotated
Using mirror http://www.rootkit.nl/rkhunter
[DB] Mirror file : Update available
Action: Database updated (current version: 2004081200, new version 2004110700)
[DB] MD5 hashes system binaries : Update available
Action: Database updated (current version: 2004091000, new version 2004110900)
[DB] Operating System information : Update available
Action: Database updated (current version: 2004091100, new version 2004110901)
[DB] MD5 blacklisted tools/binaries : Up to date
[DB] Known good program versions : Update available
Action: Database updated (current version: 2004091000, new version 2004110500)
[DB] Known bad program versions : Update available
Action: Database updated (current version: 2004091000, new version 2004110500)如上所述,我可以將 1.1.8 版本的相關資訊 update 到最新的 2004/11/09 所釋出的版本!然後再去比對一次 MD5 。 如果這個方法還是無法解決您的問題,就只好請您發信詢問 rkhunter 的作者了。
其他的問題解決之道,就請參考上面提供的連結吧! ^_^y 另外,如果您想要讓您的 rkhunter 保持在最新的版本, 利用:
rkhunter --versioncheck
就能夠知道目前作者釋出的最新版本的 rkhunter 囉!很簡單吧!
參考文件
2004/11/16:首次完成
2004/11/16 以來統計人數
鳥哥的 Linux 私房菜的更多相关文章
- 每周一书-《鸟哥的Linux私房菜》获奖公布
<鸟哥的Linux私房菜>一书的赠书活动时间为2016年10月19日到10月31日, 也就是今天结束. 首先要感谢QQ号为:1084830483(路在远方),来自哈尔滨工程大学的同学赠送给 ...
- 每周一书-《鸟哥的Linux私房菜基础学习篇(第四版)》台湾原版,你想要吗?
首先说明,本周活动有效时间为2016年10月19日到2016年10月31日. 目在介绍这本书之前,首先要感谢QQ号为:1084830483(路在远方),来自哈尔滨工程大学的同学赠送给玄魂工作室的 ...
- 《鸟哥的linux私房菜》 - linux命令温故而知新
在公司的某角落里,看到了<鸟哥的linux私房菜>,顿时想看看是什么鬼. 其他时候还要自己去买才有,现在正好,比图书馆方便.看完了,写点啥! 编辑器很重要,一个vim就主要是我的使用方向: ...
- 鸟哥的linux私房菜勘误表
博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://ww ...
- 【Linux】鸟哥的Linux私房菜基础学习篇整理(一)
最近,一直在写PPC的模拟器和汇编器,也在做设计.所以重新看了看<鸟哥的Linux私房菜>,还是有好多命令不太熟悉.就打算写几篇blog记下来. 1. nl [-bnw] filename ...
- 鸟哥的Linux私房菜笔记第四章
前言 对着<鸟哥的Linux私房菜-基础版>做了简化笔记.不想让自己知其然而不知其所然.所以写个博客让自己好好巩固一下,当然不可能把书中的内容全部写下来.在这里就简化一点把命令写下来. 让 ...
- 鸟哥的 Linux 私房菜Shell Scripts篇(一)
参考: http://linux.vbird.org/linux_basic/0340bashshell-scripts.php#script_be http://www.runoob.com/lin ...
- 鸟哥的Linux私房菜——第八章
参考鸟哥的Linux私房菜内容,我只是简单的记录比较重要的知识点,所以排版没怎么注意,如果写的太严肃小白也看不进去吧. 看视频!这篇文章只作为备忘录 视频链接:http://www.tudou.com ...
- 《鸟哥的Linux私房菜》Chapter11 20180726~20180806
目录 1.认识Bash这个shell 1.1.硬件.核心与shell 1.2.系统的合法shell和/etc/shells功能 1.3.Bash shell的功能 1.3.1.命令修编功能 1.3.2 ...
随机推荐
- Hackonacci Matrix Rotations 观察题 ,更新了我的模板
https://www.hackerrank.com/contests/w27/challenges/hackonacci-matrix-rotations 一开始是没想到观察题的.只想到直接矩阵快速 ...
- mysql配置mha高可用防火墙未关闭报错
########################################################################## l 问题背景:检查主从复制之后做高可用报错 [r ...
- ambari-server启动WARN qtp-ambari-client-87] ServletHandler: 563 /api/v1/stacks/HDP/versions/2.4/recommendations java.lang.NullPointerException报错解决办法(图文详解)
问题详情 来源是,我在Ambari集群里,安装Hue. 给Ambari集群里安装可视化分析利器工具Hue步骤(图文详解 所遇到的这个问题. 然后,去ambari-server的log日志,查看,如 ...
- js 宿主对象的属性和方法总结
(1)属性: //height,width; a=document.documentElement.clientHeight; //文档可视高度,由 ...
- CCF|跳一跳
import java.util.Scanner; public class Main { public static void main (String[] args) { Scanner scan ...
- 掌握Spark机器学习库-09.6-LDA算法
数据集 iris.data 数据集概览 代码 package org.apache.spark.examples.examplesforml import org.apache.spark.ml.cl ...
- Java之抽象和封装
① 如何从现实世界中抽象出类? 根据软件开发需求: 发现类-->发现类的属性-->发现类的方法 ② 构造方法的作用和特点是什么? 作用:在创建对象时执行一些初始化操作 ...
- file.seek()
语法:fileObject.seek(offset,whence) offset -- 开始的偏移量,也就是代表需要移动偏移的字节数 whence:可选,默认值为 0.给offset参数一个定义,表示 ...
- python爬虫学习:分布式抓取
前面的文章都是基于在单机操作,正常情况下,一台机器无论配置多么高,线程开得再多,也总会有一个上限,或者说成本过于巨大.因此,本文将提及分布式的爬虫,让爬虫的效率提高得更快. 构建分布式爬虫首先需要有多 ...
- vue之loader处理静态资源
webpack 是利用loader 来处理各种资源的,wepback的配置基本上就是为各种资源文件,指定不同类型的loader. 1,处理css 最基本的css 处理loader 是css-loade ...