一、 模拟木马程序病原体并让木马程序自动运行
黑客让脚本自动执行的三种方法:
计划任务,crontab;开机启动;系统命令被替换,使用命令后被触发。
1、 生成木马程序病原体
[root@xuegod120 ~]# vim /usr/bin/fregonnzkq
#!/bin/bash
touch /tmp/aaa.txt
while true
do
echo date >> /tmp/date.txt
#通过动态查看/tmp/date.txt中显示的时间,可以知道木马在实时运行
sleep 1
done

给脚本增加执行权限
[root@xuegod120 ~]# chmod +x !$
chmod +x /usr/bin/fregonnzkq

将脚本放到后台运行
[root@xuegod120 ~]# fregonnzkq & #因为将脚本写在/usr/bin/目录下,可以直接运行脚本
[1] 4588

使用tail -f动态查看/tmp/date.txt文件
文件每隔一秒种都自动追加一个时间到date.txt文件中

使用kill进程,杀掉刚刚运行的进程
[root@xuegod120 ~]# ps -ef | grep fre
root 4588 4566 0 19:28 pts/2 00:00:00 /bin/bash /usr/bin/fregonnzkq
[root@xuegod120 ~]# kill -9 4588
2、 使用计划任务crontab让木马自动运行
[root@xuegod120 ~]# crontab -e #添加一个计划任务
crontab: installing new crontab
[root@xuegod120 ~]# crontab -l #查看计划任务
1 2 * * * /usr/bin/fregonnzkq & #每天的凌晨2点1分执行这个脚本

如果黑客是使用crontab来让脚本自动运行,可以通话如下步骤来排查:
1) 使用crontab -l查看计划任务
[root@xuegod120 ~]# crontab -l
1 2 * * * /usr/bin/fregonnzkq &

2) 如果使用非root账号添加的计划任务
[root@xuegod120 ~]# crontab -u zx -l #-u后加上想要查询的用户

3) 查询所有用户的计划任务—查看crontab文件
[root@xuegod120 ~]# ll /var/spool/cron/* #可以查看此目录下的文件,root表示root用户添加的计划任务,如果有其它用户添加的计划任务,也会在这里显示
-rw------- 1 root root 32 Aug 24 19:31 /var/spool/cron/root

4) 使用命令查询所有用户的计划任务
[root@xuegod120 ~]# awk -F: ‘{print $1}’ /etc/passwd |xargs -i crontab -u {} -l

3、 系统级别的计划任务中添加木马
1) 系统级别的计划任务
[root@xuegod120 ~]# ll /etc/cron #按tab两次
cron.d/ cron.deny cron.monthly/ cron.weekly/
cron.daily/ cron.hourly/ crontab
注:
crontab #写具体时间的统级别的定时任务
cron.d/ #系统级别的定时任务
cron.daily/ #系统每天要执行计划任务
cron.hourly/ #系统每小时要执行计划任务
cron.monthly/ #系统每月要执行计划任务
cron.weekly/ #系统每周要执行计划任务

[root@xuegod120 ~]# find /etc/cron*
2) 添加系统级别的计划任务
[root@xuegod120 ~]# vim /etc/crontab #在最后追加
01 3 * * * root /bin/workstat &

3) 在每天的系统级别计划任务中添加木马脚本
[root@xuegod120 ~]# vim /etc/cron.daily/
logrotate man-db.cron
[root@xuegod120 ~]# vim /etc/cron.daily/logrotate

运行logrotate脚本
[root@xuegod120 ~]# /etc/cron.daily/logrotate

动态查看/tmp/date.txt文件

脚本开始自动运行

[root@xuegod120 ~]# kill -9 5042 #停止脚本,不然会一直运行

4、 利用MD5sum,检验文件的完整性
1) 查看文件的md5sum值,修改后在进行对比
[root@xuegod120 ~]# md5sum /etc/cron.daily/logrotate #先查看md5值
fdc63b7057623f10b657cdaf998222e6 /etc/cron.daily/logrotate
[root@xuegod120 ~]# vim /etc/cron.daily/logrotate #删除之前添加的一行内容
[root@xuegod120 ~]# md5sum /etc/cron.daily/logrotate #再次查看md5值
6e10e35911b4ba4e2dff44613b56676f /etc/cron.daily/logrotate
注:通过修改文件后,再次查看md5值,可以看到两次结果不同,所以只要对文件修改md5值就会变动,系统级别的计划任务,一般系统安装完毕后就不会变动,我们可以再系统安装完毕后,先备份系统级别计划任务的md5值到一个文件,如果后续服务器被黑,可以再生生成一个md5值,和最原始的进行对比,只要发生变动,就说明是被修改过。

2) 使用find命令批量给系统级别的计划任务生成md5值,并另存为文件
[root@xuegod120 ~]# find /etc/cron* -type f -exec md5sum {} ; > /usr/share/file_md5.v1
[root@xuegod120 ~]# vim /etc/cron.daily/logrotate #模拟黑客修改文件
[root@xuegod120 ~]# find /etc/cron* -type f -exec md5sum {} ; > /usr/share/file_md5.v2

