Linux下手動查殺木馬


(1).模擬木馬程序病原體並讓其自動運行

  黑客讓腳本自動執行的3種方法:1.計划任務;2.開機啟動;3.系統命令被人替換,定一個觸發事件。

 1)生成木馬程序病原體

[root@youxi1 ~]# vim /usr/bin/muma  //編寫一個木馬程序病原體
#!/bin/bash
touch /root/a.txt
while true
do
echo `date` >> /root/a.txt
sleep 5
done
[root@youxi1 ~]# chmod +x /usr/bin/muma  //添加執行權限
[root@youxi1 ~]# muma &  //后台運行測試一下
[1] 1440
[root@youxi1 ~]# ps aux | grep muma
root       1440  0.0  0.1 113176  1436 pts/0    S    11:27   0:00 /bin/bash /usr/bin/muma
root       1453  0.0  0.0 112720   984 pts/0    R+   11:27   0:00 grep --color=auto muma
[root@youxi1 ~]# kill -9 1440
[root@youxi1 ~]# cat a.txt
2019年 08月 26日 星期一 11:27:10 CST
2019年 08月 26日 星期一 11:27:15 CST
2019年 08月 26日 星期一 11:27:20 CST
2019年 08月 26日 星期一 11:27:25 CST
2019年 08月 26日 星期一 11:27:30 CST
2019年 08月 26日 星期一 11:27:35 CST
2019年 08月 26日 星期一 11:27:40 CST
[1]+  已殺死               muma

 2)計划任務讓木馬自動執行

  計划任務分為用戶級和系統級。用戶級的計划任務一般使用crontab編輯,會在/var/spool/cron/目錄下產生對應的文件。例如:

[root@youxi1 ~]# crontab -e
no crontab for root - using an empty one
0 1 * * * /usr/bin/muma&
[root@youxi1 ~]# crontab -l
0 1 * * * /usr/bin/muma&
[root@youxi1 ~]# ll /var/spool/cron/
總用量 4
-rw------- 1 root root 25 8月  26 13:27 root
[root@youxi1 ~]# crontab -u bin -e
no crontab for bin - using an empty one
1 1 * * * /usr/bin/muma&
[root@youxi1 ~]# ll /var/spool/cron/
總用量 8
-rw------- 1 root root 25 8月  26 13:30 bin
-rw------- 1 root root 25 8月  26 13:27 root

  所以用戶級的計划任務排查可以直接到/var/spool/cron/目錄下進行。

  系統級的計划任務在/etc/目錄下,其中crontab文件可以寫具體時間的系統級別的計划任務;cron.d/目錄下存放系統級別的計划任務;cron.daily/目錄下存放每天要執行的計划任務;cron.hourly/目錄存放每小時要執行的計划任務;cron.monthly/目錄下存放每月要執行的計划任務;cron.weekly目錄下存放每周要執行的計划任務。

[root@youxi1 ~]# ll -d /etc/cron*
drwxr-xr-x. 2 root root  21 5月  14 09:12 /etc/cron.d
drwxr-xr-x. 2 root root  42 5月  14 09:13 /etc/cron.daily
-rw-------. 1 root root   0 4月  11 2018 /etc/cron.deny
drwxr-xr-x. 2 root root  22 6月  10 2014 /etc/cron.hourly
drwxr-xr-x. 2 root root   6 6月  10 2014 /etc/cron.monthly
-rw-r--r--. 1 root root 451 6月  10 2014 /etc/crontab
drwxr-xr-x. 2 root root   6 6月  10 2014 /etc/cron.weekly
[root@youxi1 ~]# vim /etc/crontab
0 1 * * * root /usr/bin/muma&  //在最后一行添加計划任務,root表示執行身份
[root@youxi1 ~]# vim /etc/cron.daily/logrotate
#!/bin/sh
/usr/bin/muma&  //在已有文件中添加木馬程序,將會隨已有計划任務一起執行

  如果是寫在系統級的計划任務里,那么手動排查將會相對復雜,所以此時需要利用md5sum來檢測文件的完整性。不過需要先生成一個md5值才能進行比較。例如:

