linux系统被黑客入侵排查思路
root@linux-szge:/var/spool/cron # cd tabs/ total 8 -rw-r--r-- 1 root root 3467 Feb 16 11:39 root -rw-r--r-- 1 root root 3467 Jan 17 10:58 xiaofei
所有用户的计划任务,都会在这个目录下产生对应的文件
黑客:通过crontab , 篡改一个系统级别的计划任务
root@linux-szge:/var/spool/cron/tabs # ls /etc/cron cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ cron.weekly/ crontab
注:
cron.d 系统级别的定时任务
cron.daily 系统每天要执行的计划任务
cron.hourly 系统每小时要执行的计划任务
cron.monthly 系统每月要执行的计划任务
cron.weekly 系统每周要执行的计划任务
测试:
[root@linux-szge ~]# vim /etc/cron.daily/tmpwatch
#! /bin/sh flags=-umc /usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \ -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \ -X '/tmp/hsperfdata_*' -X '/tmp/.hdb*lock' -X '/tmp/.sapstartsrv*.log' \ -X '/tmp/pymp-*' 10d /tmp /usr/sbin/tmpwatch "$flags" 30d /var/tmp for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do if [ -d "$d" ]; then /usr/sbin/tmpwatch "$flags" -f 30d "$d" fi done echo test #添加一行
[root@linux-szge ~]# /etc/cron.daily/tmpwatch test
注:说明添加木马成功了
排查篡改木马的方式:
使用md5值去排查 (通过对比md5值去判断文件是否修改)
修改前 [root@linux-szge ~]# md5sum /etc/cron.daily/tmpwatch 5dcd732b139638ed23a0e6dd7ca7a784 /etc/cron.daily/tmpwatch
修改后 [root@linux-szge ~]# md5sum /etc/cron.daily/tmpwatch 5acb09733d49c4befaf0b0ef382eed67 /etc/cron.daily/tmpwatch
对/etc/cron*下所有文件都生成md5值,记录到/usr/share/file_md5.v1文件中,方便发现问题时去对比
[root@linux-szge ~]# find /etc/cron* -type f -exec md5sum {} \; > /usr/share/file_md5.v1 [root@linux-szge ~]# cat /usr/share/file_md5.v1 367636170f3ac44df6a117e3cbf7e4ba /etc/cron.d/raid-check 4b98b6b029e76aa6e0fa3fde2ec5572a /etc/cron.d/0hourly b904bdae184e1d37d52b04dd28bd4ea6 /etc/cron.d/sysstat 5acb09733d49c4befaf0b0ef382eed67 /etc/cron.daily/tmpwatch 723dc41aa3e09723762b7d6c5966414b /etc/cron.daily/mlocate.cron 55735e2ab5f2052f7e885bca1230332e /etc/cron.daily/logrotate 54d753840882c7ec71313fe6bfba1225 /etc/cron.daily/cups d05fe6bf89faa69ffc11a8aab2519f15 /etc/cron.daily/readahead.cron de7d9c2df94e20af5aa401e708c3119d /etc/cron.daily/prelink 79937e0e1cb83fad092c4f8252827225 /etc/cron.daily/makewhatis.cron d41d8cd98f00b204e9800998ecf8427e /etc/cron.deny 0033096afd5c735bc99821f847bd61a2 /etc/cron.hourly/0anacron 2b843bf5238314a659b51ea6061ca611 /etc/cron.monthly/readahead-monthly.cron 4f2aaa54c48dda350f75da151f79ae57 /etc/crontab
对比方式(当感觉出现问题时,记录新的md5值到/usr/share/file_md5.v2文件中):
#! /bin/sh flags=-umc /usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \ -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \ -X '/tmp/hsperfdata_*' -X '/tmp/.hdb*lock' -X '/tmp/.sapstartsrv*.log' \ -X '/tmp/pymp-*' 10d /tmp /usr/sbin/tmpwatch "$flags" 30d /var/tmp for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do if [ -d "$d" ]; then /usr/sbin/tmpwatch "$flags" -f 30d "$d" fi done echo test echo test2 #再次修改文件,方便对比效果 ~
[root@linux-szge ~]# /etc/cron.daily/tmpwatch test test2 [root@linux-szge ~]# md5sum /etc/cron.daily/tmpwatch 36abcd1a234e1c50185734627bd6e1b5 /etc/cron.daily/tmpwatch
开始对比,可以发现md5值发生变化
[root@linux-szge ~]# find /etc/cron* -type f -exec md5sum {} \; > /usr/share/file_md5.v2 #新的md5记录到文件 [root@linux-szge ~]# diff /usr/share/file_md5.v1 /usr/share/file_md5.v2 4c4 < 5acb09733d49c4befaf0b0ef382eed67 /etc/cron.daily/tmpwatch --- > 36abcd1a234e1c50185734627bd6e1b5 /etc/cron.daily/tmpwatch
查看开机启动进程:
/etc/rc.local 这个是开机启动脚本
[root@linux-szge ~]# vim /etc/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local echo tt #插入这个内容
排查方式:(有些黑客会在文件中打出很多空行以至于你看不出来黑客所添加的内容)
那么我们怎么去排查呢?(使用grep)
[root@linux-szge ~]# grep -v ^$ /etc/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local echo tt
利用开机启动的服务器脚本来加载木马程序,把木马程序脚本写到已经存在的开机启动服务中。例如:http(apache web 服务器启动脚本等)
[root@linux-szge ~]# cp /etc/init.d/network /etc/init.d/test [root@linux-szge ~]# vim !$ #! /bin/bash # # network Bring up/down networking # # chkconfig: 2345 10 90 # description: Activates/Deactivates all network interfaces configured to \ # start at boot time. # ### BEGIN INIT INFO # Provides: $network # Should-Start: iptables ip6tables # Short-Description: Bring up/down networking # Description: Bring up/down networking ### END INIT INFO # Source function library. touch /tmp/txt #删除原来脚本内容,写成自己的木马程序
排查方法
方法1:对比其他服务器的配置文件,利用MD5值进行对比
方法2:查看被黑当天生成或修改的文件
查看被前一天到现在修改的文件 [root@linux-szge ~]# find /etc/cron.daily/* -mtime -1 /etc/cron.daily/tmpwatch
方法3:使用rpm检查文件完整性
语法:rpm -V 软件包的名字 #使用rpm检查这个软件包所生成的文件的完整性
语法:rpm -Vf 命令的绝对路径 #使用rpm检查命令的完整性