将两个md5文件进行对比
[root@xuegod120 ~]# diff /usr/share/file_md5.v1 /usr/share/file_md5.v2

5、 通过开机启动脚本运行木马
[root@xuegod120 ~]# vim /etc/rc.local
echo /tmp/text.txt #在最后添加一行命令
[root@xuegod120 ~]# bash /etc/rc.local #运行脚本测试,正常是开机自动运行
/tmp/text.txt #会执行我们刚刚添加的命令
注:需要注意的是,通常vim打开一个文件时,看到当前屏幕一片空白后,就认为已经达到文件的最后,而黑客往往会在文件中添加很多空行,以实现隐藏木马程序的目的。

通过命令过滤空行和#号开头的行
[root@xuegod120 ~]# egrep -v “$|#” /etc/rc.local

6、 把木马追加到开机启动服务脚本中
黑客会在开机启动的服务脚本中,例如apache、nginx等脚本中添加启动木马程序的命令
[root@xuegod120 ~]# vim /etc/init.d/network
在:17 . /etc/init.d/functions 之前插入一行
/usr/bin/fregonnzkq &
[root@xuegod120 ~]# systemctl daemon-reload #修改过脚本,所以需要重新加载


重启network服务后,脚本就自动运行了(记得kill掉进程 pkill fregonnzkq )
7、 自己写一个开机启动进程
[root@xuegod120 ~]# vim /etc/init.d/fregonnzkq
#!/bin/sh
#chkconfig: 12345 90 90
#description: fregonnzkq
###END INIT INFO
case $1 in
start)
/usr/bin/fregonnzkq &
;;
stop)
;;
*)
/usr/bin/fregonnzkq &
;;
esac

解释:使用case流程判断语句,将脚本的第一个位置变量传递给脚本,不管输入什么变量都会启动脚本

增加脚本启动权限
[root@xuegod120 ~]# chmod +x /etc/init.d/fregonnzkq
[root@xuegod120 ~]# service fregonnzkq start

[root@xuegod120 ~]# service fregonnzkq stop #输入stop命令后也没有停止脚本

[root@xuegod120 ~]# service fregonnzkq aaa

脚本启动后按照脚本内容自动写入date的输出结果

添加到开机启动列表内,实现开机自启动
[root@xuegod120 ~]# chkconfig --add fregonnzkq
[root@xuegod120 ~]# chkconfig --list fregonnzkq
fregonnzkq 0:off 1:on 2:on 3:on 4:on 5:on 6:off
8、 排查系统服务启动脚本木马的方法
1) 查看当前启动级别的对应目录的启动脚本
[root@xuegod120 ~]# ll /etc/rc3.d/ #重启系统后已经自动启动
K50netconsole S10network S90fregonnzkq

2) 查看所有启动级别对应目录的启动脚本
[root@xuegod120 ~]# ll /etc/rc*/* | grep freg

3) 删除对应启动脚本的方法
[root@xuegod120 ~]# chkconfig --del fregonnzkq
[root@xuegod120 ~]# rm -rf /etc/init.d/fregonnzkq
[root@xuegod120 ~]# ps -ef | grep fr
root 783 1 0 20:32 ? 00:00:00 /bin/bash /usr/bin/fregonnzkq
root 952 1 0 20:32 ? 00:00:00 /bin/bash /usr/bin/fregonnzkq
[root@xuegod120 ~]# pkill fregon
[root@xuegod120 ~]# ps -ef | grep fr

4) 对比法
对比中木马前后的md5值来判断哪个文件被修改过
[root@xuegod120 ~]# find /etc/init.d/ -type f -exec md5sum {} ; > /usr/share/init.d.v1
[root@xuegod120 ~]# find /etc/init.d/ -type f -exec md5sum {} ; > /usr/share/init.d.v2
[root@xuegod120 ~]# diff /usr/share/init.d.v1 /usr/share/init.d.v2

5) 使用find查找中木马的前一天修改过的文件
[root@xuegod120 ~]# find /etc/init.d/ -mtime -1
注:如果没有提前备份相关文件的md5值,可以找一台和当前服务器系统版本一致的服务器,备份相关文件的md5值,然后和中木马的服务器进行对比

9、 使用rpm检查文件的完整性
语法:rpm -V 软件包的名字 #rpm命令检查软件包安装后,生产的所有的文件的完整性
语法:rpm -Vf 命令的绝对路径 #使用 rpm检查命令的完整性
1) 检查httpd软件包的完整性
[root@xuegod120 ~]# yum -y install httpd #安装httpd
[root@xuegod120 ~]# rpm -V httpd
[root@xuegod120 ~]# echo aaa > /usr/sbin/httpd
[root@xuegod120 ~]# rpm -V httpd
S.5…T. /usr/sbin/httpd #httpd命令被修改过

