Linux手工入侵排查思路

发表于:2021-4-29 09:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Bypass    来源:Bypass

  当Linux主机发生安全事件需要进行入侵排查时,一般可以使用常见的shell命令,通过分析主机的异常现象、进程端口、启动方式、可疑文件和日志记录等信息以确认主机是否被入侵。
  在这里,结合工作中Linux安全事件分析处理办法,总结了Linux手工入侵排查过程中的分析方法。
  01、检查系统账号
  从攻击者的角度来说,入侵者在入侵成功后,往往会留下后门以便再次访问被入侵的系统,而创建系统账号是一种比较常见的后门方式。在做入侵排查的时候,用户配置文件/etc/passwd和密码配置文件/etc/shadow是需要去重点关注的地方。
  (1)查询特权用户特权用户(uid 为0)。
  awk -F: '$3==0{print $1}' /etc/passwd 
  (2)查询可以远程登录的帐号信息。
  awk '/\$1|\$6/{print $1}' /etc/shadow 
  (3)除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
  more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" 
  (4)禁用或删除多余及可疑的帐号。
  usermod -L user    禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头 
  userdel user       删除user用户 
  userdel -r user    将删除user用户,并且将/home目录下的user目录一并删除 
  (5)当前登录当前系统的用户信息。
  who     查看当前登录用户(tty本地登陆  pts远程登录) 
  w       查看系统信息,想知道某一时刻用户的行为 
  uptime  查看登陆多久、多少用户,负载
  02、检查异常端口
  (1)使用netstat 网络连接命令,分析可疑端口、IP、PID等信息。
  netstat -antlp|more 
  (2)如发现异常的网络连接需要持续观察,可抓包分析。
  tcpdump -c 10 -q //精简模式显示 10个包
  03、检查可疑进程
  (1)使用ps命令列出系统中当前运行的那些进程,分析异常的进程名、PID,可疑的命令行等。
  ps aux / ps -ef 
  (2)通过top命令显示系统中各个进程的资源占用状况,如发现资源占用过高
  top 
  (3)如发现异常,可使用一下命令进一步排查:
  查看该进程启动的完整命令行: ps eho command -p $PID 
  查看该进程启动时候所在的目录: readlink /proc/$PID/cwd 
  查看下pid所对应的进程文件路径:ls -l /proc/$PID/exe 
  查看该进程启动时的完整环境变量: strings -f /proc/1461/environ | cut -f2 -d '' 
  列出该进程所打开的所有文件: lsof -p $PID 
  04、检查系统服务
  Linux系统服务管理,CentOS7使用systemd控制 CentOS6之前使用chkconfig控制。
  (1)对于systemd服务管理器来说,可以通过下述方式查看开机自启的服务:
  systemctl list-unit-files --type=service | grep "enabled" 
  (2)chkconfig就是CentOS6以前用来控制系统服务的工具,查看服务自启动状态:
  chkconfig  --list   
  chkconfig --list | grep "3:on\|5:on"
  05、检查开机启动项
  (1)检查启动项脚本。
  more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/ 
  (2)例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可。
  ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
  此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。
  06、检查计划任务
  利用计划任务进行权限维持,可作为一种持久性机制被入侵者利用。检查异常的计划任务,需要重点关注以下目录中是否存在恶意脚本。
  /var/spool/cron/*  
  /etc/crontab 
  /etc/cron.d/* 
  /etc/cron.daily/*  
  /etc/cron.hourly/*  
  /etc/cron.monthly/* 
  /etc/cron.weekly/ 
  /etc/anacrontab 
  /var/spool/anacron/* 
  07、检查异常文件
  (1)查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性。
  (2)得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
  可以使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件
  (3)针对可疑文件可以使用stat进行创建修改时间。
  08、检查历史命令
  一般而言,入侵者获取shell之后,会执行一些系统命令从而在主机上留下痕迹,我们可以通过history命令查询shell命令的执行历史。
  (1)查询某个用户在系统上执行了什么命令
  使用root用户登录系统,检查/home目录下的用户主目录的.bash_history文件。
  (2)默认情况下,系统可以保存1000条的历史命令,并不记录命令执行的时间,根据需要进行安全加固。
  09、检查系统日志
  在Linux上一般跟系统相关的日志默认都会放到/var/log下面,若是一旦出现问题,用户就可以通过查看日志来迅速定位,及时解决问题。常用日志文件如下:
  /var/log/btmp:记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看。
  /var/log/lastlog:记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看。
  /var/log/wtmp:永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看。
  /var/log/utmp:记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询。
  /var/log/secure:记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。一般,我们需要重点去关注secure安全日志,检查系统错误登陆日志,统计IP重试次数,成功登录的时间、用户名和ip,确认账号是否存在暴力破解或异常登录的情况。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号