Linux系统被入侵后的排查过程
摘自《Linux系统安全》
一、准备工作
1. 检查人员应该可以物理接触到可疑的系统。因为黑客可能会通过网络监听而检测到你正在检查系统,所以物理接触比远程控制更好。
2. 为了当作法庭证据,需要把硬盘做实体备份。如果需要,断开所有与可疑机器的网络连接。
3. 做入侵检测时,检查人员需要一台计算机专门针对检查的过程进行检查项目的结果记录。
4. 请维护可疑服务器的人员来配合,以确定机器上安装的软件和运行的服务、账户等信息,以便于安全检察人员提高检查的效率、准确性和针对性。
二、步骤
检测步骤如下:
1. 检测常用程序是否被替换。确保检测执行命令的结果是可信的
1).通常被替换的程序有login、ls、ps、ifconfig、du、find、netstat、ss等。执行一些命令参数,查看程序是否被替换。例如:
ls -alh
netsta -anp
2).通过检查md5sum和文件大小,判断是否被替换。例如:
md5sum /bin/netstat
3).上传chkrootkit和rkhunter两个工具,检测一下是否有Rootkit,用两个是可以互补。
4).使用ClamAV Antivirus检查/sbin、/bin、/usr/sbin、/usr/bin。使用命令如下:
freshclam
clamscan -r PATH
2. 查找隐藏的目录和文件
查找隐藏目录和文件时使用的命令如下:
find / -name '...'
find / -name '..'
find / -name '.'
find / -name ' '
3. 检测近期系统登录
使用last命令检测近期系统登录,特别注意非正常来源IP地址或者用户名的登录记录。
4. 检测系统用户
1.通过命令less /etc/passwd查看是否有新增用户
2.通过命令grep ':0' /etc/passwd 查看是否有特权用户(root权限用户)
3.通过命令stat /etc/passwd 查看passwd最后修改事件
4.通过命令awk -F: 'length($2)==0 {print $1}' /etc/shadow 查看是否存在空口令的用户。
5. 查看进程
1.输入ps -aux查看输出信息,尤其注意有没有以./xxx开头的进程。如果有,则用kill -9 PID杀死该进程,然后再运行ps -aux查看该进程是否被杀死;如果此类进程出现结束后又重新启动的现象,则证明系统同被人放置了自动启动脚本,这个时候要进行仔细查找。使用如下命令:
find / -name 进程名 -print
2.通过命令lsof -p PID查看进程所打开的端口和文件。
3.检查隐藏进程,使用的命令如下:
ps -ef| awk '{print $2}' | sort -n | uniq>1
ls /proc | sort -n | uniq>2
diff 1 2
6. 检查网络连接和监听端口
1.使用命令ip link |grep PROMISC检查。正常网卡不存在promisc,如果存在则有可能是嗅探。
2.通过netstat -lntp查看所有监听端口。
3.通过netstat -antp查看所有已经建立的连接。特别注意本机主动连接到外部地址的连接,这可能是反弹shell。
4.通过arp -an查看arp记录是否正常。
7. 检查计划任务
1.通过命令crontab -u root -l查看root用户的计划任务。
2.通过命令cat /etc/crontab查看有无异常条目。
3.通过命令ls /var/spool/cron查看有无异常条目。
4.通过命令ls -l/etc/cron.*查看cron详细文件变化。
8. 检查开机启动项
1.检查开机启动项/etc/rc.local的内容
2.使用systemctl或者chkconfig检查开机启动项。
9. 检查日志中的异常
注:为了防止对原始日志的损坏,建议检查前最好先做好日志备份。