Linux下手动查杀木马过程

烈酒焚心 提交于 2020-02-12 02:09:46

模拟木马程序病原体并让木马程序自动运行

1 模拟木马程序病原体并让木马程序自动运行

实战:黑客让脚本自动执行的3种方法:
(1)、计划任务: crontab
(2)、开机启动
(3)、系统命令被人替换,定一个触发事件
22.1.1 生成木马程序病原体
[root@zmedu63 ~]# 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@zmedu63 ~]# chmod +x /usr/bin/fregonnzkq
测试:
[root@zmedu63 ~]# fregonnzkq & #可以执行。
[root@zmedu63 ~]# ps -axu | grep freg
Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.8/FAQ
root 4900 0.1 0.1 106152 1252 pts/1 S 16:29 0:00 /bin/bash /usr/bin/fregonnzkq
[root@zmedu63 bin]# kill -9 4900

2 使用计划任务crontab让木马自动运行

[root@zmedu63 ~]# crontab -e #写入以下内容。
1 2 * * * /usr/bin/fregonnzkq &
注:分 时 天 月 周 ,表示每天2点1分,执行命令/usr/bin/fregonnzkq &。* 表每X, 比如: 每天,每月,每周

排查方法:
[root@zmedu63 ~]# crontab -l #查看root用户的计划任务
1 2 * * * /usr/bin/fregonnzkq &

例:黑客以非root用户添加计划任务。 最好使用已经存在系统用户添加。这里使用bin用户来添加
[root@zmedu63 ~]# crontab -u bin -e #写入以下内容
1 * * * * echo “aaaaaaa” >> /tmp/bin.txt
排查:
[root@zmedu63 ~]# crontab -u bin -l
1 * * * * echo “aaaaaaa” >> /tmp/bin.txt

排查:如何所有用户的计划任务? 做黑客要有一个很扎实的基础,还要有一个很好的思维。我们不用遍历/etc/passwd中所有的文件,这太复杂了。因为每个用户的计划任务都有独立的文件。
[root@zmedu63 ~]# ll /var/spool/cron/ #这个目录下存放着所有用户级别的计划任务
total 8
-rw------- 1 root root 42 Nov 12 10:11 bin
-rw------- 1 root root 19 Nov 12 10:06 root
注:所有用户的计划任务,都会在/var/spool/cron/下产生对应的文件。只要看一下这个目录下的文件,就知道哪些用户生成了计划任务。

22.1.2 黑客使在系统级别的计划任务中追加木马
1、查看系统级别的计划任务相关文件
[root@zmedu63 bin]# ls /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@zmedu63 ~]# find /etc/cron* #查看可以添加系统级别的计划任务
例1:系统级别的计划任务
[root@zmedu63~]# vim /etc/crontab #在最后追加
01 3 * * * root /bin/workstat &

例2:添加系统级别的木马程序。 可以追加到系统自带的脚本中,也可以自己新创建一个脚本,放到对应的目录下
[root@zmedu63 ~]# vim /etc/cron.daily/logrotate #在最后添加/usr/bin/fregonnzkq &

测试执行:
[root@zmedu63 ~]# /etc/cron.daily/logrotate #可以执行,这样木马就可以随着tmpwatch执行了

2、排查:利用md5sum ,来检验文件的完整性
语法:md5sum 文件
[root@zmedu63 ~]# md5sum /etc/cron.daily/logrotate #生成文件的MD5值
17856453d7325d7750309910aa64e5ca /etc/cron.daily/logrotate
[root@zmedu63 ~]#vim /etc/cron.daily/logrotate #在最后,添加一些内容
[root@zmedu63 ~]# md5sum /etc/cron.daily/logrotate #再次查看md5值,发现不一样
6152bd26fc26d623eaf9dd551b9faed8 /etc/cron.daily/logrotate
注:所以通过对比MD5值,可以发现文件内容发生了变化。另外,系统级别的计划任务,从安装好系统后,就固定下来,一般情况不会发生改变。

3、如何排查/etc/cron下所有文件有没有被黑客修改或追加?
思路:对所有文件都生成一个md5值库,后期进行对比,可以快速找出被修改的文件。
例2: 对/etc/cron
下所有文件都生成md5值,并存一个md5值
[root@zmedu63 ~]# find /etc/cron* -type f -exec md5sum {} ; > /usr/share/file_md5.v1