[root@youxi1 ~]# md5sum /etc/cron.daily/logrotate  //生成第一個md5
04d1076d298fdac488353768a28fd795  /etc/cron.daily/logrotate
[root@youxi1 ~]# md5sum /etc/cron.daily/logrotate  //可以發現沒有修改的文件,其md5值是不會發生變化的
04d1076d298fdac488353768a28fd795  /etc/cron.daily/logrotate
[root@youxi1 ~]# echo "aaaa" >> /etc/cron.daily/logrotate
[root@youxi1 ~]# md5sum /etc/cron.daily/logrotate  //修改后的文件,其md5值發生了變化
9deae4ec75e0b0ab760749ddf987bf18  /etc/cron.daily/logrotate

  為了能夠全面排查系統級的計划任務,可以在安裝完系統后就生成md5值,在修改系統級計划任務之前對比一下是否有被修改過,然后重新生成新的md5值。例如:

[root@youxi1 ~]# find /etc/cron* -type f -exec md5sum {} \; > file_md5_v1
[root@youxi1 ~]# echo bbbb >> /etc/cron.daily/logrotate
[root@youxi1 ~]# find /etc/cron* -type f -exec md5sum {} \; > file_md5_v2
[root@youxi1 ~]# diff file_md5_v1 file_md5_v2
3c3
< 6e10e35911b4ba4e2dff44613b56676f  /etc/cron.daily/logrotate
---
> f87a8e5f37c698721764b082786208c5  /etc/cron.daily/logrotate

  如果忘記提前生成md5值,那么可以找一台系統版本一樣的服務器,生成md5值數據庫文件,再復制過來進行對比。

 3)開機啟動讓木馬自動執行

  開機啟動有兩種,一種是直接寫到/etc/rc.d/rc.loacl文件中(CentOS7需要自己添加執行權限),另一種是寫到/etc/init.d/目錄下的開機啟動腳本(可以是已有的,也可以是新建的)。

  直接寫入到/etc/rc.d/rc.loacl文件中,例如:

[root@youxi1 ~]# vim /etc/rc.d/rc.local
echo aaaa  //添加到最后一行
[root@youxi1 ~]# chmod +x /etc/rc.d/rc.local  //添加執行權限
[root@youxi1 ~]# bash /etc/rc.d/rc.local  //測試運行
aaaa
[root@youxi1 ~]# egrep -v "^$|^#" /etc/rc.d/rc.local  //有時候黑客會使用很多空行,來造成沒有修改的錯覺,此時就去要排除空行和注釋行
touch /var/lock/subsys/local
echo aaaa

  寫到/etc/rc.d/rc.local文件中的木馬,可以使用命令去除空行和注釋行挨個檢查。

  寫入到/etc/init.d/目錄下已有的開機啟動腳本,例如:

[root@youxi1 ~]# vim /etc/init.d/network
/usr/bin/muma&  //在第17行之前添加一行
[root@youxi1 ~]# rm a.txt
rm:是否刪除普通文件 "a.txt"?y
[root@youxi1 ~]# systemctl daemon-reload  //重新加載啟動腳本
[root@youxi1 ~]# systemctl restart network  //重啟network
[root@youxi1 ~]# ls a.txt
a.txt
[root@youxi1 ~]# ps aux | grep muma
root 2035 0.0 0.1 115300 1540 ? S 16:31 0:00 /bin/bash /usr/bin/muma
root 2463 0.0 0.1 115300 1536 ? S 16:32 0:00 /bin/bash /usr/bin/muma
root 2697 0.0 0.0 112720 984 pts/0 R+ 16:33 0:00 grep --color=auto muma

  也可以自己新建一個啟動腳本,例如:

[root@youxi1 ~]# vim /etc/init.d/httpd  //創建一個自己的腳本
#!/bin/sh
# chkconfig: 12345 90 90
# description: httpd
### END INIT INFO
case $1 in
start)
    /usr/bin/muma&
    ;;
stop)
    ;;
*)
    /usr/bin/muma&
    ;;