rpm -V弹出的每列消息含意如下:
S file Size 大小不一致
MMode 模式不一致 (包括许可和文件类型)
5 MD5 sum 校验和不一致
DDevice 主从设备号不匹配
L readLink(2) 路径不匹配
UUser 属主不一致
GGroup 所属组不一致
T mTime 修改时间不一致

2) 查看命令是否被修改
[root@xuegod120 ~]# which find
/usr/bin/find
[root@xuegod120 ~]# rpm -Vf /usr/bin/find
[root@xuegod120 ~]# echo aaa >> /usr/bin/find
[root@xuegod120 ~]# rpm -Vf /usr/bin/find
S.5…T. /usr/bin/find

3) 查看系统所有命令是否被修改
[root@xuegod120 ~]# rpm -Va > rpm.check.txt

10、 系统命令被替换
1) 替换命令
[root@xuegod120 ~]# which find
/usr/bin/find
[root@xuegod120 ~]# cp /usr/bin/find /usr/bin/ffind
[root@xuegod120 ~]# rm -rf /usr/bin/find #删除原来的find
[root@xuegod120 ~]# vim /usr/bin/find #插入以下内容
#!/bin/bash
/usr/bin/ffind
echo aaaaa
[root@xuegod120 ~]# chmod +x /usr/bin/find

测试:
[root@xuegod120 ~]# find /boot #说明木马执行成功。

aaaaa

总结:木马定时执行的三种方法
1) 计划任务:crontab和系统级别的计划任务
2) 开机启动,rc.local和开机启动脚本
3) 系统命令替换,定义一个触发事件
二、 生成木马程序父进程实时监控木马
1、 生成木马程序的父进程实现自我检测并允许
生成木马的父进程,利用父进程监控子进程,如果子进程被删除,立即生成一个新的子进程,这就是有些木马进程删除后,有自动生成的问题,原因就是父进程没有删除。
1) 生成一个父进程木马
[root@xuegod120 ~]# vim /bin/workstat
#!/bin/bash
while true
do
a=pgrep fregonnzkq | wc -l #统计当前系统运行了几个木马进程
if [ $a -le 1 ]; then #如查木马进程数小于等1,那么再启动一个子进程,这样可以保障,最少有两个木马子进程在运行
/bin/cp /usr/wke /usr/bin/fregonnzkq #防止子进程文件被删除
/usr/bin/fregonnzkq &
service network restart #防止管理员关闭外网,让木马主动启动网络和外面联系。也可以加上清空防火墙规则的命令
fi
done

2) 运行父进程木马的脚本
执行脚本后,会根据脚本定义的参数,执行木马脚本
给脚本增加执行权限
[root@xuegod120 ~]# chmod +x /bin/workstat
[root@xuegod120 ~]# /bin/workstat &

3) 查看木马进程
[root@xuegod120 ~]# ps -ef | grep fr
root 3949 3944 0 21:18 pts/1 00:00:00 /bin/bash /usr/bin/fregonnzkq
root 4128 1 0 21:18 ? 00:00:00 /bin/bash /usr/bin/fregonnzkq

4) kill木马进程
[root@xuegod120 ~]# pkill fregon
[root@xuegod120 ~]# ps -ef | grep fr #kill之后又自动生成
root 28586 3944 0 21:19 pts/1 00:00:00 /bin/bash /usr/bin/fregonnzkq
root 28765 1 0 21:19 ? 00:00:00 /bin/bash /usr/bin/fregonnzkq

