入侵检测
Windows 系统入侵排查
检查系统账号安全
- 服务器登录弱口令检查
- 服务器远程登录桌面协议端口开放检查
- 查看
RDP
协议端口(防止RDP
端口被修改过,默认 3389) - 检查
RDP
协议端口是否开放
- 查看
- 服务器账号检查
lusrmgr.msc
检查是否有新增可疑账号- 注册表检查是否存在隐藏账号
- 注册表检查是否存在克隆账号
- 扫描工具(如: D盾_web)检查是否存在可疑账号
检查异常端口、进程
- 检查端口连接情况
netstat -ano
查看网络连接,定位可疑ESTABLISHED
- 根据上一步定位出的
pid
,通过tasklist | findstr "PID"
命令进行进程定位 - 检查
0.0.0.0
地址的绑定 - 检查已开放的端口是否已经做过公司内部备案(通信矩阵)
- 检查进程
- 运行
msinfo32
,依次点击【软件环境】【正在运行任务】查看进程的详细信息 - 扫描工具(如: D盾_web、 Process Explorer)查看进程,关注没有签名信息的进程
- 可疑进程主要关注:
- 没有签名验证信息的进程
- 没有描述信息的进程
- 进程属主
- 进程的路径
- CPU 或内存资源占用长时间过高的进程
- 运行
检查启动项、计划任务、服务
- 检查启动项
- 检查【启动】目录下是否有非业务程序
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
- 检查计划任务
- 检查【控制面板】【计划任务】中是否存在可疑文件
at
或schtasks.exe
检查计算机与网络其他计算机之间的会话或计划任务是否存在异常
- 检查服务
services.msc
检查是否存在异常服务(关注【状态】和【启动类型】)- 留意隐藏服务
检查系统相关信息
- 查看系统版本以及补丁信息
- 运行
systeminfo
查看系统信息
- 运行
- 查看可疑目录及文件
- 用户目录(
C:\Documents and Settings\
或C:\Users\
) - 运行
%USERPROFILE%\Recent
查看最近文件 - 手动分析各目录下文件(夹)最近操作时间
- 用户目录(
检查系统日志
默认位置:%SystemRoot%\System32\Winevt\Logs\System.evtx
或者右键【计算机】【管理】【事件管理器】
-
应用程序日志
-
系统日志
-
安全日志
常见的事件 ID:
- 4624: 登录成功
- 4625: 登录失败
- 4634: 注销成功
- 4647: 用户启动的注销
- 4672: 超级用户登录
- 4720: 创建用户
常见的登录类型:
- 2: 交互式登录。用户在本地登录
- 3: 网络登录。例如: 连接到共享文件或共享打印机
- 4: 批处理。例如: 计划任务启动
- 5: 服务。每种服务都被配置在某个特定账号下运行的
- 7: 解锁。屏幕解锁
- 8: 网络明文。登录密码在网络上明文传输,如: FTP 登录
- 9: 新凭证。使用带
/Netonly
参数的RUNAS
命令运行一个程序 - 10: 远程交互。通过终端服务、远程桌面协议等登录
- 11: 缓存交互。通常是以一个域用户登录而又没有域控制器的情况下
日志分析
Linux 系统入侵排查
账号安全
- 用户信息文件
etc/passwd
- 影子文件
/etc/shadow
- 其他常用的组合命令:
- 查询特权用户:
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
目录 - 查看当前登录用户:
who
(tty
: 本地登录;pts
: 远程登录) - 查看系统信息:
w
(参考判断某时刻用户的行为,登录方式、登录地址、时间等) - 查看登录时间:
uptime
- 查询特权用户:
历史命令
在用户根目录下:
cd /home/user
cat .bash_history
检查异常端口
- 查看端口信息
netstat -anptl|more
- 查看
pid
对应的进程文件
ls -l /proc/$PID/exe
或file /proc/$PID/exe
检查异常进程
ps -aux | grep $PID
检查开机启动项
-
查看系统运行级别
runlevel
运行级别划分如下:
- 0: 关机
- 1: 单用户模式。类似于
Windows
的安全模式,常用于系统修复 - 2: 不完全的命令行模式,不含
NFS
服务 - 3: 完全的命令行模式,标准字符界面
- 4: 系统保留
- 5: 图形化界面模式
- 6: 重启动
检查定时任务
-
检查定时任务
crontab -l
- 查看定时任务保存的文件(重点关注以下目录, 使用
more
可以查看目录下所有文件):/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/*
-
anacron
实现的异步定时任务调度- 使用案例:
- 每天运行
/home/backup.sh
脚本:vi /etc/anacrontab @daily 10 example.daily /bin/bash /home/backup.sh
- 每天运行
- 查看异步定时任务调度
/etc/anacrontab
/var/spool/anacrontab
- 使用案例:
检查服务
-
方法一:
chkconfig [--level 运行级别][独立服务名][on|off]
默认级别是:2345
- 例:
chkconfig httpd on
-
方法二:
- 修改
/etc/rc.d/rc.local
文件 - 加入
/etc/init.d/httpd start
- 修改
-
方法三:
ntsysv
命令管理自启动,可以管理独立服务和xinetd
服务
检查异常文件
检查系统日志
-
定位有多少个 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
- 爆破的 IP 信息:
-
登录成功的 IP
grep "Accepted" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
-
登录成功的日期、用户名、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
: 记录当前已经登录的用户信息,会随着用户的登录和注销不断变化,只记录当前登录的用户信息。是个二进制文件,要用w
、who
、users
等命令查看/var/log/secure
: 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录。比如SSH
登录、su
切换用户、sudo
授权、 添加删除用户等。