入侵检测

Windows 系统入侵排查

检查系统账号安全

  1. 服务器登录弱口令检查
  2. 服务器远程登录桌面协议端口开放检查
    • 查看 RDP 协议端口(防止 RDP 端口被修改过,默认 3389)
    • 检查 RDP 协议端口是否开放
  3. 服务器账号检查
    • lusrmgr.msc 检查是否有新增可疑账号
    • 注册表检查是否存在隐藏账号
    • 注册表检查是否存在克隆账号
    • 扫描工具(如: D盾_web)检查是否存在可疑账号

检查异常端口、进程

  1. 检查端口连接情况
    • netstat -ano 查看网络连接,定位可疑 ESTABLISHED
    • 根据上一步定位出的 pid,通过 tasklist | findstr "PID" 命令进行进程定位
    • 检查 0.0.0.0 地址的绑定
    • 检查已开放的端口是否已经做过公司内部备案(通信矩阵)
  2. 检查进程
    • 运行 msinfo32,依次点击【软件环境】【正在运行任务】查看进程的详细信息
    • 扫描工具(如: D盾_web、 Process Explorer)查看进程,关注没有签名信息的进程
    • 可疑进程主要关注:
      • 没有签名验证信息的进程
      • 没有描述信息的进程
      • 进程属主
      • 进程的路径
      • CPU 或内存资源占用长时间过高的进程

检查启动项、计划任务、服务

  1. 检查启动项
    • 检查【启动】目录下是否有非业务程序
    • msconfig 检查是否存在可疑启动项,如有,取消勾选并前往所处路径下删除源文件
    • gpedit.msc 组策略下检查是否存在可疑启动项
    • regedit 检查注册表下是否存在可疑启动项,主要关注以下:
      • HKEY_CURRENT_USER\Software\Micorsoft\Windows\CurrentVersion\Run
      • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
      • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
  2. 检查计划任务
    • 检查【控制面板】【计划任务】中是否存在可疑文件
    • atschtasks.exe 检查计算机与网络其他计算机之间的会话或计划任务是否存在异常
  3. 检查服务
    • services.msc 检查是否存在异常服务(关注【状态】和【启动类型】)
    • 留意隐藏服务

检查系统相关信息

  1. 查看系统版本以及补丁信息
    • 运行 systeminfo 查看系统信息
  2. 查看可疑目录及文件
    • 用户目录(C:\Documents and Settings\C:\Users\
    • 运行 %USERPROFILE%\Recent 查看最近文件
    • 手动分析各目录下文件(夹)最近操作时间

检查系统日志

默认位置:%SystemRoot%\System32\Winevt\Logs\System.evtx 或者右键【计算机】【管理】【事件管理器】

  1. 应用程序日志

  2. 系统日志

  3. 安全日志

    常见的事件 ID:

    • 4624: 登录成功
    • 4625: 登录失败
    • 4634: 注销成功
    • 4647: 用户启动的注销
    • 4672: 超级用户登录
    • 4720: 创建用户

    常见的登录类型:

    • 2: 交互式登录。用户在本地登录
    • 3: 网络登录。例如: 连接到共享文件或共享打印机
    • 4: 批处理。例如: 计划任务启动
    • 5: 服务。每种服务都被配置在某个特定账号下运行的
    • 7: 解锁。屏幕解锁
    • 8: 网络明文。登录密码在网络上明文传输,如: FTP 登录
    • 9: 新凭证。使用带 /Netonly 参数的 RUNAS 命令运行一个程序
    • 10: 远程交互。通过终端服务、远程桌面协议等登录
    • 11: 缓存交互。通常是以一个域用户登录而又没有域控制器的情况下

日志分析

Linux 系统入侵排查

账号安全

  1. 用户信息文件
    • etc/passwd
  2. 影子文件
    • /etc/shadow
  3. 其他常用的组合命令:
    • 查询特权用户: awk -F: '$3==0{print $1}' /etc/passwd
    • 查询可以远程登录的账号: awk '/\$1|\$6/{print $1}' /etc/shadow
    • 查询拥有 sudo 权限的账号: more /etc/sudoerss|grep -v "^#\|^$"|grep "ALL=(ALL)"
    • 禁用账号: usermod -L user 被禁用后,账号无法登录,/etc/shadow 文件中对应的账户第二类会以 ! 开头
    • 删除账号: userdel user
    • 删除账号并清空用户目录: userdel -r user 用户目录就是 /home/user 目录
    • 查看当前登录用户: whotty: 本地登录; pts: 远程登录)
    • 查看系统信息: w (参考判断某时刻用户的行为,登录方式、登录地址、时间等)
    • 查看登录时间: uptime

