(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

Linux下手动查杀木马的更多相关文章

  1. Linux下XordDos木马的清除

    朋友的阿里云服务器一早上报木马入侵,找我处理,登陆阿里云查看警告信息“恶意进程(云查杀)-XorDDoS木马”, 本文也可以作为服务器处理木马排查的步骤的参考文章 排查原则: 1.一般的木马都有多个守 ...

  2. Linux安全:Linux如何防止木马

    (一)解答战略 去企业面试时是有多位竞争者的,因此要注意答题的维度和高度,一定要直接秒杀竞争者,搞定高薪offer. (二)解答战术 因为Linux下的木马常常是恶意者通过Web的上传目录的方式来上传 ...

  3. windows下的c语言和linux 下的c语言以及C标准库和系统API

    1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作 ...

  4. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

  5. Linux下发包处理

    Linux下发包处理: 1.用top分析工具来查看哪个进程占用的CPU资源比较大  2. 通过命令来查看都是那些端口被占用了   netstat -antp | more  3.在top里面查看到的异 ...

  6. Linux下DedeCMS详细安全设置

    经常会听到使用dedecms的站长抱怨,网站又被挂马了,dedecms真的很不安全.dedecms可能存在某些漏洞这不假,但主要责任真的是dedecms吗?我们知道,一个黑客想上传木马,首先得可以找到 ...

  7. LINUX下渗透提权之嗅探技术

    内网渗透在攻击层面,其实更趋向于社工和常规漏洞检测的结合,为了了解网内防护措施的设置是通过一步步的刺探和经验积累,有时判断出错,也能进入误 区.但是如果能在网内进行嗅探,则能事半功倍,处于一个对网内设 ...

  8. Linux下的/etc/crontab文件和crontab -e命令区别及Crontab命令详解(转)

    /etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see crontabs # Example of job definition: # .- ...

  9. NodeJs在Linux下使用的各种问题

    环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...

随机推荐

  1. java 如何遍历Map对象

    内容介绍 在java中遍历Map对象的方法. Map对象 Map<String,Object> map = new HashMap<>(); map.put("xia ...

  2. Chrome抓包小技巧

    1.抓包时如果有页面跳转,记得把preserve log这个选项勾上

  3. Qt文件读写操作

    原文地址:https://www.cnblogs.com/flowingwind/p/8336159.html QFile Class 1.read读文件 加载文件对象  QFile file(&qu ...

  4. C# 异步编程(async&await)

    同步:同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去 异步:异步是指进程不需要一直等下去,而是继续执行下面的操作 ...

  5. 【mssql】增删改查笔记

    一.插入数据 1.插入数据返回当前主键ID 当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1. 先 select max(id) +1 , ...

  6. (31)Vue安装

    在使用Vue的时候,推荐安装Vue Devtools https://github.com/vuejs/vue-devtools#vue-devtools Browser devtools exten ...

  7. LOJ2434. 「ZJOI2018」历史 [LCT]

    LOJ 思路 第一眼看似乎没有什么思路,试着套个DP上去:设\(dp_x\)表示只考虑\(x\)子树,能得到的最大答案. 合并的时候发现只有\(x\)这个点有可能做出新的贡献,而做出新贡献的时候必然是 ...

  8. 本地spark报:java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/FileDescriptor;

    我是在运行rdd.saveAsTextFile(fileName)的时候报的错,找了很多说法……最终是跑到hadoop/bin文件夹下删除了hadoop.dll后成功.之前某些说法甚至和这个解决方法自 ...

  9. JS 中的prototype、__proto__与constructor

    我们需要牢记两点: ①__proto__和constructor属性是对象所独有的: ② prototype属性是函数所独有的,因为函数也是一种对象,所以函数也拥有__proto__和construc ...

  10. Java SpringBoot使用Redis缓存和Ehcache

    <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http:// ...