Linux应急响应小结


Linux应急

💡 顺序:历史命令(可能会覆盖)—账号—计划任务—启动项任务—程序—日志信息(安全设备),注意事件发生时间

流程:定位恶意程序—缩减晒选范围与时间—获取相关日志信息,定位入侵点。

总结技巧:

  1. 由现象还原本质,从系统资源占用、网络连接上看异常,定位异常进程。

  2. 计划任务、自启动通过checklist对比排查,有时可以找到突破口

  3. 关键是确定攻击的事件范围,根据范围可以减少查看数据量,通过时间顺序还原攻击的全样貌就是最终目标之一

历史命令

  • [ ] history ⇒ cat /home/user/.bash_history

  • [ ] cat /root/.bash_history

  • history命令:

    • history -w 主动保存缓冲区记录
    • history -c 删除缓冲区记录
    • !编号 快速执行某条指令(编号为负数为倒数第几条)
    • !keyword:p 打印出开头是keyword的命令,不是开头可以加?变为!?keyword:p
    • history num 只显示最后num条数据
    • export HISTTIMEFORMAT='%F %T '添加时间戳
    • $HISTCONTROL含有ignorespace不会记录开头字符为空格的命令,ignoredups忽略连续重复的命令

帐号

  • [ ] 查看帐号文件修改情况
    • stat /etc/passwd(passwd格式为 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell,关注修改时间确定用户添加时间
    • stat /etc/shadown
  • [ ] 查看特权用户 awk -F: '$3==0{print $1}' /etc/passwd
  • [ ] 查看当前用户登录情况 who
  • [ ] 显示目前登入的用户信息 w
  • [ ] uptime 显示现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载
  • [ ] 查看sudo权限 more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
  • [ ] 查看ssh登录密钥配置 cat /etc/ssh/ssh_config |grep PubkeyAuthentication,判断PubkeyAuthentication是否为yes
  • [ ] 查看ssh密钥 ll /root/.ssh/

进程

  • [ ] 查端口 netstat -antlp | more(lsof -i:port)
  • [ ] 查异常进程位置 ls -l /proc/pid/exe 或者 file /proc/pid/exe
  • [ ] 查看进程具体信息ps -efm 或 筛选 ps aux | grep pid
  • [ ] 结束进程 kill -9 pid (-9结束不了系统和守护进程)
  • [ ] 查看资源管理器 top (显卡用nvidia-smi)
  • [ ] 查看磁盘使用量和分区情况 df

计划任务/自启动

  • [ ] 查看crontab计划任务
    • crontab -l
    • cat /etc/crontab
    • ls /etc | grep cron
    • 目录
      • /etc/cron.d
      • /var/spool/cron/user
      • /etc/cron.[hourly/daily/weekly/monthly]
      • /var/spool/anacron
    • /etc/cron.deny和/etc/cron.allow文件记录crontab用户的访问权限,allow>deny
  • [ ] 查看自启动项
    • stat 命令检查,查看是否出现近期修改
      • /etc/profile.d
      • /etc/init.d
      • /etc/rc.d/init.d
      • /etc/rc.d/xxxx
      • rc*.d
  • [ ] 查询系统服务的运行级信息chkconfig
    • 等级0表示:表示关机
    • 等级1表示:单用户模式
    • 等级2表示:无网络连接的多用户命令行模式
    • 等级3表示:有网络连接的多用户命令行模式
    • 等级4表示:不可用
    • 等级5表示:带图形界面的多用户模式
    • 等级6表示:重新启动

日志文件

命令:morelesstail(-n 行数)、grep(-C 上下行、-B 前几行、-A后几行)

一般不急着看日志,可以等找到文件、帐号改动的时间,再根据目的(比如找登录状况、爆破状况、提权状况等)限制时间范围后再看对应的日志,作为对整个攻击过程的信息补全和细化。

  • [ ] 计划任务日志 cat /var/log/cron
  • [ ] 打印信息日志 /var/log/cups
  • [ ] 核心的硬件侦测 /var/log/dmesg
  • [ ] 邮件日志 /var/log/mailog
  • [ ] 错误信息 /var/log/message
  • [ ] 登录错误信息 /var/log/btmp 或者 lastb | more
  • [ ] 用户最近信息 /var/log/lastlog 或者 lastlog | more
  • [ ] 当前正在登录和历史登录系统的用户信息 /var/log/wtmp 或者 last | more
  • [ ] 当前正在登录系统的用户信息 /var/log/utmp 或者 wwhousers
  • [ ] 安全日志 cat /var/log/secure,关键词:Accepted、Failed、useradd、userdel
  • [ ] web日志,先锁定时间范围,检索关键词,无界面linux可以考虑把文件传输到外部主机上,优化体验
  • [ ] 操作日志
    • ~/.bash_history
    • ~/.viminfo
    • ~/.ssh/konw_hosts
  • [ ] 应用日志
    • /var/log/nginx
    • /var/log/httpd
  • [ ] 其他
    • /etc/profile
    • /etc/bashrc
    • ~/.bash_profile
    • ~/.profile
    • ~/.bash_login
    • ~/.bash_logout其他

其他

  • whereis 查二进制文件
  • find dir -name name 查文件名
  • find dir -newermt “2020-07-01 00:00:00” ! -newermt “2020-07-02 00:00:00” 时间范围
  • ls -lc —full-time 查看change time
  • chattr 改权限
  • rpm -a -V 查套件
  • 可以找一个正常的linux系统对比文件夹和文件是否正常
  • scp 传输文件,或者用tabby ssh连接虚拟机
  • 工具有D-eyes,用的比较少