Ubuntu 安全檢查(後門檢測)
3個程序:
chkrootkit 可以掃描rootkits rkhunter 可以掃描rootkit backdoor sniffer exploit unhide 可以發現隱藏的進程和端口
1) chkrootkit的使用
chkrootkit是Check Rootkit的簡稱,可以檢測到60多種常見的rootkit、蠕蟲和LKM(Linux Kernel Module)等有害程序,列表:http://www.chkrootkit.org。
安裝:
1
|
apt-get
install
chkrootkit |
參數:
-l 顯示可用的掃描對象 -d 調試 -q 安靜模式 -x 專家模式 -r dir 將dir所指定的目錄作爲root目錄 -p dir1:dir2:dirN 指定掃描過程中要使用的程序的路徑 -n 不掃描掛載的NFS分區
用法:
1
2
3
4
5
6
7
8
9
10
11
|
#檢查ps
ls 和cron命令是否被感染 sudo
chkrootkit ps
ls
cron #如果不指定掃描對象,就會掃描所有對象 sudo
chkrootkit #加上-q選項後就進入安靜模式,只有被感染的才顯示 sudo
chkrootkit –q #如果使用-x選項,程序會調用/usr/bin/strings將掃描對象中所有可疑字符串打印處理 sudo
chkrootkit –x su
| less |
chkrootkit在運行過程中,會調用系統中的awk cut egrep find head id ls netstat ps strings sed uname等命令。如果擔心這些命令已經被感染,那麼可以使用-p選項指定這些程序的路徑。可以把這些/bin /sbin /usr/bin等目錄放到一個ISO文件中(只讀),然後mount這個iso文件。
然後:
1
|
sudo
chkrootkit –p /cdrom/bin : /cdroom/sbin : /cdrom/usr/bin |
最好的檢查方法,則是從一臺確認安全的機器上,將被入侵的機器的文件系統掛載過來,使用-r選項指定root目錄:
1
|
sudo
chkrotkit –r /mnt/hdisk |
2) rkhunter的使用
rkhunter是Rootkit Hunter的簡稱,可以檢查幾十種rootkits、backdoors、LKMs、worms,使用rkhunter的—list子命令可以顯示。
安裝
rkhunter依賴MTA(郵件傳輸代理)服務器,選擇postfix(看起來,如果不需要發送郵件,應該不需要安裝):
1
|
apt-get
install
rkhunter postfix mailutils |
安裝完成後,先對其數據進行更新,相當是獲取最新病毒庫:
1
|
sudo
rkhunter --update |
配置
rkhunter的配置文件位於/etc/rkhunter.conf,和chkrootkit相同,rkhunter也可以指定外部命令的路徑。可以通過修改配置文件來指定。配置文件有一項BINDIR,可以將該項修改爲掛載在iso上的路徑:
1
|
BINDIR=” /cdrom/bin
/cdrom/usr/bin
/cderom/sbin
/cdrom/usr/sbin ” |
如果要查看rkhunter都支持哪些掃描項目:
1
|
sudo
rkhunter --list |
要用rkhunter進行檢查,使用-c或者—check即可
1
2
3
4
5
6
7
8
9
|
sudo
rkhunter –c ##檢查完畢後提示 The
system checks took: 1 minute and 18 seconds All
results have been written to the log file
( /var/log/rkhunter .log) One
or more
warnings have been found while
checking the system. Please
check the log file
( /var/log/rkhunter .log) |
可以通過/var/log/rkhunter.log查看掃描結果。
rkhunter在安裝時創建了一個cron任務/etc/cron.daily/rkhunter,每天執行一次。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
cat
/etc/cron .daily /rkhunter #!/bin/sh RKHUNTER= /usr/bin/rkhunter test
-x $RKHUNTER || exit
0 #
source our config .
/etc/default/rkhunter #####省略 #nice調整進程調度優先級,
然後就運行/usr/bin/rkhunter,我們可以提取這行命令出來手動運行(/usr/bin/rkhunter --cronjob --report-warnings-only –appendlog > rk.log ) /usr/bin/nice
-n $NICE $RKHUNTER --cronjob --report-warnings-only --appendlog > $OUTFILE #####省略 |
可以看到,該任務會調用rkhunter的另外一個配置文件/etc/default/rkhunter(. /etc/default/rkhunter),查看該配置文件(這個配置文件只是跟定製是否發送郵件,是否更新病毒庫有關,跟rkhunter運行沒有關係):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
cat
/etc/default/rkhunter #
Defaults for rkhunter automatic tasks #
sourced by /etc/cron.*/rkhunter and /etc/apt/apt.conf.d/90rkhunter # #
This is a POSIX shell fragment # #
Set this to yes to enable rkhunter daily runs 是否每天運行一次,默認爲true #
(default: true) CRON_DAILY_RUN= "" #
Set this to yes to enable rkhunter weekly database updates 每週更新數據庫(病毒庫),默認爲true #
(default: true) CRON_DB_UPDATE= "" #
Set this to yes to enable reports of weekly database updates 每週更新病毒庫後發送報告(默認不發送) #
(default: false) DB_UPDATE_EMAIL= "false" #
Set this to the email address where reports and run output should be sent(發送給那個地址,寫上email地址) #
(default: root) REPORT_EMAIL= "[email protected]" #
Set this to yes to enable automatic database updates 開啓自動更新,默認爲false #
(default: false) APT_AUTOGEN= "false" #
Nicenesses range from -20 (most favorable scheduling) to 19 (least favorable) #
(default: 0) NICE= "0" #
Should daily check be run when running on battery #
powermgmt-base is required to detect if running on battery or on AC power #
(default: false) RUN_CHECK_ON_BATTERY= "false" |
3) unhide的使用
unhide也是一個Rootkit診斷工具,它的功能側重於檢測隱藏的進程和TCP/UDP端口。
1
2
3
4
5
6
7
8
|
sudo
apt-get install
unhide ##查看安裝文件 dpkg
-L unhide /usr/sbin/unhide /usr/sbin/unhide-tcp /usr/share/ * |
安裝完成後有兩個工具,unhide 和 unhide-tcp。
檢測原理
unhide使用3種方法進行檢查(檢查進程),分別是:
>proc 將/proc中的進程和/bin/ps的結果相對比 >sys 將系統調用和/bin/ps的結果相對比 >brute 整個PIDs空間(遍歷,逐個嘗試)
unhide-tcp使用遍歷的方法,掃描所有有效端口,找出那些正在監聽的、在/bin/netstat命令中看不到的隱藏端口。
檢查隱藏進程:
1
2
3
4
5
6
7
8
|
sudo
unhide proc #也可以使用sys方法來進行檢測 sudo
unhide sys 顯示有隱藏進程,不過代表已經被入侵了。 #也可以使用brute方法進行監測 sudo
unhide brute |
監測隱藏的網絡端口
1
|
unhide-tcp |