5) 找出父进程木马脚本文件
[root@xuegod120 ~]# yum -y install psmisc #使用pstree命令查询父进程
[root@xuegod120 ~]# pstree | grep freg
|-fregonnzkq—sleep
| `-workstat-±fregonnzkq—sleep
[root@xuegod120 ~]# ps -aux | grep workstat
root 3944 1.6 0.0 113176 1460 pts/1 S 21:18 0:06 /bin/bash /bin/workstat #找到父进程的启动脚本文件
6) kill掉父进程,删除父进程脚本文件
[root@xuegod120 ~]# kill -9 3944
[root@xuegod120 ~]# rm -rf /bin/workstat
[root@xuegod120 ~]# ps -aux | grep workstat #父进程已经停止运行
root 39405 0.0 0.0 112704 960 pts/1 R+ 21:26 0:00 grep --color=auto workstat

7) kill掉子进程,并删除脚本启动文件
[root@xuegod120 ~]# pkill fregon
[root@xuegod120 ~]# ps -aux | grep fregon
root 39554 0.0 0.0 112704 960 pts/1 R+ 21:27 0:00 grep --color=auto fregon
至此木马进程彻底删除,不会再自动生成新的进程

PS:这里如果进程杀掉后,快速有重新生成,可以先将进程stop,找到父进程后,在进行处理。
[root@xuegod120 ~]# /usr/bin/fregonnzkq &
[2] 39617
[root@xuegod120 ~]# ps -aux | grep fregon
root 39617 0.0 0.0 113176 1420 pts/1 S 21:32 0:00 /bin/bash /usr/binfregonnzkq
[root@xuegod120 ~]# kill -STOP 39617
[root@xuegod120 ~]# ps -aux | grep fregon #变成停止状态
root 39617 0.0 0.0 113176 1420 pts/1 T 21:32 0:00 /bin/bash /usr/binfregonnzkq

三、 创建一个root用户都无法删除的木马程序
使用chattr命令,创建root用户都无法删除的文件
参数:
+i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
-i :移除i参数。

1、 创建两个普通文件
[root@xuegod120 ~]# touch hack.sh aa.sh
[root@xuegod120 ~]# ll hack.sh aa.sh
-rw-r–r-- 1 root root 0 Aug 24 21:35 aa.sh
-rw-r–r-- 1 root root 0 Aug 24 21:35 hack.sh

2、 使用chattr命令添加扩展属性
[root@xuegod120 ~]# chattr +i hack.sh

3、 删除文件
[root@xuegod120 ~]# rm -rf hack.sh #无法删除
rm: cannot remove ‘hack.sh’: Operation not permitted
[root@xuegod120 ~]# rm -rf aa.sh

4、 查看扩展权限的属性
[root@xuegod120 ~]# lsattr hack.sh
----i----------- hack.sh
[root@xuegod120 ~]# chattr -i hack.sh #取消扩展权限属性
[root@xuegod120 ~]# lsattr hack.sh
---------------- hack.sh

注:工作中如果某个木马程序不停的运行,可以利用扩展属性,让木马程序没有执行权限。

四、 不让木马程序和外网数据主动通信
木马程序需要不断进行更新,因为服务器会不断的打补丁文件,如果木马不更新就会失效。木马程序需要更新就需要连接外网,可以通过iptables来限定服务器可外部通信。
通过iptables的output链来进行限制,把output链的state的状态全部drop掉,即可。
[root@xuegod120 ~]# iptables -t filter -A OUTPUT -m state --state NEW -j DROP
[root@xuegod120 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP all – 0.0.0.0/0 0.0.0.0/0 state NEW

ping百度无法ping通
[root@xuegod120 ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known

黑客同样可以通过脚本,放行木马程序通信的规则:
iptables -F OUTPUT
iptables -t filter -A OUTPUT -m state --state NEW -j ACCEPT
这样木马就可以上网了。

五、 使用rootkit把木马程序的父进程和木马文件隐藏(centos6系统操作)
1、 rootkit概述
Rootkit概述:Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。我们接下来讲介绍 adore-ng (rootkit其中一种)的使用方法。
adore-ng可以在linux系统下实现:提权,隐藏进程号,隐藏文件等功能
官网:https://github.com/trimpsyw/adore-ng

[root@xuegod150 ~]# cat /etc/redhat-release #使用centos6的系统来做这个实验
CentOS release 6.5 (Final)

2、 通过rootkit隐蔽行踪
1) 安装adore-ng
上传软件包到服务器
[root@xuegod150 ~]# unzip adore-ng-master.zip

安装依赖包
[root@xuegod150 ~]# yum -y install kernel-devel

安装adore-ng
提示错误1:
[root@xuegod150 adore-ng-master]# make
cc -DELITE_UID=2618748389U -DELITE_GID=4063569279U -DCURRENT_ADORE=56 -DADORE_KEY=“fgjgggfd” -DMODIFY_PAGE_TABLES -DFOUR_LEVEL_PAGING ava.c libinvisible.c -o ava
make: cc:命令未找到
make: *** [ava] 错误 127

解决方法:安装gcc gcc-c++
[root@xuegod150 adore-ng-master]# yum -y install gcc gcc-c++

提示错误2:
[root@xuegod150 adore-ng-master]# make
cc -DELITE_UID=2618748389U -DELITE_GID=4063569279U -DCURRENT_ADORE=56 -DADORE_KEY=“fgjgggfd” -DMODIFY_PAGE_TABLES -DFOUR_LEVEL_PAGING ava.c libinvisible.c -o ava
make -C /lib/modules/2.6.32-431.el6.x86_64/build M=/root/adore-ng-master modules
make: *** /lib/modules/2.6.32-431.el6.x86_64/build: 没有那个文件或目录。 停止。
make: *** [adore] 错误 2

解决方法:替换/lib/modules/的软链接
[root@xuegod150 adore-ng-master]# rm -rf /lib/modules/2.6.32-431.el6.x86_64/build
[root@xuegod150 adore-ng-master]# ln -s /usr/src/kernels/2.6.32-754.18.2.el6.x86_64/ /lib/modules/2.6.32-431.el6.x86_64/build

加载模块
[root@xuegod150 adore-ng-master]# insmod adore-ng.ko

2) 测试,查看帮助
[root@xuegod150 adore-ng-master]# ./ava
Usage: ./ava {h,u,r,R,i,v,U} [file or PID]

   I print info (secret UID etc)h hide fileu unhide filer execute as rootR remove PID foreverU uninstall adorei make PID invisiblev make PID visible

3) 演示ava提权功能
创建一个普通用户
[root@xuegod150 ~]# useradd mk
[root@xuegod150 ~]# echo 123456 | passwd --stdin mk

通过ava命令提权,让普通用户mk可以获得root权限
[root@xuegod150 adore-ng-master]# cp -r /root/adore-ng-master /tmp/ #复制木马程序到到/tmp,让普通用户mk可以执行ava命令,方便演示提权
[root@xuegod150 adore-ng-master]# chmod 777 /tmp/adore-ng-master/ -R #让mk普通用户也可以使用木马程序
[root@xuegod150 adore-ng-master]# ssh mk@192.168.1.150 #以普通帐号登录
[mk@xuegod150 ~]$ cd /tmp/adore-ng-master/

使用r命令选项提权
[mk@xuegod150 adore-ng-master]$ ll /etc/shadow #普通用户对shadow没有权限
---------- 1 root root 1071 Apr 7 10:17 /etc/shadow
[mk@xuegod150 adore-ng-master]$ vim /etc/shadow #发现打开,看不到内容,说明没有权限

使用ava提权
[mk@xuegod150 adore-ng-master]$ ./ava r vim /etc/shadow #编辑时,可以写入一些内容,可以正常写入。说明提权成功。

在别一个终端上查看,运行此vim进程的用户身份是root,说明提权成功
[root@xuegod150 ~]# ps -axu | grep shadow
Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.7/FAQ
root 6874 0.1 0.1 10216 2924 pts/3 S+ 04:12 0:00 /usr/bin/vim /etc/shadow
root 6879 0.0 0.0 4024 692 pts/2 S+ 04:12 0:00 grep shadow

3、 隐藏木马程序
1) 创建木马程序并运行
[root@xuegod150 adore-ng-master]# vim hack.sh
#!/bin/bash
while true
do
echo date >> /tmp/date.txt
sleep 1
done
[root@xuegod150 adore-ng-master]# chmod +x hack.sh
[root@xuegod150 adore-ng-master]# ./hack.sh &
[2] 8633
[root@xuegod150 adore-ng-master]# ps -ef | grep hack
root 8633 8467 0 17:31 pts/0 00:00:00 /bin/bash ./hack.sh

2) 隐藏进程
[mk@xuegod150 adore-ng-master]$ ./ava i 8633
56,500,500,56
Adore 1.56 installed. Good luck.
Made PID 6339 invisible.

3) 使用root用户登录,无法看到木马程序
[root@xuegod150 ~]# ps -axu | grep hack.sh #已经找不到木马程序了
扩展:miner 矿工, minerd是一个挖比特币的木马程序 ,很多服务器被黑后,在深夜默默挖矿或被用于流量攻击。

[mk@xuegod150 adore-ng-master]$ cp hack.sh minerd.sh #模拟一个挖矿木马
[mk@xuegod150 adore-ng-master]$ ./minerd.sh &
[2] 4553
[mk@xuegod150 adore-ng-master]$ ./ava i 4553 #隐藏挖矿木马进程,这样管理员就找不出来谁占了CPU了。有一些黑客没有隐藏进程,就会被发现。 如下图,就是阿里云平台上发现的一个木马报警信息。

总结:当黑客隐藏进程后,找不出隐藏的进程,怎么办? 当进程找不到时,可以查找一下被黑那天或前几天产生的新文件,进行分析。重点是可以让黑客在网页上上传文件的目录。如我的网站存储用户上传头像或图片的目录是/var/www/html/images ,那么可以执行:

[root@xuegod150 ~]# find /var/www/html/images -mtime -1 #查找上传的文件

4、 隐藏木马程序文件
实战场景:因为运维人员,可以按时间查出我的木马,所以我们可以把文件隐藏后,再执行木马程序。然后再把进程隐藏了。 这样运维人员,就彻底找不出后门了。

1)创建测试文件
[mk@xuegod150 adore-ng-master]$ mkdir test #创建一个测试目录
[mk@xuegod150 adore-ng-master]$ cd test/
[mk@xuegod150 test]$ echo aaaa > webshell.php #模拟一个木马
[mk@xuegod150 test]$ cat webshell.php
aaaa
[mk@xuegod150 test]$ touch b.php #创建一个普通文件
[mk@xuegod150 test]$ ls
b.php webshell.php

2)隐藏文件
[mk@xuegod150 test]$ /tmp/adore-ng-master/ava h webshell.php
56,500,500,56
Adore 1.56 installed. Good luck.
File ‘webshell.php’ is now hidden.

3)尝试找出来webshell.php
[mk@xuegod150 test]$ ls #没有发现webshell.php文件。
b.php
[mk@localhost test]$ ls -a #使用-a选项也没有发现webshell.php文件
. … b.php

尝试查找最近被黑客修改或创建的文件
[mk@xuegod150 test]$ find ./ -mtime -1 #还是没有发现
[mk@xuegod150 test]$ cat ./webshell.php #黑客手动查看这个文件,还存在此目录下的,因为黑客自己知道文件的名字和路径,所以黑客自己还是可以执行木马的。
恢复出来:
[mk@xuegod150 test]$ /tmp/adore-ng-master/ava u webshell.php
56,500,500,56
Adore 1.56 installed. Good luck.
File ‘webshell.php’ is now visible.

[mk@xuegod150 test]$ ls
b.php webshell.php

总结:有没有办法查找出webshell.php,暂时没有。即使把rootkit木马程序关了,也很难确定所有木马都清除了。如果黑了你系统,能提权成root,能隐藏木马进程,能隐藏文件。 那最好先找出网站中的漏洞,让开发修复一下,然后把系统重安装一下。

六、 检查rootkit
1、 使用rkhunter rootkit猎手来检查rootkit
1)rkhunter概述
rkhunter概述:中文名叫”Rootkit猎人”, rkhunter是Linux系统平台下的一款开源入侵检测工具,具有非常全面的扫描范围,除了能够检测各种已知的rootkit特征码以外,还支持端口扫描、常用程序文件的变动情况检查。 hunter [ˈhʌntə®] 猎人
注: 在centos7下的epel源中有rkhunter安装包, 在centos7上使用这个来检查rootkit 。

2)安装rkhunter和unhide包
rkhunter.noarch #用于扫描rootkit和本地提权漏洞
unhide.x86_64 #用于找到隐藏的进程和TCP / UDP后门端口
[root@xuegod120 ~]# yum install epel-release -y #安装epel源
[root@xuegod120 ~]# yum install rkhunter unhide

3)为基本系统程序建立校对样本,建议系统安装完成后,马上建立校对样本。
[root@xuegod120 ~]# rkhunter --propupd

参数说明:
[root@xuegod120 ~]# rkhunter -h | grep propupd
–propupd [file | directory | Update the entire file properties database
[root@xuegod120 ~]# ls /var/lib/rkhunter/db/ #查看存储样本文件的数据库
[root@xuegod120 ~]# ls /var/lib/rkhunter/db/rkhunter.dat   #样本文件的数据库位置
查看:
[root@xuegod120 ~]# grep passwd /var/lib/rkhunter/db/rkhunter.dat
File:0:/usr/bin/passwd:a92b1b6fb52549ed23b12b32356c6a424d77bcf21bfcfbd32d48e12618785270:25917223:04755:0:0:27832 :1402381676:passwd:0::
权限 文件大小:时间
注:这里面包括了一个文件的基本信息。
[root@xuegod120 ~]# ll /bin/mailx
-rwxr-xr-x 1 root root 392008 Feb 16 2010 /bin/mailx

4)运行rkhunter检查系统
rkhunter主要执行下面一系列的测试:
(1). MD5校验测试, 检测任何文件是否改动.
(2). 检测rootkits使用的二进制和系统工具文件.
(3). 检测特洛伊木马程序的特征码.
(4). 检测大多常用程序的文件异常属性.
(5). 执行一些系统相关的测试 - 因为rootkit hunter可支持多个系统平台.
(6). 扫描任何混杂模式下的接口和后门程序常用的端口.
(7). 检测如/etc/rc.d/目录下的所有配置文件, 日志文件, 任何异常的隐藏文件等等.
(8). 对一些使用常用端口的应用程序进行版本测试. 如: Apache Web Server, Procmail等.
5)模拟黑客在系统中留后门
[root@xuegod120 ~]# echo aaaaaa >> /usr/sbin/useradd #模拟黑客修改命令
[root@xuegod120 ~]# vim aa.sh #模拟黑客创建一个木马程序
#!/bin/bash
sleep 3600
[root@xuegod120 ~]# chmod +x aa.sh
[root@xuegod120 ~]# ./aa.sh &
[root@xuegod120 ~]# ps -axu | grep aa.sh
Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.8/FAQ
root 3251 0.0 0.1 106148 1184 pts/2 S 10:57 0:00 /bin/bash ./aa.sh
root 3255 0.0 0.0 103300 852 pts/2 S+ 10:57 0:00 grep aa.sh
[root@xuegod120 ~]# /root/adore-ng-master/ava i 3251 #故意隐藏aa.sh进程的PID。

6)执行检测命令
[root@xuegod120 ~]# rkhunter --check
等待一会,发现useradd命令被找出来了。

不想要每个部分都以 Enter 来继续,想要让程序自动持续执行,可以使用:
[root@xuegod120 ~]# rkhunter --check --sk
注: --sk 遇到需要按enter的地方,直接跳过

7)在线升级rkhunter
rkhunter是通过一个含有rootkit名字的数据库来检测系统的rootkits漏洞, 所以经常更新该数据库非常重要, 你可以通过下面命令来更新该数据库:
[root@xuegod120 ~]# rkhunter --update

8)检测最新版本
[root@xuegod120 ~]# rkhunter --versioncheck
[ Rootkit Hunter version 1.4.4 ]
Checking rkhunter version…
This version : 1.4.4
Latest version: 1.4.4
总结:使用rkhunter 的检测之后发现很多被黑客修改的地方后,处理被黑的服务器步骤如下:
(1).将原主机的网络线拔除,使用内网排查;
(2).备份数据,把重要的服务安装文件和数据备份;
(3).查看备份的数据中有没有怪异的文件,可以下载本地,使用windows中的杀毒软件,查一下(4).重新安装一部完整的系统,使用yum update更新系统到最新版本
(5). 使用nessus 之类的软件,检验系统是否处在较为安全的状态
(6).将原本的重要数据移动至上个步骤安装好的系统当中,并启动原本服务器上面的各项服务;
(7).配置防火墙的规则
(8).最后,将原本完整备份的数据拿出来进行分析,尤其是 logfile 部分,试图找出黑客是由那个服务?那个时间点? 以那个远程 IP 联机进入本机等等的信息,并针对该信息研拟预防的方法,并应用在已经运作的机器上。

2、 实战:使用Tripwire检查文件系统完整性
Tripwire是目前最为著名的unix下文件系统完整性检查的软件工具,这一软件采用的技术核心就是对每个要监控的文件产生一个数字签名,保留下来。当文件现在的数字签名与保留的数字签名不一致时,那么现在这个文件必定被改动过了。
Tripwire可以对要求校验的系统文件进行类似md5的运行,而生成一个唯一的标识,即“快照”snapshot。当这些系统文件的大小、inode号、权限、时间等任意属性被修改后,再次运行Tripwire,其会进行前后属性的对比,并生成相关的详细报告。

1)下载并安装
[root@xuegod120 ~]# yum install epel-release

安装Tripwire,使用yum:
[root@xuegod120 ~]# yum install tripwire -y
注:tripwire [ˈtrɪpwaɪə®] 绊网

2)配置Tripwire
这一步使用密码为Tripwire生成一个站点(site)密钥和一个本地(local)密钥。这可以帮助保护Tripwire免受未经授权的访问。本地密钥用于数据库文件,站点密钥用于配置文件和策略文件。您需要记住自己给出的密码,因为您更新策略文件或数据库时需要输入这些密码。下面的命令生成密钥:
[root@xuegod120 ~]# tripwire-setup-keyfiles #密码都是123456
[root@xuegod120 ~]# tripwire --init #初始化数据库:生成基准数据库
Wrote database file: /var/lib/tripwire/xuegod120.cn.twd # 这是存储数据的地方

3)配置Tripwire策略
[root@xuegod120 ~]# vim /etc/tripwire/twpol.txt #一般不需要修改,默认就可以了
[root@xuegod120 ~]# ls /etc/tripwire/
site.key tw.cfg twcfg.txt tw.pol twpol.txt xuegod120.cn-local.key
ipython.me-local.key ####加密本地密钥文件
site.key ####加密站点密钥文件
tw.cfg ####加密配置变量文件
tw.pol ####加密策略文件
twcfg.txt ####定义数据库、策略文件和Tripwire可执行文件的位置
twpol.txt ####定义检测的对象及违规时采取的行为

4)添加或修改一些文档
[root@xuegod120 ~]# echo aaa >> /etc/passwd
[root@xuegod120 ~]# useradd kill1 #添加一个用户名为kill1的用户

5)第一次完整性检查,和常用检查参数
[root@xuegod120 ~]# tripwire --check #可以发现以下内容被修改了。
Modified:
“/etc/group”

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

Modified:
“/etc/group-”

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

Modified:
“/etc/passwd”

6)示例及用法
例1:只检查指定的文件或目录
[root@xuegod120 ~]# tripwire --check /etc/passwd
[root@xuegod120 ~]# tripwire --check /etc/
例2:升级基准数据库文件
###升级的目的是很正常的,因为check 是基于基准数据的###
方法1:
[root@xuegod120 ~]# tripwire --init

方法:2
在 /var/lib/tripwire/report 目录中,Tripwire 生成的所有报告文件都是 hostname<date_stamp>.twr 形式的。通过按日期顺序列出文件,简单地选择这次 Tripwire 扫描生成的报告。一旦有了正确的文件,就可以使用下面这个命令更新数据库:
[root@xuegod120 ~]# tripwire --update --twrfile /var/lib/tripwire/report/xuegod120.cn-20171124-234117.twr
执行该命令之后,您就进入了一个编辑器。搜索所报告的文件名。所有侵害或更新都在文件名前面有一个 [x]。该演示中的查找模式如下:
[x] “/etc/passwd”
如果您希望接受这些更改为正当的,则只需保存并退出文件即可。Tripwire 不再报告此文件。如果您想要这个文件不被添加到数据库,那么请删除 ‘x’。
保存文件并退出编辑器时,若有数据库更新发生,会提示您输入密码以完成该过程。如果没有更新发生,那么 Tripwire 会通知您的,并且不需要输入密码。该演示中出现以下提示,因为数据库将被更新:
Please enter your local passphrase: 123456
Wrote database file: /var/lib/tripwire/xuegod120.cn.twd

黑客运行木马原理:
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、重启,查看脚本是否还执行

Linux下手动查杀木马相关推荐

  1. Linux下手动查杀木马过程

    文章目录 1 使用rootkit把木马程序的父进程和木马文件隐藏 (此章节实验需在CentOS 6下进行) 1.1Rootkit概述 1.2实战-通过rootkit隐蔽行踪 1.安装adore-ng ...

  2. Linux 下手动查杀木马过程

    模拟木马程序病原体并让木马程序自动运行 黑客让脚本自动执行的 3 种方法: (1).计划任务: crontab (2).开机启动 (3).系统命令被人替换,定一个触发事件 生成木马程序病原体 # vi ...

  3. Linux 下如何查找木马并处理

    Linux 下如何查找木马并处理 1.cat /etc/passwd 未发现陌生用户和可疑root权限用户. 2.netstat -anp 查看所有进程及pid号,未发现异常连接. 3.last 查看 ...

  4. Linux 下使用杀毒软件clamav扫描木马病毒

    软件安装: sudo apt-get install clamav 然后在控制台下运行:clamscan /home 会报错: LibClamAV Error: cli_loaddb(): No su ...

  5. linux下多进程编程简介

    两年前的文章,拿过来充充门面. ------------------------ linux下多进程编程简介 ( 作者:mikespook | 发布日期:2002-12-8 | 浏览次数:272 ) ...

  6. Linux下一种 ELF 文件的代码签名验证机制

    1 引言 随着 Linux 的不断发展,已有越来越多的人开始推广和使用 Linux,其安全性也受到越来越多的挑战.ELF(Executable and Linkable Format)[1]作为 Li ...

  7. linux服务器杀毒软件命令,悬镜Linux服务器卫士-木马查杀详解

    原标题:悬镜Linux服务器卫士-木马查杀详解 今天悬镜小编详细给大家讲解下悬镜管家中-木马查杀功能的使用情况. 对于WebShell的理解,"Web"显然需要服务器开放Web服务 ...

  8. 如何监控和保护Linux下进程安全

    通过综合采用用户级别的top.ps等系统工具以及Linux内核防护技术,我们可以从用户/内核两个层次全方位地保护Linux系统中重要系统进程以及用户进程的安全性,从而达到保护Linux系统安全的目的 ...

  9. Linux下各种后门和日志工具详解

    攻入Linux系统后,很多入侵者往往就开始得意忘形了.这其中还有一个原因,就是技术性也要求更高了.下面,我们来看看一些常用的经典工具.ChinaUnix个人空间DQOqY'{TChinaUnix个人空 ...

最新文章

  1. 刻意练习:Python基础 -- Task05. 函数与Lambda表达式
  2. WDS配置时遇到的问题
  3. python django 动态网页_使用Django创建动态页面
  4. 【⌛工欲善其事,必先利其器⏳】葵花宝典の费曼学习法
  5. httpd 分页_更改 Apache httpd.conf 配置文件
  6. java固定资产管理系统_基于jsp的固定资产管理系统-JavaEE实现固定资产管理系统 - java项目源码...
  7. 在ASP.NET中加密页面机制
  8. linux 离线安装node.js,Linux上离线安装node.js、Newman、newman-reporter-html
  9. 如何将wav转为mp3格式,wav中间mp3步骤
  10. 【转】图解领带的打法10种
  11. poj-2905 The Pilots Brothers' refrigerator
  12. 用HTML5技术打造跨平台大型网游
  13. 解决react脚手架运行后多出来很多webpack的日志
  14. 用nginx搭建视频链接
  15. 移动端浏览器触摸事件@touchstart=“touchstart“ @touchend=“touchend“ @touchmove=“touchmove“
  16. RK3568平台开发系列讲解(设备驱动篇)中断下文之tasklet的使用
  17. Flink的State详解(1)
  18. 联邦学习FATE框架安装搭建 - CentOS8
  19. c语言中长整型的作用,C语言,整形和长整型都占四个字节?
  20. 程序猿修炼之道-书评

热门文章

  1. ftl模板导出excel_freemarker导出Excel
  2. SpringBoot 报错锦集
  3. 国产之光AT2401C完全取代替代RFX2401C直接兼容软件硬件
  4. 《自控力》读后感——意志力与认识自己
  5. bootstrap4.0图标使用_详解Bootstrap glyphicons字体图标
  6. 虚幻4和Unity3D应该学哪个
  7. 如何在Chrome浏览器中导入和导出密码
  8. 消费者理论:效用函数
  9. ADO.NET Data Providers
  10. 清茶一杯-手机、电子阅读器和生活