历史命令

在用户根目录下:

  • cd /home/user
  • cat .bash_history

检查异常端口

  1. 查看端口信息
    • netstat -anptl|more
  2. 查看 pid 对应的进程文件
  • ls -l /proc/$PID/exefile /proc/$PID/exe

检查异常进程

  • ps -aux | grep $PID

检查开机启动项

  1. 查看系统运行级别

    • runlevel

    运行级别划分如下:

    • 0: 关机
    • 1: 单用户模式。类似于 Windows 的安全模式,常用于系统修复
    • 2: 不完全的命令行模式,不含 NFS 服务
    • 3: 完全的命令行模式,标准字符界面
    • 4: 系统保留
    • 5: 图形化界面模式
    • 6: 重启动

检查定时任务

  1. 检查定时任务

    • crontab -l
    • 查看定时任务保存的文件(重点关注以下目录, 使用 more 可以查看目录下所有文件):
      • /var/spool/cron/*
      • /etc/crontab
      • /etc/cron.d/*
      • /etc/cron.daily/*
      • /etc/cron.hourly/*
      • /etc/cron.monthly/*
      • /etc/cron.weekly/*
  2. anacron 实现的异步定时任务调度

    • 使用案例:
      • 每天运行 /home/backup.sh 脚本: vi /etc/anacrontab @daily 10 example.daily /bin/bash /home/backup.sh
    • 查看异步定时任务调度
      • /etc/anacrontab
      • /var/spool/anacrontab

检查服务

  1. 方法一:

    • chkconfig [--level 运行级别][独立服务名][on|off] 默认级别是: 2345
    • 例: chkconfig httpd on
  2. 方法二:

    • 修改 /etc/rc.d/rc.local 文件
    • 加入 /etc/init.d/httpd start
  3. 方法三:

    • ntsysv 命令管理自启动,可以管理独立服务和 xinetd 服务

检查异常文件

检查系统日志

  1. 定位有多少个 IP 在爆破主机的 root 账号

    • 爆破的 IP 信息: grep "Failed password form root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    • 爆破的 IP 地址: grep "Failed password from root" /var/log/secure | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
    • 爆破的用户名字典: grep "Failed password" /var/log/secure|prel -e 'while($_=<>){/for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
  2. 登录成功的 IP

    • grep "Accepted" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
  3. 登录成功的日期、用户名、IP:

    • grep "Accepted" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

常见的日志文件:

  • /var/log/cron: 记录了系统定时任务相关的日志
  • /var/log/cups: 记录打印信息的日志
  • /var/log/dmesg: 记录了系统在开机时内核自检的信息
  • /var/log/maillog: 记录右键信息
  • /var/log/message: 记录系统重要信息的日志。系统出现问题时,首先要检查的就应该是这个日志。
  • /var/log/btmp: 记录错误登录日志。是个二进制文件,要用 lastb 命令查看
  • /var/log/lastlog: 记录系统中所有用户最后一次登录时间。是个二进制文件,要用 lastlog 命令查看
  • /var/log/wtmp: 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。是个二进制文件,要用 last 命令查看
  • /var/log/utmp: 记录当前已经登录的用户信息,会随着用户的登录和注销不断变化,只记录当前登录的用户信息。是个二进制文件,要用 wwhousers 等命令查看
  • /var/log/secure: 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录。比如 SSH 登录、 su 切换用户、 sudo 授权、 添加删除用户等。
05-01 17:16