esac
[root@youxi1 ~]# chmod +x /etc/init.d/httpd  //添加執行權限
[root@youxi1 ~]# chkconfig --add httpd
[root@youxi1 ~]# chkconfig --list httpd  //查看開機啟動顯示的也是httpd
httpd           0:關    1:開    2:開    3:開    4:開    5:開    6:關
[root@youxi1 ~]# /etc/init.d/httpd start  //啟動測試
[root@youxi1 ~]# ps aux | grep muma
root       3186  0.1  0.1 113176  1436 pts/0    S    16:42   0:00 /bin/bash /usr/bin/muma
root       3201  0.0  0.0 112720   984 pts/0    R+   16:42   0:00 grep --color=auto muma
[root@youxi1 ~]# init 6  //重啟測試
[root@youxi1 ~]# ps aux | grep muma
root       1080  0.0  0.1 115300  1536 ?        S    16:47   0:00 /bin/bash /usr/bin/muma
root       1368  0.0  0.0 112720   984 pts/0    S+   16:48   0:00 grep --color=auto muma

  開機啟動腳本的排查,同樣建議在安裝完系統后就生成md5值,這樣才能檢查出已有的啟動腳本是否被修改過。另外也可以找找啟動級別在3以下的開機啟動,例如:

[root@youxi1 ~]# ls /etc/rc{1..3}.d/
/etc/rc1.d/:
K50netconsole  K90network  S90httpd

/etc/rc2.d/:
K50netconsole  S10network  S90httpd

/etc/rc3.d/:
K50netconsole  S10network  S90httpd

 4)系統命令被更換,觸發事件使木馬自動執行

  替換系統命令,等到使用該命令時觸發木馬程序。例如:

[root@youxi1 ~]# which ls
alias ls='ls --color=auto'
        /usr/bin/ls
[root@youxi1 ~]# cp /usr/bin/ls /usr/bin/lsls
[root@youxi1 ~]# rm -rf /usr/bin/ls  //刪除原有的ls
[root@youxi1 ~]# vim /usr/bin/ls  //編輯一個腳本代替原有的二進制文件
#!/bin/bash
/usr/bin/lsls  #調用ls
/usr/bin/muma&
[root@youxi1 ~]# chmod +x /usr/bin/ls
[root@youxi1 ~]# ls
anaconda-ks.cfg  a.txt  file_md5_v1  file_md5_v2
[root@youxi1 ~]# ps aux | grep muma
root       1094  0.0  0.1 115300  1552 ?        S    09:33   0:00 /bin/bash /usr/bin/muma
root       2089  0.0  0.1 113176  1440 pts/0    S    09:58   0:00 /bin/bash /usr/bin/muma
root       2104  0.0  0.0 112720   984 pts/0    R+   09:58   0:00 grep --color=auto muma

  可以使用rpm -Vf排查命令是否被修改,例如:

[root@youxi1 ~]# rpm -Vf /usr/bin/ls
S.5....T.    /usr/bin/ls

  詳細查看rpm -Vf說明:Linux命令之rpm

 5)總結以上查找木馬程序的方法

  第一種、通過生成md5值,查詢文件系統的完整性;

  第二種、利用find命令查找被入侵當天的所有被修改的文件;

  第三種、通過rpm -Va檢測生成的文件是否被修改過。

(2).生成木馬父進程監控子進程

  制作一個木馬程序父進程

[root@youxi1 ~]# cp /usr/bin/muma /root/  //備份一份木馬程序
[root@youxi1 ~]# vim /usr/bin/father  //創建一個木馬父進程腳本
#!/bin/bash
while true
do
    a=`pgrep muma | wc -l`
    if [ $a -le 1 ];then  #統計木馬進程數是否小於1,確保最少有兩個進程在運行
        /bin/cp /root/muma /usr/bin/  #防止木馬子進程文件被刪除
        /usr/bin/muma&
#可以添加重啟網絡的操作,防止管理員關閉外網,讓木馬主動啟動網絡與外網聯系
#還可以添加清空防火牆規則的操作
    fi
