关于对于Windows与Linux的入侵排查,着重排查一些很有可能被植入后门的地方
关于入侵排查:为什么要做入侵排查呢?
当我们发现系统或者机器被入侵之后,需要及时的去排查这些问题,防止数据或者应用进一步的受损,及时止损
对于应急响应的概述
应急响应:对于系统或者应用发生了安全事件之后的处理
应急响应的处理分为 事前 和 事后处理
- 事前处理:数据备份、风险评估、安全培训、应急演练等
- 事后处理:病毒检测、后门检测、系统恢复、清除病毒以及后门程序、调查与追踪、入侵者取证等
应急响应事后流程
应该尽快恢复服务系统,将受到攻击的损失降到最低,应急响应大概的流程:
- 信息收集:受到影响的机器、机器的操作系统、是否打上补丁
- 类型判断:是何种攻击类型
- 原因分析:如何被成功入侵,通过什么方式
- 事件处置:通过杀进程、文件、网络等方式恢复系统
- 编写报告
攻击的类型分为以下几类
分为五大类,并且大类中还有细节分类,分别是:
- 恶意程序事件
病毒、蠕虫、木马、僵尸网络、网页嵌入恶意代码 - 网络攻击事件
DDos、后门、漏洞、扫描、窃听、钓鱼、干扰 - 信息破坏事件
信息篡改、信息假冒、信息泄露、信息窃取、信息丢失 - 设备设施故障
软件、硬件、电力、网络、认为 - 灾害性事件
水灾、台风、地震、雷击、坍塌、火灾、恐怖袭击、战争
Linux入侵排查
Linux排查方向
判断我们的机器是否被入侵,入侵的症状是什么。在被入侵成功后可能有比较明显的症状也有可能存在比较隐晦的症状
被入侵的症状有:
- 系统资源
- 用户和日志
- 文件和命令被篡改
- 启动项和定时任务
关于Linux系统资源的排查
- CPU、内存、磁盘的状态:当系统出现明显的卡顿的情况下可以去排查这些方面,因为这种情况非常明显
top -c -o %CPU 排序CPU占比多的程序
top -c -o %MEM 排序内存占比多的程序
ps -aux --sort=-pcpu|head -10 以进程的方式显示前10个占比多的程序
df -Th 查看磁盘内容
- 网络连接:当主机被利用去扫描其他的主机需要占用大量的网络资源
lsof -i 查看网络的网络连接
netstat -antpl 查看端口的连接
istables -L 查看防火墙的规则
- 系统进程:无论是恶意脚本还是程序的启动都存在一个进程
ps -ef
UID PID PPID C STIME TTY TIME CMD
进程拥有者 进程ID 父进程ID CPU占用率 进程启动时间 终端设备 开启的时间 进程名称或路径
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
启动的用户 进程ID CPU占用率 内存使用量 程序完全驻留需要的内存 实际占用内存 终端设备 进程状态 启动时间点 进程执行到现在总时间 启动命令
pstree
关于Linux用户和日志的排查
- 系统用户:当系统被入侵之后可能会写入一个用户后门,使得黑客可以使用自己写入的用户进行 登录
awk -F: '$3==0{print $1}' /etc/passwd 查看UID为0的超级用户
who 当前已登录的用户
w 显示已登录的用户且在执行的命令
last 查看登录成功的用户
lastb 查看最近登录失败的用户
lastlog 查看所有用户最近登录的时间
cat /etc/passwd 查看用户信息
- 审计日志:查看登录日志,文件、软件下载日志。脚本需要不用的依赖包,当被写入脚本,脚本的运行则会去联网下载一些依赖包
/var/log/message 整体日志
last 登录注销日志
lastlog 最近登陆失败的日志
u、who、users 当前用户
/var/log/cron 定时任务日志
/var/log/yum.log 查看下载日志
/var/log/secure 系统应用登录日志
- 历史命令:历史命令的查询
history 历史命令
关于Linux文件和命令的排查
- 系统文件被篡改:可以查看七天内被修改的文件
find /usr/bin/ /usr/sbin/ /bin/ /usr/ocal/bin/ -type f -mtime -7 | xargs ls -alh
- 系统命令被篡改:例如别名的配置,可能将一些常用的命令替换为启动脚本的命令
vim ~/.bashrc
source ~/.bashrc
alias
- SSH Key免密登录
cd /root/.ssh
cat authorized_keys
关于Linux启动项和定时任务的排查
- chkconfig(启动项)
chkconfig 服务名称 on 开机启动
chkconfig 服务名称 off 关闭开机启动
自定义开机启动脚本:
vim /etc/init.d/脚本
chmod +x /etc/init.d/脚本
chkconfig --add 脚本
chkconfig --list 脚本
chkconfig --del 脚本
- systemctl(服务)
systemctl list-unit-files | grep sshd 查看关于sshd的开机自启服务
systemctl enable mysqld.service 开机启动mysql服务
systemctl disable mysqld.service 开机不自启mysql服务
一些开机自启目录:
/etc/rc /etc/rc.d /etc/rc.local /etc/profile ... ...
- crontab(定时任务)
crontab -l 查看所有正在运行的计划任务
cat /etc/crontab 查看所有计划任务
Linux应急措施
关于发现服务器被入侵,需要尽快做出以下措施:
- 隔离主机
万不得已拔网线
- 阻断通信
不允许指定流量进出服务器,因为在机器被控制之后肯定会做大量的对外扫描、下载和攻击
iptables -A INPUT -s 可疑地址 -j DROP 按照源IP地址禁用
iptables -A OUTPUT -d 可疑地址 -j FROP 根据目的地址来禁用
- 清楚病毒删除
kill -9 [pid] 杀死进程
杀死守护进程:
lsof -p [pid]
kill -9 -[pid] 杀死进程组
- 可疑用户删除
cat /etc/passwd
cat /etc/shadow
userdel
- 启动项与服务
chkconfig --del 脚本名称 例如:chkconfig --del shell.php
systemctl disable 服务名 例如:systemctl disable mysql
- 可疑文件与后门
当系统命令被篡改:可以从其他系统版本中copy一份覆盖、可以运行busybox
定时任务:crontab -l
SSH Key:cd ~/.ssh
SUDO:sudo -l、visudo
SUID:find / -perm -u=s -type f 2>/dev/null、 find / -user root -perm -4000 -print 2>/dev/null、 find / -user root -perm -4000 -exec Is -ldb {}\;
- 杀毒、恢复服务、甚至重装系统
如果黑客对服务器修改的文件太多,亦或者是黑客种下的木马病毒太多,我们已经对服务器没有掌控权限或者修复时间太高与得到的效益不成正比,那么建议重装系统
Windows入侵排查
Windows排查方向
当Windows被入侵之后症状与Linux之间的差别并不会很大
被入侵的症状有:
- 异常特征
- 系统账号
- 检查异常端口、进程
- 启动项、计划任务、服务
关于Windows异常特征的排查
- 操作异常:系统卡顿、报错、重启、蓝屏
- 资源异常:CPU、内存、磁盘、网络
- 文件异常:加密文件、恶意文件、隐藏文件
- 设备告警:防火墙告警、杀软告警、态势感知等平台
关于Windows系统账号的排查
- 用户是否有设置过弱口令
是否设置过弱口令
- 是否开放了3389端口(远程桌面)
netstat -an | grep 3389
- 是否存在隐藏账号
ust user
net user 用户名
lusrmgr.msc
- 用户登录服务器事件:eventvwr.msc
关于Windows异常端口和进程的排查
- 查看进程对应的端口号
netstat -ano 查看端口号,最后一位PID为进程号
- 查看对应的进程
tasklist | findstr "进程号"
taskkill /f /t /in "应用名称" 通过上方的命令找到应用名称并且杀死
- 系统预定义端口号
C:\Windows\System32\drivers\etc
- 查找进程
win+r:msinfo32 显示所有进程、将异常的程序进行着重排查,如果不确定改程序是否存在病毒,可以将此程序放置云沙箱
- 任务管理器
关于Windows启动项、计划任务、服务的排查
- 启动项:
开始 所有程序 启动
注册表:
HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\Run
HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run
HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\Runonce
火绒 安全工具 启动项
- 计划任务:
taskschd.msc
compmgmt.msc
schtasks.exe
- 服务:
services.msc
将程序添加到服务中的命令:
sc create shell start= auto binPath= ="恶意文件路径" obj= Localsystem
sc description "shell" "安全"
- 组策略:
gpedit.msc
Windows设置 脚本[启动/关机] 双击[启动]
添加的脚本或者PowerShell