十万火急:云上应急响应概述
目录
对工作中的云上应急响应流程进行总结整理。
场景 #
云上应急响应场景大致可以分为三类,依出现频率从高到低排序如下:
- Web 入侵:通过 Web 应用/框架/配置漏洞发起攻击,从而实现入侵的场景
- 授权入侵:通过社工、OSINT 等间接方式获取授权信息,如账号密码、AK 等,在不进行攻击的情况下实现入侵的场景
- 网络入侵:通过非 Web 应用层漏洞,如 OS 漏洞、通信协议漏洞等实现入侵的场景
这三种场景在传统应急响应中同样存在,但第二种场景到了云上变得极为常见,主要原因在于:
- 利用难度变得非常低:AK 泄露屡见不鲜,攻击者可以通过多种方式获取到企业的 AK 等凭证
- 危害性更高:权限配置不当的 AK 等凭证可以让攻击者轻松接管整个云环境
流程 #
应急响应的 PDCERF 模型将应急响应流程分为 6 个阶段:准备(Preparation)、检测(Detection)、抑制(Containment)、根除(Eradication)、恢复(Recovery)、跟踪(Follow-up)。根据实际工作场景需要,我们对上述流程进行了一些调整:准备阶段融入到日常工作中,检测阶段细分为发现异常和事件确认两个流程,根除、恢复阶段合并为事件处理流程,并且在中间添加了入侵分析流程。
1. 发现异常 #
- 主动发现:通过云安全产品告警发现,以云安全中心为主
- 被动发现:由客户或第三方主动告知异常情况发现,此时客户或第三方与对接人员同步,随后对接人员联络指定的应急人员进行事件确认
异常事件可以简单分为如下几类:
- 网络攻击事件:暴力破解、漏洞扫描和利用等
- 恶意程序事件:挖矿程序、病毒、远控木马、勒索软件等
- Web 恶意代码事件:Webshell、网页挂马、暗链植入等
- 业务安全事件:数据库篡改、信息泄露等
2. 事件确认 #
- 主动发现的情况下,根据产品告警信息中包含的事件类型、资产信息等判断是否属于应急事件、是否需要处理
- 被动发现的情况下,由客户提供异常信息、受影响的资产信息等,应急人员根据这些信息判断是否属于应急事件、是否需要处理
这一过程中可能需要应急人员与对接人员和客户沟通。如果最终判断无需处理,则可以进一步调查,确认是否存在潜在安全隐患,并反馈给对接人员和客户,结束本次应急响应;如果判断为需要处理,则需判断处理方式,如远程处理/现场处理等。
事件确认流程以快速信息收集为主,例如:
- 通过 top 命令检查进程 CPU/内存占用,挖矿程序通常会有极高占用率
- 通过 ps 或 tasklist 命令检查进程列表中是否存在可疑进程,如反弹 shell 进程等
- 通过 netstat、lsof 等网络相关命令查看系统网络连接状态、开放端口等
对于信息泄露类应急事件,应与客户确认是否属于客户的相关信息,以及数据敏感程度、影响范围等。
3. 抑制止损 #
确认事件需要处理后,建议优先保存快照从而保留证据(如有必要可进行数据备份),并快速确定影响范围。随后尝试多种方式阻断攻击:
- 通过云安全产品阻断攻击
- 与客户确认能否停止服务隔离主机/网段,如果允许则立即通过 ECS 安全组阻断主机/网段所有流量
- 尽量优先分析出攻击源 IP 与外联 IP,并在 CFW 中添加策略阻断入方向攻击源 IP 和出方向外联 IP
- 手动阻断攻击
- 清除可疑进程和文件
- 断开可疑网络连接
- 关闭非必要的端口和服务
- 切换业务到备用集群
对于信息泄露类应急事件,可以通过截图、网页备份等方式保留证据。随后尽快定位泄漏人员并要求删除相关信息,同时尽快停用/更换泄露的敏感信息。
4. 入侵分析 #
由客户提供受影响资产的登录方式及管理员权限,应急人员通过深入检查系统日志、端口、服务、进程、文件等确定攻击路径,例如:
- 收集被感染文件/恶意程序样本,并进行静态/动态分析
- 通过 Everything 或 find 检查文件相关时间
- 通过 ps 或 Process Explorer 检查进程相关时间
- 通过任务管理器、计算机管理、资源监视器、注册表编辑器等工具辅助分析
- 通过 netstat、lsof 等网络相关命令检查网络状态
- 通过
cat /etc/passwd
或net user
检查后门用户 - 通过 chkrootkit、rkhunter 检查可疑驱动
- 通过 crontab、
/etc/cron.d/0hourly
、/etc/cron.hourly/0anacron
、/var/spool/cron
等检查可疑计划任务 - 通过 chkconfig 检查服务自启动状态
- 通过 last、find 或事件查看器查看系统日志、系统安全日志、系统审计日志、业务日志、安全软件日志、第三方流量日志等
这一部分同样以信息收集为主,主要目的是通过确定攻击时间、攻击来源、攻击目标、攻击手段、攻击者行为等信息,拼凑和推导出攻击方式、攻击者意图、漏洞类型、攻击链路等,从而了解事件全貌,并进行相关的修复和加固。对于信息泄露类应急事件,需要排查泄露的信息是否被恶意利用。
5. 事件处理 #
确认入侵原因后,应急人员需进一步清除系统中的恶意进程、文件、服务、Web 页面等,恢复被篡改的数据与配置,并恢复业务正常运行。此外,还可以对入侵进行溯源,并协助修复造成入侵的漏洞。
需要注意,由于涉及对系统本身的修改,这一过程需要由客户授权后进行;若过程中对业务产生较大影响,可以用快照进行回滚。
6. 总结报告 #
应急人员根据本次应急流程整理出一份应急报告,并反馈给客户;或由对接人员反馈至客户。如果发现漏洞(或端口暴露/配置不当/其他问题等)且客户愿意配合修复,则可在修复后进行复测,确保攻击入口被封堵。
原则 #
- 最大程度降低影响,第一时间恢复业务
- 优先收集容易丢失的信息
- 获取关键性证据,如样本、端口、进程、文件、流量等
- 避免在过程中造成二次灾害
常见攻击入口/配置问题 #
根据过往经验,应急事件常常由以下配置问题引发:
- Web 应用漏洞
- Java 应用漏洞
- 主流 Java 框架:Shiro, Fastjson, Log4j, Jenkins, Spring Boot, Tomcat, Dubbo, Druid, Swagger…
- RuoYi
- XXL-Job
- 其他应用漏洞
- UEditor
- 国产 OA
- 文件上传漏洞
- 业务逻辑漏洞
- 应用后台弱口令
- Java 应用漏洞
- AK 泄露
- 闲置 AK 未被禁用
- 使用主账号 AK
- 组件信息泄露漏洞,如 Spring Actuator、 Nacos 等
- 重要端口对公网开放
- SSH/RDP/Redis/Docker 最多
- 弱口令
- SSH/RDP/Redis/Jenkins/SQLServer/应用后台管理员 弱口令最多
- 其他服务包括 RDS、Oracle、VPN 账号、域用户等
- 变体:多台服务器共用密码/密钥
- 缺少日志
- WAF 日志
- 无 WAF
- 日志未开启
- 域名未接入
- 未开启源站保护(攻击者可不经过 WAF 直接访问源站)
- 日志记录不完整,如未记录 POST Body
- 日志容量不足导致过往日志被覆盖,影响排查
- Web 访问日志
- Redis 日志
- WAF 日志