Linux 安全——被入侵后的排查

Table of Contents

1 系统审查

用户相关命令:

  • 查看用户登录记录:last -xad
  • 查看用户登录失败记录:lastb
  • 查看用户上次登录情况:lastlog
  • 查看当前登录的用户:who、w。w -f 可显示出登录来源(IP、终端等)
  • cat /etc/passwd,以及 users 命令列出可登录的帐号
  • stat /etc/passwd,查看系统里帐号最后修改密码时间
  • awk -F: '$3=="0"' /etc/passwd,查找 root 组的帐号
  • 检查 /etc/shadow 有密码的帐号

进程相关命令:

  • 进程检查 ps -ef、ps -pantul
  • 查看该进程启动的完整命令行: ps eho command -p $PID
  • 查看该进程启动时候所在的目录: readlink /proc/$PID/cwd
  • 查看该进程启动时的完整环境变量: strings -f /proc/$PID/environ | cut -f2 -d ' '
  • 列出该进程所打开的所有文件: lsof -p $PID
  • 列出该进程所打开的网络连接: netstat -pan(或ss -pan) | grep $PID
  • top -H 查看当前活跃进程,如果有占用大量 CPU 资源的进程,可能是挖矿木马的

网络相关命令:

  • 查看端口开放:netstat -tunlp
  • 检查ARP表:arp -a
  • 查看 /etc/hosts 是否有可疑条目

系统服务相关命令:

  • 检查系统服务:chkconfig –list或者systemctl list-unit-files

Rootkit检查:

2 文件审查

  • 某次安全应急时,遇到客户服务器的 CentOS 中多个命令(如 sudo、ls)被替换成带有后门的命令,我们的方法是找同发行版、同版本的系统对比 bin、/sbin、/lib/modules/内核版本 等地方的文件 MD5:
find /bin/ -type f  | xargs md5sum
  • 到网站目录找出最近更改的文件:
find -type f -mtime -30 # 列出 30 天内修改的文件
  • 检查 crontab 任务:/var/spool/cron/crontabs/、/etc/cron.daily
  • 检查 .bashrc、.bash_profile、.bash_login、~/.ssh/authorized_keys
  • 检查 /root 和 /tmp 目录。可能 /tmp 目录下有 poc、后门;如果 /root 目录下存在恶意文件,表示服务器已经被提权
  • 用 lsmod 查看系统加载的驱动
  • 对于可疑的文件,可以到 https://www.virustotal.com/ 检测是否是恶意软件

3 日志审查

最好把系统日志(如 /var/log)单独拷贝出来分析。

  • 查找哪些人通过 SSH 登录过服务器:
fgrep 'Accept' /var/log/secure*
  • 分析 shell 的 history 文件。