Linux下手动查杀木马 Linux命令之rpm Linux命令之chattr

(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

猜你喜欢

转载自www.cnblogs.com/diantong/p/11407526.html