1.awk -F: '{if($3==0 || $4==0) {print $0} }' /etc/passwd #查看用户和组为0的用户
2.stat filename 查看可疑文件日期
4.对服务器异常进程进行检查 netstat -anpt,检查异常IP连接,查询ip归属地如果是国外的,查询pid ,lsof -p pid 查看进程打开了哪些文件,查询当前占用cpu 大于30%的进程,top 大写P,检查该进程所在目录,ll /proc/pid,其中cwd是程序运行目录,exe是程序绝对路径,cmdline就是程序运行时输入的命令行命令;environ记录了进程运行时的环境变量;fd目录下是进程打开或使用的文件的符号连接
5.查看系统所有安装包,有没有被修改rpm -Va > rpm_check.txt ,注意 5 S T g ,5代表md5,文件内容被修改,s代表文件长度被改变,T代表修改日期被改变,g代表此文件不是包的本身文件,是多出来的可疑文件。
6.排查开机启动文件/etc/rc.d/rc.local , chkconfig, /etc/profile.d/下的脚本,ls -alt /etc/init.d/ ,是否有多余启动文件,文件修改日期,是否被修改,建议先保存文件属性到txt 方便对比。 ll -Shi /etc/profile.d/ > check_sh.txt 然后对比diff check_sh.txt b.txt
/etc/profile.d/下的脚本
/etc/init.d/下的脚本
/etc/rc.d/rc.local
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile
7.export TIME_STYLE='+%Y-%m-%d %H:%M:%S' 修改日期格式便于观察,或追加到/etc/proflie中永久生效,ll -rt /etc/profile.d 查看启动脚本的修改日期
8.history > check_history 把历史命令追加到文件,然后vim check_history 继续查找可疑的命令如 wget ,ssh, scp ,tar,zip等
9.检查服务器所有账号,cat /etc/login.defs 检查UID的值是否变化
10.ll /var/spool/cron 排查所有的计划任务 ,ls -l /etc/cron.*
[root@centos60 ~]# find /etc/cron* -type f -exec md5sum {} \; >/usr/share/file_md5.v1
[root@centos60 ~]# cat !$
cat /usr/share/file_md5.v1
1638f7fe39f7f52c412e1705a0bc52d1 /etc/cron.d/0hourly
6e10e35911b4ba4e2dff44613b56676f /etc/cron.daily/logrotate
16e73be8fe46a83f7525b59f921e9bab /etc/cron.daily/man-db.cron
d41d8cd98f00b204e9800998ecf8427e /etc/cron.deny
8675eb4a3dba8e20bd6b82c626304556 /etc/cron.hourly/0anacron
c39252b11aad842fcb75e05c6a27eef8 /etc/crontab
怀疑被黑,就加进行下面检查对比计划任务文件是否发生变化
[root@centos60 ~]# find /etc/cron* -type f -exec md5sum {} \; >/usr/share/file_md5.v2
[root@centos60 ~]# diff /usr/share/file_md5.v1 /usr/share/file_md5.v2
2d1
< 6e10e35911b4ba4e2dff44613b56676f /etc/cron.daily/logrotate
3a3
> 7ec41335d7d2860f8e49970f3beb7537 /etc/cron.daily/logrotate
[root@centos60 ~]# egrep -vn '^$|^#' /etc/rc.local #查看文件,排除空行和注释行
13:touch /var/lock/subsys/local
42:/usr/bin/fregonnzkq &
[root@centos60 ~]# sed -i '42d' /etc/rc.local #删除第42行
[root@centos60 rc3.d]# ll /etc/rc*/* #查看所有启动级别
[root@centos60 rc3.d]# ll /etc/rc*/* | grep muma
[root@centos60 rc3.d]# chkconfig --del muma #自启动删除
[root@centos60 rc3.d]# rm -rf /etc/init.d/muma #删除所有启动级别
[root@centos60 rc3.d]# find / -type f -name "muma" #查找硬盘上该文件名的文件
11.检查最近修改过的文件 find ./ -mtime 2 以及 find / -ctime 2 找大前天到现在inode被改动过的文件
[root@centos60 rc3.d]# find /etc/init.d/ -mtime -1 #查找据目前时间为止24小时内(一天以内)被修改过的文件
[root@centos60 rc3.d]# find /etc/init.d/ -mtime -2 #查找据目前时间为止48小时内(2天以内)被修改过的文件
-mtime +2,表示2天以外的,即从距离当前时间(2020-11-21 14:15)的2天前开始算起,往更早的时间推移。因此,距离当前时间的2天为:2020-11-19 14:15,在此前的文件,会被选出来。
-mtime +1,表示1天以外的,即从距当前时间的1天前算起,往更早的时间推移。因此2020-11-20 14:15前的文件属于该结果,2020-11-20 14:15后的文件不属于该结果:
-mtime 2, 表示距离当前时间第2天的文件(前天到昨天),当前时间为2020-11-21 14:15,往前推2天为2020-11-19 14:15,因此以此为时间点,24小时之内的时间为2020-11-19 14:15~2020-11-20 14:15,因此这段时间内的文件会被选中出来
-mtime 1, 距离当前时间第1天的文件(昨天到今天),当前时间为2020-11-21 14:15,往前推1天为2020-11-20 14:15,因此以此为时间点,24小时之内的时间为2020-11-20 14:15~2020-11-21 14:15,因此这段时间内的文件会被选中出来
-mtime -1 表示1天以内的,从距当前时间的1天为2020-11-20 14:15,(昨天到今天)往右推移到目前时间
-mtime -2 表示2天以内的,从距当前时间的2天为2020-11-19 14:15开始,(前天到今天)往右推移到目前时间
12.查询有哪些php文件包含nameseve字符串的 grep -ri "nameseve" --include="*.php" /
13.echo $PATH #检查系统路径
14. arp -a #检查arp记录
15.ifconfig -a #检查网卡
16.ip link | grep PROMISC #网卡不应该存在promisc,存在则可能有嗅探器
16.find / -size +10000k -print #检查大于10M的文件
17.查看隐藏的进程
ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2
如果木马删除不掉,则查看木马的父进程
[root@centos60 ~]# pstree | grep muma
然后追踪父进程,干掉父进程的同时删除子进程
[root@centos60 ~]# ps aux | grep father
vim 看下查出来的父进程
#!/bin/bash
while true
do
a=`pgrep muma | wc -l` #统计当前系统运行了几个木马进程
if [ $a -le 1 ];then #如果木马进程数小于等于1,那么再启动一个子进程,可以保证至少有2个木马子进程运行
/bin/cp /usr/muma /usr/bin/muma #防止子进程文件被删除
/usr/bin/muma & #后台运行木马程序
service network restart #防止管理员关闭外网,让木马主动启动网络和外面联系,也可以加上清空防火墙规则命令
fi
done
停止并删除父进程,删除病原体/usr/muma
kill -STOP 木马PID 先停止,然后在kill -9 木马PID 删除
[root@centos60 ~]# chattr -ia muma.sh
[root@centos60 ~]# lsattr muma.sh
[root@centos60 ~]# iptables -t filter -A OUTPUT -m state --state NEW -j DROP #添加断绝外部通信防火墙规则,添加后无法ping通www.baidu.com,不影响ssh,因为是OUTPUT出口规则添加,无法发送信息出去了。
18.lastlog 命令查看登录上一次的登录
19.查看登录失败的用户 grep -ri "Fail" /var/log/secure*
20.查看登录成功的用户 grep -ri "accept" /var/log/secure*
21.提前记录文件md5,用来以后进行文件md5对比,查看哪些系统文件被更改
[root@centos7-60 ~]# find /etc/cron* -type f -exec md5sum {} \; > 1.txt
[root@centos7-60 ~]# find /etc/cron* -type f -exec md5sum {} \; > 2.txt
diff 1.txt 2.txt