[root@zmedu63 ~]# vim /etc/cron.daily/logrotate #模拟黑客在文件的最后添加以下选中的内容后,保存退出。

4、做对比MD5值库
当发现服务器异常时,生成一个新的MD5值库
[root@zmedu63 ~]# find /etc/cron* -type f -exec md5sum {} ; >/usr/share/file_md5.v2

[root@zmedu63 ~]# diff /tmp/file_md5.v1 /tmp/file_md5.v2 #对比两个版本库
< 6152bd26fc26d623eaf9dd551b9faed8 /etc/cron.daily/tmpwatch

a34bbcd2c63889ad2a1ab48d751dc974 /etc/cron.daily/logrotate
注:发现黑客修改了/etc/cron.daily/logrotate文件
扩展:对于windows下杀毒软件的“快速查杀”功能,也可以对操作系统中的关键文件,生成MD5值库,下次查杀时,直接对比MD5值库就可以了。 对于不一样的文件,再进行杀毒。这样效率高。这个思路要有。

注:如果忘提前生成/usr/share/file_md5.v1怎么办?
找一台正常和你服务器系统版本号一样的虚拟机,在虚拟机中生成md5值数据库文件。复制到咱们服务器上,再对比。
总结:过通过计划任务运行木马程序
1、普通计划任务: crontab
2、高级crontab ,篡改一个系统级别的计划任务

22.1.3 通过开机启动脚本运行木马
/etc/rc.local 这个是开机启动脚本
[root@zmedu63 ~]# vim /etc/rc.local #在文档中插入以下红色内容
echo aaaa
[root@zmedu63 ~]# bash /etc/rc.local #测试执行
aaaaa
特例:很多人vim打开一个文件后,看到文档的后面是一片空白,就认为是达到文件的最后了。所以黑客在/etc/rc.local 中添加很多空行,然后在文档最后添加木马程序, 再把光标移动到行首,保存退出。也可以躲避一些运维人员的视线,达到隐藏木马的目的。

排查:过滤掉空行
[root@zmedu63 ~]# grep -v ^$ /etc/rc.local
参数说明: ^$ 表示找出以$结束符开头的行,即空行; -v 表示取反显示

22.1.4 在CentOS 6系统下把木马追加到开机启动服务脚本中
1、把木马程序脚本写到已经存在的开机启动服务中,例如: httpd (apache web服务器启动脚本)
[root@zmedu63 ~]# ls /etc/init.d/ #这个目录下的脚本文件,都是可以开机启动的脚本文件
[root@zmedu63 ~]# vim /etc/init.d/network #添加以下的内容。
在:17 . /etc/init.d/functions 之前插入一行
/usr/bin/fregonnzkq &

2、测试
[root@zmedu63 ~]# service network restart

[root@zmedu63 ~]# ps aux|grep frego #发现木马已经执行了。
root 2829 0.0 0.1 115256 1516 ? S 15:45 0:00 /bin/bash /usr/bin/fregonnzkq

3、更强的黑客:自己写一个开机启动程序
[root@ zmedu63 ~]# vim /etc/rc.d/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

4、赋予启动脚本执行权限,并启动
[root@zmedu63 ~]# chmod +x /etc/init.d/fregonnzkq
[root@zmedu63 ~]# service fregonnzkq start

[root@zmedu63 ~]# ps -axu | grep freg #查看,可以运行
root 3906 0.0 0.1 11640 1396 pts/0 S 15:49 0:00 /bin/bash /usr/bin/fregonnzkq

5、添加到开机自动启动服务列表
[root@zmedu63 ~]# chkconfig --add fregonnzkq
[root@zmedu63 ~]# chkconfig --list fregonnzkq
fregonnzkq 0:关 1:开 2:开 3:开 4:开 5:开 6:关

6、重启测试服务开机启动
[root@zmedu63 ~]# init 6
[root@zmedu63 ~]# ps -axu | grep freg
Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.8/FAQ
root 2213 0.1 0.1 108256 1344 ? S 16:35 0:00 /bin/bash /usr/bin/fregonnzkq

7、排查
[root@zmedu63 ~]# cd /etc/rc3.d/
[root@zmedu63 rc3.d]# ls fre #开机启动,表示系统级别3下开机启动
S90fregonnzkq

