一 Webshell的典型攻击序列图
下图是一个典型的webshell的攻击序列图,利用web的漏洞,获取web权限,上传小马,安装大马,然后远程调用webshell,执行各种命令,以达到获取数据等恶意目的。
二 从kill chain来分析各阶段“看见”能力
从kill chain来看,靠采集系统自身的流量的技术手段,在前两个阶段Reconnaissance、Weaponise这两个阶段是很难看到行为。(结合威胁情报可以更大范围的看到这两个阶段的信息),基于流量的payload分析技术可以在Delivery、Exploit、Installation、Command &Control (C2)、Action这几个阶段都能看到攻击行为。
Rsa的一段分析材料,对看见能力做了便利的说明。并针对基于流量的分析手段与传统的IDS\IPS\SIEM做了对比。
三 从防护方的“安全对抗”能力视角看
安全防护能力分几个等级
- Detect: Can you see/find it?(能否检测到攻击)
- Deny: Can you stop it from happening? (能否避免遭受攻击)
- Disrupt: Can you stop it while it’s happening?(能否阻止正在进行的攻击)
- Degrade: Can you make it not worth it?(能否让攻击者觉得攻击不值得,降低其攻击级别)
- Deceive: Can you trick them [the adversary]?(能否诱骗或重定向攻行为)
- Destroy: Can you blow it up? (能否摧毁攻击者)
针对web的安全防护能力手段总结如下图:
阶段 | Detect | Deny | Disrupt | Degrade | Deceive | Destroy |
web相关防护手段 |
webshell分析引擎 NIDS |
WAF 云防护 |
WAF | 主动防御/流量重定向 | honeypot | 反制攻击者 |
四 Webshell的检测的三种手段
从安全防护能力看,检测是第一位的能力,webshell的检测主要有以下几种方式:
(1)基于流量的webshell检测引擎
- 方便部署,通过流量镜像直接分析原始信息。
- 基于payload的行为分析,不仅对已知webshell进行检测,还能识别出未知的、伪装性强的webshell。
- 对webshell的访问特征(IP/UA/Cookie)、payload特征、path特征、时间特征等进行关联分析,以时间为索引,还原攻击事件。
(2)基于文件的webshell分析引擎
- 检测是否包含webshell特征,例如常用的各种函数。
- 检测是否加密(混淆处理)来判断是否为webshell
- 文件hash检测,创建webshell样本hashing库,进行对比分析可疑文件。
- 对文件的创建时间、修改时间、文件权限等进行检测,以确认是否为webshell
- 沙箱技术,根据动态语言沙箱运行时的行为特征进行判断
(3)基于日志的webshell分析引擎
- 支持常见的多种日志格式。
- 对网站的访问行为进行建模,可有效识别webshell的上传等行为
- 对日志进行综合分析,回溯整个攻击过程。
三种检测方式,基于文件的检测,很多时候获取样本的部署成本比较高,同时仅仅靠样本无法看到整个攻击过程。基于日志的有些行为信息在日志中看不到,总体来说还是基于“流量”的看到的信息最多,也能更充分的还原整个攻击过程。
笔者后续会专门就最近分析的一些webshell的整个攻击过程,挑一些典型实例进行总结。
关于webshell的检测后续继续分享体会。感谢大家关注“慧眼实验室”!