done
[root@youxi1 ~]# chmod +x !$  //添加執行權限
chmod +x /usr/bin/father
[root@youxi1 ~]# /usr/bin/father&  //后台運行木馬程序的父進程
[1] 1381

  查看木馬子進程,並嘗試殺死子進程

[root@youxi1 ~]# ps aux | grep muma
root       1386  0.0  0.1 113176  1380 pts/0    S    13:19   0:00 /bin/bash /usr/bin/muma
root       1394  0.0  0.1 113176  1380 pts/0    S    13:19   0:00 /bin/bash /usr/bin/muma
root       1789  0.0  0.0 112720   984 pts/0    S+   13:19   0:00 grep --color=auto muma
[root@youxi1 ~]# rm -rf /usr/bin/muma
[root@youxi1 ~]# pkill muma
/usr/bin/father: 行 9:  1386 已終止               /usr/bin/muma
/usr/bin/father: 行 9:  1394 已終止               /usr/bin/muma
[root@youxi1 ~]# ps aux | grep muma
root       5001  0.0  0.1 113176  1436 pts/0    S    13:20   0:00 /bin/bash /usr/bin/muma
root       5009  0.0  0.1 113176  1436 pts/0    S    13:20   0:00 /bin/bash /usr/bin/muma
root       6281  0.0  0.0 112720   984 pts/0    S+   13:20   0:00 grep --color=auto muma

  可以看到即使殺死子進程也是會再次啟動的,此時需要使用pstree來查找到木馬程序的父進程