8、查看每个系统级别下的启动脚本
[root@zmedu63 etc]# ll /etc/rc*/* | grep fre
lrwxrwxrwx 1 root root 20 Oct 25 16:33 /etc/rc0.d/K90fregonnzkq -> …/init.d/fregonnzkq
lrwxrwxrwx 1 root root 20 Oct 25 16:33 /etc/rc1.d/S90fregonnzkq -> …/init.d/fregonnzkq
lrwxrwxrwx 1 root root 20 Oct 25 16:33 /etc/rc2.d/S90fregonnzkq -> …/init.d/fregonnzkq
lrwxrwxrwx 1 root root 20 Oct 25 16:33 /etc/rc3.d/S90fregonnzkq -> …/init.d/fregonnzkq
lrwxrwxrwx 1 root root 20 Oct 25 16:33 /etc/rc4.d/S90fregonnzkq -> …/init.d/fregonnzkq
lrwxrwxrwx 1 root root 20 Oct 25 16:33 /etc/rc5.d/S90fregonnzkq -> …/init.d/fregonnzkq
lrwxrwxrwx 1 root root 20 Oct 25 16:33 /etc/rc6.d/K90fregonnzkq ->

9、删除木马方法
[root@zmedu63 rc3.d]# chkconfig --del fregonnzkq
[root@zmedu63 rc3.d]# rm -rf /etc/init.d/fregonnzkq

10、排查: 对比法
[root@zmedu63 ~]# find /etc/init.d/ -type f -exec md5sum {} ; > /usr/share/init.d.v1
[root@zmedu63 ~]# find /etc/init.d/ -type f -exec md5sum {} ; > /usr/share/init.d.v2
[root@zmedu63 ~]# diff /usr/share/init.d.v1 /usr/share/init.d.v2

22.1.5 排查方法总结
方法1:对比其他服务器好的配置文件 ,利用MD5值做对比
方法2: 查看被黑当天生成或被修改的文件
[root@zmedu63 ~]# find /etc/init.d/ -mtime -1 #查看被前一天到现在被修改的文件
/etc/init.d/
/etc/init.d/network

以下执行在CentOS 7系统上操作:
22.1.6 使用 rpm检查文件的完整性
语法:rpm -V 软件包的名字 #使用 rpm命令检查软件包安装后,生产的所有的文件的完整性
语法:rpm -Vf 命令的绝对路径 #使用 rpm检查命令的完整性

例1、检查安装完httpd软件包后,哪些文件被人修改了
[root@zmedu63 ~]# yum install -y httpd
[root@zmedu63 ~]# echo aaaa >> /usr/sbin/httpd
[root@zmedu63 ~]# rpm -V httpd #可以看到httpd被修改了
S.5…T. /etc/rc.d/init.d/httpd

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

例2、查看命令有没有被修改
[root@zmedu63 ~]# which time
/usr/bin/time
[root@zmedu63 ~]# rpm -Vf /usr/bin/time
[root@zmedu63 ~]# echo aaaa >> /usr/bin/time #模拟黑客,修改这个文件
[root@zmedu63 ~]# rpm -Vf /usr/bin/time #检查文件,弹出消息,说明文件内容被修改了
S.5…T. /usr/bin/time

例3:系统中有很多命令和软件包,如何校对所有的命令和包?
实战:查看所有rpm安装的软件包,生成命令或文件是否被改过?
例:rpm -Va > rpm_check.txt

22.1.7 系统命令被人替换
例1:黑客修改/替换系统命令 , 查看命令有没有被修改
[root@zmedu63 ~]# which find
/usr/bin/find
[root@zmedu63 ~]# cp /usr/bin/find /usr/bin/ffind
[root@zmedu63 ~]# rm -rf /usr/bin/find #删除原来的find
[root@zmedu63 ~]# vim /usr/bin/find #插入以下内容
#!/bin/bash
/usr/bin/ffind
echo aaaaa
[root@zmedu63 ~]# chmod +x /usr/bin/find

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

aaaaa

总结:
黑客如何让脚本定时执行,有以下三种方法:
1、计划任务: crontab 和系统级别的计划任务
2、开机启动rc.local和开机启动脚本
3、系统命令被人替换,定一个触发事件

排查木马方法总结:
方法1:通过生成md5值数据库,查询文件系统的完整性
方法2: 利用find命令查找下最近被修改过的文件:一般情况下命令文件都很久之前被修改的。
方法3: 被入侵后,检测检测所有rpm -Va 生成的文件是否被改动过

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!