[root@youxi1 ~]# yum -y install psmisc
[root@youxi1 ~]# pstree -up | grep muma  //查找父進程的PID,
           |-sshd(1088)-+-sshd(1347)---bash(1349)-+-father(1381)-+-muma(5001)---sleep(76824)
           |            |                         |              `-muma(5009)---sleep(76825)
[root@youxi1 ~]# ps aux | grep father  //可以查到父進程所在位置
root 1381 1.5 0.1 113172 1416 pts/0 S 13:47 0:00 /bin/bash /usr/bin/father
root 104744 0.0 0.0 112720 980 pts/0 S+ 13:48 0:00 grep --color=auto father
[root@youxi1 ~]# kill -9 1381  //殺死父進程
[root@youxi1 ~]# kill -9 5001
[1]+ 已殺死 /usr/bin/father
[root@youxi1 ~]# kill -9 5009
[root@youxi1 ~]# ps aux | grep muma
root 95105 0.0 0.0 112720 984 pts/0 R+ 13:29 0:00 grep --color=auto muma
[root@youxi1 ~]# vim /usr/bin/father  //然后在通過vim查看父進程,找到木馬病原體
[root@youxi1 ~]# rm -rf /usr/bin/father /root/muma /usr/bin/muma  //最后刪除父進程、病原體文件

  如果嘗試殺死木馬后,木馬進程又快速生成,為了不讓情況變得更糟,可以使用kill -STOP命令使進程停止運行,而不是直接殺死,讓父進程重新產生新的進程。如下:

[root@youxi1 ~]# /usr/bin/muma&
[1] 108058
[root@youxi1 ~]# ps aux | grep muma
root     108058  0.0  0.1 113176  1440 pts/0    S    14:02   0:00 /bin/bash /usr/bin/muma
root     108065  0.0  0.0 112720   984 pts/0    R+   14:02   0:00 grep --color=auto muma
[root@youxi1 ~]# kill -STOP 108058
[root@youxi1 ~]# ps aux | grep muma  //可以看到狀態變為T
root     108058  0.0  0.1 113176  1440 pts/0    T    14:02   0:00 /bin/bash /usr/bin/muma
root     108073  0.0  0.0 112720   980 pts/0    R+   14:03   0:00 grep --color=auto muma

  停止了子進程后再找父進程。

(3).root用戶都無法刪除的文件

  當出現root用戶都無法刪除的文件,需要檢查一下文件是否添加了attr擴展屬性。詳細請看:Linux命令之chattr

  查看文件的attr擴展屬性使用lsattr命令,修改文件的attr擴展屬性使用chattr命令。

  當然也可以使用chmod命令配合chattr命令,讓木馬程序沒有可執行權限。chmod 0000 [木馬文件地址] && chattr +i [木馬文件地址]

(4).rootkit和rkhunter

 1)rootkit概述

  Rootkit是一種特殊的惡意軟件,它的功能是在安裝目標上隱藏自身及指定的文件、進程和網絡鏈接等信息,比較多見到的是Rootkit一般都和木馬、后門等其他惡意程序結合使用。現在公開的Linux Rootkit並沒有多少,最突出的成果圍繞在adore-ng(至少從表面來看在2007年前都沒有更新),和一些雜項,比如suckit,kbeast和Phalanx。adore-ng是rootkit其中一種,可以在linux系統下實現提權、隱藏進程號、隱藏文件等功能。adore-ng下載地址:https://github.com/yaoyumeng/adore-ng(CentOS7以上已經失效,部分CentOS6也失效)。如果想看adore-ng怎么安裝使用請看:https://blog.csdn.net/weixin_41843699/article/details/100060152

  這位也許會成為新的大佬:https://blog.csdn.net/whatday/article/details/99682158

 2)rkhunter概述

  rkhunter中文名叫”Rootkit獵人”, 是Linux系統平台下的一款開源入侵檢測工具,具有非常全面的掃描范圍,除了能夠檢測各種已知的rootkit特征碼以外,還支持端口掃描、常用程序文件的變動情況檢查。

 3)使用rkhunter來檢查rootkit

  安裝rkhunter和unhide包,rkhunter.noarch用於掃描rootkit和本地提權漏洞,unhide.x86_64用於找到隱藏的進程和TCP / UDP后門端口。

[root@youxi1 ~]# cd /etc/yum.repos.d/
[root@youxi1 yum.repos.d]# mkdir backup/
[root@youxi1 yum.repos.d]# mv *.repo backup/  //備份原有yum源
[root@youxi1 yum.repos.d]# wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo    
--2019-08-28 13:43:21--  http://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主機 mirrors.aliyun.com (mirrors.aliyun.com)... 222.188.8.224, 222.188.8.228, 222.188.8.226, ...
正在連接 mirrors.aliyun.com (mirrors.aliyun.com)|222.188.8.224|:80... 已連接。
已發出 HTTP 請求,正在等待回應... 200 OK
長度:2523 (2.5K) [application/octet-stream]
正在保存至: “CentOS-Base.repo”

100%[======================================>] 2,523       --.-K/s 用時 0.002s  

2019-08-28 13:43:21 (1.14 MB/s) - 已保存 “CentOS-Base.repo” [2523/2523])
[root@youxi1 yum.repos.d]# wget -O epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
--2019-08-28 13:46:45--  http://mirrors.aliyun.com/repo/epel-7.repo
正在解析主機 mirrors.aliyun.com (mirrors.aliyun.com)... 222.188.8.228, 222.188.8.227, 222.188.8.226, ...
正在連接 mirrors.aliyun.com (mirrors.aliyun.com)|222.188.8.228|:80... 已連接。
已發出 HTTP 請求,正在等待回應... 200 OK
長度:664 [application/octet-stream]
正在保存至: “epel.repo”

100%[======================================>] 664         --.-K/s 用時 0s      

2019-08-28 13:46:45 (77.0 MB/s) - 已保存 “epel.repo” [664/664])
[root@youxi1 yum.repos.d]# yum list  //刷新
[root@youxi1 yum.repos.d]# yum -y install rkhunter.noarch unhide.x86_64

  為基本系統程序建立校對樣本,建議系統安裝完成后馬上建立校對樣本。--propupd [ file | directory | package ]更新整個文件屬性數據庫(沒有后綴),或驗證文件屬性值。

[root@youxi1 yum.repos.d]# rkhunter --propupd
[ Rootkit Hunter version 1.4.6 ]
File created: searched for 175 files, found 125
[root@youxi1 yum.repos.d]# ls /var/lib/rkhunter/db/  //查看存儲樣本文件的數據庫
backdoorports.dat mirrors.dat rkhunter.dat suspscan.dat
i18n programs_bad.dat rkhunter_prop_list.dat
您在 /var/spool/mail/root 中有郵件
[root@youxi1 yum.repos.d]# ls /var/lib/rkhunter/db/rkhunter.dat  //樣本文件的數據庫位置
/var/lib/rkhunter/db/rkhunter.dat
[root@youxi1 yum.repos.d]# grep passwd /var/lib/rkhunter/db/rkhunter.dat  //底下實際是一行,為了方便說明被我分隔為兩行
File:0:/usr/bin/passwd:a92b1b6fb52549ed23b12b32356c6a424d77bcf21bfcfbd32d48e12615785270:50693267:
04755:0:0:27832:1402381676:passwd:0::
//對照可以發現,上面的04755是權限,0:0是所屬主ID和所屬組ID,27832是文件大小
//1402381676是時間戳,表示自1970.1.1 0:0:0到某個點的秒數,使用工具還原就是2014-06-10 14:27:56
[root@youxi1 yum.repos.d]# stat /usr/bin/passwd 
文件:"/usr/bin/passwd"
大小:27832 塊:56 IO 塊:4096 普通文件
設備:fd00h/64768d Inode:50693267 硬鏈接:1
權限:(4755/-rwsr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
最近訪問:2019-08-28 14:19:11.260734626 +0800
最近更改:2014-06-10 14:27:56.000000000 +0800
最近改動:2019-05-14 09:13:33.944683970 +0800
創建時間:-

  rkhunter主要執行下面一系列的測試:

    A.MD5校驗測試, 檢測任何文件是否改動;

    B.檢測rootkits使用的二進制和系統工具文件;

    C.檢測特洛伊木馬程序的特征碼;

    D.檢測大多常用程序的文件異常屬性;

    E.執行一些系統相關的測試 - 因為rootkit hunter可支持多個系統平台;

    F.掃描任何混雜模式下的接口和后門程序常用的端口;

    G.檢測如/etc/rc.d/目錄下的所有配置文件, 日志文件, 任何異常的隱藏文件等等;

    H.對一些使用常用端口的應用程序進行版本測試. 如: Apache Web Server, Procmail等。

  模擬黑客修改命令,使用rkhunter檢測

[root@youxi1 yum.repos.d]# echo aaaa >> /usr/sbin/adduser
[root@youxi1 yum.repos.d]# rkhunter --check  //如果命令被修改會出現警告,還可以跟隨--sk跳過需要按<Enter>的地方
    /usr/sbin/useradd                                        [ Warning ]

  檢測rkhunter的最新版本,以及在線更新rkhunter

[root@youxi1 yum.repos.d]# rkhunter --versioncheck  //檢測最新版本
[ Rootkit Hunter version 1.4.6 ]

Checking rkhunter version...
  This version  : 1.4.6
  Latest version: 1.4.6
[root@youxi1 yum.repos.d]# rkhunter --update  //在線更新
[ Rootkit Hunter version 1.4.6 ]

Checking rkhunter data files...
  Checking file mirrors.dat                                  [ No update ]
  Checking file programs_bad.dat                             [ No update ]
  Checking file backdoorports.dat                            [ No update ]
  Checking file suspscan.dat                                 [ No update ]
  Checking file i18n/cn                                      [ No update ]
  Checking file i18n/de                                      [ No update ]
  Checking file i18n/en                                      [ No update ]
  Checking file i18n/tr                                      [ No update ]
  Checking file i18n/tr.utf8                                 [ No update ]
  Checking file i18n/zh                                      [ No update ]
  Checking file i18n/zh.utf8                                 [ No update ]
  Checking file i18n/ja                                      [ No update ]

  使用rkhunter 的檢測之后發現很多被黑客修改的地方后,處理被黑的服務器步驟如下:

    A.將原主機的網絡線拔除,使用內網排查;

    B.備份數據,把重要的服務安裝文件和數據備份;

    C.查看備份的數據中有沒有怪異的文件,可以下載本地,使用windows中的殺毒軟件,查一下

    D.重新安裝一部完整的系統,使用yum update更新系統到最新版本

    E.使用nessus 之類的軟件,檢驗系統是否處在較為安全的狀態

    F.將原本的重要數據移動至上個步驟安裝好的系統當中,並啟動原本服務器上面的各項服務;

    G.配置防火牆的規則

    H.最后,將原本完整備份的數據拿出來進行分析,尤其是 logfile 部分,試圖找出黑客是由那個服務?那個時間點? 以那個遠程 IP 聯機進入本機等等的信息,並針對該信息研擬預防的方法,並應用在已經運作的機器上。

(5).使用Tripwire檢查文件系統完整性

  Tripwire是目前最為著名的unix下文件系統完整性檢查的軟件工具,這一軟件采用的技術核心就是對每個要監控的文件產生一個數字簽名,保留下來。當文件現在的數字簽名與保留的數字簽名不一致時,那么現在這個文件必定被改動過了。

   Tripwire可以對要求校驗的系統文件進行類似md5的運行,而生成一個唯一的標識,即“快照”snapshot。當這些系統文件的大小、inode號、權限、時間等任意屬性被修改后,再次運行Tripwire,其會進行前后屬性的對比,並生成相關的詳細報告。

  安裝並配置tripwire

[root@youxi1 yum.repos.d]# yum -y install tripwire
[root@youxi1 yum.repos.d]# tripwire-setup-keyfiles  //生成站點密鑰和本地密鑰
......
(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Enter the site keyfile passphrase:  //站點密碼
Verify the site keyfile passphrase:
......
(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Enter the local keyfile passphrase:  //本地密碼
Verify the local keyfile passphrase:
......
Signing configuration file...
Please enter your site passphrase:   //輸入站點密碼
Wrote configuration file: /etc/tripwire/tw.cfg  //加密配置變量文件
......
Signing policy file...
Please enter your site passphrase:   //輸入本地密碼
Wrote policy file: /etc/tripwire/tw.pol  //加密策略文件
......
[root@youxi1 yum.repos.d]# tripwire --init  //初始化數據庫,生成基准數據庫
Please enter your local passphrase:   //輸入本地密碼
......
Wrote database file: /var/lib/tripwire/youxi1.twd  //數據文件位置
The database was successfully generated.
[root@youxi1 yum.repos.d]# ls /etc/tripwire/
site.key tw.cfg twcfg.txt tw.pol twpol.txt youxi1-local.key

  說明:site.key  加密站點密鑰文件

     tw.cfg  加密配置變量文件

     twcfg.txt  定義數據庫、策略文件和Tripwire可執行文件的位置

     tw.pol  加密策略文件

     twpol.txt  定義檢測的對象及違規時采取的行為

     youxi1-local.key  加密本地密鑰文件

  注意:使用密碼為Tripwire生成一個站點(site)密鑰和一個本地(local)密鑰。這可以幫助保護Tripwire免受未經授權的訪問。本地密鑰用於數據庫文件,站點密鑰用於配置文件和策略文件。您需要記住自己給出的密碼,因為您更新策略文件或數據庫時需要輸入這些密碼。

  創建一個新的文件,修改一個舊的文件,使用tripwire看看能否檢測出來

[root@youxi1 yum.repos.d]# touch /root/a.txt
[root@youxi1 yum.repos.d]# echo aaaa >> /etc/passwd
[root@youxi1 yum.repos.d]# tripwire --check > /root/check
[root@youxi1 yum.repos.d]# vim /root/check  //里面有這樣一段
-------------------------------------------------------------------------------
# Section: Unix File System
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Rule Name: Tripwire Data Files (/var/lib/tripwire)
Severity Level: 100
-------------------------------------------------------------------------------

Added:
"/var/lib/tripwire/youxi1.twd"

-------------------------------------------------------------------------------
Rule Name: Critical configuration files (/etc/passwd)
Severity Level: 100
-------------------------------------------------------------------------------

Modified:  //被修改的
"/etc/passwd"

-------------------------------------------------------------------------------
Rule Name: Root config files (/root)
Severity Level: 100
-------------------------------------------------------------------------------

Added:  //被添加的
"/root/a.txt"
"/root/check"

Modified:
"/root"
"/root/.viminfo"

  如果想只檢測指定目錄或文件,只要在--check后面直接添加即可,例如tripwire --check /etc/passwd。

  升級基准數據庫有兩種方法:

    第一種,使用初始化命令tripwire --init;

    第二種,在/var/lib/tripwire/report目錄下,Tripwire檢測生成的所有報告文件都會以<hostname>-<date_stamp>.twr形式保留。通過按日期順序列出文件,簡單地選擇這次 Tripwire 掃描生成的報告。一旦有了正確的文件,就可以使用下面命令更新基准數據庫:tripwire --update --twrfile /var/lib/tripwire/report/<hostname>-<date_stamp>.twr。執行該命令之后,您就進入了一個編輯器。搜索所報告的文件名。所有侵害或更新都在文件名前面有一個 [x]。該演示中的查找模式如下:[x] "/etc/passwd"。如果您希望接受這些更改為正當的,則只需保存並退出文件即可。Tripwire 不再報告此文件。如果您想要這個文件不被添加到數據庫,那么請刪除 '[x]'。保存文件並退出編輯器時,若有數據庫更新發生,會提示您輸入密碼以完成該過程。如果沒有更新發生,那么 Tripwire 會通知您的,並且不需要輸入密碼。

   第二種升級基准數據庫詳細演示如下:

[root@youxi1 yum.repos.d]# ls /var/lib/tripwire/report/
youxi1-20190828-162007.twr  youxi1-20190828-162407.twr
youxi1-20190828-162214.twr  youxi1-20190828-162513.twr
youxi1-20190828-162337.twr  youxi1-20190828-162623.twr
youxi1-20190828-162356.twr  youxi1-20190828-162846.twr
[root@youxi1 yum.repos.d]# tripwire --update --twrfile /var/lib/tripwire/report/youxi1-20190828-162846.twr
//會進入一個類似vim的界面
...... =============================================================================== Object Summary: =============================================================================== ------------------------------------------------------------------------------- # Section: Unix File System ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Rule Name: Tripwire Data Files (/var/lib/tripwire) Severity Level: 100 ------------------------------------------------------------------------------- Remove the "x" from the adjacent box to prevent updating the database with the new values for this object. Added: [x] "/var/lib/tripwire/youxi1.twd"  //找到前面有[x]的文件,如果該文件是自己改的就去除前面的[x] ------------------------------------------------------------------------------- Rule Name: Critical configuration files (/etc/passwd) Severity Level: 100 ------------------------------------------------------------------------------- Remove the "x" from the adjacent box to prevent updating the database with the new values for this object. Modified: [x] "/etc/passwd" ------------------------------------------------------------------------------- Rule Name: Root config files (/root) Severity Level: 100 ------------------------------------------------------------------------------- Remove the "x" from the adjacent box to prevent updating the database with the new values for this object. Added: [x] "/root/a.txt" [x] "/root/check" Modified: [x] "/root" [x] "/root/.viminfo"
......
//:wq保存退出編輯
Please enter your local passphrase:  //輸入本地密碼
Wrote database file: /var/lib/tripwire/youxi1.twd

(6).總結

  黑客運行木馬原理:

    1、生成是病原體

    2、通過腳本每隔1分鍾自動檢測一次,如果木馬程序不存在,就從病原體復制一份兒到某個目錄,然后執行副本木馬,生成一個隨機命名的程序。把副本放到系統計划任務多個路徑下

    3、修改自啟動配置chkconfig --add xxx

    4、修改自啟動項/etc/rc.local

排查解決方法:

    1、刪除病原體以及其副本

    2、刪除系統計划任務中可疑的程序

    3、刪掉自啟動服務的腳本chkconfig --del xxx

    4、刪掉可疑的自啟動項:vi /etc/rc.local

    5、刪除/etc/crontab下可疑的任務

    6、刪除/etc/cron*下可疑的sh腳本

    7、重啟,查看腳本是否還執行

參考:https://blog.csdn.net/weixin_41843699/article/details/100060152


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM